Perhaps a gamestate could add itself to the engine here, instead of relying on the creator to call addGameState