Index: code/branches/core7/src/libraries/core/Core.cc
===================================================================
--- code/branches/core7/src/libraries/core/Core.cc	(revision 10534)
+++ code/branches/core7/src/libraries/core/Core.cc	(revision 10535)
@@ -126,8 +126,4 @@
         this->dynLibManager_ = new DynLibManager();
 
-        // TODO: initialize StaticInitializationManager
-        this->staticInitHandler_ = new CoreStaticInitializationHandler();
-        StaticInitializationManager::getInstance().addHandler(this->staticInitHandler_);
-
         // TODO: initialize Root-Context
         // TODO: initialize IdentifierManager here
@@ -136,6 +132,10 @@
         // TODO: initialize ConsoleCommandManager here
         // TODO: initialize NetworkFunctionManager here
+        // TODO: initialize StaticInitializationManager
+        this->staticInitHandler_ = new CoreStaticInitializationHandler();
+        StaticInitializationManager::getInstance().addHandler(this->staticInitHandler_);
+
         this->rootModule_ = ModuleInstance::getCurrentModuleInstance();
-        this->rootModule_->loadAllStaticallyInitializedInstances(0);
+        StaticInitializationManager::getInstance().loadModule(this->rootModule_);
 
         // Parse command line arguments AFTER the modules have been loaded (static code!)
@@ -198,5 +198,6 @@
         // creates the class hierarchy for all classes with factories
         orxout(internal_info) << "creating class hierarchy" << endl;
-        IdentifierManager::getInstance().createClassHierarchy();
+        this->staticInitHandler_->initInstances(this->rootModule_);
+        this->staticInitHandler_->setInitInstances(true);
 
         // Loader
@@ -253,5 +254,5 @@
         if (this->rootModule_)
         {
-            this->rootModule_->unloadAllStaticallyInitializedInstances(0);
+            StaticInitializationManager::getInstance().unloadModule(this->rootModule_);
             this->rootModule_->deleteAllStaticallyInitializedInstances();
         }
Index: code/branches/core7/src/libraries/core/CoreIncludes.h
===================================================================
--- code/branches/core7/src/libraries/core/CoreIncludes.h	(revision 10534)
+++ code/branches/core7/src/libraries/core/CoreIncludes.h	(revision 10535)
@@ -226,5 +226,5 @@
         public:
             StaticallyInitializedIdentifier(Identifier* identifier)
-                : StaticallyInitializedInstance(0)
+                : StaticallyInitializedInstance(StaticInitialization::IDENTIFIER)
                 , identifier_(identifier)
             {}
Index: code/branches/core7/src/libraries/core/CorePrereqs.h
===================================================================
--- code/branches/core7/src/libraries/core/CorePrereqs.h	(revision 10534)
+++ code/branches/core7/src/libraries/core/CorePrereqs.h	(revision 10535)
@@ -84,4 +84,15 @@
         static const Value ROOT = 1;
         static const Value GRAPHICS = 2;
+    }
+
+    namespace StaticInitialization
+    {
+        typedef int Type;
+
+        static const Type STATIC_INITIALIZATION_HANDLER = 1;
+        static const Type IDENTIFIER = 2;
+        static const Type SCOPED_SINGLETON_WRAPPER = 3;
+        static const Type COMMAND_LINE_ARGUMENT = 4;
+        static const Type CONSOLE_COMMAND = 5;
     }
 
