huge refactor of game logic into Game class