Index: code/branches/gui/src/core/Game.cc
===================================================================
--- code/branches/gui/src/core/Game.cc	(revision 2844)
+++ code/branches/gui/src/core/Game.cc	(revision 2845)
@@ -50,8 +50,7 @@
 namespace orxonox
 {
-    void stop_game()
-    {
-        Game::getInstance().stop();
-    }
+    static void stop_game()
+        { Game::getInstance().stop(); }
+    SetConsoleCommandShortcutExternAlias(stop_game, "exit");
 
     struct _CoreExport GameStateTreeNode
@@ -61,8 +60,4 @@
         std::vector<GameStateTreeNode*> children_;
     };
-
-    SetCommandLineArgument(state, "gui").shortcut("s");
-    SetCommandLineSwitch(startWithConsole);
-    SetConsoleCommandShortcutExternAlias(stop_game, "exit");
 
     std::map<std::string, GameState*> Game::allStates_s;
@@ -132,41 +127,10 @@
     void Game::run()
     {
-        // </EXPORT THIS>
-        this->setStateHierarchy(
-        "root"
-        " graphics"
-        "  gui"
-        "  standalone"
-        "   level"
-        "  server"
-        "   level"
-        "  client"
-        "   level"
-        " dedicated"
-        "  level"
-        " ioConsole"
-        );
-        // </EXPORT THIS>
-
-
-        // Always start with the root state
+        // Always start with the ROOT state
         this->requestedStateNodes_.push_back(this->rootStateNode_);
         this->activeStateNode_ = this->rootStateNode_;
         this->loadState(this->rootStateNode_->state_);
 
-        // <EXPORT THIS>
-        if (CommandLine::getValue("startWithConsole").getBool())
-        {
-            // Start the game in the console
-            this->requestState("ioConsole");
-        }
-        else
-        {
-            // Start in GUI main menu
-            this->requestState("graphics");
-            this->requestState("gui");
-        }
-        // </EXPORT THIS>
-
+        // START GAME
         this->gameClock_->capture(); // first delta time should be about 0 seconds
         while (!this->abort_ && !this->activeStates_.empty())
@@ -224,5 +188,5 @@
         }
 
-        // Unload all remaining states
+        // UNLOAD all remaining states
         while (!this->activeStates_.empty())
             this->unloadState(this->activeStates_.back());
Index: code/branches/gui/src/orxonox/Main.cc
===================================================================
--- code/branches/gui/src/orxonox/Main.cc	(revision 2844)
+++ code/branches/gui/src/orxonox/Main.cc	(revision 2845)
@@ -48,4 +48,20 @@
     {
         orxonox::Game orxonox(argc, argv);
+
+        orxonox.setStateHierarchy(
+        "root"
+        " graphics"
+        "  mainMenu"
+        "  standalone"
+        "   level"
+        "  server"
+        "   level"
+        "  client"
+        "   level"
+        " dedicated"
+        "  level"
+        " ioConsole"
+        );
+
         orxonox.run();
     } // orxonox gets destroyed right here!
Index: code/branches/gui/src/orxonox/gamestates/GSGUI.cc
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSGUI.cc	(revision 2844)
+++ code/branches/gui/src/orxonox/gamestates/GSGUI.cc	(revision 2845)
@@ -41,5 +41,5 @@
 namespace orxonox
 {
-    AddGameState(GSGUI, "gui");
+    AddGameState(GSGUI, "mainMenu");
 
     GSGUI::GSGUI(const std::string& name)
Index: code/branches/gui/src/orxonox/gamestates/GSRoot.cc
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSRoot.cc	(revision 2844)
+++ code/branches/gui/src/orxonox/gamestates/GSRoot.cc	(revision 2845)
@@ -34,4 +34,5 @@
 #include "core/Clock.h"
 #include "core/Core.h"
+#include "core/CommandLine.h"
 #include "core/ConsoleCommand.h"
 #include "tools/TimeFactorListener.h"
@@ -43,4 +44,5 @@
 {
     AddGameState(GSRoot, "root");
+    SetCommandLineSwitch(startWithConsole);
 
     GSRoot::GSRoot(const std::string& name)
@@ -78,4 +80,18 @@
             CommandExecutor::addConsoleCommandShortcut(this->ccPause_).accessLevel(AccessLevel::Offline);
         }
+
+        // Determine where to start
+        if (CommandLine::getValue("startWithConsole").getBool())
+        {
+            // Start the game in the console
+            Game::getInstance().requestState("ioConsole");
+        }
+        else
+        {
+            // Start in GUI main menu
+            Game::getInstance().requestState("graphics");
+            Game::getInstance().requestState("mainMenu");
+        }
+
     }
 