Index: code/branches/core7/src/libraries/core/CoreStaticInitializationHandler.cc
===================================================================
--- code/branches/core7/src/libraries/core/CoreStaticInitializationHandler.cc	(revision 10534)
+++ code/branches/core7/src/libraries/core/CoreStaticInitializationHandler.cc	(revision 10535)
@@ -47,5 +47,21 @@
     void CoreStaticInitializationHandler::loadModule(ModuleInstance* module)
     {
-        module->loadAllStaticallyInitializedInstances(0);
+        this->loadInstances(module);
+        if (this->bInitInstances_)
+            this->initInstances(module);
+    }
+
+    void CoreStaticInitializationHandler::loadInstances(ModuleInstance* module)
+    {
+        // the order of initialization is important
+        module->loadAllStaticallyInitializedInstances(StaticInitialization::STATIC_INITIALIZATION_HANDLER);
+        module->loadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
+        module->loadAllStaticallyInitializedInstances(StaticInitialization::SCOPED_SINGLETON_WRAPPER);
+        module->loadAllStaticallyInitializedInstances(StaticInitialization::COMMAND_LINE_ARGUMENT);
+        module->loadAllStaticallyInitializedInstances(StaticInitialization::CONSOLE_COMMAND);
+    }
+
+    void CoreStaticInitializationHandler::initInstances(ModuleInstance* module)
+    {
         IdentifierManager::getInstance().createClassHierarchy();
         ScopeManager::getInstance().updateListeners();
@@ -54,5 +70,10 @@
     void CoreStaticInitializationHandler::unloadModule(ModuleInstance* module)
     {
-        module->unloadAllStaticallyInitializedInstances(0);
+        // inverted order of initialization
+        module->unloadAllStaticallyInitializedInstances(StaticInitialization::CONSOLE_COMMAND);
+        module->unloadAllStaticallyInitializedInstances(StaticInitialization::COMMAND_LINE_ARGUMENT);
+        module->unloadAllStaticallyInitializedInstances(StaticInitialization::SCOPED_SINGLETON_WRAPPER);
+        module->unloadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
+        module->unloadAllStaticallyInitializedInstances(StaticInitialization::STATIC_INITIALIZATION_HANDLER);
     }
 }
Index: code/branches/core7/src/libraries/core/CoreStaticInitializationHandler.h
===================================================================
--- code/branches/core7/src/libraries/core/CoreStaticInitializationHandler.h	(revision 10534)
+++ code/branches/core7/src/libraries/core/CoreStaticInitializationHandler.h	(revision 10535)
@@ -38,5 +38,9 @@
     class _CoreExport CoreStaticInitializationHandler : public StaticInitializationHandler
     {
+        friend class Core;
+
         public:
+            CoreStaticInitializationHandler() : bInitInstances_(false) {}
+
             virtual void setupHandler();
             virtual void shutdownHandler();
@@ -44,4 +48,13 @@
             virtual void loadModule(ModuleInstance* module);
             virtual void unloadModule(ModuleInstance* module);
+
+            inline void setInitInstances(bool bInitInstances)
+                { this->bInitInstances_ = bInitInstances; }
+
+        private:
+            void loadInstances(ModuleInstance* module);
+            void initInstances(ModuleInstance* module);
+
+            bool bInitInstances_;
     };
 }
Index: code/branches/core7/src/libraries/core/command/ConsoleCommandIncludes.h
===================================================================
--- code/branches/core7/src/libraries/core/command/ConsoleCommandIncludes.h	(revision 10534)
+++ code/branches/core7/src/libraries/core/command/ConsoleCommandIncludes.h	(revision 10535)
@@ -311,5 +311,5 @@
         public:
             StaticallyInitializedConsoleCommand(ConsoleCommand* command)
-                : StaticallyInitializedInstance(0)
+                : StaticallyInitializedInstance(StaticInitialization::CONSOLE_COMMAND)
                 , command_(command)
             {}
Index: code/branches/core7/src/libraries/core/commandline/CommandLineIncludes.h
===================================================================
--- code/branches/core7/src/libraries/core/commandline/CommandLineIncludes.h	(revision 10534)
+++ code/branches/core7/src/libraries/core/commandline/CommandLineIncludes.h	(revision 10535)
@@ -59,5 +59,5 @@
         public:
             StaticallyInitializedCommandLineArgument(CommandLineArgument* argument)
-                : StaticallyInitializedInstance(0)
+                : StaticallyInitializedInstance(StaticInitialization::COMMAND_LINE_ARGUMENT)
                 , argument_(argument)
             {}
Index: code/branches/core7/src/libraries/core/module/ModuleInstance.cc
===================================================================
--- code/branches/core7/src/libraries/core/module/ModuleInstance.cc	(revision 10534)
+++ code/branches/core7/src/libraries/core/module/ModuleInstance.cc	(revision 10535)
@@ -56,5 +56,5 @@
     }
 
