Index: code/branches/gui/src/orxonox/gamestates/GSClient.cc
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSClient.cc	(revision 2843)
+++ code/branches/gui/src/orxonox/gamestates/GSClient.cc	(revision 2844)
@@ -35,11 +35,14 @@
 #include "core/Core.h"
 #include "network/Client.h"
+#include "core/Game.h"
 
 namespace orxonox
 {
+    AddGameState(GSClient, "client");
+
     SetCommandLineArgument(ip, "127.0.0.1").information("#.#.#.#");
 
-    GSClient::GSClient()
-        : GameState("client")
+    GSClient::GSClient(const std::string& name)
+        : GameState(name)
         , client_(0)
     {
@@ -50,5 +53,5 @@
     }
 
-    void GSClient::enter()
+    void GSClient::activate()
     {
         Core::setIsClient(true);
@@ -59,13 +62,9 @@
             ThrowException(InitialisationFailed, "Could not establish connection with server.");
 
-        GSLevel::enter();
-
         client_->update(Core::getGameClock());
     }
 
-    void GSClient::leave()
+    void GSClient::deactivate()
     {
-        GSLevel::leave();
-
         client_->closeConnection();
 
@@ -76,10 +75,7 @@
     }
 
-    void GSClient::ticked(const Clock& time)
+    void GSClient::update(const Clock& time)
     {
-        GSLevel::ticked(time);
         client_->update(time);
-
-        this->tickChild(time);
     }
 }
Index: code/branches/gui/src/orxonox/gamestates/GSClient.h
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSClient.h	(revision 2843)
+++ code/branches/gui/src/orxonox/gamestates/GSClient.h	(revision 2844)
@@ -33,20 +33,18 @@
 #include "core/GameState.h"
 #include "network/NetworkPrereqs.h"
