Refactor GameManager

Split the game logic from game flow control