Index: code/trunk/src/orxonox/gamestates/GSGraphics.cc
===================================================================
--- code/trunk/src/orxonox/gamestates/GSGraphics.cc	(revision 7172)
+++ code/trunk/src/orxonox/gamestates/GSGraphics.cc	(revision 7284)
@@ -35,8 +35,8 @@
 #include "GSGraphics.h"
 
-#include "core/CommandExecutor.h"
-#include "core/ConsoleCommand.h"
 #include "core/Game.h"
 #include "core/GUIManager.h"
+#include "core/command/ConsoleCommand.h"
+#include "core/command/CommandExecutor.h"
 
 namespace orxonox
Index: code/trunk/src/orxonox/gamestates/GSLevel.cc
===================================================================
--- code/trunk/src/orxonox/gamestates/GSLevel.cc	(revision 7172)
+++ code/trunk/src/orxonox/gamestates/GSLevel.cc	(revision 7284)
@@ -36,5 +36,4 @@
 #include "core/input/InputState.h"
 #include "core/input/KeyBinderManager.h"
-#include "core/ConsoleCommand.h"
 #include "core/Game.h"
 #include "core/GameMode.h"
@@ -42,4 +41,5 @@
 #include "core/Loader.h"
 #include "core/XMLFile.h"
+#include "core/command/ConsoleCommand.h"
 
 #include "LevelManager.h"
Index: code/trunk/src/orxonox/gamestates/GSMainMenu.cc
===================================================================
--- code/trunk/src/orxonox/gamestates/GSMainMenu.cc	(revision 7172)
+++ code/trunk/src/orxonox/gamestates/GSMainMenu.cc	(revision 7284)
@@ -33,9 +33,9 @@
 #include "core/input/KeyBinderManager.h"
 #include "core/Game.h"
-#include "core/ConsoleCommand.h"
 #include "core/ConfigValueIncludes.h"
 #include "core/CoreIncludes.h"
 #include "core/GraphicsManager.h"
 #include "core/GUIManager.h"
+#include "core/command/ConsoleCommand.h"
 #include "Scene.h"
 #include "sound/AmbientSound.h"
@@ -48,4 +48,18 @@
     DeclareGameState(GSMainMenu, "mainMenu", false, true);
 
+    static const std::string __CC_startStandalone_name      = "startGame";
+    static const std::string __CC_startServer_name          = "startServer";
+    static const std::string __CC_startClient_name          = "startClient";
+    static const std::string __CC_startDedicated_name       = "startDedicated";
+    static const std::string __CC_startMainMenu_name        = "startMainMenu";
+    static const std::string __CC_setMainMenuSoundPath_name = "setMMSoundPath";
+
+    SetConsoleCommand(__CC_startStandalone_name,      &GSMainMenu::startStandalone).deactivate();
+    SetConsoleCommand(__CC_startServer_name,          &GSMainMenu::startServer    ).deactivate();
+    SetConsoleCommand(__CC_startClient_name,          &GSMainMenu::startClient    ).deactivate();
+    SetConsoleCommand(__CC_startDedicated_name,       &GSMainMenu::startDedicated ).deactivate();
+    SetConsoleCommand(__CC_startMainMenu_name,        &GSMainMenu::startMainMenu  ).deactivate();
+    SetConsoleCommand(__CC_setMainMenuSoundPath_name, &GSMainMenu::setMainMenuSoundPath).hide();
+
     GSMainMenu::GSMainMenu(const GameStateInfo& info)
         : GameState(info)
@@ -89,12 +103,10 @@
         InputManager::getInstance().enterState("MainMenuHackery");
 
