I think you should seperate the functionality from the data objects, similar to the way you would seperate database records from the actual database provider logic / queries. Instead, implement a renderer base class that takes the above primitives, then derive that for OpenGL / D3D. That way you could do: Renderer r = new D3DRenderer(); r.Render(myModels); Hope that helps Tris
------------------------------- Carrier Bags - 21st Century Tumbleweed.