Abstract engine and drawing logic apart from one another. Keep gamestate in a struct