-    void ModuleInstance::loadAllStaticallyInitializedInstances(StaticallyInitializedInstance::Type type)
+    void ModuleInstance::loadAllStaticallyInitializedInstances(StaticInitialization::Type type)
     {
         const std::set<StaticallyInitializedInstance*>& instances = this->staticallyInitializedInstancesByType_[type];
@@ -63,5 +63,5 @@
     }
 
-    void ModuleInstance::unloadAllStaticallyInitializedInstances(StaticallyInitializedInstance::Type type)
+    void ModuleInstance::unloadAllStaticallyInitializedInstances(StaticInitialization::Type type)
     {
         const std::set<StaticallyInitializedInstance*>& instances = this->staticallyInitializedInstancesByType_[type];
@@ -72,7 +72,7 @@
     void ModuleInstance::deleteAllStaticallyInitializedInstances()
     {
-        std::map<StaticallyInitializedInstance::Type, std::set<StaticallyInitializedInstance*> > copy(this->staticallyInitializedInstancesByType_);
+        std::map<StaticInitialization::Type, std::set<StaticallyInitializedInstance*> > copy(this->staticallyInitializedInstancesByType_);
         this->staticallyInitializedInstancesByType_.clear();
-        for (std::map<StaticallyInitializedInstance::Type, std::set<StaticallyInitializedInstance*> >::iterator it1 = copy.begin(); it1 != copy.end(); ++it1)
+        for (std::map<StaticInitialization::Type, std::set<StaticallyInitializedInstance*> >::iterator it1 = copy.begin(); it1 != copy.end(); ++it1)
             for (std::set<StaticallyInitializedInstance*>::iterator it2 = it1->second.begin(); it2 != it1->second.end(); ++it2)
                 delete (*it2);
Index: code/branches/core7/src/libraries/core/module/ModuleInstance.h
===================================================================
--- code/branches/core7/src/libraries/core/module/ModuleInstance.h	(revision 10534)
+++ code/branches/core7/src/libraries/core/module/ModuleInstance.h	(revision 10535)
@@ -49,6 +49,6 @@
             void removeStaticallyInitializedInstance(StaticallyInitializedInstance* instance);
 
-            void loadAllStaticallyInitializedInstances(StaticallyInitializedInstance::Type type);
-            void unloadAllStaticallyInitializedInstances(StaticallyInitializedInstance::Type type);
+            void loadAllStaticallyInitializedInstances(StaticInitialization::Type type);
+            void unloadAllStaticallyInitializedInstances(StaticInitialization::Type type);
 
             void deleteAllStaticallyInitializedInstances();
@@ -66,5 +66,5 @@
 
         private:
-            std::map<StaticallyInitializedInstance::Type, std::set<StaticallyInitializedInstance*> > staticallyInitializedInstancesByType_;
+            std::map<StaticInitialization::Type, std::set<StaticallyInitializedInstance*> > staticallyInitializedInstancesByType_;
             std::string name_;
             DynLib* dynLib_;
Index: code/branches/core7/src/libraries/core/module/StaticInitializationHandlerIncludes.h
===================================================================
--- code/branches/core7/src/libraries/core/module/StaticInitializationHandlerIncludes.h	(revision 10534)
+++ code/branches/core7/src/libraries/core/module/StaticInitializationHandlerIncludes.h	(revision 10535)
@@ -48,5 +48,5 @@
         public:
             StaticallyInitializedStaticInitializationHandler(StaticInitializationHandler* handler)
-                : StaticallyInitializedInstance(0)
+                : StaticallyInitializedInstance(StaticInitialization::STATIC_INITIALIZATION_HANDLER)
                 , handler_(handler)
             {}
Index: code/branches/core7/src/libraries/core/module/StaticInitializationManager.h
===================================================================
--- code/branches/core7/src/libraries/core/module/StaticInitializationManager.h	(revision 10534)
+++ code/branches/core7/src/libraries/core/module/StaticInitializationManager.h	(revision 10535)
@@ -38,6 +38,4 @@
     class _CoreExport StaticInitializationManager
     {
-        friend class Core;
-
         public:
             static StaticInitializationManager& getInstance();
Index: code/branches/core7/src/libraries/core/module/StaticallyInitializedInstance.cc
===================================================================
--- code/branches/core7/src/libraries/core/module/StaticallyInitializedInstance.cc	(revision 10534)
+++ code/branches/core7/src/libraries/core/module/StaticallyInitializedInstance.cc	(revision 10535)
@@ -33,5 +33,5 @@
 namespace orxonox
 {
-    StaticallyInitializedInstance::StaticallyInitializedInstance(Type type)
+    StaticallyInitializedInstance::StaticallyInitializedInstance(StaticInitialization::Type type)
     {
         this->type_ = type;
Index: code/branches/core7/src/libraries/core/module/StaticallyInitializedInstance.h
===================================================================
--- code/branches/core7/src/libraries/core/module/StaticallyInitializedInstance.h	(revision 10534)
+++ code/branches/core7/src/libraries/core/module/StaticallyInitializedInstance.h	(revision 10535)
@@ -37,7 +37,6 @@
     {
         public:
-            typedef int Type;
 
-            StaticallyInitializedInstance(Type type);
+            StaticallyInitializedInstance(StaticInitialization::Type type);
             virtual ~StaticallyInitializedInstance();
 
@@ -45,10 +44,10 @@
             virtual void unload() = 0;
 
-            inline Type getType() const
+            inline StaticInitialization::Type getType() const
                 { return this->type_; }
 
         private:
             ModuleInstance* module_;
-            Type type_;
+            StaticInitialization::Type type_;
     };
 }
Index: code/branches/core7/src/libraries/core/singleton/ScopedSingletonIncludes.h
===================================================================
--- code/branches/core7/src/libraries/core/singleton/ScopedSingletonIncludes.h	(revision 10534)
+++ code/branches/core7/src/libraries/core/singleton/ScopedSingletonIncludes.h	(revision 10535)
@@ -81,5 +81,5 @@
         public:
             StaticallyInitializedScopedSingletonWrapper(ScopedSingletonWrapper* wrapper, ScopeID::Value scope)
-                : StaticallyInitializedInstance(0)
+                : StaticallyInitializedInstance(StaticInitialization::SCOPED_SINGLETON_WRAPPER)
                 , wrapper_(wrapper)
                 , scope_(scope)
Index: code/branches/core7/src/libraries/network/CMakeLists.txt
===================================================================
--- code/branches/core7/src/libraries/network/CMakeLists.txt	(revision 10534)
+++ code/branches/core7/src/libraries/network/CMakeLists.txt	(revision 10535)
@@ -36,4 +36,5 @@
   NetworkFunctionIncludes.cc
   NetworkFunctionManager.cc
+  NetworkStaticInitializationHandler.cc
   Host.cc
   Server.cc
Index: code/branches/core7/src/libraries/network/NetworkFunctionIncludes.cc
===================================================================
--- code/branches/core7/src/libraries/network/NetworkFunctionIncludes.cc	(revision 10534)
+++ code/branches/core7/src/libraries/network/NetworkFunctionIncludes.cc	(revision 10535)
@@ -30,6 +30,11 @@
 #include "NetworkFunctionManager.h"
 
+#include "core/module/StaticInitializationHandlerIncludes.h"
+#include "NetworkStaticInitializationHandler.h"
+
 namespace orxonox
 {
+    RegisterStaticInitializationHandler(NetworkStaticInitializationHandler);
+
     void StaticallyInitializedNetworkFunction::load()
     {
Index: code/branches/core7/src/libraries/network/NetworkFunctionIncludes.h
===================================================================
--- code/branches/core7/src/libraries/network/NetworkFunctionIncludes.h	(revision 10534)
+++ code/branches/core7/src/libraries/network/NetworkFunctionIncludes.h	(revision 10535)
@@ -52,5 +52,5 @@
         public:
             StaticallyInitializedNetworkFunction(NetworkFunctionBase* function)
-                : StaticallyInitializedInstance(0)
+                : StaticallyInitializedInstance(StaticInitialization::NETWORK_FUNCTION)
                 , function_(function)
             {}
Index: code/branches/core7/src/libraries/network/NetworkPrereqs.h
===================================================================
--- code/branches/core7/src/libraries/network/NetworkPrereqs.h	(revision 10534)
+++ code/branches/core7/src/libraries/network/NetworkPrereqs.h	(revision 10535)
@@ -97,4 +97,10 @@
     }
   }
+
+  namespace StaticInitialization
+  {
+    typedef int Type;
+    static const Type NETWORK_FUNCTION = 6;
+  }
 }
 
Index: code/branches/core7/src/libraries/network/NetworkStaticInitializationHandler.cc
===================================================================
--- code/branches/core7/src/libraries/network/NetworkStaticInitializationHandler.cc	(revision 10535)
+++ code/branches/core7/src/libraries/network/NetworkStaticInitializationHandler.cc	(revision 10535)
@@ -0,0 +1,54 @@
+/*
+ *   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 "NetworkStaticInitializationHandler.h"
+
+#include "core/module/ModuleInstance.h"
+
+namespace orxonox
+{
+    void NetworkStaticInitializationHandler::setupHandler()
+    {
+        // TODO
+    }
+
+    void NetworkStaticInitializationHandler::shutdownHandler()
+    {
+        // TODO
+    }
+
+    void NetworkStaticInitializationHandler::loadModule(ModuleInstance* module)
+    {
+        module->loadAllStaticallyInitializedInstances(StaticInitialization::NETWORK_FUNCTION);
+    }
+
+    void NetworkStaticInitializationHandler::unloadModule(ModuleInstance* module)
+    {
+        module->unloadAllStaticallyInitializedInstances(StaticInitialization::NETWORK_FUNCTION);
+    }
+}
Index: code/branches/core7/src/libraries/network/NetworkStaticInitializationHandler.h
===================================================================
--- code/branches/core7/src/libraries/network/NetworkStaticInitializationHandler.h	(revision 10535)
+++ code/branches/core7/src/libraries/network/NetworkStaticInitializationHandler.h	(revision 10535)
@@ -0,0 +1,49 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+#ifndef _NetworkStaticInitializationHandler_H__
+#define _NetworkStaticInitializationHandler_H__
+
+#include "network/NetworkPrereqs.h"
+
+#include "core/module/StaticInitializationHandler.h"
+
+namespace orxonox
+{
+    class _NetworkExport NetworkStaticInitializationHandler : public StaticInitializationHandler
+    {
+        public:
+            virtual void setupHandler();
+            virtual void shutdownHandler();
+
+            virtual void loadModule(ModuleInstance* module);
+            virtual void unloadModule(ModuleInstance* module);
+    };
+}
+
+#endif /* _NetworkStaticInitializationHandler_H__ */
Index: code/branches/core7/test/core/class/IdentifiableTest.cc
===================================================================
--- code/branches/core7/test/core/class/IdentifiableTest.cc	(revision 10534)
+++ code/branches/core7/test/core/class/IdentifiableTest.cc	(revision 10535)
@@ -22,10 +22,10 @@
                 virtual void SetUp()
                 {
-                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
                 }
 
                 virtual void TearDown()
                 {
-                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
                 }
         };
Index: code/branches/core7/test/core/class/IdentifierClassHierarchyTest.cc
===================================================================
--- code/branches/core7/test/core/class/IdentifierClassHierarchyTest.cc	(revision 10534)
+++ code/branches/core7/test/core/class/IdentifierClassHierarchyTest.cc	(revision 10535)
@@ -142,5 +142,5 @@
                 virtual void SetUp()
                 {
-                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
                     Identifier::initConfigValues_s = false; // TODO: hack!
                     IdentifierManager::getInstance().createClassHierarchy();
@@ -150,5 +150,5 @@
                 {
                     IdentifierManager::getInstance().destroyClassHierarchy();
-                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
                 }
         };
Index: code/branches/core7/test/core/class/IdentifierExternalClassHierarchyTest.cc
===================================================================
--- code/branches/core7/test/core/class/IdentifierExternalClassHierarchyTest.cc	(revision 10534)
+++ code/branches/core7/test/core/class/IdentifierExternalClassHierarchyTest.cc	(revision 10535)
@@ -49,5 +49,5 @@
                 virtual void SetUp()
                 {
-                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
                     Identifier::initConfigValues_s = false; // TODO: hack!
                     IdentifierManager::getInstance().createClassHierarchy();
@@ -57,5 +57,5 @@
                 {
                     IdentifierManager::getInstance().destroyClassHierarchy();
-                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
                 }
         };
Index: code/branches/core7/test/core/class/IdentifierNestedClassHierarchyTest.cc
===================================================================
--- code/branches/core7/test/core/class/IdentifierNestedClassHierarchyTest.cc	(revision 10534)
+++ code/branches/core7/test/core/class/IdentifierNestedClassHierarchyTest.cc	(revision 10535)
@@ -109,5 +109,5 @@
                 virtual void SetUp()
                 {
-                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
                     Identifier::initConfigValues_s = false; // TODO: hack!
                     IdentifierManager::getInstance().createClassHierarchy();
@@ -117,5 +117,5 @@
                 {
                     IdentifierManager::getInstance().destroyClassHierarchy();
-                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
                 }
         };
Index: code/branches/core7/test/core/class/IdentifierSimpleClassHierarchyTest.cc
===================================================================
--- code/branches/core7/test/core/class/IdentifierSimpleClassHierarchyTest.cc	(revision 10534)
+++ code/branches/core7/test/core/class/IdentifierSimpleClassHierarchyTest.cc	(revision 10535)
@@ -51,5 +51,5 @@
                 virtual void SetUp()
                 {
-                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
                     Identifier::initConfigValues_s = false; // TODO: hack!
                     IdentifierManager::getInstance().createClassHierarchy();
@@ -59,5 +59,5 @@
                 {
                     IdentifierManager::getInstance().destroyClassHierarchy();
-                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
                 }
         };
Index: code/branches/core7/test/core/class/IdentifierTest.cc
===================================================================
--- code/branches/core7/test/core/class/IdentifierTest.cc	(revision 10534)
+++ code/branches/core7/test/core/class/IdentifierTest.cc	(revision 10535)
@@ -29,10 +29,10 @@
                 virtual void SetUp()
                 {
-                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
                 }
 
                 virtual void TearDown()
                 {
-                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
                 }
         };
Index: code/branches/core7/test/core/class/SubclassIdentifierTest.cc
===================================================================
--- code/branches/core7/test/core/class/SubclassIdentifierTest.cc	(revision 10534)
+++ code/branches/core7/test/core/class/SubclassIdentifierTest.cc	(revision 10535)
@@ -31,5 +31,5 @@
                 virtual void SetUp()
                 {
-                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
                     Identifier::initConfigValues_s = false; // TODO: hack!
                     IdentifierManager::getInstance().createClassHierarchy();
@@ -43,5 +43,5 @@
 
                     IdentifierManager::getInstance().destroyClassHierarchy();
-                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
                 }
         };
