Index: code/branches/gui/src/orxonox/GraphicsEngine.cc
===================================================================
--- code/branches/gui/src/orxonox/GraphicsEngine.cc	(revision 1652)
+++ code/branches/gui/src/orxonox/GraphicsEngine.cc	(revision 1653)
@@ -64,4 +64,6 @@
 namespace orxonox
 {
+    SetConsoleCommand(GraphicsEngine, printScreen, true).setKeybindMode(KeybindMode::OnPress);
+
     GraphicsEngine* GraphicsEngine::singletonRef_s = 0;
 
@@ -72,5 +74,5 @@
         The only instance of GraphicsEngine.
     */
-    /*static*/ GraphicsEngine& GraphicsEngine::getSingleton()
+    /*static*/ GraphicsEngine& GraphicsEngine::getInstance()
     {
         assert(singletonRef_s);
@@ -128,7 +130,4 @@
         if (this->root_)
             delete this->root_;
-        this->root_ = 0;
-        this->levelSceneManager_ = 0;
-        this->renderWindow_ = 0;
 
 #if ORXONOX_PLATFORM == ORXONOX_PLATFORM_WIN32
@@ -154,5 +153,5 @@
         CCOUT(3) << "Setting up..." << std::endl;
 
-        // TODO: LogManager doesn't work on linux platform. The why is yet unknown.
+        // TODO: LogManager doesn't work on oli platform. The why is yet unknown.
 #if ORXONOX_PLATFORM == ORXONOX_PLATFORM_WIN32
         // create a new logManager
@@ -193,11 +192,12 @@
         root_ = new Ogre::Root(ogrePluginsFile_, ogreConfigFile_, ogreLogFile_);
 
-        if (!root_->getInstalledPlugins().size())
-        {
-            ThrowException(PluginsNotFound, "No Ogre plugins declared. Cannot load Ogre.");
-        }
-
-#if 0 // Ogre 1.4.3 doesn't support setDebugOutputEnabled(.)
-//#if ORXONOX_PLATFORM != ORXONOX_PLATFORM_WIN32
+        // We don't need plugins for the dedicated..
+        //if (!root_->getInstalledPlugins().size() > 0)
+        //{
+        //    ThrowException(PluginsNotFound, "No Ogre plugins declared. Cannot load Ogre.");
+        //}
+
+#if 0 // Ogre 1.4.3 doesn't yet support setDebugOutputEnabled(.)
+#if ORXONOX_PLATFORM != ORXONOX_PLATFORM_WIN32
         // tame the ogre ouput so we don't get all the mess in the console
         Ogre::Log* defaultLog = Ogre::LogManager::getSingleton().getDefaultLog();
@@ -206,4 +206,5 @@
         defaultLog->addListener(this);
 #endif
+#endif
 
         CCOUT(4) << "Creating Ogre Root done" << std::endl;
@@ -233,7 +234,7 @@
             cf.load(Settings::getDataPath() + resourceFile_);
         }
-        catch (Ogre::Exception& ex)
-        {
-            COUT(1) << ex.getFullDescription() << std::endl;
+        catch (...)
+        {
+            //COUT(1) << ex.getFullDescription() << std::endl;
             COUT(0) << "Have you forgotten to set the data path in orxnox.ini?" << std::endl;
             throw;
@@ -300,5 +301,5 @@
     }
 
-    bool GraphicsEngine::initialiseResources()
+    void GraphicsEngine::initialiseResources()
     {
         CCOUT(4) << "Initialising resources" << std::endl;
@@ -313,11 +314,9 @@
             }*/
         }
-        catch (Ogre::Exception& e)
-        {
-            CCOUT(2) << "Error: There was an Error when initialising the resources." << std::endl;
-            CCOUT(2) << "ErrorMessage: " << e.getFullDescription() << std::endl;
-            return false;
-        }
-        return true;
+        catch (...)
+        {
+            CCOUT(2) << "Error: There was a serious error when initialising the resources." << std::endl;
+            throw;
+        }
     }
 
@@ -326,5 +325,5 @@
         Creates the SceneManager
     */
-    bool GraphicsEngine::createNewScene()
+    void GraphicsEngine::createNewScene()
     {
         CCOUT(4) << "Creating new SceneManager..." << std::endl;
@@ -332,9 +331,7 @@
         {
             CCOUT(2) << "SceneManager already exists! Skipping." << std::endl;
-            return false;
         }
         this->levelSceneManager_ = this->root_->createSceneManager(Ogre::ST_GENERIC, "LevelSceneManager");
-        CCOUT(3) << "Created SceneManager: " << levelSceneManager_ << std::endl;
-        return true;
+        CCOUT(3) << "Created SceneManager: " << levelSceneManager_->getName() << std::endl;
     }
 
@@ -487,3 +484,11 @@
     }
 
+
+    /*static*/ void GraphicsEngine::printScreen()
+    {
+        if (getInstance().renderWindow_)
+        {
+            getInstance().renderWindow_->writeContentsToTimestampedFile("shot_", ".jpg");
+        }
+    }
 }
Index: code/branches/gui/src/orxonox/GraphicsEngine.h
===================================================================
--- code/branches/gui/src/orxonox/GraphicsEngine.h	(revision 1652)
+++ code/branches/gui/src/orxonox/GraphicsEngine.h	(revision 1653)
@@ -62,6 +62,6 @@
         void declareRessourceLocations();
         void loadRenderer();
-        bool initialiseResources();
-        bool createNewScene();
+        void initialiseResources();
+        void createNewScene();
 
         void setLevelSceneManager(Ogre::SceneManager* sceneMgr) { this->levelSceneManager_ = sceneMgr; }
@@ -87,6 +87,9 @@
         { return this->detailLevelParticle_; }
 
-        static GraphicsEngine& getSingleton();
-        static GraphicsEngine* getSingletonPtr() { return singletonRef_s; }
+        // console commands
+        static void printScreen();
+
+        static GraphicsEngine& getInstance();
+        static GraphicsEngine* getInstancePtr() { return singletonRef_s; }
 
     private:
Index: code/branches/gui/src/orxonox/Orxonox.cc
===================================================================
--- code/branches/gui/src/orxonox/Orxonox.cc	(revision 1652)
+++ code/branches/gui/src/orxonox/Orxonox.cc	(revision 1653)
@@ -112,5 +112,5 @@
     , mode_(GameMode::GM_Unspecified)
     , debugRefreshTime_(0.0f)
-    , ogre_(0)
+    , graphicsEngine_(0)
     , inputManager_(0)
     , radar_(0)
@@ -157,6 +157,6 @@
       delete inputManager_;
 
-    if (this->ogre_)
-      delete ogre_;
+    if (this->graphicsEngine_)
+      delete graphicsEngine_;
 
     if (network::Client::getSingleton())
@@ -212,160 +212,169 @@
   }
 
