Rendering primitives is currently a tedious process requiring new implementations for every unique instance. Lots of this can be abstracted, cleaned up, and automated away. API design to follow