Index: code/trunk/src/libraries/tools/CMakeLists.txt
===================================================================
--- code/trunk/src/libraries/tools/CMakeLists.txt	(revision 7171)
+++ code/trunk/src/libraries/tools/CMakeLists.txt	(revision 7172)
@@ -22,5 +22,4 @@
   LINK_LIBRARIES
     core
-    network
   SOURCE_FILES ${TOOLS_SRC_FILES}
 )
Index: code/trunk/src/libraries/tools/interfaces/TimeFactorListener.h
===================================================================
--- code/trunk/src/libraries/tools/interfaces/TimeFactorListener.h	(revision 7171)
+++ code/trunk/src/libraries/tools/interfaces/TimeFactorListener.h	(revision 7172)
@@ -41,7 +41,7 @@
             virtual ~TimeFactorListener() {}
 
-            static void setTimeFactor( float factor );
-            static void setTimeFactorInternal( float factor );
-            static inline float getTimeFactor(){ return TimeFactorListener::timefactor_s; }
+            static void setTimeFactor(float factor);
+            static inline float getTimeFactor()
+                { return TimeFactorListener::timefactor_s; }
 
         protected:
Index: code/trunk/src/libraries/tools/interfaces/ToolsInterfaceCompilation.cc
===================================================================
--- code/trunk/src/libraries/tools/interfaces/ToolsInterfaceCompilation.cc	(revision 7171)
+++ code/trunk/src/libraries/tools/interfaces/ToolsInterfaceCompilation.cc	(revision 7172)
@@ -38,5 +38,4 @@
 #include "core/CoreIncludes.h"
 #include "core/GameMode.h"
-#include "network/NetworkFunction.h"
 
 namespace orxonox
@@ -45,6 +44,4 @@
     // TimeFactorListener
     //----------------------------
-    registerStaticNetworkFunction( &TimeFactorListener::setTimeFactorInternal );
-
     float TimeFactorListener::timefactor_s = 1.0f;
 
@@ -54,13 +51,9 @@
     }
 
-    /*static*/ void TimeFactorListener::setTimeFactor( float factor )
+    /*static*/ void TimeFactorListener::setTimeFactor(float factor)
     {
-        if ( !GameMode::isStandalone() )
-            callStaticNetworkFunction( &TimeFactorListener::setTimeFactorInternal, CLIENTID_UNKNOWN, factor );
-        TimeFactorListener::setTimeFactorInternal(factor);
-    }
+        if (factor == TimeFactorListener::timefactor_s)
+            return;
 
-    /*static*/ void TimeFactorListener::setTimeFactorInternal( float factor )
-    {
         float oldFactor = TimeFactorListener::timefactor_s;
         TimeFactorListener::timefactor_s = factor;
Index: code/trunk/src/orxonox/gamestates/GSRoot.cc
===================================================================
--- code/trunk/src/orxonox/gamestates/GSRoot.cc	(revision 7171)
+++ code/trunk/src/orxonox/gamestates/GSRoot.cc	(revision 7172)
@@ -36,5 +36,4 @@
 #include "network/NetworkFunction.h"
 #include "tools/Timer.h"
-#include "tools/interfaces/TimeFactorListener.h"
 #include "tools/interfaces/Tickable.h"
 
@@ -43,4 +42,6 @@
     DeclareGameState(GSRoot, "root", false, false);
     SetConsoleCommandShortcut(GSRoot, printObjects);
+
+    registerStaticNetworkFunction(&TimeFactorListener::setTimeFactor);
 
     GSRoot::GSRoot(const GameStateInfo& info)
@@ -153,7 +154,8 @@
     }
 
-    float GSRoot::getTimeFactor()
+    void GSRoot::changedTimeFactor(float factor_new, float factor_old)
     {
-        return TimeFactorListener::getTimeFactor();
+        if (!GameMode::isStandalone())
+            callStaticNetworkFunction(&TimeFactorListener::setTimeFactor, CLIENTID_UNKNOWN, factor_new);
     }
 }
Index: code/trunk/src/orxonox/gamestates/GSRoot.h
===================================================================
--- code/trunk/src/orxonox/gamestates/GSRoot.h	(revision 7171)
+++ code/trunk/src/orxonox/gamestates/GSRoot.h	(revision 7172)
@@ -32,8 +32,9 @@
 #include "OrxonoxPrereqs.h"
 #include "core/GameState.h"
+#include "tools/interfaces/TimeFactorListener.h"
 
 namespace orxonox
 {
-    class _OrxonoxExport GSRoot : public GameState
+    class _OrxonoxExport GSRoot : public GameState, public TimeFactorListener
     {
     public:
@@ -51,5 +52,7 @@
         void setTimeFactor(float factor);
         void pause();
-        float getTimeFactor();
+
+    protected:
+        virtual void changedTimeFactor(float factor_new, float factor_old);
 
     private:
