Index: /code/branches/core7/src/libraries/core/singleton/CMakeLists.txt
===================================================================
--- /code/branches/core7/src/libraries/core/singleton/CMakeLists.txt	(revision 10459)
+++ /code/branches/core7/src/libraries/core/singleton/CMakeLists.txt	(revision 10460)
@@ -1,3 +1,4 @@
 ADD_SOURCE_FILES(CORE_SRC_FILES
   Scope.cc
+  ScopedSingletonIncludes.cc
 )
Index: /code/branches/core7/src/libraries/core/singleton/Scope.h
===================================================================
--- /code/branches/core7/src/libraries/core/singleton/Scope.h	(revision 10459)
+++ /code/branches/core7/src/libraries/core/singleton/Scope.h	(revision 10460)
@@ -76,5 +76,5 @@
         template <ScopeID::Value scope>
         friend class Scope;
-        friend class ScopeListener;
+        friend class StaticallyInitializedScopedSingletonWrapper;
 
         private:
@@ -95,10 +95,6 @@
 
         protected:
-            //! Constructor: Registers the instance.
-            ScopeListener(ScopeID::Value scope) : scope_(scope), bActivated_(false)
-                { ScopeManager::getListeners()[this->scope_].insert(this); }
-            //! Destructor: Unregisters the instance.
-            virtual ~ScopeListener()
-                { ScopeManager::getListeners()[this->scope_].erase(this); }
+            ScopeListener(ScopeID::Value scope) : scope_(scope), bActivated_(false) { }
+            virtual ~ScopeListener() { }
 
             //! Gets called if the scope is activated
@@ -106,4 +102,8 @@
             //! Gets called if the scope is deactivated
             virtual void deactivated() = 0;
+
+        public:
+            inline ScopeID::Value getScope() const
+                { return this->scope_; }
 
         private:
Index: /code/branches/core7/src/libraries/core/singleton/ScopedSingletonIncludes.cc
===================================================================
--- /code/branches/core7/src/libraries/core/singleton/ScopedSingletonIncludes.cc	(revision 10460)
+++ /code/branches/core7/src/libraries/core/singleton/ScopedSingletonIncludes.cc	(revision 10460)
@@ -0,0 +1,42 @@
+/*
+ *   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:
+ *      Fabian 'x3n' Landau
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "ScopedSingletonIncludes.h"
+
+namespace orxonox
+{
+    void StaticallyInitializedScopedSingletonWrapper::load()
+    {
+        ScopeManager::getListeners()[this->wrapper_->getScope()].insert(this->wrapper_);
+    }
+
+    void StaticallyInitializedScopedSingletonWrapper::unload()
+    {
+        ScopeManager::getListeners()[this->wrapper_->getScope()].erase(this->wrapper_);
+    }
+}
Index: /code/branches/core7/src/libraries/core/singleton/ScopedSingletonIncludes.h
===================================================================
--- /code/branches/core7/src/libraries/core/singleton/ScopedSingletonIncludes.h	(revision 10459)
+++ /code/branches/core7/src/libraries/core/singleton/ScopedSingletonIncludes.h	(revision 10460)
@@ -83,6 +83,6 @@
             StaticallyInitializedScopedSingletonWrapper(ScopedSingletonWrapper* wrapper) : wrapper_(wrapper) {}
 
-            virtual void load() {}
-            virtual void unload() {}
+            virtual void load();
+            virtual void unload();
 
             inline ScopedSingletonWrapper& getWrapper()
Index: /code/branches/core7/src/libraries/core/singleton/ScopedSingletonWrapper.h
===================================================================
--- /code/branches/core7/src/libraries/core/singleton/ScopedSingletonWrapper.h	(revision 10459)
+++ /code/branches/core7/src/libraries/core/singleton/ScopedSingletonWrapper.h	(revision 10460)
@@ -57,11 +57,11 @@
         @brief Base class of ClassScopedSingletonWrapper.
     */
