Index: code/branches/core7/src/libraries/network/CMakeLists.txt
===================================================================
--- code/branches/core7/src/libraries/network/CMakeLists.txt	(revision 10467)
+++ code/branches/core7/src/libraries/network/CMakeLists.txt	(revision 10468)
@@ -34,4 +34,5 @@
   MasterServerComm.cc
   NetworkFunction.cc
+  NetworkFunctionManager.cc
   Host.cc
   Server.cc
@@ -61,4 +62,5 @@
   NetworkChatListener.h
   NetworkFunction.h
+  NetworkFunctionManager.h
   NetworkPrecompiledHeaders.h
   NetworkPrereqs.h
Index: code/branches/core7/src/libraries/network/NetworkFunction.cc
===================================================================
--- code/branches/core7/src/libraries/network/NetworkFunction.cc	(revision 10467)
+++ code/branches/core7/src/libraries/network/NetworkFunction.cc	(revision 10468)
@@ -28,10 +28,9 @@
 
 #include "NetworkFunction.h"
+#include "NetworkFunctionManager.h"
 #include "core/CoreIncludes.h"
 
 namespace orxonox
 {
-  std::map<uint32_t, bool> NetworkFunctionBase::isStaticMap_;
-
   std::map<NetworkFunctionPointer, NetworkMemberFunctionBase*> NetworkMemberFunctionBase::functorMap_;
   std::map<uint32_t, NetworkMemberFunctionBase*> NetworkMemberFunctionBase::idMap_;
@@ -50,24 +49,8 @@
 
     this->name_ = name;
-    NetworkFunctionBase::getNameMap()[name] = this;
+    NetworkFunctionManager::getNameMap()[name] = this;
   }
   NetworkFunctionBase::~NetworkFunctionBase()
   {
-  }
-
-
-  void NetworkFunctionBase::destroyAllNetworkFunctions()
-  {
-    std::map<std::string, NetworkFunctionBase*>& map = NetworkFunctionBase::getNameMap();
-    std::map<std::string, NetworkFunctionBase*>::iterator it;
-    for( it=map.begin(); it!=map.end(); ++it )
-      delete it->second;
-  }
-
-
-  /*static*/ std::map<std::string, NetworkFunctionBase*>& NetworkFunctionBase::getNameMap()
-  {
-    static std::map<std::string, NetworkFunctionBase*> nameMap_;
-    return nameMap_;
   }
 
Index: code/branches/core7/src/libraries/network/NetworkFunction.h
===================================================================
--- code/branches/core7/src/libraries/network/NetworkFunction.h	(revision 10467)
+++ code/branches/core7/src/libraries/network/NetworkFunction.h	(revision 10468)
@@ -77,20 +77,6 @@
     inline uint32_t     getNetworkID() const            { return this->networkID_; }
     inline const std::string& getName() const           { return name_; }
-    static inline bool  isStatic( uint32_t networkID )  { return isStaticMap_[networkID]; }
-
-    static inline void setNetworkID(const std::string& name, uint32_t id)
-    {
-        std::map<std::string, NetworkFunctionBase*>& map = NetworkFunctionBase::getNameMap();
-        assert( map.find(name)!=map.end() );
-        map[name]->setNetworkID(id);
-    }
-
-    static void destroyAllNetworkFunctions();
-
-  protected:
-    static std::map<uint32_t, bool> isStaticMap_;
-
-  private:
-    static std::map<std::string, NetworkFunctionBase*>& getNameMap();
+
+  private:
     uint32_t networkID_;
     std::string name_;
Index: code/branches/core7/src/libraries/network/NetworkFunctionManager.cc
===================================================================
--- code/branches/core7/src/libraries/network/NetworkFunctionManager.cc	(revision 10468)
+++ code/branches/core7/src/libraries/network/NetworkFunctionManager.cc	(revision 10468)
@@ -0,0 +1,62 @@
+/*
+ *   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 "NetworkFunctionManager.h"
+#include "NetworkFunction.h"
+
+namespace orxonox
+{
+    std::map<uint32_t, bool> NetworkFunctionManager::isStaticMap_;
+
+    /* static */NetworkFunctionManager& NetworkFunctionManager::getInstance()
+    {
+        static NetworkFunctionManager instance;
+        return instance;
+    }
+
+    /*static*/void NetworkFunctionManager::setNetworkID(const std::string& name, uint32_t id)
+    {
+        std::map<std::string, NetworkFunctionBase*>& map = NetworkFunctionManager::getNameMap();
+        assert( map.find(name)!=map.end() );
+        map[name]->setNetworkID(id);
+    }
+
+    /*static*/void NetworkFunctionManager::destroyAllNetworkFunctions()
+    {
+        std::map<std::string, NetworkFunctionBase*>& map = NetworkFunctionManager::getNameMap();
+        std::map<std::string, NetworkFunctionBase*>::iterator it;
+        for (it = map.begin(); it != map.end(); ++it)
+            delete it->second;
+    }
+
+    /*static*/std::map<std::string, NetworkFunctionBase*>& NetworkFunctionManager::getNameMap()
+    {
+        static std::map<std::string, NetworkFunctionBase*> nameMap_;
+        return nameMap_;
+    }
+}
Index: code/branches/core7/src/libraries/network/NetworkFunctionManager.h
===================================================================
--- code/branches/core7/src/libraries/network/NetworkFunctionManager.h	(revision 10468)
+++ code/branches/core7/src/libraries/network/NetworkFunctionManager.h	(revision 10468)
@@ -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:
+ *      ...
+ *
+ */
+
+#ifndef __NetworkFunctionManager_H__
+#define __NetworkFunctionManager_H__
+
+#include "NetworkPrereqs.h"
+
+#include <cassert>
+#include <map>
+
+namespace orxonox
+{
+    class _NetworkExport NetworkFunctionManager
+    {
+        public:
+            static NetworkFunctionManager& getInstance();
+
+            static inline bool  isStatic( uint32_t networkID )  { return isStaticMap_[networkID]; }
+            static void setNetworkID(const std::string& name, uint32_t id);
+            static void destroyAllNetworkFunctions();
+            static std::map<std::string, NetworkFunctionBase*>& getNameMap();
+
+          private:
+            static std::map<uint32_t, bool> isStaticMap_;
+    };
+}
+
+#endif /* __NetworkFunctionManager_H__ */
Index: code/branches/core7/src/libraries/network/packet/FunctionIDs.cc
===================================================================
--- code/branches/core7/src/libraries/network/packet/FunctionIDs.cc	(revision 10467)
+++ code/branches/core7/src/libraries/network/packet/FunctionIDs.cc	(revision 10468)
@@ -37,4 +37,5 @@
 #include "core/object/ObjectList.h"
 #include "network/NetworkFunction.h"
+#include "network/NetworkFunctionManager.h"
 
 namespace orxonox {
@@ -138,5 +139,5 @@
     functionname = temp+2*sizeof(uint32_t);
     orxout(internal_info, context::packets) << "processing functionid: " << networkID << " name: " << functionname << endl;
-    NetworkFunctionBase::setNetworkID((const char*)functionname, networkID);
+    NetworkFunctionManager::setNetworkID((const char*)functionname, networkID);
     temp += 2*sizeof(uint32_t) + stringsize;
   }
