refactored GameState