Index: code/branches/core7/src/libraries/core/Core.cc
===================================================================
--- code/branches/core7/src/libraries/core/Core.cc	(revision 10541)
+++ code/branches/core7/src/libraries/core/Core.cc	(revision 10542)
@@ -58,5 +58,4 @@
 #include "util/output/OutputManager.h"
 #include "core/singleton/Scope.h"
-#include "core/singleton/ScopedSingletonIncludes.h"
 #include "ApplicationPaths.h"
 #include "ConfigurablePaths.h"
@@ -66,9 +65,7 @@
 #include "GraphicsManager.h"
 #include "GUIManager.h"
-#include "class/Identifier.h"
 #include "Language.h"
 #include "Loader.h"
 #include "LuaState.h"
-#include "command/ConsoleCommandManager.h"
 #include "command/IOConsole.h"
 #include "command/TclBind.h"
@@ -127,10 +124,5 @@
 
         // TODO: initialize Root-Context
-        // TODO: initialize IdentifierManager here
-        // TODO: initialize ScopeManager here
-        // TODO: initialize CommandLineParser here
-        // TODO: initialize ConsoleCommandManager here
-        // TODO: initialize NetworkFunctionManager here
-        // TODO: initialize StaticInitializationManager
+        new StaticInitializationManager(); // create singleton
         this->staticInitHandler_ = new CoreStaticInitializationHandler();
         StaticInitializationManager::getInstance().addHandler(this->staticInitHandler_);
@@ -262,4 +254,5 @@
         safeObjectDelete(&rootModule_);
         safeObjectDelete(&staticInitHandler_);
+        delete &StaticInitializationManager::getInstance();
         safeObjectDelete(&dynLibManager_);
         safeObjectDelete(&configurablePaths_);
Index: code/branches/core7/src/libraries/core/CoreStaticInitializationHandler.cc
===================================================================
--- code/branches/core7/src/libraries/core/CoreStaticInitializationHandler.cc	(revision 10541)
+++ code/branches/core7/src/libraries/core/CoreStaticInitializationHandler.cc	(revision 10542)
@@ -31,6 +31,9 @@
 #include "CoreIncludes.h"
 #include "module/ModuleInstance.h"
+#include "object/Iterator.h"
 #include "class/IdentifierManager.h"
-#include "object/Iterator.h"
+#include "singleton/ScopeManager.h"
+#include "command/ConsoleCommandManager.h"
+#include "commandline/CommandLineParser.h"
 
 namespace orxonox
@@ -38,10 +41,17 @@
     void CoreStaticInitializationHandler::setupHandler()
     {
-        // TODO
+        // initialize singletons
+        new IdentifierManager();
+        new ScopeManager();
+        new CommandLineParser();
+        new ConsoleCommandManager();
     }
 
     void CoreStaticInitializationHandler::shutdownHandler()
     {
-        // TODO
+        delete &ConsoleCommandManager::getInstance();
+        delete &CommandLineParser::getInstance();
+        delete &ScopeManager::getInstance();
+        delete &IdentifierManager::getInstance();
     }
 