-    class _CoreExport ScopedSingletonWrapper
+    class _CoreExport ScopedSingletonWrapper : public ScopeListener
     {
         public:
             /// Constructor: Initializes all the values
             ScopedSingletonWrapper(const std::string& className, ScopeID::Value scope)
-                : className_(className)
-                , scope_(scope)
+                : ScopeListener(scope)
+                , className_(className)
             { }
             virtual ~ScopedSingletonWrapper() { }
@@ -69,5 +69,4 @@
         protected:
             const std::string className_;   ///< The name of the scoped singleton class that is managed by this object
-            const ScopeID::Value scope_;    ///< The scope of the singleton that is managed by this object
     };
 
@@ -89,5 +88,5 @@
     */
     template <class T, ScopeID::Value scope, bool allowedToFail>
-    class ClassScopedSingletonWrapper : public ScopedSingletonWrapper, public ScopeListener
+    class ClassScopedSingletonWrapper : public ScopedSingletonWrapper
     {
     public:
@@ -95,5 +94,4 @@
         ClassScopedSingletonWrapper(const std::string& className)
             : ScopedSingletonWrapper(className, scope)
-            , ScopeListener(scope)
             , singletonPtr_(NULL)
         {
@@ -145,5 +143,5 @@
     */
     template <class T, ScopeID::Value scope>
-    class ClassScopedSingletonWrapper<T, scope, true> : public ScopedSingletonWrapper, public ScopeListener
+    class ClassScopedSingletonWrapper<T, scope, true> : public ScopedSingletonWrapper
     {
     public:
@@ -151,5 +149,4 @@
         ClassScopedSingletonWrapper(const std::string& className)
             : ScopedSingletonWrapper(className, scope)
-            , ScopeListener(scope)
             , singletonPtr_(NULL)
         {
Index: /code/branches/core7/test/core/singleton/ScopeTest.cc
===================================================================
--- /code/branches/core7/test/core/singleton/ScopeTest.cc	(revision 10459)
+++ /code/branches/core7/test/core/singleton/ScopeTest.cc	(revision 10460)
@@ -1,4 +1,5 @@
 #include <gtest/gtest.h>
 #include "core/singleton/ScopedSingletonIncludes.h"
+#include "core/module/ModuleInstance.h"
 
 namespace orxonox
@@ -19,7 +20,22 @@
         ManageScopedSingleton(TestSingletonRoot, ScopeID::Root, false);
         ManageScopedSingleton(TestSingletonGraphics, ScopeID::Graphics, false);
+
+        // Fixture
+        class ScopeTest : public ::testing::Test
+        {
+            public:
+                virtual void SetUp()
+                {
+                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances();
+                }
+
+                virtual void TearDown()
+                {
+                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances();
+                }
+        };
     }
 
-    TEST(Scope, ScopesDoNotExist)
+    TEST_F(ScopeTest, ScopesDoNotExist)
     {
         EXPECT_FALSE(Scope<ScopeID::Root>::isActive());
@@ -27,5 +43,5 @@
     }
 
-    TEST(Scope, SingletonsDoNotExist)
+    TEST_F(ScopeTest, SingletonsDoNotExist)
     {
         EXPECT_FALSE(TestSingletonRoot::exists());
@@ -33,5 +49,5 @@
     }
 
-    TEST(Scope, RootScope)
+    TEST_F(ScopeTest, RootScope)
     {
         EXPECT_FALSE(Scope<ScopeID::Root>::isActive());
@@ -43,5 +59,5 @@
     }
 
-    TEST(DISABLED_Scope, RootAndGraphicsScope)
+    TEST_F(ScopeTest, DISABLED_RootAndGraphicsScope)
     {
         EXPECT_FALSE(Scope<ScopeID::Graphics>::isActive());
@@ -58,5 +74,5 @@
     }
 
-    TEST(Scope, RootSingleton)
+    TEST_F(ScopeTest, RootSingleton)
     {
         EXPECT_FALSE(TestSingletonRoot::exists());
@@ -68,5 +84,5 @@
     }
 
-    TEST(DISABLED_Scope, RootAndGraphicsSingleton)
+    TEST_F(ScopeTest, DISABLED_RootAndGraphicsSingleton)
     {
         EXPECT_FALSE(TestSingletonGraphics::exists());