-
-  /**
-   * Starts the whole Game.
-   * @param path path to config (in home dir or something)
-   */
-  void Orxonox::start()
-  {
-#ifdef _DEBUG
-    ConfigFileManager::getSingleton()->setFile(CFT_Settings, "orxonox_d.ini");
+    /**
+    @brief
+        Starts the whole Game.
+    @param path
+        path to config (in home dir or something)
+    */
+    void Orxonox::start()
+    {
+#if ORXONOX_DEBUG_MODE == 1
+        ConfigFileManager::getSingleton()->setFile(CFT_Settings, "orxonox_d.ini");
 #else
-    ConfigFileManager::getSingleton()->setFile(CFT_Settings, "orxonox.ini");
+        ConfigFileManager::getSingleton()->setFile(CFT_Settings, "orxonox.ini");
 #endif
-    Factory::createClassHierarchy();
-
-    setConfigValues();
-
-    const Settings::CommandLineArgument* mode = Settings::getCommandLineArgument("mode");
-    assert(mode);
-    if (!mode->bHasDefaultValue_)
+
+        // creates the class hierarchy for all classes with factories
+        Factory::createClassHierarchy();
+
+        setConfigValues();
+
+        const Settings::CommandLineArgument* mode = Settings::getCommandLineArgument("mode");
+        assert(mode);
+        if (!mode->bHasDefaultValue_)
+        {
+            Settings::setGameMode(mode->value_);
+            this->mode_ = Settings::getGameMode();
+        }
+        COUT(3) << "Orxonox: Game mode is " << mode_.name << "." << std::endl;
+
+        const Settings::CommandLineArgument* dataPath = Settings::getCommandLineArgument("dataPath");
+        assert(dataPath);
+        if (!dataPath->bHasDefaultValue_)
+        {
+            if (*dataPath->value_.getString().end() != '/' && *dataPath->value_.getString().end() != '\\')
+                Settings::tsetDataPath(dataPath->value_.getString() + "/");
+            else
+                Settings::tsetDataPath(dataPath->value_.getString());
+        }
+
+        try
+        {
+            // initialise TCL
+            TclBind::getInstance().setDataPath(Settings::getDataPath());
+
+            graphicsEngine_ = new GraphicsEngine();
+            graphicsEngine_->setup();       // creates ogre root and other essentials
+
+            if (mode_.showsGraphics)
+            {
+                graphicsEngine_->loadRenderer();    // creates the render window
+
+                // TODO: Spread this so that this call only initialises things needed for the Console and GUI
+                graphicsEngine_->initialiseResources();
+
+                // Calls the InputManager which sets up the input devices.
+                // The render window width and height are used to set up the mouse movement.
+                inputManager_ = new InputManager();
+                inputManager_->initialise(graphicsEngine_->getWindowHandle(),
+                    graphicsEngine_->getWindowWidth(), graphicsEngine_->getWindowHeight(), true, true, true);
+                KeyBinder* keyBinder = new KeyBinder();
+                keyBinder->loadBindings();
+                inputManager_->createInputState<SimpleInputState>("game", 20)->setHandler(keyBinder);
+
+                // Load the InGameConsole
+                console_ = new InGameConsole();
+                console_->initialise();
+
+                // load the CEGUI interface
+                guiManager_ = new GUIManager();
+                guiManager_->initialise();
+            }
+            else
+            {
+                // TODO: Initialise a not yet written console that operates in the shell we
+                // started the game from.
+                // We probably want to use std::cin to catch input (OIS uses DirectX or X server)
+            }
+
+            bool showGUI = true;
+            if (mode_.mode != GameMode::Unspecified)
+            {
+                showGUI = false;
+                // a game mode was specified with the command line
+                // we therefore load the game and level directly
+
+                if (!loadLevel(this->mode_))
+                {
+                    COUT(1) << "Loading with predefined mode failed. Showing main menu." << std::endl;
+                    showGUI = true;
+                    mode_ = GameMode::GM_Unspecified;
+                }
+            }
+
+            if (showGUI)
+            {
+                // show main menu
+                GUIManager::getInstance().showGUI("MainMenu", 0);
+                GraphicsEngine::getInstance().getViewport()->setCamera(GUIManager::getInstance().getCamera());
+            }
+        }
+        catch (std::exception& ex)
+        {
+            COUT(1) << ex.what() << std::endl;
+            COUT(1) << "Loading sequence aborted." << std::endl;
+            return;
+        }
+
+        modeRequest_ = mode_;
+        // here happens the game
+        startRenderLoop();
+
+        if (mode_.mode == GameMode::Client)
+            network::Client::getSingleton()->closeConnection();
+
+        if (mode_.hasServer)
+            server_g->close();
+    }
+
+    /*static*/ void Orxonox::loadGame(const std::string& name)
     {
-      Settings::setGameMode(mode->value_);
-      this->mode_ = Settings::getGameMode();
+        const GameMode& mode = Settings::getGameMode(name);
+        if (mode.mode == GameMode::None)
+            return;
+
+        getSingleton().modeRequest_ = mode;
     }
-    COUT(3) << "Orxonox: Game mode is " << mode_.name << "." << std::endl;
-
-    const Settings::CommandLineArgument* dataPath = Settings::getCommandLineArgument("dataPath");
-    assert(dataPath);
-    if (!dataPath->bHasDefaultValue_)
+
+    bool Orxonox::loadLevel(const GameMode& mode)
     {
-      if (*dataPath->value_.getString().end() != '/' && *dataPath->value_.getString().end() != '\\')
-        Settings::tsetDataPath(dataPath->value_.getString() + "/");
-      else
-        Settings::tsetDataPath(dataPath->value_.getString());
+        bool success = true;
+
+        if (mode.showsGraphics)
+        {
+            // create Ogre SceneManager for the level
+            graphicsEngine_->createNewScene();
+
+            if (!loadPlayground())
+                return false;
+        }
+
+        switch (mode.mode)
+        {
+        case GameMode::Server:
+            success &= serverLoad();
+            break;
+        case GameMode::Client:
+            success &= clientLoad();
+            break;
+        case GameMode::Dedicated:
+            success &= serverLoad();
+            break;
+        case GameMode::Standalone:
+            success &= standaloneLoad();
+            break;
+        default: // never happens
+            assert(false);
+        }
+
+        if (success)
+        {
+            InputManager::getInstance().requestEnterState("game");
+            this->mode_ = mode;
+        }
+
+        return success;
     }
-
-    try
-    {
-        // initialise TCL
-        TclBind::getInstance().setDataPath(Settings::getDataPath());
-
-        ogre_ = new GraphicsEngine();
-        ogre_->setup();       // creates ogre root and other essentials
-
-        if (mode_.showsGraphics)
-        {
-          ogre_->loadRenderer();    // creates the render window
-
-          // TODO: Spread this so that this call only initialises things needed for the Console and GUI
-          ogre_->initialiseResources();
-
-          // Calls the InputManager which sets up the input devices.
-          // The render window width and height are used to set up the mouse movement.
-          inputManager_ = new InputManager();
-          inputManager_->initialise(ogre_->getWindowHandle(),
-                ogre_->getWindowWidth(), ogre_->getWindowHeight(), true, true, true);
-          KeyBinder* keyBinder = new KeyBinder();
-          keyBinder->loadBindings();
-          inputManager_->createSimpleInputState("game", 20)->setHandler(keyBinder);
-
-          // Load the InGameConsole
-          console_ = new InGameConsole();
-          console_->initialise();
-
-          // load the CEGUI interface
-          guiManager_ = new GUIManager();
-          guiManager_->initialise();
-        }
-
-        bool showGUI = true;
-        if (mode_.mode != GameMode::Unspecified)
-        {
-          showGUI = false;
-          // a game mode was specified with the command line
-          // we therefore load the game and level directly
-
-          if (!loadLevel(this->mode_))
-          {
-            COUT(1) << "Loading with predefined mode failed. Showing main menu." << std::endl;
-            showGUI = true;
-            mode_ = GameMode::GM_Unspecified;
-          }
-        }
-        
-        if (showGUI)
-        {
-          // show main menu
-          GUIManager::getInstance().showGUI("MainMenu", 0);
-          GraphicsEngine::getSingleton().getViewport()->setCamera(GUIManager::getInstance().getCamera());
-        }
-    }
-    catch (std::exception& ex)
-    {
-      COUT(1) << ex.what() << std::endl;
-      COUT(1) << "Loading sequence aborted." << std::endl;
-      return;
-    }
-
-    modeRequest_ = mode_;
-    // here happens the game
-    startRenderLoop();
-
-    if (mode_.mode == GameMode::Client)
-      network::Client::getSingleton()->closeConnection();
-
-    if (mode_.hasServer)
-      server_g->close();
-  }
-
-  /*static*/ void Orxonox::loadGame(const std::string& name)
-  {
-      const GameMode& mode = Settings::getGameMode(name);
-      if (mode.mode == GameMode::None)
-          return;
-
-      getSingleton().modeRequest_ = mode;
-  }
-
-  bool Orxonox::loadLevel(const GameMode& mode)
-  {
-      bool success = true;
-
-      if (mode.showsGraphics)
-      {
-        // create Ogre SceneManager for the level
-        ogre_->createNewScene();
-
-        if (!loadPlayground())
-            return false;
-      }
-
-      switch (mode.mode)
-      {
-      case GameMode::Server:
-        success &= serverLoad();
-        break;
-      case GameMode::Client:
-        success &= clientLoad();
-        break;
-      case GameMode::Dedicated:
-        success &= serverLoad();
-        break;
-      case GameMode::Standalone:
-        success &= standaloneLoad();
-        break;
-      default: // never happens
-          assert(false);
-      }
-      
-      if (success)
-      {
-        InputManager::getInstance().requestEnterState("game");
-        this->mode_ = mode;
-      }
-
-      return success;
-  }
 
   /**
@@ -528,8 +537,8 @@
         if (timeAfterTick > refreshStartTime + refreshTime)
         {
-          GraphicsEngine::getSingleton().setAverageTickTime(
+          GraphicsEngine::getInstance().setAverageTickTime(
               (float)tickTime * 0.001 / (frameCount - oldFrameCount));
           float avgFPS = (float)(frameCount - oldFrameCount) / (timeAfterTick - refreshStartTime) * 1000000.0;
-          GraphicsEngine::getSingleton().setAverageFramesPerSecond(avgFPS);
+          GraphicsEngine::getInstance().setAverageFramesPerSecond(avgFPS);
 
           oldFrameCount = frameCount;
@@ -552,5 +561,5 @@
           // make sure the window stays active even when not focused
           // (probably only necessary on windows)
-          GraphicsEngine::getSingleton().setWindowActivity(true);
+          GraphicsEngine::getInstance().setWindowActivity(true);
 
           // tick CEGUI
Index: code/branches/gui/src/orxonox/Orxonox.h
===================================================================
--- code/branches/gui/src/orxonox/Orxonox.h	(revision 1652)
+++ code/branches/gui/src/orxonox/Orxonox.h	(revision 1653)
@@ -84,10 +84,10 @@
 
     private:
-      Level*                startLevel_;    //!< current hard coded default level
-      Level*                hud_;           //!< 'level' object fo the HUD
-      //audio::AudioManager*  auMan_;         //!< audio manager
-      Ogre::Timer*          timer_;         //!< Main loop timer
-      bool                  bAbort_;        //!< aborts the render loop if true
-      float                 timefactor_;    //!< A factor to change the gamespeed
+      Level*                startLevel_;       //!< current hard coded default level
+      Level*                hud_;              //!< 'level' object fo the HUD
+      //audio::AudioManager*  auMan_;            //!< audio manager
+      Ogre::Timer*          timer_;            //!< Main loop timer
+      bool                  bAbort_;           //!< aborts the render loop if true
+      float                 timefactor_;       //!< A factor to change the gamespeed
 
       // this is used to identify the mode (server/client/...) we're in
@@ -99,7 +99,7 @@
 
       // By Orxonox managed singleton pointers
-      GraphicsEngine*       ogre_;          //!< our dearest graphics engine <3
+      GraphicsEngine*       graphicsEngine_;   //!< our dearest graphics engine <3
       InputManager*         inputManager_;
-      Radar*                radar_;         //!< represents the Radar (not the HUD part)
+      Radar*                radar_;            //!< represents the Radar (not the HUD part)
       InGameConsole*        console_;
       GUIManager*           guiManager_;
Index: code/branches/gui/src/orxonox/OrxonoxPrereqs.h
===================================================================
--- code/branches/gui/src/orxonox/OrxonoxPrereqs.h	(revision 1652)
+++ code/branches/gui/src/orxonox/OrxonoxPrereqs.h	(revision 1653)
@@ -84,5 +84,4 @@
     class Backlight;
     class Camera;
-    class Fighter;
     class Model;
     class NPC;
@@ -131,3 +130,14 @@
 }
 
+namespace CEGUI
+{
+    class LuaScriptModule;
+
+    class OgreCEGUIRenderer;
+    class OgreCEGUIResourceProvider;
+    class OgreCEGUITexture;
+}
+
+struct lua_State;
+
 #endif /* _OrxonoxPrereqs_H__ */
