Index: /code/branches/core7/src/libraries/core/Core.cc
===================================================================
--- /code/branches/core7/src/libraries/core/Core.cc	(revision 10351)
+++ /code/branches/core7/src/libraries/core/Core.cc	(revision 10352)
@@ -141,4 +141,5 @@
 
         // TODO: initialize CommandLineParser here
+        // TODO: initialize ConsoleCommandManager here
         ModuleInstance::getCurrentModuleInstance()->loadAllStaticallyInitializedInstances();
 
Index: /code/branches/core7/src/libraries/core/command/CMakeLists.txt
===================================================================
--- /code/branches/core7/src/libraries/core/command/CMakeLists.txt	(revision 10351)
+++ /code/branches/core7/src/libraries/core/command/CMakeLists.txt	(revision 10352)
@@ -4,4 +4,5 @@
   ConsoleCommand.cc
   ConsoleCommandCompilation.cc
+  ConsoleCommandIncludes.cc
   ConsoleCommandManager.cc
   Executor.cc
Index: /code/branches/core7/src/libraries/core/command/ConsoleCommand.cc
===================================================================
--- /code/branches/core7/src/libraries/core/command/ConsoleCommand.cc	(revision 10351)
+++ /code/branches/core7/src/libraries/core/command/ConsoleCommand.cc	(revision 10352)
@@ -84,5 +84,5 @@
             this->executor_ = executor;
 
-        ConsoleCommandManager::registerCommand(group, name, this);
+        this->names_.push_back(CommandName(group, name));
     }
 
@@ -100,5 +100,5 @@
     ConsoleCommand& ConsoleCommand::addShortcut()
     {
-        ConsoleCommandManager::registerCommand("", this->baseName_, this);
+        this->names_.push_back(CommandName("", this->baseName_));
         return *this;
     }
@@ -109,5 +109,5 @@
     ConsoleCommand& ConsoleCommand::addShortcut(const std::string&  name)
     {
-        ConsoleCommandManager::registerCommand("", name, this);
+        this->names_.push_back(CommandName("", name));
         return *this;
     }
@@ -118,5 +118,5 @@
     ConsoleCommand& ConsoleCommand::addGroup(const std::string& group)
     {
-        ConsoleCommandManager::registerCommand(group, this->baseName_, this);
+        this->names_.push_back(CommandName(group, this->baseName_));
         return *this;
     }
@@ -127,5 +127,5 @@
     ConsoleCommand& ConsoleCommand::addGroup(const std::string& group, const std::string&  name)
     {
-        ConsoleCommandManager::registerCommand(group, name, this);
+        this->names_.push_back(CommandName(group, name));
         return *this;
     }
Index: /code/branches/core7/src/libraries/core/command/ConsoleCommand.h
===================================================================
--- /code/branches/core7/src/libraries/core/command/ConsoleCommand.h	(revision 10351)
+++ /code/branches/core7/src/libraries/core/command/ConsoleCommand.h	(revision 10352)
@@ -104,4 +104,14 @@
 
         public:
+            /**
+             * @brief Defines the name of a command, consisting of an optional group ("" means no group) and the name itself.
+             */
+            struct CommandName
+            {
+                CommandName(const std::string& group, const std::string& name) : group_(group), name_(name) {}
+                std::string group_;
+                std::string name_;
+            };
+
             /**
                 @brief Helper class that is used to manipulate console commands.
@@ -360,4 +370,7 @@
                 { return this; }
 
+            inline const std::vector<CommandName>& getNames()
+                { return this->names_; }
+
         private:
             void init(const std::string& group, const std::string& name, const ExecutorPtr& executor, bool bInitialized);
@@ -383,4 +396,5 @@
             AccessLevel::Enum accessLevel_;                                 ///< The access level (the state of the game in which you can access the command)
             std::string baseName_;                                          ///< The name that was first assigned to the command
+            std::vector<CommandName> names_;                                ///< All names and aliases of this command
             FunctorPtr baseFunctor_;                                        ///< The functor that defines the header of the command-function
 
Index: /code/branches/core7/src/libraries/core/command/ConsoleCommandIncludes.cc
===================================================================
--- /code/branches/core7/src/libraries/core/command/ConsoleCommandIncludes.cc	(revision 10352)
+++ /code/branches/core7/src/libraries/core/command/ConsoleCommandIncludes.cc	(revision 10352)
@@ -0,0 +1,43 @@
+/*
+ *   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 "ConsoleCommandIncludes.h"
+
+#include "ConsoleCommandManager.h"
+
+namespace orxonox
+{
+    void StaticallyInitializedConsoleCommand::load()
+    {
+        for (size_t i = 0; i < this->command_->getNames().size(); ++i)
+        {
+            const ConsoleCommand::CommandName& name = this->command_->getNames()[i];
+            ConsoleCommandManager::registerCommand(name.group_, name.name_, this->command_);
+        }
+    }
+}
Index: /code/branches/core7/src/libraries/core/command/ConsoleCommandIncludes.h
===================================================================
--- /code/branches/core7/src/libraries/core/command/ConsoleCommandIncludes.h	(revision 10351)
+++ /code/branches/core7/src/libraries/core/command/ConsoleCommandIncludes.h	(revision 10352)
@@ -223,4 +223,5 @@
 #include "ConsoleCommandManager.h"
 #include "util/VA_NARGS.h"
+#include "core/module/StaticallyInitializedInstance.h"
 
 
@@ -264,5 +265,6 @@
 /// Internal macro
 #define SetConsoleCommandGeneric(group, name, functor) \
-    static orxonox::ConsoleCommand& BOOST_PP_CAT(__consolecommand_, __UNIQUE_NUMBER__) = (*new orxonox::ConsoleCommand(group, name, orxonox::createExecutor(functor)))
+    static orxonox::ConsoleCommand& BOOST_PP_CAT(__consolecommand_, __UNIQUE_NUMBER__) \
+        = (new orxonox::SI_CC(new orxonox::ConsoleCommand(group, name, orxonox::createExecutor(functor))))->getCommand()
 
 
@@ -299,9 +301,26 @@
 /// Internal macro
 #define DeclareConsoleCommandGeneric(group, name, functor) \
-    static orxonox::ConsoleCommand& BOOST_PP_CAT(__consolecommand_, __UNIQUE_NUMBER__) = (*new orxonox::ConsoleCommand(group, name, orxonox::createExecutor(functor), false))
+    static orxonox::ConsoleCommand& BOOST_PP_CAT(__consolecommand_, __UNIQUE_NUMBER__) \
+        = (new orxonox::SI_CC(new orxonox::ConsoleCommand(group, name, orxonox::createExecutor(functor), false)))->getCommand()
 
 
 namespace orxonox
 {
+    class _CoreExport StaticallyInitializedConsoleCommand : public StaticallyInitializedInstance
+    {
+        public:
+            StaticallyInitializedConsoleCommand(ConsoleCommand* command) : command_(command) {}
+
+            virtual void load();
+
+            inline ConsoleCommand& getCommand()
+                { return *this->command_; }
+
+        private:
+            ConsoleCommand* command_;
+    };
+
+    typedef StaticallyInitializedConsoleCommand SI_CC;
+
     /**
         @brief Returns a manipulator for a command with the given name.
