Index: code/branches/questsystem5/src/orxonox/tools/BillboardSet.cc
===================================================================
--- code/branches/questsystem5/src/orxonox/tools/BillboardSet.cc	(revision 2777)
+++ code/branches/questsystem5/src/orxonox/tools/BillboardSet.cc	(revision 2907)
@@ -37,5 +37,5 @@
 #include <OgreBillboard.h>
 
-#include "core/Core.h"
+#include "core/GameMode.h"
 #include "util/Convert.h"
 #include "util/String.h"
@@ -72,5 +72,5 @@
         try
         {
-            if (Core::showsGraphics())
+            if (GameMode::showsGraphics())
             {
                 this->billboardSet_ = scenemanager->createBillboardSet("Billboard" + convertToString(BillboardSet::billboardSetCounter_s++), count);
@@ -95,5 +95,5 @@
         try
         {
-            if (Core::showsGraphics())
+            if (GameMode::showsGraphics())
             {
                 this->billboardSet_ = scenemanager->createBillboardSet("Billboard" + convertToString(BillboardSet::billboardSetCounter_s++), count);
Index: code/branches/questsystem5/src/orxonox/tools/CMakeLists.txt
===================================================================
--- code/branches/questsystem5/src/orxonox/tools/CMakeLists.txt	(revision 2777)
+++ code/branches/questsystem5/src/orxonox/tools/CMakeLists.txt	(revision 2907)
@@ -5,4 +5,5 @@
   Shader.cc
   TextureGenerator.cc
+  TimeFactorListener.cc
   Timer.cc
   WindowEventListener.cc
Index: code/branches/questsystem5/src/orxonox/tools/Mesh.cc
===================================================================
--- code/branches/questsystem5/src/orxonox/tools/Mesh.cc	(revision 2777)
+++ code/branches/questsystem5/src/orxonox/tools/Mesh.cc	(revision 2907)
@@ -35,5 +35,5 @@
 #include <cassert>
 
-#include "core/Core.h"
+#include "core/GameMode.h"
 #include "util/Convert.h"
 #include "util/String.h"
@@ -64,5 +64,5 @@
             this->scenemanager_->destroyEntity(this->entity_);
 
-        if (Core::showsGraphics())
+        if (GameMode::showsGraphics())
         {
             try
@@ -70,4 +70,13 @@
                 this->entity_ = this->scenemanager_->createEntity("Mesh" + convertToString(Mesh::meshCounter_s++), meshsource);
                 this->entity_->setCastShadows(this->bCastShadows_);
+
+                this->entity_->setNormaliseNormals(true);
+                /*
+                    Excerpt from Ogre forum:
+                    "Note that the above is only for the fixed function pipeline.
+                    If/when you get into shaders, you'll need to manually normalize() the normal inside the vertex or pixel shader."
+
+                    I don't know exactly what this means, but I put this here if there will be problems with shaders.
+                */
             }
             catch (...)
Index: code/branches/questsystem5/src/orxonox/tools/ParticleInterface.cc
===================================================================
--- code/branches/questsystem5/src/orxonox/tools/ParticleInterface.cc	(revision 2777)
+++ code/branches/questsystem5/src/orxonox/tools/ParticleInterface.cc	(revision 2907)
@@ -40,6 +40,6 @@
 #include <cassert>
 
-#include "GraphicsEngine.h"
-#include "core/Core.h"
+#include "GraphicsManager.h"
+#include "core/GameMode.h"
 #include "core/CoreIncludes.h"
 #include "util/Convert.h"
@@ -64,5 +64,5 @@
         this->speedFactor_ = 1.0f;
 
-        if (Core::showsGraphics())
+        if (GameMode::showsGraphics())
         {
             try
@@ -178,6 +178,6 @@
     {
         this->detaillevel_ = level;
-        if (GraphicsEngine::getInstancePtr())
-            this->detailLevelChanged(GraphicsEngine::getInstance().getDetailLevelParticle());
+        if (GameMode::showsGraphics())
+            this->detailLevelChanged(GraphicsManager::getInstance().getDetailLevelParticle());
     }
 
Index: code/branches/questsystem5/src/orxonox/tools/ParticleInterface.h
===================================================================
--- code/branches/questsystem5/src/orxonox/tools/ParticleInterface.h	(revision 2777)
+++ code/branches/questsystem5/src/orxonox/tools/ParticleInterface.h	(revision 2907)
@@ -37,5 +37,5 @@
 #include "core/OrxonoxClass.h"
 #include "util/Math.h"
-#include "gamestates/GSRoot.h"
+#include "tools/TimeFactorListener.h"
 
 #define getAllEmitters() \
Index: code/branches/questsystem5/src/orxonox/tools/Shader.cc
===================================================================
--- code/branches/questsystem5/src/orxonox/tools/Shader.cc	(revision 2777)
+++ code/branches/questsystem5/src/orxonox/tools/Shader.cc	(revision 2907)
@@ -36,8 +36,8 @@
 #include <OgrePlugin.h>
 
-#include "core/Core.h"
+#include "core/GameMode.h"
 #include "core/CoreIncludes.h"
 #include "core/Executor.h"
-#include "GraphicsEngine.h"
+#include "GraphicsManager.h"
 #include "util/Exception.h"
 
@@ -59,5 +59,5 @@
         this->compositorInstance_ = 0;
         this->bVisible_ = true;
-        this->bLoadCompositor_ = Core::showsGraphics() && GraphicsEngine::getInstancePtr();
+        this->bLoadCompositor_ = GameMode::showsGraphics();
         this->bViewportInitialized_ = false;
         this->compositor_ = "";
@@ -86,5 +86,5 @@
         if (this->bLoadCompositor_ && this->compositorInstance_)
         {
-            Ogre::Viewport* viewport = GraphicsEngine::getInstance().getViewport();
+            Ogre::Viewport* viewport = GraphicsManager::getInstance().getViewport();
             assert(viewport);
             Ogre::CompositorManager::getSingleton().removeCompositor(viewport, this->compositor_);
@@ -114,5 +114,5 @@
         if (this->bLoadCompositor_)
         {
-            Ogre::Viewport* viewport = GraphicsEngine::getInstance().getViewport();
+            Ogre::Viewport* viewport = GraphicsManager::getInstance().getViewport();
             assert(viewport);
             if (this->oldcompositor_ != "")
@@ -246,5 +246,5 @@
     Shader::ParameterPointer* Shader::getParameterPointer(const std::string& material, size_t technique, size_t pass, const std::string& parameter)
     {
-        if (!Core::showsGraphics() || !Shader::bLoadedCgPlugin_s)
+        if (!GameMode::showsGraphics() || !Shader::bLoadedCgPlugin_s)
             return 0;
 
Index: code/branches/questsystem5/src/orxonox/tools/TimeFactorListener.cc
===================================================================
--- code/branches/questsystem5/src/orxonox/tools/TimeFactorListener.cc	(revision 2907)
+++ code/branches/questsystem5/src/orxonox/tools/TimeFactorListener.cc	(revision 2907)
@@ -0,0 +1,41 @@
+/*
+ *   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:
+ *      Reto Grieder
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "OrxonoxStableHeaders.h"
+#include "TimeFactorListener.h"
+#include "core/CoreIncludes.h"
+
+namespace orxonox
+{
+    float TimeFactorListener::timefactor_s = 1.0f;
+
+    TimeFactorListener::TimeFactorListener()
+    {
+        RegisterRootObject(TimeFactorListener);
+    }
+}
Index: code/branches/questsystem5/src/orxonox/tools/TimeFactorListener.h
===================================================================
--- code/branches/questsystem5/src/orxonox/tools/TimeFactorListener.h	(revision 2907)
+++ code/branches/questsystem5/src/orxonox/tools/TimeFactorListener.h	(revision 2907)
@@ -0,0 +1,56 @@
+/*
+ *   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:
+ *      Reto Grieder
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#ifndef _TimeFactorListener_H__
+#define _TimeFactorListener_H__
+
+#include "OrxonoxPrereqs.h"
+#include "core/OrxonoxClass.h"
+
+
+namespace orxonox
+{
+    class _OrxonoxExport TimeFactorListener : virtual public OrxonoxClass
+    {
+        friend class GSRoot;
+
+        public:
+            TimeFactorListener();
+            virtual ~TimeFactorListener() {}
+
+        protected:
+            virtual void changedTimeFactor(float factor_new, float factor_old) {}
+            inline float getTimeFactor() const
+                { return TimeFactorListener::timefactor_s; }
+
+        private:
+            static float timefactor_s;
+    };
+}
+
+#endif /* _TimeFactorListener_H__ */
Index: code/branches/questsystem5/src/orxonox/tools/Timer.h
===================================================================
--- code/branches/questsystem5/src/orxonox/tools/Timer.h	(revision 2777)
+++ code/branches/questsystem5/src/orxonox/tools/Timer.h	(revision 2907)
@@ -64,5 +64,5 @@
 #include "core/Executor.h"
 #include "core/OrxonoxClass.h"
-#include "gamestates/GSRoot.h"
+#include "tools/TimeFactorListener.h"
 
 namespace orxonox
Index: code/branches/questsystem5/src/orxonox/tools/WindowEventListener.h
===================================================================
--- code/branches/questsystem5/src/orxonox/tools/WindowEventListener.h	(revision 2777)
+++ code/branches/questsystem5/src/orxonox/tools/WindowEventListener.h	(revision 2907)
@@ -49,5 +49,5 @@
 
             /** Window has resized */
-            virtual void windowResized(int newWidth, int newHeight) { }
+            virtual void windowResized(unsigned int newWidth, unsigned int newHeight) { }
 
             /** Window has lost/gained focus */