Index: code/branches/gui/src/orxonox/gui/GUIManager.cc
===================================================================
--- code/branches/gui/src/orxonox/gui/GUIManager.cc	(revision 1652)
+++ code/branches/gui/src/orxonox/gui/GUIManager.cc	(revision 1653)
@@ -29,5 +29,6 @@
 /**
     @file
-    @brief Implementation of the GUIManager class.
+    @brief
+        Implementation of the GUIManager class.
 */
 
@@ -120,5 +121,5 @@
             {
                 // get the render window
-                renderWindow_ = GraphicsEngine::getSingleton().getRenderWindow();
+                renderWindow_ = GraphicsEngine::getInstance().getRenderWindow();
 
                 // Full screen viewport with Z order = 0 (top most). Don't yet feed a camera (so nothing gets rendered)
@@ -150,5 +151,5 @@
 
                 // register us as input handler
-                SimpleInputState* state = InputManager::getInstance().createSimpleInputState("gui", 30);
+                SimpleInputState* state = InputManager::getInstance().createInputState<SimpleInputState>("gui", 30);
                 state->setHandler(this);
                 state->setJoyStickHandler(new EmptyHandler());
@@ -159,5 +160,5 @@
             catch (CEGUI::Exception& ex)
             {
-#if CEGUI_VERSION_MINOR < 6
+#if CEGUI_VERSION_MAJOR == 0 && CEGUI_VERSION_MINOR < 6
                 throw GeneralException(ex.getMessage().c_str());
 #else
Index: code/branches/gui/src/orxonox/gui/GUIManager.h
===================================================================
--- code/branches/gui/src/orxonox/gui/GUIManager.h	(revision 1652)
+++ code/branches/gui/src/orxonox/gui/GUIManager.h	(revision 1653)
@@ -41,12 +41,4 @@
 #include <CEGUISystem.h>
 #include "core/input/InputInterfaces.h"
-
-// forward declarations
-namespace CEGUI
-{
-    class OgreCEGUIRenderer;
-    class LuaScriptModule;
-}
-struct lua_State;
 
 namespace orxonox // tolua_export
Index: code/branches/gui/src/orxonox/objects/Ambient.cc
===================================================================
--- code/branches/gui/src/orxonox/objects/Ambient.cc	(revision 1652)
+++ code/branches/gui/src/orxonox/objects/Ambient.cc	(revision 1653)
@@ -65,5 +65,5 @@
 
     bool Ambient::create(){
-      GraphicsEngine::getSingleton().getLevelSceneManager()->setAmbientLight(ambientLight_);
+      GraphicsEngine::getInstance().getLevelSceneManager()->setAmbientLight(ambientLight_);
       return Synchronisable::create();
     }
@@ -76,5 +76,5 @@
     void Ambient::setAmbientLight(const ColourValue& colour)
     {
-        GraphicsEngine::getSingleton().getLevelSceneManager()->setAmbientLight(colour);
+        GraphicsEngine::getInstance().getLevelSceneManager()->setAmbientLight(colour);
       ambientLight_=colour;	
     }
Index: code/branches/gui/src/orxonox/objects/Backlight.cc
===================================================================
--- code/branches/gui/src/orxonox/objects/Backlight.cc	(revision 1652)
+++ code/branches/gui/src/orxonox/objects/Backlight.cc	(revision 1653)
@@ -58,6 +58,6 @@
         this->attachObject(this->billboard_.getBillboardSet());
 
-        this->ribbonTrail_ = GraphicsEngine::getSingleton().getLevelSceneManager()->createRibbonTrail(this->getName() + "RibbonTrail");
-        this->ribbonTrailNode_ = GraphicsEngine::getSingleton().getLevelSceneManager()->getRootSceneNode()->createChildSceneNode(this->getName() + "RibbonTrailNode");
+        this->ribbonTrail_ = GraphicsEngine::getInstance().getLevelSceneManager()->createRibbonTrail(this->getName() + "RibbonTrail");
+        this->ribbonTrailNode_ = GraphicsEngine::getInstance().getLevelSceneManager()->getRootSceneNode()->createChildSceneNode(this->getName() + "RibbonTrailNode");
         this->ribbonTrailNode_->attachObject(this->ribbonTrail_);
         this->ribbonTrail_->addNode(this->getNode());
@@ -76,6 +76,6 @@
         {
             this->detachObject(this->billboard_.getBillboardSet());
-            GraphicsEngine::getSingleton().getLevelSceneManager()->destroySceneNode(this->getName() + "RibbonTrailNode");
-            GraphicsEngine::getSingleton().getLevelSceneManager()->destroyRibbonTrail(this->ribbonTrail_);
+            GraphicsEngine::getInstance().getLevelSceneManager()->destroySceneNode(this->getName() + "RibbonTrailNode");
+            GraphicsEngine::getInstance().getLevelSceneManager()->destroyRibbonTrail(this->ribbonTrail_);
         }
     }
Index: code/branches/gui/src/orxonox/objects/Camera.cc
===================================================================
--- code/branches/gui/src/orxonox/objects/Camera.cc	(revision 1652)
+++ code/branches/gui/src/orxonox/objects/Camera.cc	(revision 1653)
@@ -52,5 +52,5 @@
   {
     this->bHasFocus_ = false;
-    this->cameraNode_ = GraphicsEngine::getSingleton().getLevelSceneManager()->getRootSceneNode()->createChildSceneNode(node->getName() + "Camera");
+    this->cameraNode_ = GraphicsEngine::getInstance().getLevelSceneManager()->getRootSceneNode()->createChildSceneNode(node->getName() + "Camera");
     if( node != NULL )
       this->setPositionNode(node);
@@ -60,5 +60,5 @@
   {
     CameraHandler::getInstance()->releaseFocus(this);
-    GraphicsEngine::getSingleton().getLevelSceneManager()->getRootSceneNode()->removeAndDestroyChild(cameraNode_->getName());
+    GraphicsEngine::getInstance().getLevelSceneManager()->getRootSceneNode()->removeAndDestroyChild(cameraNode_->getName());
   }
 
Index: code/branches/gui/src/orxonox/objects/CameraHandler.cc
===================================================================
--- code/branches/gui/src/orxonox/objects/CameraHandler.cc	(revision 1652)
+++ code/branches/gui/src/orxonox/objects/CameraHandler.cc	(revision 1653)
@@ -44,7 +44,7 @@
   CameraHandler::CameraHandler()
   {
-    this->cam_ = GraphicsEngine::getSingleton().getLevelSceneManager()->createCamera("Cam");
-    GraphicsEngine::getSingleton().getViewport()->setCamera(this->cam_);
-    //GraphicsEngine::getSingleton().getRenderWindow()->addViewport(this->cam_, 2, 0.4, 0.4, 0.2, 0.2);
+    this->cam_ = GraphicsEngine::getInstance().getLevelSceneManager()->createCamera("Cam");
+    GraphicsEngine::getInstance().getViewport()->setCamera(this->cam_);
+    //GraphicsEngine::getInstance().getRenderWindow()->addViewport(this->cam_, 2, 0.4, 0.4, 0.2, 0.2);
     /*this->activeCamera_ = *ObjectList<Camera>::begin();
     this->activeCamera_->cam_ = this->cam_;*/
Index: code/branches/gui/src/orxonox/objects/ParticleSpawner.cc
===================================================================
--- code/branches/gui/src/orxonox/objects/ParticleSpawner.cc	(revision 1652)
+++ code/branches/gui/src/orxonox/objects/ParticleSpawner.cc	(revision 1653)
@@ -79,5 +79,5 @@
         this->setPosition(this->getNode()->getParent()->getPosition());
         this->getNode()->getParent()->removeChild(this->getNode());
-        GraphicsEngine::getSingleton().getLevelSceneManager()->getRootSceneNode()->addChild(this->getNode());
+        GraphicsEngine::getInstance().getLevelSceneManager()->getRootSceneNode()->addChild(this->getNode());
         if (this->particle_)
             this->particle_->setEnabled(false);
Index: code/branches/gui/src/orxonox/objects/Skybox.cc
===================================================================
--- code/branches/gui/src/orxonox/objects/Skybox.cc	(revision 1652)
+++ code/branches/gui/src/orxonox/objects/Skybox.cc	(revision 1653)
@@ -56,5 +56,5 @@
     void Skybox::setSkybox(const std::string& skyboxname)
     {
-        GraphicsEngine::getSingleton().getLevelSceneManager()->setSkyBox(true, skyboxname);
+        GraphicsEngine::getInstance().getLevelSceneManager()->setSkyBox(true, skyboxname);
     }
 
@@ -92,5 +92,5 @@
     {
         BaseObject::changedVisibility();
-        GraphicsEngine::getSingleton().getLevelSceneManager()->setSkyBox(this->isVisible(), this->skyboxSrc_);
+        GraphicsEngine::getInstance().getLevelSceneManager()->setSkyBox(this->isVisible(), this->skyboxSrc_);
     }
 }
Index: code/branches/gui/src/orxonox/objects/WorldEntity.cc
===================================================================
--- code/branches/gui/src/orxonox/objects/WorldEntity.cc	(revision 1652)
+++ code/branches/gui/src/orxonox/objects/WorldEntity.cc	(revision 1653)
@@ -49,10 +49,10 @@
         RegisterObject(WorldEntity);
 
-        if (GraphicsEngine::getSingleton().getLevelSceneManager())
+        if (GraphicsEngine::getInstance().getLevelSceneManager())
         {
             std::ostringstream name;
             name << (WorldEntity::worldEntityCounter_s++);
             this->setName("WorldEntity" + name.str());
-            this->node_ = GraphicsEngine::getSingleton().getLevelSceneManager()->getRootSceneNode()->createChildSceneNode(this->getName());
+            this->node_ = GraphicsEngine::getInstance().getLevelSceneManager()->getRootSceneNode()->createChildSceneNode(this->getName());
 
             registerAllVariables();
@@ -77,5 +77,5 @@
         {
             this->getNode()->removeAndDestroyAllChildren();
-            GraphicsEngine::getSingleton().getLevelSceneManager()->destroySceneNode(this->getName());
+            GraphicsEngine::getInstance().getLevelSceneManager()->destroySceneNode(this->getName());
         }
     }
@@ -178,5 +178,5 @@
     void WorldEntity::attachObject(const WorldEntity& obj) const
     {
-        GraphicsEngine::getSingleton().getLevelSceneManager()->getRootSceneNode()->removeChild(obj.getNode());
+        GraphicsEngine::getInstance().getLevelSceneManager()->getRootSceneNode()->removeChild(obj.getNode());
         this->getNode()->addChild(obj.getNode());
     }
@@ -184,5 +184,5 @@
     void WorldEntity::attachObject(WorldEntity* obj) const
     {
-        GraphicsEngine::getSingleton().getLevelSceneManager()->getRootSceneNode()->removeChild(obj->getNode());
+        GraphicsEngine::getInstance().getLevelSceneManager()->getRootSceneNode()->removeChild(obj->getNode());
         this->getNode()->addChild(obj->getNode());
     }
Index: code/branches/gui/src/orxonox/overlays/OrxonoxOverlay.cc
===================================================================
--- code/branches/gui/src/orxonox/overlays/OrxonoxOverlay.cc	(revision 1652)
+++ code/branches/gui/src/orxonox/overlays/OrxonoxOverlay.cc	(revision 1653)
@@ -115,6 +115,6 @@
             // We'll have to get the aspect ratio manually for the first time. Afterwards windowResized() gets
             // called automatically by the GraphicsEngine.
-            this->windowResized(GraphicsEngine::getSingleton().getWindowWidth(),
-                GraphicsEngine::getSingleton().getWindowHeight());
+            this->windowResized(GraphicsEngine::getInstance().getWindowWidth(),
+                GraphicsEngine::getInstance().getWindowHeight());
 
             this->changedVisibility();
Index: code/branches/gui/src/orxonox/overlays/console/InGameConsole.cc
===================================================================
--- code/branches/gui/src/orxonox/overlays/console/InGameConsole.cc	(revision 1652)
+++ code/branches/gui/src/orxonox/overlays/console/InGameConsole.cc	(revision 1653)
@@ -147,5 +147,5 @@
     {
         // create the corresponding input state
-        InputManager::getInstance().createSimpleInputState("console", 40)
+        InputManager::getInstance().createInputState<SimpleInputState>("console", 40)
             ->setKeyHandler(Shell::getInstance().getInputBuffer());
 
@@ -219,5 +219,5 @@
         this->consoleOverlayContainer_->addChild(this->consoleOverlayNoise_);
 
-        this->windowResized(GraphicsEngine::getSingleton().getWindowWidth(), GraphicsEngine::getSingleton().getWindowHeight());
+        this->windowResized(GraphicsEngine::getInstance().getWindowWidth(), GraphicsEngine::getInstance().getWindowHeight());
 
         // move overlay "above" the top edge of the screen
Index: code/branches/gui/src/orxonox/overlays/debug/DebugFPSText.cc
===================================================================
--- code/branches/gui/src/orxonox/overlays/debug/DebugFPSText.cc	(revision 1652)
+++ code/branches/gui/src/orxonox/overlays/debug/DebugFPSText.cc	(revision 1653)
@@ -49,5 +49,5 @@
     void DebugFPSText::tick(float dt)
     {
-        float fps = GraphicsEngine::getSingleton().getAverageFramesPerSecond();
+        float fps = GraphicsEngine::getInstance().getAverageFramesPerSecond();
         this->text_->setCaption(this->getCaption() + convertToString(fps));
     }
Index: code/branches/gui/src/orxonox/overlays/debug/DebugRTRText.cc
===================================================================
--- code/branches/gui/src/orxonox/overlays/debug/DebugRTRText.cc	(revision 1652)
+++ code/branches/gui/src/orxonox/overlays/debug/DebugRTRText.cc	(revision 1653)
@@ -49,5 +49,5 @@
     void DebugRTRText::tick(float dt)
     {
-        float rtr = GraphicsEngine::getSingleton().getAverageTickTime();
+        float rtr = GraphicsEngine::getInstance().getAverageTickTime();
         this->text_->setCaption(this->getCaption() + convertToString(rtr));
     }
Index: code/branches/gui/src/orxonox/tools/BillboardSet.cc
===================================================================
--- code/branches/gui/src/orxonox/tools/BillboardSet.cc	(revision 1652)
+++ code/branches/gui/src/orxonox/tools/BillboardSet.cc	(revision 1653)
@@ -50,5 +50,5 @@
         std::ostringstream name;
         name << (BillboardSet::billboardSetCounter_s++);
-        this->billboardSet_ = GraphicsEngine::getSingleton().getLevelSceneManager()->createBillboardSet("Billboard" + name.str(), count);
+        this->billboardSet_ = GraphicsEngine::getInstance().getLevelSceneManager()->createBillboardSet("Billboard" + name.str(), count);
         this->billboardSet_->createBillboard(Vector3::ZERO);
         this->billboardSet_->setMaterialName(file);
@@ -59,5 +59,5 @@
         std::ostringstream name;
         name << (BillboardSet::billboardSetCounter_s++);
-        this->billboardSet_ = GraphicsEngine::getSingleton().getLevelSceneManager()->createBillboardSet("Billboard" + name.str(), count);
+        this->billboardSet_ = GraphicsEngine::getInstance().getLevelSceneManager()->createBillboardSet("Billboard" + name.str(), count);
         this->billboardSet_->createBillboard(Vector3::ZERO, colour);
         this->billboardSet_->setMaterialName(file);
@@ -68,5 +68,5 @@
         std::ostringstream name;
         name << (BillboardSet::billboardSetCounter_s++);
-        this->billboardSet_ = GraphicsEngine::getSingleton().getLevelSceneManager()->createBillboardSet("Billboard" + name.str(), count);
+        this->billboardSet_ = GraphicsEngine::getInstance().getLevelSceneManager()->createBillboardSet("Billboard" + name.str(), count);
         this->billboardSet_->createBillboard(position);
         this->billboardSet_->setMaterialName(file);
@@ -77,5 +77,5 @@
         std::ostringstream name;
         name << (BillboardSet::billboardSetCounter_s++);
-        this->billboardSet_ = GraphicsEngine::getSingleton().getLevelSceneManager()->createBillboardSet("Billboard" + name.str(), count);
+        this->billboardSet_ = GraphicsEngine::getInstance().getLevelSceneManager()->createBillboardSet("Billboard" + name.str(), count);
         this->billboardSet_->createBillboard(position, colour);
         this->billboardSet_->setMaterialName(file);
@@ -85,5 +85,5 @@
     {
         if (this->billboardSet_)
-            GraphicsEngine::getSingleton().getLevelSceneManager()->destroyBillboardSet(this->billboardSet_);
+            GraphicsEngine::getInstance().getLevelSceneManager()->destroyBillboardSet(this->billboardSet_);
     }
 }
Index: code/branches/gui/src/orxonox/tools/Light.cc
===================================================================
--- code/branches/gui/src/orxonox/tools/Light.cc	(revision 1652)
+++ code/branches/gui/src/orxonox/tools/Light.cc	(revision 1653)
@@ -49,5 +49,5 @@
         std::ostringstream name;
         name << (Light::lightCounter_s++);
-        this->light_ = GraphicsEngine::getSingleton().getLevelSceneManager()->createLight("Light" + name.str());
+        this->light_ = GraphicsEngine::getInstance().getLevelSceneManager()->createLight("Light" + name.str());
         this->light_->setType(type);
         this->light_->setDiffuseColour(diffuse);
@@ -58,5 +58,5 @@
     {
         if (this->light_)
-            GraphicsEngine::getSingleton().getLevelSceneManager()->destroyLight(this->light_);
+            GraphicsEngine::getInstance().getLevelSceneManager()->destroyLight(this->light_);
     }
 }
Index: code/branches/gui/src/orxonox/tools/Mesh.cc
===================================================================
--- code/branches/gui/src/orxonox/tools/Mesh.cc	(revision 1652)
+++ code/branches/gui/src/orxonox/tools/Mesh.cc	(revision 1653)
@@ -49,5 +49,5 @@
         std::ostringstream name;
         name << (Mesh::meshCounter_s++);
-        this->entity_ = GraphicsEngine::getSingleton().getLevelSceneManager()->createEntity("Mesh" + name.str(), file);
+        this->entity_ = GraphicsEngine::getInstance().getLevelSceneManager()->createEntity("Mesh" + name.str(), file);
     }
 