-#include "GSLevel.h"
 
 namespace orxonox
 {
-    class _OrxonoxExport GSClient : public GameState, public GSLevel
+    class _OrxonoxExport GSClient : public GameState
     {
     public:
-        GSClient();
+        GSClient(const std::string& name);
         ~GSClient();
 
+        void activate();
+        void deactivate();
+        void update(const Clock& time);
 
     private:
-        void enter();
-        void leave();
-        void ticked(const Clock& time);
-
         Client* client_;
     };
Index: code/branches/gui/src/orxonox/gamestates/GSDedicated.cc
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSDedicated.cc	(revision 2843)
+++ code/branches/gui/src/orxonox/gamestates/GSDedicated.cc	(revision 2844)
@@ -37,9 +37,12 @@
 #include "objects/Tickable.h"
 #include "util/Sleep.h"
+#include "core/Game.h"
 
 namespace orxonox
 {
-    GSDedicated::GSDedicated()
-        : GameState("dedicated")
+    AddGameState(GSDedicated, "dedicated");
+
+    GSDedicated::GSDedicated(const std::string& name)
+        : GameState(name)
         , server_(0)
         , timeSinceLastUpdate_(0)
@@ -51,5 +54,5 @@
     }
 
-    void GSDedicated::enter()
+    void GSDedicated::activate()
     {
         Core::setHasServer(true);
@@ -58,13 +61,9 @@
         COUT(0) << "Loading scene in server mode" << std::endl;
 
-        GSLevel::enter();
-
         server_->open();
     }
 
-    void GSDedicated::leave()
+    void GSDedicated::deactivate()
     {
-        GSLevel::leave();
-
         this->server_->close();
         delete this->server_;
@@ -73,5 +72,5 @@
     }
 
-    void GSDedicated::ticked(const Clock& time)
+    void GSDedicated::update(const Clock& time)
     {
 //        static float startTime = time.getSecondsPrecise();
@@ -83,7 +82,5 @@
 //            COUT(0) << "estimated ticks/sec: " << nrOfTicks/(time.getSecondsPrecise()-startTime) << endl;
             timeSinceLastUpdate_ -= static_cast<unsigned int>(timeSinceLastUpdate_ / NETWORK_PERIOD) * NETWORK_PERIOD;
-            GSLevel::ticked(time);
             server_->update(time);
-            this->tickChild(time);
         }
         else
Index: code/branches/gui/src/orxonox/gamestates/GSDedicated.h
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSDedicated.h	(revision 2843)
+++ code/branches/gui/src/orxonox/gamestates/GSDedicated.h	(revision 2844)
@@ -33,21 +33,20 @@
 #include "core/GameState.h"
 #include "network/NetworkPrereqs.h"
-#include "GSLevel.h"
 
 namespace orxonox
 {
-    class _OrxonoxExport GSDedicated : public GameState, public GSLevel
+    class _OrxonoxExport GSDedicated : public GameState
     {
     public:
-        GSDedicated();
+        GSDedicated(const std::string& name);
         ~GSDedicated();
 
+        void activate();
+        void deactivate();
+        void update(const Clock& time);
+
     private:
-        void enter();
-        void leave();
-        void ticked(const Clock& time);
-
-        Server*      server_;
-        float        timeSinceLastUpdate_;
+        Server* server_;
+        float   timeSinceLastUpdate_;
     };
 }
Index: code/branches/gui/src/orxonox/gamestates/GSGUI.cc
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSGUI.cc	(revision 2843)
+++ code/branches/gui/src/orxonox/gamestates/GSGUI.cc	(revision 2844)
@@ -32,13 +32,17 @@
 #include <OgreViewport.h>
 #include "core/Clock.h"
+#include "core/ConsoleCommand.h"
 #include "core/input/InputManager.h"
 #include "core/input/SimpleInputState.h"
 #include "gui/GUIManager.h"
 #include "GraphicsManager.h"
+#include "core/Game.h"
 
 namespace orxonox
 {
-    GSGUI::GSGUI()
-        : GameState("gui")
+    AddGameState(GSGUI, "gui");
+
+    GSGUI::GSGUI(const std::string& name)
+        : GameState(name)
     {
     }
@@ -48,5 +52,5 @@
     }
 
-    void GSGUI::enter()
+    void GSGUI::activate()
     {
         guiManager_ = GUIManager::getInstancePtr();
@@ -56,17 +60,37 @@
         guiManager_->showGUI("MainMenu", 0);
         GraphicsManager::getInstance().getViewport()->setCamera(guiManager_->getCamera());
+
+        {
+            // time factor console command
+            FunctorMember<GSGUI>* functor = createFunctor(&GSGUI::startGame);
+            functor->setObject(this);
+            this->ccStartGame_ = createConsoleCommand(functor, "startGame");
+            CommandExecutor::addConsoleCommandShortcut(this->ccStartGame_);
+        }
     }
 
-    void GSGUI::leave()
+    void GSGUI::deactivate()
     {
+        if (this->ccStartGame_)
+        {
+            delete this->ccStartGame_;
+            this->ccStartGame_ = 0;
+        }
+
         guiManager_->hideGUI();
     }
 
-    void GSGUI::ticked(const Clock& time)
+    void GSGUI::update(const Clock& time)
     {
         // tick CEGUI
         guiManager_->update(time);
+    }
 
-        this->tickChild(time);
+    void GSGUI::startGame()
+    {
+        // HACK - HACK
+        Game::getInstance().popState();
+        Game::getInstance().requestState("standalone");
+        Game::getInstance().requestState("level");
     }
 }
Index: code/branches/gui/src/orxonox/gamestates/GSGUI.h
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSGUI.h	(revision 2843)
+++ code/branches/gui/src/orxonox/gamestates/GSGUI.h	(revision 2844)
@@ -38,13 +38,18 @@
     {
     public:
-        GSGUI();
+        GSGUI(const std::string& name);
         ~GSGUI();
 
+        void activate();
+        void deactivate();
+        void update(const Clock& time);
+
+        void startGame();
+
     private:
-        void enter();
-        void leave();
-        void ticked(const Clock& time);
+        GUIManager* guiManager_;
 
-        GUIManager* guiManager_;
+        // console commands
+        ConsoleCommand* ccStartGame_;
     };
 }
Index: code/branches/gui/src/orxonox/gamestates/GSGraphics.cc
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSGraphics.cc	(revision 2843)
+++ code/branches/gui/src/orxonox/gamestates/GSGraphics.cc	(revision 2844)
@@ -45,10 +45,12 @@
 #include "gui/GUIManager.h"
 #include "GraphicsManager.h"
