Better implementation of TurnState and GameFactory