@@ -55,5 +55,5 @@
     {
         if (this->entity_)
-            GraphicsEngine::getSingleton().getLevelSceneManager()->destroyEntity(this->entity_);
+            GraphicsEngine::getInstance().getLevelSceneManager()->destroyEntity(this->entity_);
     }
 }
Index: code/branches/gui/src/orxonox/tools/ParticleInterface.cc
===================================================================
--- code/branches/gui/src/orxonox/tools/ParticleInterface.cc	(revision 1652)
+++ code/branches/gui/src/orxonox/tools/ParticleInterface.cc	(revision 1653)
@@ -55,8 +55,8 @@
     this->bEnabled_ = true;
     this->detaillevel_ = (unsigned int)detaillevel;
-    this->particleSystem_ = GraphicsEngine::getSingleton().getLevelSceneManager()->createParticleSystem("particles" + getConvertedValue<unsigned int, std::string>(ParticleInterface::counter_s++), templateName);
+    this->particleSystem_ = GraphicsEngine::getInstance().getLevelSceneManager()->createParticleSystem("particles" + getConvertedValue<unsigned int, std::string>(ParticleInterface::counter_s++), templateName);
     this->particleSystem_->setSpeedFactor(Orxonox::getSingleton().getTimeFactor());
 
-    if (GraphicsEngine::getSingleton().getDetailLevelParticle() < (unsigned int)this->detaillevel_)
+    if (GraphicsEngine::getInstance().getDetailLevelParticle() < (unsigned int)this->detaillevel_)
     {
       this->bVisible_ = false;
@@ -72,5 +72,5 @@
   {
     this->particleSystem_->removeAllEmitters();
-    GraphicsEngine::getSingleton().getLevelSceneManager()->destroyParticleSystem(particleSystem_);
+    GraphicsEngine::getInstance().getLevelSceneManager()->destroyParticleSystem(particleSystem_);
   }
 
