Index: code/branches/core7/src/libraries/core/Core.cc
===================================================================
--- code/branches/core7/src/libraries/core/Core.cc	(revision 10531)
+++ code/branches/core7/src/libraries/core/Core.cc	(revision 10532)
@@ -78,4 +78,6 @@
 #include "object/ObjectList.h"
 #include "module/ModuleInstance.h"
+#include "module/StaticInitializationManager.h"
+#include "CoreStaticInitializationHandler.h"
 #include "UpdateListener.h"
 
@@ -111,4 +113,5 @@
         , graphicsScope_(NULL)
         , bGraphicsLoaded_(false)
+        , staticInitHandler_(NULL)
         , rootModule_(NULL)
         , config_(NULL)
@@ -124,4 +127,7 @@
 
         // TODO: initialize StaticInitializationManager
+        this->staticInitHandler_ = new CoreStaticInitializationHandler();
+        StaticInitializationManager::getInstance().addHandler(this->staticInitHandler_);
+
         // TODO: initialize Root-Context
         // TODO: initialize IdentifierManager here
@@ -250,6 +256,9 @@
             this->rootModule_->deleteAllStaticallyInitializedInstances();
         }
+        if (this->staticInitHandler_)
+            StaticInitializationManager::getInstance().removeHandler(this->staticInitHandler_);
         Context::setRootContext(NULL);
         safeObjectDelete(&rootModule_);
+        safeObjectDelete(&staticInitHandler_);
         safeObjectDelete(&dynLibManager_);
         safeObjectDelete(&configurablePaths_);
@@ -288,7 +297,6 @@
         DynLib* dynLib = this->dynLibManager_->load(module->getName());
         module->setDynLib(dynLib);
-        module->loadAllStaticallyInitializedInstances(0);
-        IdentifierManager::getInstance().createClassHierarchy();
-        ScopeManager::getInstance().updateListeners();
+
+        StaticInitializationManager::getInstance().loadModule(module);
     }
 
@@ -308,5 +316,6 @@
         orxout(internal_info) << "Unloading module " << module->getName() << "..." << endl;
 
-        module->unloadAllStaticallyInitializedInstances(0);
+        StaticInitializationManager::getInstance().unloadModule(module);
+
         module->deleteAllStaticallyInitializedInstances();
         this->dynLibManager_->unload(module->getDynLib());
Index: code/branches/core7/src/libraries/core/Core.h
===================================================================
--- code/branches/core7/src/libraries/core/Core.h	(revision 10531)
+++ code/branches/core7/src/libraries/core/Core.h	(revision 10532)
@@ -95,31 +95,33 @@
             void setThreadAffinity(int limitToCPU);
 
-            ApplicationPaths*         applicationPaths_;
-            ConfigurablePaths*        configurablePaths_;
-            DynLibManager*            dynLibManager_;
-            SignalHandler*            signalHandler_;
-            ConfigFileManager*        configFileManager_;
-            Language*                 languageInstance_;
-            Loader*                   loaderInstance_;
-            IOConsole*                ioConsole_;
-            TclBind*                  tclBind_;
-            TclThreadManager*         tclThreadManager_;
-            Scope<ScopeID::ROOT>*     rootScope_;
+            ApplicationPaths*                applicationPaths_;
+            ConfigurablePaths*               configurablePaths_;
+            DynLibManager*                   dynLibManager_;
+            SignalHandler*                   signalHandler_;
+            ConfigFileManager*               configFileManager_;
+            Language*                        languageInstance_;
+            Loader*                          loaderInstance_;
+            IOConsole*                       ioConsole_;
+            TclBind*                         tclBind_;
+            TclThreadManager*                tclThreadManager_;
+            Scope<ScopeID::ROOT>*            rootScope_;
             // graphical
-            GraphicsManager*          graphicsManager_;            //!< Interface to OGRE
-            InputManager*             inputManager_;               //!< Interface to OIS
-            GUIManager*               guiManager_;                 //!< Interface to GUI
-            Scope<ScopeID::GRAPHICS>* graphicsScope_;
-            bool                      bGraphicsLoaded_;
-            ModuleInstance*           rootModule_;
-            std::list<ModuleInstance*>modules_;
+            GraphicsManager*                 graphicsManager_;            //!< Interface to OGRE
+            InputManager*                    inputManager_;               //!< Interface to OIS
+            GUIManager*                      guiManager_;                 //!< Interface to GUI
+            Scope<ScopeID::GRAPHICS>*        graphicsScope_;
+            bool                             bGraphicsLoaded_;
+
+            CoreStaticInitializationHandler* staticInitHandler_;
+            ModuleInstance*                  rootModule_;
+            std::list<ModuleInstance*>       modules_;
 
             /// Helper object that stores the config values
-            CoreConfig*               config_;
+            CoreConfig*                      config_;
 
             /// Helper object that executes the surrogate destructor destroy()
-            DestructionHelper<Core>   destructionHelper_;
+            DestructionHelper<Core>          destructionHelper_;
 
-            static Core*              singletonPtr_s;
+            static Core*                     singletonPtr_s;
     };
 }
Index: code/branches/core7/src/libraries/core/CorePrereqs.h
===================================================================
--- code/branches/core7/src/libraries/core/CorePrereqs.h	(revision 10531)
+++ code/branches/core7/src/libraries/core/CorePrereqs.h	(revision 10532)
@@ -158,4 +158,5 @@
     class Core;
     class CoreConfig;