Index: code/branches/core7/test/core/class/SuperTest.cc
===================================================================
--- code/branches/core7/test/core/class/SuperTest.cc	(revision 10534)
+++ code/branches/core7/test/core/class/SuperTest.cc	(revision 10535)
@@ -72,5 +72,5 @@
                 virtual void SetUp()
                 {
-                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
                     Identifier::initConfigValues_s = false; // TODO: hack!
                     IdentifierManager::getInstance().createClassHierarchy();
@@ -84,5 +84,5 @@
 
                     IdentifierManager::getInstance().destroyClassHierarchy();
-                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
                 }
         };
Index: code/branches/core7/test/core/command/CommandTest.cc
===================================================================
--- code/branches/core7/test/core/command/CommandTest.cc	(revision 10534)
+++ code/branches/core7/test/core/command/CommandTest.cc	(revision 10535)
@@ -140,5 +140,5 @@
                 virtual void SetUp()
                 {
-                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(StaticInitialization::CONSOLE_COMMAND);
                     Identifier::initConfigValues_s = false; // TODO: hack!
                     IdentifierManager::getInstance().createClassHierarchy();
@@ -148,5 +148,5 @@
                 {
                     IdentifierManager::getInstance().destroyClassHierarchy();
-                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(StaticInitialization::CONSOLE_COMMAND);
                 }
         };