-        CommandExecutor::addConsoleCommandShortcut(createConsoleCommand(createFunctor(&GSMainMenu::startStandalone), "startGame"));
-        CommandExecutor::addConsoleCommandShortcut(createConsoleCommand(createFunctor(&GSMainMenu::startServer), "startServer"));
-        CommandExecutor::addConsoleCommandShortcut(createConsoleCommand(createFunctor(&GSMainMenu::startClient), "startClient"));
-        CommandExecutor::addConsoleCommandShortcut(createConsoleCommand(createFunctor(&GSMainMenu::startDedicated), "startDedicated"));
-        CommandExecutor::addConsoleCommandShortcut(createConsoleCommand(createFunctor(&GSMainMenu::startMainMenu), "startMainMenu"));
-
-        // create command to change sound path
-        CommandExecutor::addConsoleCommandShortcut(createConsoleCommand(createFunctor(&GSMainMenu::setMainMenuSoundPath, this), "setMMSoundPath"));
+        ModifyConsoleCommand(__CC_startStandalone_name).activate();
+        ModifyConsoleCommand(__CC_startServer_name    ).activate();
+        ModifyConsoleCommand(__CC_startClient_name    ).activate();
+        ModifyConsoleCommand(__CC_startDedicated_name ).activate();
+        ModifyConsoleCommand(__CC_startMainMenu_name  ).activate();
+        ModifyConsoleCommand(__CC_setMainMenuSoundPath_name).setObject(this);
 
         KeyBinderManager::getInstance().setToDefault();
@@ -122,4 +134,11 @@
         GUIManager::hideGUI("MainMenu");
         GraphicsManager::getInstance().setCamera(0);
+
+        ModifyConsoleCommand(__CC_startStandalone_name).deactivate();
+        ModifyConsoleCommand(__CC_startServer_name    ).deactivate();
+        ModifyConsoleCommand(__CC_startClient_name    ).deactivate();
+        ModifyConsoleCommand(__CC_startDedicated_name ).deactivate();
+        ModifyConsoleCommand(__CC_startMainMenu_name  ).deactivate();
+        ModifyConsoleCommand(__CC_setMainMenuSoundPath_name).setObject(0);
     }
 
Index: code/trunk/src/orxonox/gamestates/GSRoot.cc
===================================================================
--- code/trunk/src/orxonox/gamestates/GSRoot.cc	(revision 7172)
+++ code/trunk/src/orxonox/gamestates/GSRoot.cc	(revision 7284)
@@ -31,7 +31,7 @@
 #include "util/Clock.h"
 #include "core/BaseObject.h"
-#include "core/ConsoleCommand.h"
 #include "core/Game.h"
 #include "core/GameMode.h"
+#include "core/command/ConsoleCommand.h"
 #include "network/NetworkFunction.h"
 #include "tools/Timer.h"
@@ -41,5 +41,11 @@
 {
     DeclareGameState(GSRoot, "root", false, false);
-    SetConsoleCommandShortcut(GSRoot, printObjects);
+
+    static const std::string __CC_setTimeFactor_name = "setTimeFactor";
+    static const std::string __CC_pause_name = "pause";
+
+    SetConsoleCommand("printObjects", &GSRoot::printObjects).hide();
+    SetConsoleCommand(__CC_setTimeFactor_name, &GSRoot::setTimeFactor).accessLevel(AccessLevel::Master).defaultValues(1.0);
+    SetConsoleCommand(__CC_pause_name,         &GSRoot::pause        ).accessLevel(AccessLevel::Master);
 
     registerStaticNetworkFunction(&TimeFactorListener::setTimeFactor);
@@ -76,15 +82,12 @@
         TimeFactorListener::setTimeFactor(1.0f);
 
-        // time factor console command
-        ConsoleCommand* command = createConsoleCommand(createFunctor(&GSRoot::setTimeFactor, this), "setTimeFactor");
-        CommandExecutor::addConsoleCommandShortcut(command).accessLevel(AccessLevel::Offline).defaultValue(0, 1.0);
-
-        // time factor console command
-        command = createConsoleCommand(createFunctor(&GSRoot::pause, this), "pause");
-        CommandExecutor::addConsoleCommandShortcut(command).accessLevel(AccessLevel::Offline);
+        ModifyConsoleCommand(__CC_setTimeFactor_name).setObject(this);
+        ModifyConsoleCommand(__CC_pause_name).setObject(this);
     }
 
     void GSRoot::deactivate()
     {
+        ModifyConsoleCommand(__CC_setTimeFactor_name).setObject(0);
+        ModifyConsoleCommand(__CC_pause_name).setObject(0);
     }
 