-#include "Game.h"
+#include "core/Game.h"
 
 namespace orxonox
 {
-    GSGraphics::GSGraphics()
-        : GameState("graphics")
+    AddGameState(GSGraphics, "graphics");
+
+    GSGraphics::GSGraphics(const std::string& name)
+        : GameState(name)
         , inputManager_(0)
         , console_(0)
@@ -60,5 +62,4 @@
     {
         RegisterRootObject(GSGraphics);
-        setConfigValues();
     }
 
@@ -71,6 +72,8 @@
     }
 
-    void GSGraphics::enter()
+    void GSGraphics::activate()
     {
+        setConfigValues();
+
         Core::setShowsGraphics(true);
 
@@ -108,5 +111,5 @@
     }
 
-    void GSGraphics::leave()
+    void GSGraphics::deactivate()
     {
         if (Core::showsGraphics())
@@ -146,5 +149,5 @@
         need the time. So we shouldn't run into problems.
     */
-    void GSGraphics::ticked(const Clock& time)
+    void GSGraphics::update(const Clock& time)
     {
         uint64_t timeBeforeTick = time.getRealMicroseconds();
@@ -152,5 +155,4 @@
         this->inputManager_->update(time);        // tick console
         this->console_->update(time);
-        this->tickChild(time);
 
         uint64_t timeAfterTick = time.getRealMicroseconds();
Index: code/branches/gui/src/orxonox/gamestates/GSGraphics.h
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSGraphics.h	(revision 2843)
+++ code/branches/gui/src/orxonox/gamestates/GSGraphics.h	(revision 2844)
@@ -32,5 +32,4 @@
 #include "OrxonoxPrereqs.h"
 #include "core/GameState.h"
-#include "core/OrxonoxClass.h"
 #include "tools/WindowEventListener.h"
 
@@ -39,22 +38,18 @@
     class _OrxonoxExport GSGraphics : public GameState, public WindowEventListener
     {
-        friend class ClassIdentifier<GSGraphics>;
-
     public:
-        GSGraphics();
+        GSGraphics(const std::string& name);
         ~GSGraphics();
-
-    private: // functions
-        void enter();
-        void leave();
-        void ticked(const Clock& time);
-
         void setConfigValues();
 
+        void activate();
+        void deactivate();
+        void update(const Clock& time);
+
+    private:
         // Window events from WindowEventListener
         void windowResized(unsigned int newWidth, unsigned int newHeight);
         void windowFocusChanged();
 
-    private:
         // managed singletons
         InputManager*         inputManager_;
Index: code/branches/gui/src/orxonox/gamestates/GSIOConsole.cc
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSIOConsole.cc	(revision 2843)
+++ code/branches/gui/src/orxonox/gamestates/GSIOConsole.cc	(revision 2844)
@@ -36,9 +36,12 @@
 
 #include "core/ConsoleCommand.h"
+#include "core/Game.h"
 
 namespace orxonox
 {
-    GSIOConsole::GSIOConsole()
-        : GameState("ioConsole")
+    AddGameState(GSIOConsole, "ioConsole");
+
+    GSIOConsole::GSIOConsole(const std::string& name)
+        : GameState(name)
     {
     }
@@ -48,19 +51,17 @@
     }
 
-    void GSIOConsole::enter()
+    void GSIOConsole::activate()
     {
     }
 
-    void GSIOConsole::leave()
+    void GSIOConsole::deactivate()
     {
     }
 
-    void GSIOConsole::ticked(const Clock& time)
+    void GSIOConsole::update(const Clock& time)
     {
         std::string command;
         std::getline(std::cin, command);
         CommandExecutor::execute(command, true);
-        
-        tickChild(time);
     }
 }
Index: code/branches/gui/src/orxonox/gamestates/GSIOConsole.h
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSIOConsole.h	(revision 2843)
+++ code/branches/gui/src/orxonox/gamestates/GSIOConsole.h	(revision 2844)
@@ -31,5 +31,4 @@
 
 #include "OrxonoxPrereqs.h"
-#include <OgrePrerequisites.h>
 #include "core/GameState.h"
 
@@ -39,11 +38,13 @@
     {
     public:
-        GSIOConsole();
+        GSIOConsole(const std::string& name);
         ~GSIOConsole();
 
+        void activate();
+        void deactivate();
+        void update(const Clock& time);
+
     private:
-        void enter();
-        void leave();
-        void ticked(const Clock& time);
+
     };
 }
Index: code/branches/gui/src/orxonox/gamestates/GSLevel.cc
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSLevel.cc	(revision 2843)
+++ code/branches/gui/src/orxonox/gamestates/GSLevel.cc	(revision 2844)
@@ -47,12 +47,15 @@
 #include "LevelManager.h"
 #include "PlayerManager.h"
+#include "core/Game.h"
 
 namespace orxonox
 {
+    AddGameState(GSLevel, "level");
+
     SetCommandLineArgument(level, "presentation.oxw").shortcut("l");
 
-    GSLevel::GSLevel()
-//        : GameState(name)
-        : keyBinder_(0)
+    GSLevel::GSLevel(const std::string& name)
+        : GameState(name)
+        , keyBinder_(0)
         , inputState_(0)
         , radar_(0)
@@ -65,19 +68,19 @@
         this->ccKeybind_ = 0;
         this->ccTkeybind_ = 0;
-
+    }
+
+    GSLevel::~GSLevel()
+    {
+    }
+
+    void GSLevel::setConfigValues()
+    {
+        SetConfigValue(keyDetectorCallbackCode_, "KeybindBindingStringKeyName=");
+    }
+
+    void GSLevel::activate()
+    {
         setConfigValues();
-    }
-
-    GSLevel::~GSLevel()
-    {
-    }
-
-    void GSLevel::setConfigValues()
-    {
-        SetConfigValue(keyDetectorCallbackCode_, "KeybindBindingStringKeyName=");
-    }
-
-    void GSLevel::enter()
-    {
+
         if (Core::showsGraphics())
         {
@@ -126,5 +129,5 @@
     }
 
-    void GSLevel::leave()
+    void GSLevel::deactivate()
     {
         // destroy console commands
@@ -188,7 +191,7 @@
     }
 
-    void GSLevel::ticked(const Clock& time)
-    {
-        // Commented by 1337: Temporarily moved to GSGraphics.
+    void GSLevel::update(const Clock& time)
+    {
+        // Note: Temporarily moved to GSGraphics.
         //// Call the scene objects
         //for (ObjectList<Tickable>::iterator it = ObjectList<Tickable>::begin(); it; ++it)
@@ -233,5 +236,5 @@
         Command string that can be executed by the CommandExecutor
         OR: Internal string "KeybindBindingStringKeyName=" used for the second call to identify
-        the key/button/axis that has been activated. This is configured above in enter().
+        the key/button/axis that has been activated. This is configured above in activate().
     */
     void GSLevel::keybindInternal(const std::string& command, bool bTemporary)
Index: code/branches/gui/src/orxonox/gamestates/GSLevel.h
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSLevel.h	(revision 2843)
+++ code/branches/gui/src/orxonox/gamestates/GSLevel.h	(revision 2844)
@@ -31,24 +31,21 @@
 
 #include "OrxonoxPrereqs.h"
+#include "core/OrxonoxClass.h"
 #include "core/GameState.h"
-#include "core/OrxonoxClass.h"
 
 namespace orxonox
 {
-    class _OrxonoxExport GSLevel : public OrxonoxClass
+    class _OrxonoxExport GSLevel : public GameState, public OrxonoxClass
     {
-        friend class ClassIdentifier<GSLevel>;
     public:
-        GSLevel();
+        GSLevel(const std::string& name);
         ~GSLevel();
-
-        // was private before (is public now because of console command in GSStandalone)
         void setConfigValues();
 
+        void activate();
+        void deactivate();
+        void update(const Clock& time);
+
     protected:
-        void enter();
-        void leave();
-        void ticked(const Clock& time);
-
         void loadLevel();
         void unloadLevel();
Index: code/branches/gui/src/orxonox/gamestates/GSRoot.cc
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSRoot.cc	(revision 2843)
+++ code/branches/gui/src/orxonox/gamestates/GSRoot.cc	(revision 2844)
@@ -32,16 +32,18 @@
 #include "util/Exception.h"
 #include "util/Debug.h"
+#include "core/Clock.h"
 #include "core/Core.h"
-#include "core/CoreIncludes.h"
 #include "core/ConsoleCommand.h"
 #include "tools/TimeFactorListener.h"
 #include "tools/Timer.h"
 #include "objects/Tickable.h"
-#include "Game.h"
+#include "core/Game.h"
 
 namespace orxonox
 {
-    GSRoot::GSRoot()
-        : RootGameState("root")
+    AddGameState(GSRoot, "root");
+
+    GSRoot::GSRoot(const std::string& name)
+        : GameState(name)
         , timeFactor_(1.0f)
         , bPaused_(false)
@@ -56,16 +58,8 @@
     }
 
-    void GSRoot::enter()
+    void GSRoot::activate()
     {
         // reset game speed to normal
         timeFactor_ = 1.0f;
-
-        {
-            // add console commands
-            FunctorMember01<GameState, const std::string&>* functor = createFunctor(&GameState::requestState);
-            functor->setObject(this);
-            this->ccSelectGameState_ = createConsoleCommand(functor, "selectGameState");
-            CommandExecutor::addConsoleCommandShortcut(this->ccSelectGameState_);
-        }
 
         {
@@ -86,9 +80,6 @@
     }
 
-    void GSRoot::leave()
+    void GSRoot::deactivate()
     {
-        // destroy console commands
-        delete this->ccSelectGameState_;
-
         if (this->ccSetTimeFactor_)
         {
@@ -104,5 +95,5 @@
     }
 
-    void GSRoot::ticked(const Clock& time)
+    void GSRoot::update(const Clock& time)
     {
         uint64_t timeBeforeTick = time.getRealMicroseconds();
@@ -129,6 +120,4 @@
         // Also add our tick time to the list in GSRoot
         Game::getInstance().addTickTime(timeAfterTick - timeBeforeTick);
-
-        this->tickChild(time);
     }
 
Index: code/branches/gui/src/orxonox/gamestates/GSRoot.h
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSRoot.h	(revision 2843)
+++ code/branches/gui/src/orxonox/gamestates/GSRoot.h	(revision 2844)
@@ -31,20 +31,18 @@
 
 #include "OrxonoxPrereqs.h"
-
-#include <list>
-#include "core/RootGameState.h"
+#include "core/GameState.h"
 #include "core/OrxonoxClass.h"
 
 namespace orxonox
 {
-    class _OrxonoxExport GSRoot : public RootGameState
+    class _OrxonoxExport GSRoot : public GameState
     {
-        friend class ClassIdentifier<GSRoot>;
+    public:
+        GSRoot(const std::string& name);
+        ~GSRoot();
 
-    public:
-    
-    public:
-        GSRoot();
-        ~GSRoot();
+        void activate();
+        void deactivate();
+        void update(const Clock& time);
 
         // this has to be public because proteced triggers a bug in msvc
@@ -55,8 +53,4 @@
 
     private:
-        void enter();
-        void leave();
-        void ticked(const Clock& time);
-
         float                 timeFactor_;       //!< A factor that sets the gamespeed. 1 is normal.
         bool                  bPaused_;
@@ -64,5 +58,4 @@
 
         // console commands
-        ConsoleCommand*       ccSelectGameState_;
         ConsoleCommand*       ccSetTimeFactor_;
         ConsoleCommand*       ccPause_;
Index: code/branches/gui/src/orxonox/gamestates/GSServer.cc
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSServer.cc	(revision 2843)
+++ code/branches/gui/src/orxonox/gamestates/GSServer.cc	(revision 2844)
@@ -33,11 +33,14 @@
 #include "core/Core.h"
 #include "network/Server.h"
+#include "core/Game.h"
 
 namespace orxonox
 {
+    AddGameState(GSServer, "server");
+
     SetCommandLineArgument(port, 55556).shortcut("p").information("0-65535");
 
-    GSServer::GSServer()
-        : GameState("server")
+    GSServer::GSServer(const std::string& name)
+        : GameState(name)
         , server_(0)
     {
@@ -48,5 +51,5 @@
     }
 
-    void GSServer::enter()
+    void GSServer::activate()
     {
         Core::setHasServer(true);
@@ -55,13 +58,9 @@
         COUT(0) << "Loading scene in server mode" << std::endl;
 
-        GSLevel::enter();
-
         server_->open();
     }
 
-    void GSServer::leave()
+    void GSServer::deactivate()
     {
-        GSLevel::leave();
-
         this->server_->close();
         delete this->server_;
@@ -70,9 +69,7 @@
     }
 
-    void GSServer::ticked(const Clock& time)
+    void GSServer::update(const Clock& time)
     {
-        GSLevel::ticked(time);
         server_->update(time);
-        this->tickChild(time);
     }
 }
Index: code/branches/gui/src/orxonox/gamestates/GSServer.h
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSServer.h	(revision 2843)
+++ code/branches/gui/src/orxonox/gamestates/GSServer.h	(revision 2844)
@@ -33,20 +33,19 @@
 #include "core/GameState.h"
 #include "network/NetworkPrereqs.h"
-#include "GSLevel.h"
 
 namespace orxonox
 {
-    class _OrxonoxExport GSServer : public GameState, public GSLevel
+    class _OrxonoxExport GSServer : public GameState
     {
     public:
-        GSServer();
+        GSServer(const std::string& name);
         ~GSServer();
 
+        void activate();
+        void deactivate();
+        void update(const Clock& time);
+
     private:
-        void enter();
-        void leave();
-        void ticked(const Clock& time);
-
-        Server*      server_;
+        Server* server_;
     };
 }
Index: code/branches/gui/src/orxonox/gamestates/GSStandalone.cc
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSStandalone.cc	(revision 2843)
+++ code/branches/gui/src/orxonox/gamestates/GSStandalone.cc	(revision 2844)
@@ -36,9 +36,12 @@
 #include "gui/GUIManager.h"
 #include "GraphicsManager.h"
+#include "core/Game.h"
 
 namespace orxonox
 {
-    GSStandalone::GSStandalone()
-        : GameState("standalone")
+    AddGameState(GSStandalone, "standalone");
+
+    GSStandalone::GSStandalone(const std::string& name)
+        : GameState(name)
     {
     }
@@ -49,9 +52,7 @@
 
 
-    void GSStandalone::enter()
+    void GSStandalone::activate()
     {
         Core::setIsStandalone(true);
-
-        GSLevel::enter();
 
         guiManager_ = GUIManager::getInstancePtr();
@@ -60,12 +61,10 @@
     }
 
-    void GSStandalone::leave()
+    void GSStandalone::deactivate()
     {
-        GSLevel::leave();
-
         Core::setIsStandalone(false);
     }
 
-    void GSStandalone::ticked(const Clock& time)
+    void GSStandalone::update(const Clock& time)
     {
         //Ogre::Viewport* viewport = GraphicsManager::getInstance().getViewport();
@@ -77,7 +76,4 @@
         // tick CEGUI
         guiManager_->update(time);
-
-        GSLevel::ticked(time);
-        this->tickChild(time);
     }
 }
Index: code/branches/gui/src/orxonox/gamestates/GSStandalone.h
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSStandalone.h	(revision 2843)
+++ code/branches/gui/src/orxonox/gamestates/GSStandalone.h	(revision 2844)
@@ -32,20 +32,19 @@
 #include "OrxonoxPrereqs.h"
 #include "core/GameState.h"
-#include "GSLevel.h"
 
 namespace orxonox
 {
-    class _OrxonoxExport GSStandalone : public GameState, public GSLevel
+    class _OrxonoxExport GSStandalone : public GameState
     {
     public:
-        GSStandalone();
+        GSStandalone(const std::string& name);
         ~GSStandalone();
 
+        void activate();
+        void deactivate();
+        void update(const Clock& time);
+
     private:
-        void enter();
-        void leave();
-        void ticked(const Clock& time);
-
-        GUIManager*     guiManager_;
+        GUIManager* guiManager_;
     };
 }