Index: code/branches/core7/test/core/object/ClassFactoryTest.cc
===================================================================
--- code/branches/core7/test/core/object/ClassFactoryTest.cc	(revision 10534)
+++ code/branches/core7/test/core/object/ClassFactoryTest.cc	(revision 10535)
@@ -4,4 +4,5 @@
 #include "core/object/Context.h"
 #include "core/module/ModuleInstance.h"
+#include "core/CoreIncludes.h"
 
 namespace orxonox
@@ -16,10 +17,10 @@
                 {
                     Context::setRootContext(new Context(NULL));
-                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
                 }
 
                 virtual void TearDown()
                 {
-                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
                     Context::setRootContext(NULL);
                 }
Index: code/branches/core7/test/core/object/ContextTest.cc
===================================================================
--- code/branches/core7/test/core/object/ContextTest.cc	(revision 10534)
+++ code/branches/core7/test/core/object/ContextTest.cc	(revision 10535)
@@ -24,10 +24,10 @@
                 {
                     Context::setRootContext(new Context(NULL));
-                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
                 }
 
                 virtual void TearDown()
                 {
-                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
                     Context::setRootContext(NULL);
                 }
Index: code/branches/core7/test/core/object/IteratorTest.cc
===================================================================
--- code/branches/core7/test/core/object/IteratorTest.cc	(revision 10534)
+++ code/branches/core7/test/core/object/IteratorTest.cc	(revision 10535)
@@ -35,10 +35,10 @@
                 {
                     Context::setRootContext(new Context(NULL));
-                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
                 }
 
                 virtual void TearDown()
                 {
-                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
                     Context::setRootContext(NULL);
                 }