Index: code/branches/core7/src/libraries/core/class/IdentifierManager.cc
===================================================================
--- code/branches/core7/src/libraries/core/class/IdentifierManager.cc	(revision 10541)
+++ code/branches/core7/src/libraries/core/class/IdentifierManager.cc	(revision 10542)
@@ -44,9 +44,5 @@
 namespace orxonox
 {
-    /* static */ IdentifierManager& IdentifierManager::getInstance()
-    {
-        static IdentifierManager instance;
-        return instance;
-    }
+    IdentifierManager* IdentifierManager::singletonPtr_s = 0;
 
     IdentifierManager::IdentifierManager()
Index: code/branches/core7/src/libraries/core/class/IdentifierManager.h
===================================================================
--- code/branches/core7/src/libraries/core/class/IdentifierManager.h	(revision 10541)
+++ code/branches/core7/src/libraries/core/class/IdentifierManager.h	(revision 10542)
@@ -42,10 +42,15 @@
 #include <string>
 
+#include "util/Singleton.h"
+
 namespace orxonox
 {
-    class _CoreExport IdentifierManager
+    class _CoreExport IdentifierManager : public Singleton<IdentifierManager>
     {
+        friend class Singleton<IdentifierManager>;
+
         public:
-            static IdentifierManager& getInstance();
+            IdentifierManager();
+            ~IdentifierManager() {}
 
             void addIdentifier(Identifier* identifier);
@@ -88,7 +93,5 @@
 
         private:
-            IdentifierManager();
-            IdentifierManager(const IdentifierManager&);
-            ~IdentifierManager() {}
+            IdentifierManager(const IdentifierManager&); // not implemented
 
             /// Increases the hierarchyCreatingCounter_s variable, causing all new objects to store their parents.
@@ -110,4 +113,6 @@
             std::map<Identifiable*, std::list<const Identifier*> > identifierTraceOfNewObject_;
             Identifier* recordTraceForIdentifier_; //!< The identifier for which we want to record the trace of identifiers during object creation. If null, no trace is recorded.
+
+            static IdentifierManager* singletonPtr_s;
     };
 }
Index: code/branches/core7/src/libraries/core/command/ConsoleCommandManager.cc
===================================================================
--- code/branches/core7/src/libraries/core/command/ConsoleCommandManager.cc	(revision 10541)
+++ code/branches/core7/src/libraries/core/command/ConsoleCommandManager.cc	(revision 10542)
@@ -39,9 +39,5 @@
 namespace orxonox
 {
-    /* static */ ConsoleCommandManager& ConsoleCommandManager::getInstance()
-    {
-        static ConsoleCommandManager instance;
-        return instance;
-    }
+    ConsoleCommandManager* ConsoleCommandManager::singletonPtr_s = 0;
 
     /**
Index: code/branches/core7/src/libraries/core/command/ConsoleCommandManager.h
===================================================================
--- code/branches/core7/src/libraries/core/command/ConsoleCommandManager.h	(revision 10541)
+++ code/branches/core7/src/libraries/core/command/ConsoleCommandManager.h	(revision 10542)
@@ -37,4 +37,6 @@
 #include "core/CorePrereqs.h"
 
+#include "util/Singleton.h"
+
 namespace orxonox
 {
@@ -42,9 +44,9 @@
      * A singleton that stores all existing ConsoleCommands.
      */
-    class _CoreExport ConsoleCommandManager
+    class _CoreExport ConsoleCommandManager : public Singleton<ConsoleCommandManager>
     {
+        friend class Singleton<ConsoleCommandManager>;
+
         public:
-            static ConsoleCommandManager& getInstance();
-
             void registerCommand(ConsoleCommand* command);
             void registerCommand(const std::string& group, const std::string& name, ConsoleCommand* command);
@@ -71,4 +73,6 @@
             std::map<std::string, std::map<std::string, ConsoleCommand*> > commandMap_;
             std::map<std::string, std::map<std::string, ConsoleCommand*> > commandMapLC_;
+
+            static ConsoleCommandManager* singletonPtr_s;
     };
 }
Index: code/branches/core7/src/libraries/core/commandline/CommandLineParser.cc
===================================================================
--- code/branches/core7/src/libraries/core/commandline/CommandLineParser.cc	(revision 10541)
+++ code/branches/core7/src/libraries/core/commandline/CommandLineParser.cc	(revision 10542)
@@ -40,4 +40,6 @@
 namespace orxonox
 {
+    CommandLineParser* CommandLineParser::singletonPtr_s = 0;
+
     /**
     @brief
@@ -85,14 +87,4 @@
     CommandLineParser::~CommandLineParser()
     {
-    }
-
-    /**
-    @brief
-        Returns a unique instance (Meyers Singleton).
-    */
-    CommandLineParser& CommandLineParser::_getInstance()
-    {
-        static CommandLineParser instance;
-        return instance;
     }
 
@@ -260,5 +252,5 @@
     std::string CommandLineParser::getUsageInformation()
     {
-        CommandLineParser& inst = _getInstance();
+        CommandLineParser& inst = getInstance();
         std::ostringstream infoStr;
 
@@ -313,6 +305,6 @@
     const CommandLineArgument* CommandLineParser::getArgument(const std::string& name)
     {
-        std::map<std::string, CommandLineArgument*>::const_iterator it = _getInstance().cmdLineArgs_.find(name);
-        if (it == _getInstance().cmdLineArgs_.end())
+        std::map<std::string, CommandLineArgument*>::const_iterator it = getInstance().cmdLineArgs_.find(name);
+        if (it == getInstance().cmdLineArgs_.end())
         {
             ThrowException(Argument, "Could find command line argument '" + name + "'.");
@@ -331,5 +323,5 @@
     void CommandLineParser::addArgument(CommandLineArgument* argument)
     {
-        OrxAssert(!_getInstance().existsArgument(argument->getName()),
+        OrxAssert(!getInstance().existsArgument(argument->getName()),
             "Cannot add a command line argument with name '" + argument->getName() + "' twice.");
         OrxAssert(!argument->getDefaultValue().isType<bool>() || argument->getDefaultValue().get<bool>() != true,
@@ -337,5 +329,5 @@
             << "Please use SetCommandLineSwitch and adjust your argument: " << argument->getName());
 
-        _getInstance().cmdLineArgs_[argument->getName()] = argument;
+        getInstance().cmdLineArgs_[argument->getName()] = argument;
     }
 
@@ -345,5 +337,5 @@
     void CommandLineParser::removeArgument(CommandLineArgument* argument)
     {
-        _getInstance().cmdLineArgs_.erase(argument->getName());
+        getInstance().cmdLineArgs_.erase(argument->getName());
     }
 }
Index: code/branches/core7/src/libraries/core/commandline/CommandLineParser.h
===================================================================
--- code/branches/core7/src/libraries/core/commandline/CommandLineParser.h	(revision 10541)
+++ code/branches/core7/src/libraries/core/commandline/CommandLineParser.h	(revision 10542)
@@ -48,4 +48,5 @@
 #include "util/OrxAssert.h"
 #include "util/MultiType.h"
+#include "util/Singleton.h"
 
 namespace orxonox
@@ -134,11 +135,16 @@
         CommandLineArgument
     */
-    class _CoreExport CommandLineParser
+    class _CoreExport CommandLineParser : public Singleton<CommandLineParser>
     {
+        friend class Singleton<CommandLineParser>;
+
     public:
+        //! Constructor initialises bFirstTimeParse_ with true.
+        CommandLineParser() : bFirstTimeParse_(true) { }
+        ~CommandLineParser();
 
         //! Parse redirection to internal member method.
         static void parse(const std::string& cmdLine)
-        { _getInstance()._parse(cmdLine); }
+        { getInstance()._parse(cmdLine); }
 
         static std::string getUsageInformation();
@@ -157,6 +163,6 @@
         static bool existsArgument(const std::string& name)
         {
-            std::map<std::string, CommandLineArgument*>::const_iterator it = _getInstance().cmdLineArgs_.find(name);
-            return !(it == _getInstance().cmdLineArgs_.end());
+            std::map<std::string, CommandLineArgument*>::const_iterator it = getInstance().cmdLineArgs_.find(name);
+            return !(it == getInstance().cmdLineArgs_.end());
         }
 
@@ -164,11 +170,6 @@
 
     private:
-        //! Constructor initialises bFirstTimeParse_ with true.
-        CommandLineParser() : bFirstTimeParse_(true) { }
         //! Undefined copy constructor
         CommandLineParser(const CommandLineParser& instance);
-        ~CommandLineParser();
-
-        static CommandLineParser& _getInstance();
 
         void _parse(const std::string& cmdLine);
@@ -187,4 +188,6 @@
         //! Search map by shortcut for the arguments.
         std::map<std::string, CommandLineArgument*> cmdLineArgsShortcut_;
+
+        static CommandLineParser* singletonPtr_s;
     };
 
Index: code/branches/core7/src/libraries/core/module/StaticInitializationManager.cc
===================================================================
--- code/branches/core7/src/libraries/core/module/StaticInitializationManager.cc	(revision 10541)
+++ code/branches/core7/src/libraries/core/module/StaticInitializationManager.cc	(revision 10542)
@@ -33,12 +33,9 @@
 namespace orxonox
 {
-    /* static */ StaticInitializationManager& StaticInitializationManager::getInstance()
-    {
-        static StaticInitializationManager instance;
-        return instance;
-    }
+    StaticInitializationManager* StaticInitializationManager::singletonPtr_s = 0;
 
     void StaticInitializationManager::addHandler(StaticInitializationHandler* handler)
     {
+        handler->setupHandler();
         this->handlers_.push_back(handler);
     }
@@ -47,4 +44,5 @@
     {
         this->handlers_.remove(handler);
+        handler->shutdownHandler();
     }
 
Index: code/branches/core7/src/libraries/core/module/StaticInitializationManager.h
===================================================================
--- code/branches/core7/src/libraries/core/module/StaticInitializationManager.h	(revision 10541)
+++ code/branches/core7/src/libraries/core/module/StaticInitializationManager.h	(revision 10542)
@@ -34,11 +34,13 @@
 #include <list>
 
+#include "util/Singleton.h"
+
 namespace orxonox
 {
-    class _CoreExport StaticInitializationManager
+    class _CoreExport StaticInitializationManager : public Singleton<StaticInitializationManager>
     {
+        friend class Singleton<StaticInitializationManager>;
+
         public:
-            static StaticInitializationManager& getInstance();
-
             StaticInitializationManager() {}
             virtual ~StaticInitializationManager() {}
@@ -52,4 +54,6 @@
         private:
             std::list<StaticInitializationHandler*> handlers_;
+
+            static StaticInitializationManager* singletonPtr_s;
     };
 }
Index: code/branches/core7/src/libraries/core/singleton/ScopeManager.cc
===================================================================
--- code/branches/core7/src/libraries/core/singleton/ScopeManager.cc	(revision 10541)
+++ code/branches/core7/src/libraries/core/singleton/ScopeManager.cc	(revision 10542)
@@ -38,9 +38,5 @@
 namespace orxonox
 {
-    /* static */ ScopeManager& ScopeManager::getInstance()
-    {
-        static ScopeManager instance;
-        return instance;
-    }
+    ScopeManager* ScopeManager::singletonPtr_s = 0;
 
     void ScopeManager::addScope(ScopeID::Value scope)
Index: code/branches/core7/src/libraries/core/singleton/ScopeManager.h
===================================================================
--- code/branches/core7/src/libraries/core/singleton/ScopeManager.h	(revision 10541)
+++ code/branches/core7/src/libraries/core/singleton/ScopeManager.h	(revision 10542)
@@ -41,4 +41,6 @@
 #include <set>
 
+#include "util/Singleton.h"
+
 namespace orxonox
 {
@@ -52,9 +54,9 @@
         @see See @ref Scope "this description" for details about the interrelationship of Scope, ScopeListener, and ScopeManager.
     */
-    class _CoreExport ScopeManager
+    class _CoreExport ScopeManager : public Singleton<ScopeManager>
     {
+        friend class Singleton<ScopeManager>;
+
         public:
-            static ScopeManager& getInstance();
-
             /** Adds a scope and activates all listeners which are registered for this scope */
             void addScope(ScopeID::Value scope);
@@ -78,4 +80,6 @@
             std::set<ScopeID::Value> activeScopes_;
             std::map<ScopeID::Value, std::set<ScopeListener*> > listeners_; //!< Stores all listeners for a scope
+
+            static ScopeManager* singletonPtr_s;
     };
 }
Index: code/branches/core7/src/libraries/network/NetworkFunctionManager.cc
===================================================================
--- code/branches/core7/src/libraries/network/NetworkFunctionManager.cc	(revision 10541)
+++ code/branches/core7/src/libraries/network/NetworkFunctionManager.cc	(revision 10542)
@@ -32,9 +32,5 @@
 namespace orxonox
 {
-    /* static */NetworkFunctionManager& NetworkFunctionManager::getInstance()
-    {
-        static NetworkFunctionManager instance;
-        return instance;
-    }
+    NetworkFunctionManager* NetworkFunctionManager::singletonPtr_s = 0;
 
     void NetworkFunctionManager::registerFunction(NetworkFunctionBase* function)
Index: code/branches/core7/src/libraries/network/NetworkFunctionManager.h
===================================================================
--- code/branches/core7/src/libraries/network/NetworkFunctionManager.h	(revision 10541)
+++ code/branches/core7/src/libraries/network/NetworkFunctionManager.h	(revision 10542)
@@ -36,11 +36,14 @@
 #include <set>
 
+#include "util/Singleton.h"
+#include "NetworkFunction.h"
+
 namespace orxonox
 {
-    class _NetworkExport NetworkFunctionManager
+    class _NetworkExport NetworkFunctionManager : public Singleton<NetworkFunctionManager>
     {
+        friend class Singleton<NetworkFunctionManager>;
+
         public:
-            static NetworkFunctionManager& getInstance();
-
             void registerFunction(NetworkFunctionBase* function);
             void unregisterFunction(NetworkFunctionBase* function);
@@ -58,4 +61,6 @@
             std::map<NetworkFunctionPointer, NetworkFunctionBase*> functorMap_;
             std::map<uint32_t, NetworkFunctionBase*> idMap_;
+
+            static NetworkFunctionManager* singletonPtr_s;
     };
 }
Index: code/branches/core7/src/libraries/network/NetworkStaticInitializationHandler.cc
===================================================================
--- code/branches/core7/src/libraries/network/NetworkStaticInitializationHandler.cc	(revision 10541)
+++ code/branches/core7/src/libraries/network/NetworkStaticInitializationHandler.cc	(revision 10542)
@@ -30,4 +30,5 @@
 
 #include "core/module/ModuleInstance.h"
+#include "NetworkFunctionManager.h"
 
 namespace orxonox
@@ -35,10 +36,11 @@
     void NetworkStaticInitializationHandler::setupHandler()
     {
-        // TODO
+        // initialize singleton
+        new NetworkFunctionManager();
     }
 
     void NetworkStaticInitializationHandler::shutdownHandler()
     {
-        // TODO
+        delete &NetworkFunctionManager::getInstance();
     }
 
