Index: /code/branches/core7/src/libraries/core/singleton/Scope.h
===================================================================
--- /code/branches/core7/src/libraries/core/singleton/Scope.h	(revision 10513)
+++ /code/branches/core7/src/libraries/core/singleton/Scope.h	(revision 10514)
@@ -71,5 +71,5 @@
 
         protected:
-            ScopeListener(ScopeID::Value scope) : scope_(scope), bActivated_(false) { }
+            ScopeListener() : bActivated_(false) { }
             virtual ~ScopeListener() { }
 
@@ -79,10 +79,5 @@
             virtual void deactivated() = 0;
 
-        public:
-            inline ScopeID::Value getScope() const
-                { return this->scope_; }
-
         private:
-            ScopeID::Value scope_; //!< Store the scope to unregister on destruction
             bool bActivated_;
     };
Index: /code/branches/core7/src/libraries/core/singleton/ScopeManager.cc
===================================================================
--- /code/branches/core7/src/libraries/core/singleton/ScopeManager.cc	(revision 10513)
+++ /code/branches/core7/src/libraries/core/singleton/ScopeManager.cc	(revision 10514)
@@ -61,12 +61,12 @@
     }
 
-    void ScopeManager::addListener(ScopeListener* listener)
+    void ScopeManager::addListener(ScopeListener* listener, ScopeID::Value scope)
     {
-        this->listeners_[listener->getScope()].insert(listener);
+        this->listeners_[scope].insert(listener);
     }
 
-    void ScopeManager::removeListener(ScopeListener* listener)
+    void ScopeManager::removeListener(ScopeListener* listener, ScopeID::Value scope)
     {
-        this->listeners_[listener->getScope()].erase(listener);
+        this->listeners_[scope].erase(listener);
     }
 
Index: /code/branches/core7/src/libraries/core/singleton/ScopeManager.h
===================================================================
--- /code/branches/core7/src/libraries/core/singleton/ScopeManager.h	(revision 10513)
+++ /code/branches/core7/src/libraries/core/singleton/ScopeManager.h	(revision 10514)
@@ -65,7 +65,7 @@
 
             /** Registers a listener for the given scope. */
-            void addListener(ScopeListener* listener);
+            void addListener(ScopeListener* listener, ScopeID::Value scope);
             /** Unregisters a listener for the given scope. */
-            void removeListener(ScopeListener* listener);
+            void removeListener(ScopeListener* listener, ScopeID::Value scope);
 
         private:
Index: /code/branches/core7/src/libraries/core/singleton/ScopedSingletonIncludes.cc
===================================================================
--- /code/branches/core7/src/libraries/core/singleton/ScopedSingletonIncludes.cc	(revision 10513)
+++ /code/branches/core7/src/libraries/core/singleton/ScopedSingletonIncludes.cc	(revision 10514)
@@ -33,10 +33,10 @@
     void StaticallyInitializedScopedSingletonWrapper::load()
     {
-        ScopeManager::getInstance().addListener(this->wrapper_);
+        ScopeManager::getInstance().addListener(this->wrapper_, this->scope_);
     }
 
     void StaticallyInitializedScopedSingletonWrapper::unload()
     {
-        ScopeManager::getInstance().removeListener(this->wrapper_);
+        ScopeManager::getInstance().removeListener(this->wrapper_, this->scope_);
     }
 }
Index: /code/branches/core7/src/libraries/core/singleton/ScopedSingletonIncludes.h
===================================================================
--- /code/branches/core7/src/libraries/core/singleton/ScopedSingletonIncludes.h	(revision 10513)
+++ /code/branches/core7/src/libraries/core/singleton/ScopedSingletonIncludes.h	(revision 10514)
@@ -73,5 +73,5 @@
     className* className::singletonPtr_s = NULL; \
     static ScopedSingletonWrapper& className##ScopedSingletonWrapper \
