split render logic across objects move rendering code from main loop to Orbiter make objects responsible for setting up their own render contexts