Encapsulate game logic, massive refactor