Index: code/branches/core7/test/core/object/ListableTest.cc
===================================================================
--- code/branches/core7/test/core/object/ListableTest.cc	(revision 10534)
+++ code/branches/core7/test/core/object/ListableTest.cc	(revision 10535)
@@ -40,10 +40,10 @@
                 {
                     Context::setRootContext(new Context(NULL));
-                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
                 }
 
                 virtual void TearDown()
                 {
-                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
                     Context::setRootContext(NULL);
                 }
Index: code/branches/core7/test/core/object/ObjectListIteratorTest.cc
===================================================================
--- code/branches/core7/test/core/object/ObjectListIteratorTest.cc	(revision 10534)
+++ code/branches/core7/test/core/object/ObjectListIteratorTest.cc	(revision 10535)
@@ -27,10 +27,10 @@
                 {
                     Context::setRootContext(new Context(NULL));
-                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
                 }
 
                 virtual void TearDown()
                 {
-                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
                     Context::setRootContext(NULL);
                 }
Index: code/branches/core7/test/core/singleton/ScopeTest.cc
===================================================================
--- code/branches/core7/test/core/singleton/ScopeTest.cc	(revision 10534)
+++ code/branches/core7/test/core/singleton/ScopeTest.cc	(revision 10535)
@@ -2,4 +2,5 @@
 #include "core/singleton/ScopedSingletonIncludes.h"
 #include "core/module/ModuleInstance.h"
+#include "core/CoreIncludes.h"
 
 namespace orxonox
@@ -27,10 +28,12 @@
                 virtual void SetUp()
                 {
-                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
+                    ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances(StaticInitialization::SCOPED_SINGLETON_WRAPPER);
                 }
 
                 virtual void TearDown()
                 {
-                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(0);
+                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(StaticInitialization::SCOPED_SINGLETON_WRAPPER);
+                    ModuleInstance::getCurrentModuleInstance()->unloadAllStaticallyInitializedInstances(StaticInitialization::IDENTIFIER);
                 }
         };
