Index: code/branches/gui/src/core/Core.cc
===================================================================
--- code/branches/gui/src/core/Core.cc	(revision 2845)
+++ code/branches/gui/src/core/Core.cc	(revision 2846)
@@ -102,9 +102,6 @@
     }
 
-    Clock* Core::initialise(int argc, char** argv)
-    {
-        // Set up a basic clock to keep time
-        this->gameClock_ = new Clock();
-
+    void Core::initialise(int argc, char** argv)
+    {
         // Parse command line arguments fist
         try
@@ -175,7 +172,4 @@
         
         this->loaded_ = true;
-
-        // Return non const pointer to the game's clock for the main loop
-        return this->gameClock_;
     }
 
@@ -199,6 +193,4 @@
         // Also delete external console command that don't belong to an Identifier
         CommandExecutor::destroyExternalCommands();
-
-        delete this->gameClock_;
 
         assert(Core::singletonRef_s);
Index: code/branches/gui/src/core/Core.h
===================================================================
--- code/branches/gui/src/core/Core.h	(revision 2845)
+++ code/branches/gui/src/core/Core.h	(revision 2846)
@@ -45,6 +45,4 @@
 #include "util/OutputHandler.h"
 
-// Only allow main to access postMainInitialisation, so we need a forward declaration
-int main(int, char**);
 // boost::filesystem header has quite a large tail, use forward declaration
 namespace boost { namespace filesystem
@@ -64,5 +62,5 @@
             ~Core();
 
-            Clock* initialise(int argc, char** argv);
+            void initialise(int argc, char** argv);
             void setConfigValues();
 
@@ -75,6 +73,4 @@
             static const std::string& getLanguage();
             static void  resetLanguage();
-
-            static const Clock& getGameClock() { return *getInstance().gameClock_; }
 
             static void tsetMediaPath(const std::string& path)
@@ -123,6 +119,4 @@
             TclThreadManager*     tclThreadManager_;
 
-            Clock*                gameClock_;
-
             int softDebugLevel_;                            //!< The debug level
             int softDebugLevelConsole_;                     //!< The debug level for the console
Index: code/branches/gui/src/core/Game.cc
===================================================================
--- code/branches/gui/src/core/Game.cc	(revision 2845)
+++ code/branches/gui/src/core/Game.cc	(revision 2846)
@@ -86,6 +86,10 @@
         this->avgTickTime_ = 0.0f;
 
+
+        // Set up a basic clock to keep time
+        this->gameClock_ = new Clock();
+
         this->core_ = new orxonox::Core();
-        this->gameClock_ = this->core_->initialise(argc, argv);
+        this->core_->initialise(argc, argv);
 
         RegisterRootObject(Game);
@@ -104,4 +108,6 @@
         for (std::map<std::string, GameState*>::const_iterator it = allStates_s.begin(); it != allStates_s.end(); ++it)
             delete it->second;
+
+        delete this->gameClock_;
 
         assert(singletonRef_s);
@@ -158,4 +164,5 @@
 
             // UPDATE, bottom to top in the stack
+            this->core_->update(*this->gameClock_);
             for (std::vector<GameState*>::const_iterator it = this->activeStates_.begin();
                 it != this->activeStates_.end(); ++it)
Index: code/branches/gui/src/core/Game.h
===================================================================
--- code/branches/gui/src/core/Game.h	(revision 2845)
+++ code/branches/gui/src/core/Game.h	(revision 2846)
@@ -68,4 +68,6 @@
         void popState();
 
+        const Clock& getGameClock() { return *this->gameClock_; }
+
         float getAvgTickTime() { return this->avgTickTime_; }
         float getAvgFPS()      { return this->avgFPS_; }
Index: code/branches/gui/src/core/input/KeyBinder.cc
===================================================================
--- code/branches/gui/src/core/input/KeyBinder.cc	(revision 2845)
+++ code/branches/gui/src/core/input/KeyBinder.cc	(revision 2846)
@@ -42,5 +42,4 @@
 #include "core/CoreIncludes.h"
 #include "core/ConfigFileManager.h"
-#include "core/Core.h"
 #include "InputCommands.h"
 #include "InputManager.h"
Index: code/branches/gui/src/network/ChatListener.cc
===================================================================
--- code/branches/gui/src/network/ChatListener.cc	(revision 2845)
+++ code/branches/gui/src/network/ChatListener.cc	(revision 2846)
@@ -30,5 +30,4 @@
 
 #include "core/CoreIncludes.h"
-#include "core/Core.h"
 
 namespace orxonox
Index: code/branches/gui/src/network/ClientConnectionListener.cc
===================================================================
--- code/branches/gui/src/network/ClientConnectionListener.cc	(revision 2845)
+++ code/branches/gui/src/network/ClientConnectionListener.cc	(revision 2846)
@@ -1,2 +1,30 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Oliver Scheuss
+ *   Co-authors:
+ *      ...
+ *
+ */
+
 #include "ClientConnectionListener.h"
 #include "core/CoreIncludes.h"
Index: code/branches/gui/src/orxonox/gamestates/GSClient.cc
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSClient.cc	(revision 2845)
+++ code/branches/gui/src/orxonox/gamestates/GSClient.cc	(revision 2846)
@@ -62,5 +62,5 @@
             ThrowException(InitialisationFailed, "Could not establish connection with server.");
 
-        client_->update(Core::getGameClock());
+        client_->update(Game::getInstance().getGameClock());
     }
 
Index: code/branches/gui/src/orxonox/gamestates/GSGraphics.cc
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSGraphics.cc	(revision 2845)
+++ code/branches/gui/src/orxonox/gamestates/GSGraphics.cc	(revision 2846)
@@ -113,6 +113,5 @@
     void GSGraphics::deactivate()
     {
-        if (Core::showsGraphics())
-            InputManager::getInstance().requestLeaveState("master");
+        InputManager::getInstance().requestLeaveState("master");
 
         delete this->guiManager_;
@@ -129,14 +128,13 @@
         delete graphicsManager_;
 
-        if (Core::showsGraphics())
+        masterInputState_->setHandler(0);
+        InputManager::getInstance().requestDestroyState("master");
+        if (this->masterKeyBinder_)
         {
-            masterInputState_->setHandler(0);
-            InputManager::getInstance().requestDestroyState("master");
-            if (this->masterKeyBinder_)
-            {
-                delete this->masterKeyBinder_;
-                this->masterKeyBinder_ = 0;
-            }
+            delete this->masterKeyBinder_;
+            this->masterKeyBinder_ = 0;
         }
+
+        Core::setShowsGraphics(false);
     }
 
Index: code/branches/gui/src/orxonox/gamestates/GSRoot.cc
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSRoot.cc	(revision 2845)
+++ code/branches/gui/src/orxonox/gamestates/GSRoot.cc	(revision 2846)
@@ -115,6 +115,4 @@
         uint64_t timeBeforeTick = time.getRealMicroseconds();
 
-        Core::getInstance().update(time);
-
         for (ObjectList<TimerBase>::iterator it = ObjectList<TimerBase>::begin(); it; ++it)
             it->tick(time);
