halfway through game engine refactor