We need a proper control system that is abstracted from the render system. We could also ideally make a wrapper for the renderer so we can easily drop in a different renderer if required.