-        = (new orxonox::SI_SSW(new ClassScopedSingletonWrapper<className, scope, allowedToFail>(#className)))->getWrapper()
+        = (new orxonox::SI_SSW(new ClassScopedSingletonWrapper<className, allowedToFail>(#className), scope))->getWrapper()
 
 namespace orxonox
@@ -80,5 +80,8 @@
     {
         public:
-            StaticallyInitializedScopedSingletonWrapper(ScopedSingletonWrapper* wrapper) : wrapper_(wrapper) {}
+            StaticallyInitializedScopedSingletonWrapper(ScopedSingletonWrapper* wrapper, ScopeID::Value scope)
+                : wrapper_(wrapper)
+                , scope_(scope)
+            {}
 
             virtual void load();
@@ -90,4 +93,5 @@
         private:
             ScopedSingletonWrapper* wrapper_;
+            ScopeID::Value scope_;
     };
 
Index: /code/branches/core7/src/libraries/core/singleton/ScopedSingletonWrapper.h
===================================================================
--- /code/branches/core7/src/libraries/core/singleton/ScopedSingletonWrapper.h	(revision 10513)
+++ /code/branches/core7/src/libraries/core/singleton/ScopedSingletonWrapper.h	(revision 10514)
@@ -61,7 +61,6 @@
         public:
             /// Constructor: Initializes all the values
-            ScopedSingletonWrapper(const std::string& className, ScopeID::Value scope)
-                : ScopeListener(scope)
-                , className_(className)
+            ScopedSingletonWrapper(const std::string& className)
+                : className_(className)
             { }
             virtual ~ScopedSingletonWrapper() { }
@@ -74,10 +73,9 @@
         @anchor ClassScopedSingletonWrapper
 
-        @brief Manages a scoped singleton for a given scope.
+        @brief Manages a scoped singleton
         @param T The managed singleton class
-        @param scope The scope in which the singleton @a T should be active
         @param allowedToFail If true, a specialization of this template is used, that uses try-catch blocks to handle possible failures.
 
-        This class inherits from ScopeListener for the given scope and thus its functions
+        This class inherits from ScopeListener and is registered for a scope in ScopeManager and thus its functions
         activated() and deactivated() are called whenever the Scope changes its state.
 
@@ -87,11 +85,10 @@
         @see Singleton
     */
-    template <class T, ScopeID::Value scope, bool allowedToFail>
+    template <class T, bool allowedToFail>
     class ClassScopedSingletonWrapper : public ScopedSingletonWrapper
     {
     public:
-        //! Constructor: Initializes the singleton pointer and passes the scope to ScopedSingletonWrapper and ScopeListener
         ClassScopedSingletonWrapper(const std::string& className)
-            : ScopedSingletonWrapper(className, scope)
+            : ScopedSingletonWrapper(className)
             , singletonPtr_(NULL)
         {
@@ -135,5 +132,4 @@
         @brief This class partially spezializes ClassScopedSingletonWrapper for classes @a T that are allowed to fail.
         @param T The managed singleton class
-        @param scope The scope in which the singleton @a T should be active
 
         Because @a T could fail when being created, this partial spezialization of ClassScopedSingletonWrapper
@@ -142,11 +138,10 @@
         See @ref ClassScopedSingletonWrapper for a full documentation of the basis template.
     */
-    template <class T, ScopeID::Value scope>
-    class ClassScopedSingletonWrapper<T, scope, true> : public ScopedSingletonWrapper
+    template <class T>
+    class ClassScopedSingletonWrapper<T, true> : public ScopedSingletonWrapper
     {
     public:
-        //! Constructor: Initializes the singleton pointer and passes the scope to ScopedSingletonWrapper and ScopeListener
         ClassScopedSingletonWrapper(const std::string& className)
-            : ScopedSingletonWrapper(className, scope)
+            : ScopedSingletonWrapper(className)
             , singletonPtr_(NULL)
         {
