Looks ok, but the only drawback that I see, is that it can reduce the performance of Viewer3D if numerous colors are for instance defined (like for curvature display) it will imply large numerous list which reduce the performance of openGL display.
Perhaps can we put it a Board3DFactory ?