structural changes so that each RenderableObject can be rendered with different OpenGL program objects