+    class CoreStaticInitializationHandler;
     class Destroyable;
     class DestroyLaterManager;
Index: code/branches/core7/src/libraries/core/CoreStaticInitializationHandler.cc
===================================================================
--- code/branches/core7/src/libraries/core/CoreStaticInitializationHandler.cc	(revision 10531)
+++ code/branches/core7/src/libraries/core/CoreStaticInitializationHandler.cc	(revision 10532)
@@ -29,5 +29,30 @@
 #include "CoreStaticInitializationHandler.h"
 
+#include "module/ModuleInstance.h"
+#include "class/IdentifierManager.h"
+#include "singleton/ScopeManager.h"
+
 namespace orxonox
 {
+    void CoreStaticInitializationHandler::setupHandler()
+    {
+        // TODO
+    }
+
+    void CoreStaticInitializationHandler::shutdownHandler()
+    {
+        // TODO
+    }
+
+    void CoreStaticInitializationHandler::loadModule(ModuleInstance* module)
+    {
+        module->loadAllStaticallyInitializedInstances(0);
+        IdentifierManager::getInstance().createClassHierarchy();
+        ScopeManager::getInstance().updateListeners();
+    }
+
+    void CoreStaticInitializationHandler::unloadModule(ModuleInstance* module)
+    {
+        module->unloadAllStaticallyInitializedInstances(0);
+    }
 }
Index: code/branches/core7/src/libraries/core/CoreStaticInitializationHandler.h
===================================================================
--- code/branches/core7/src/libraries/core/CoreStaticInitializationHandler.h	(revision 10531)
+++ code/branches/core7/src/libraries/core/CoreStaticInitializationHandler.h	(revision 10532)
@@ -39,6 +39,9 @@
     {
         public:
-            CoreStaticInitializationHandler() {}
-            virtual ~CoreStaticInitializationHandler() {}
+            virtual void setupHandler();
+            virtual void shutdownHandler();
+
+            virtual void loadModule(ModuleInstance* module);
+            virtual void unloadModule(ModuleInstance* module);
     };
 }
Index: code/branches/core7/src/libraries/core/module/CMakeLists.txt
===================================================================
--- code/branches/core7/src/libraries/core/module/CMakeLists.txt	(revision 10531)
+++ code/branches/core7/src/libraries/core/module/CMakeLists.txt	(revision 10532)
@@ -2,5 +2,4 @@
   ModuleInstance.cc
   StaticallyInitializedInstance.cc
-  StaticInitializationHandler.cc
   StaticInitializationHandlerIncludes.cc
   StaticInitializationManager.cc
Index: code/branches/core7/src/libraries/core/module/StaticInitializationHandler.cc
===================================================================
--- code/branches/core7/src/libraries/core/module/StaticInitializationHandler.cc	(revision 10531)
+++ 	(revision )
@@ -1,33 +1,0 @@
-/*
- *   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 "StaticInitializationHandler.h"
-
-namespace orxonox
-{
-}
Index: code/branches/core7/src/libraries/core/module/StaticInitializationHandler.h
===================================================================
--- code/branches/core7/src/libraries/core/module/StaticInitializationHandler.h	(revision 10531)
+++ code/branches/core7/src/libraries/core/module/StaticInitializationHandler.h	(revision 10532)
@@ -39,4 +39,10 @@
             StaticInitializationHandler() {}
             virtual ~StaticInitializationHandler() {}
+
+            virtual void setupHandler() = 0;
+            virtual void shutdownHandler() = 0;
+
+            virtual void loadModule(ModuleInstance* module) = 0;
+            virtual void unloadModule(ModuleInstance* module) = 0;
     };
 }
Index: code/branches/core7/src/libraries/core/module/StaticInitializationManager.cc
===================================================================
--- code/branches/core7/src/libraries/core/module/StaticInitializationManager.cc	(revision 10531)
+++ code/branches/core7/src/libraries/core/module/StaticInitializationManager.cc	(revision 10532)
@@ -29,4 +29,6 @@
 #include "StaticInitializationManager.h"
 
+#include "StaticInitializationHandler.h"
+
 namespace orxonox
 {
@@ -47,7 +49,14 @@
     }
 
-    void StaticInitializationManager::addCoreHandler()
+    void StaticInitializationManager::loadModule(ModuleInstance* module)
     {
-        // TODO
+        for (std::list<StaticInitializationHandler*>::iterator it = this->handlers_.begin(); it != this->handlers_.end(); ++it)
+            (*it)->loadModule(module);
+    }
+
+    void StaticInitializationManager::unloadModule(ModuleInstance* module)
+    {
+        for (std::list<StaticInitializationHandler*>::iterator it = this->handlers_.begin(); it != this->handlers_.end(); ++it)
+            (*it)->unloadModule(module);
     }
 }
Index: code/branches/core7/src/libraries/core/module/StaticInitializationManager.h
===================================================================
--- code/branches/core7/src/libraries/core/module/StaticInitializationManager.h	(revision 10531)
+++ code/branches/core7/src/libraries/core/module/StaticInitializationManager.h	(revision 10532)
@@ -49,7 +49,8 @@
             void removeHandler(StaticInitializationHandler* handler);
 
+            void loadModule(ModuleInstance* module);
+            void unloadModule(ModuleInstance* module);
+
         private:
-            void addCoreHandler();
-
             std::list<StaticInitializationHandler*> handlers_;
     };
