Index: code/branches/core2/src/orxonox/Orxonox.cc
===================================================================
--- code/branches/core2/src/orxonox/Orxonox.cc	(revision 954)
+++ code/branches/core2/src/orxonox/Orxonox.cc	(revision 955)
@@ -86,8 +86,46 @@
 #include "objects/test3.h"
 
+#include "core/CommandExecutor.h"
+#include "core/InputBuffer.h"
+
 #include "Orxonox.h"
 
 namespace orxonox
 {
+    class Testlistener : public InputBufferListener
+    {
+        public:
+            Testlistener(InputBuffer* ib) : ib_(ib) {}
+            void listen() const
+            {
+                std::cout << "> -->" << this->ib_->get() << "<--" << std::endl;
+            }
+            void execute() const
+            {
+std::cout << "### EXECUTE!" << std::endl;
+                CommandExecutor::execute(this->ib_->get());
+                this->ib_->clear();
+            }
+            void hintandcomplete() const
+            {
+std::cout << "### HINT!" << std::endl;
+                std::cout << CommandExecutor::hint(this->ib_->get()) << std::endl;
+                this->ib_->set(CommandExecutor::complete(this->ib_->get()));
+            }
+            void clear() const
+            {
+std::cout << "### CLEAR!" << std::endl;
+                this->ib_->clear();
+            }
+            void removeLast() const
+            {
+std::cout << "### REMOVELAST!" << std::endl;
+                this->ib_->removeLast();
+            }
+
+        private:
+            InputBuffer* ib_;
+    };
+
    // put this in a seperate Class or solve the problem in another fashion
   class OrxListener : public Ogre::FrameListener
@@ -1146,4 +1184,12 @@
         std::cout << "2\n";
 */
+        InputBuffer* ib = new InputBuffer(this->getKeyboard());
+        Testlistener* testlistener = new Testlistener(ib);
+        ib->registerListener(testlistener, &Testlistener::listen, true);
+        ib->registerListener(testlistener, &Testlistener::execute, '\r', false);
+        ib->registerListener(testlistener, &Testlistener::hintandcomplete, '\t', true);
+        ib->registerListener(testlistener, &Testlistener::clear, '§', true);
+        ib->registerListener(testlistener, &Testlistener::removeLast, '\b', true);
+
     startRenderLoop();
   }
@@ -1364,5 +1410,5 @@
     try
     {
-      keyboard_ = static_cast<OIS::Keyboard*>(inputManager_->createInputObject(OIS::OISKeyboard, false));
+      keyboard_ = static_cast<OIS::Keyboard*>(inputManager_->createInputObject(OIS::OISKeyboard, true));
       mouse_ = static_cast<OIS::Mouse*>(inputManager_->createInputObject(OIS::OISMouse, true));
     }
Index: code/branches/core2/src/orxonox/core/CMakeLists.txt
===================================================================
--- code/branches/core2/src/orxonox/core/CMakeLists.txt	(revision 954)
+++ code/branches/core2/src/orxonox/core/CMakeLists.txt	(revision 955)
@@ -20,4 +20,5 @@
   NamespaceNode.cc
   CommandExecutor.cc
+  InputBuffer.cc
 )
 
Index: code/branches/core2/src/orxonox/core/CommandExecutor.cc
===================================================================
--- code/branches/core2/src/orxonox/core/CommandExecutor.cc	(revision 954)
+++ code/branches/core2/src/orxonox/core/CommandExecutor.cc	(revision 955)
@@ -49,4 +49,20 @@
     // CommandEvaluation //
     ///////////////////////
+    CommandEvaluation::CommandEvaluation()
+    {
+        this->processedCommand_ = "";
+        this->additionalParameter_ = "";
+
+        this->functionclass_ = 0;
+        this->configvalueclass_ = 0;
+        this->shortcut_ = 0;
+        this->function_ = 0;
+        this->configvalue_ = 0;
+        this->key_ = 0;
+
+        this->errorMessage_ = "";
+        this->state_ = CS_Uninitialized;
+    }
+
     KeybindMode CommandEvaluation::getKeybindMode()
     {
@@ -156,5 +172,5 @@
     bool CommandExecutor::execute(const std::string& command)
     {
-        if (CommandExecutor::getEvaluation().processedCommand_ != command)
+        if ((CommandExecutor::getEvaluation().processedCommand_ != command) || (CommandExecutor::getEvaluation().state_ == CS_Uninitialized))
             CommandExecutor::parse(command);
 
@@ -169,4 +185,6 @@
         switch (evaluation.state_)
         {
+            case CS_Uninitialized:
+                break;
             case CS_Empty:
                 break;
@@ -227,5 +245,5 @@
     std::string CommandExecutor::complete(const std::string& command)
     {
-        if (CommandExecutor::getEvaluation().processedCommand_ != command)
+        if ((CommandExecutor::getEvaluation().processedCommand_ != command) || (CommandExecutor::getEvaluation().state_ == CS_Uninitialized))
             CommandExecutor::parse(command);
 
@@ -246,6 +264,8 @@
         switch (evaluation.state_)
         {
+            case CS_Uninitialized:
+                break;
             case CS_Empty:
-                return (tokens.subSet(0, tokens.size() - 1).join() + " " + CommandExecutor::getCommonBegin(temp));
+                return (CommandExecutor::getCommonBegin(temp));
                 break;
             case CS_FunctionClass_Or_Shortcut_Or_Keyword:
@@ -258,5 +278,6 @@
                 break;
             case CS_Function:
-                return (tokens.subSet(0, tokens.size() - 1).join() + " " + CommandExecutor::getCommonBegin(evaluation.listOfPossibleFunctions_));
+                if (tokens.size() >= 1)
+                    return tokens[0] + " " + CommandExecutor::getCommonBegin(evaluation.listOfPossibleFunctions_);
                 break;
             case CS_Function_Params:
@@ -267,8 +288,10 @@
                 break;
             case CS_ConfigValueClass:
-                return (tokens.subSet(0, tokens.size() - 1).join() + " " + CommandExecutor::getCommonBegin(evaluation.listOfPossibleConfigValueClasses_));
+                if (tokens.size() >= 1)
+                    return tokens[0] + " " + CommandExecutor::getCommonBegin(evaluation.listOfPossibleConfigValueClasses_);
                 break;
             case CS_ConfigValue:
-                return (tokens.subSet(0, tokens.size() - 1).join() + " " + CommandExecutor::getCommonBegin(evaluation.listOfPossibleConfigValues_));
+                if (tokens.size() >= 2)
+                    return tokens[0] + " " + tokens[1] + " " + CommandExecutor::getCommonBegin(evaluation.listOfPossibleConfigValues_);
                 break;
             case CS_ConfigValueType:
@@ -279,5 +302,6 @@
                 break;
             case CS_KeybindKey:
-                return (tokens.subSet(0, tokens.size() - 1).join() + " " + CommandExecutor::getCommonBegin(evaluation.listOfPossibleKeys_));
+                if (tokens.size() >= 1)
+                    return tokens[0] + " " + CommandExecutor::getCommonBegin(evaluation.listOfPossibleKeys_);
                 break;
             case CS_KeybindCommand:
@@ -296,5 +320,5 @@
     std::string CommandExecutor::hint(const std::string& command)
     {
-        if (CommandExecutor::getEvaluation().processedCommand_ != command)
+        if ((CommandExecutor::getEvaluation().processedCommand_ != command) || (CommandExecutor::getEvaluation().state_ == CS_Uninitialized))
             CommandExecutor::parse(command);
 
@@ -308,4 +332,6 @@
         switch (evaluation.state_)
         {
+            case CS_Uninitialized:
+                break;
             case CS_Empty:
                 return (CommandExecutor::dump(evaluation.listOfPossibleShortcuts_) + "\n" + CommandExecutor::dump(evaluation.listOfPossibleFunctionClasses_));
@@ -358,5 +384,5 @@
                 break;
             case CS_Error:
-                return "Error";
+                return CommandExecutor::getEvaluation().errorMessage_;
                 break;
         }
@@ -381,4 +407,7 @@
         switch (CommandExecutor::getEvaluation().state_)
         {
+            case CS_Uninitialized:
+                // Impossible
+                break;
             case CS_Empty:
                 if (CommandExecutor::argumentsGiven() == 0)
@@ -635,5 +664,5 @@
                         {
                             CommandExecutor::getEvaluation().configvalue_ = CommandExecutor::getContainerOfPossibleConfigValue(CommandExecutor::getToken(2), CommandExecutor::getEvaluation().configvalueclass_);
-                            if (CommandExecutor::getEvaluation().configvalueclass_ != 0)
+                            if (CommandExecutor::getEvaluation().configvalue_ != 0)
                             {
                                 // There is a perfect match: Add a whitespace and continue parsing
@@ -791,5 +820,5 @@
             if ((*it).second->hasConsoleCommands())
             {
-                if ((*it).first.find(getLowercase(fragment)) == 0)
+                if ((*it).first.find(getLowercase(fragment)) == 0 || fragment == "")
                 {
                     CommandExecutor::getEvaluation().listOfPossibleFunctionClasses_.push_back(&(*it).first);
@@ -805,5 +834,5 @@
         for (std::map<std::string, ExecutorStatic*>::const_iterator it = CommandExecutor::getLowercaseConsoleCommandShortcutMapBegin(); it != CommandExecutor::getLowercaseConsoleCommandShortcutMapEnd(); ++it)
         {
-            if ((*it).first.find(getLowercase(fragment)) == 0)
+            if ((*it).first.find(getLowercase(fragment)) == 0 || fragment == "")
             {
                 CommandExecutor::getEvaluation().listOfPossibleShortcuts_.push_back(&(*it).first);
@@ -818,5 +847,5 @@
         for (std::map<std::string, ExecutorStatic*>::const_iterator it = identifier->getLowercaseConsoleCommandMapBegin(); it != identifier->getLowercaseConsoleCommandMapEnd(); ++it)
         {
-            if ((*it).first.find(getLowercase(fragment)) == 0)
+            if ((*it).first.find(getLowercase(fragment)) == 0 || fragment == "")
             {
                 CommandExecutor::getEvaluation().listOfPossibleFunctions_.push_back(&(*it).first);
@@ -833,5 +862,5 @@
             if ((*it).second->hasConfigValues())
             {
-                if ((*it).first.find(getLowercase(fragment)) == 0)
+                if ((*it).first.find(getLowercase(fragment)) == 0 || fragment == "")
                 {
                     CommandExecutor::getEvaluation().listOfPossibleConfigValueClasses_.push_back(&(*it).first);
@@ -847,5 +876,5 @@
         for (std::map<std::string, ConfigValueContainer*>::const_iterator it = identifier->getLowercaseConfigValueMapBegin(); it != identifier->getLowercaseConfigValueMapEnd(); ++it)
         {
-            if ((*it).first.find(getLowercase(fragment)) == 0)
+            if ((*it).first.find(getLowercase(fragment)) == 0 || fragment == "")
             {
                 CommandExecutor::getEvaluation().listOfPossibleConfigValues_.push_back(&(*it).first);
@@ -908,5 +937,7 @@
         std::map<std::string, ConfigValueContainer*>::const_iterator it = identifier->getLowercaseConfigValueMap().find(getLowercase(name));
         if (it != identifier->getLowercaseConfigValueMapEnd())
+        {
             return (*it).second;
+        }
 
         return 0;
Index: code/branches/core2/src/orxonox/core/CommandExecutor.h
===================================================================
--- code/branches/core2/src/orxonox/core/CommandExecutor.h	(revision 954)
+++ code/branches/core2/src/orxonox/core/CommandExecutor.h	(revision 955)
@@ -34,4 +34,5 @@
 
 #include "util/SubString.h"
+#include "util/MultiTypeMath.h"
 #include "CorePrereqs.h"
 
@@ -42,4 +43,5 @@
     enum CommandState
     {
+        CS_Uninitialized,
         CS_Empty,
         CS_FunctionClass_Or_Shortcut_Or_Keyword,
@@ -67,4 +69,6 @@
     {
         public:
+            CommandEvaluation();
+
             KeybindMode getKeybindMode();
             void setAdditionalParameter(const std::string& param);
Index: code/branches/core2/src/orxonox/core/Functor.h
===================================================================
--- code/branches/core2/src/orxonox/core/Functor.h	(revision 954)
+++ code/branches/core2/src/orxonox/core/Functor.h	(revision 955)
@@ -52,5 +52,11 @@
 #define CreateTypeToStringTemplate(type) \
     template <> \
-    inline std::string typeToString<type>() { return #type; }
+    inline std::string typeToString<type>() { return #type; } \
+    template <> \
+    inline std::string typeToString<type&>() { return #type; } \
+    template <> \
+    inline std::string typeToString<const type>() { return #type; } \
+    template <> \
+    inline std::string typeToString<const type&>() { return #type; }
 
     CreateTypeToStringTemplate(int);
@@ -66,12 +72,19 @@
     CreateTypeToStringTemplate(long double);
     CreateTypeToStringTemplate(bool);
-    CreateTypeToStringTemplate(std::string);
-    CreateTypeToStringTemplate(orxonox::Vector2);
-    CreateTypeToStringTemplate(orxonox::Vector3);
-    CreateTypeToStringTemplate(orxonox::Quaternion);
-    CreateTypeToStringTemplate(orxonox::ColourValue);
-    CreateTypeToStringTemplate(orxonox::Radian);
-    CreateTypeToStringTemplate(orxonox::Degree);
-
+    CreateTypeToStringTemplate(Vector2);
+    CreateTypeToStringTemplate(Vector3);
+    CreateTypeToStringTemplate(Quaternion);
+    CreateTypeToStringTemplate(ColourValue);
+    CreateTypeToStringTemplate(Radian);
+    CreateTypeToStringTemplate(Degree);
+
+    template <> \
+    inline std::string typeToString<std::string>() { return "string"; } \
+    template <> \
+    inline std::string typeToString<std::string&>() { return "string"; } \
+    template <> \
+    inline std::string typeToString<const std::string>() { return "string"; } \
+    template <> \
+    inline std::string typeToString<const std::string&>() { return "string"; }
 
     class _CoreExport Functor
@@ -88,5 +101,5 @@
             inline MultiTypeMath getReturnvalue() const { return this->returnedValue_; }
 
-            std::string getTypenameParam(unsigned int param) const { return (param > 0 && param <= 5) ? this->typeParam_[param-1] : ""; }
+            std::string getTypenameParam(unsigned int param) const { return (param >= 0 && param < 5) ? this->typeParam_[param] : ""; }
             std::string getTypenameReturnvalue() const { return this->typeReturnvalue_; }
 
Index: code/branches/core2/src/orxonox/core/InputBuffer.cc
===================================================================
--- code/branches/core2/src/orxonox/core/InputBuffer.cc	(revision 955)
+++ code/branches/core2/src/orxonox/core/InputBuffer.cc	(revision 955)
@@ -0,0 +1,151 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *
+ *
+ *   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 <iostream>
+
+#include "InputBuffer.h"
+
+namespace orxonox
+{
+    InputBuffer::InputBuffer(OIS::Keyboard* keyboard)
+    {
+        this->bActivated_ = false;
+        this->allowedChars_ = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZäöüÄÖÜ0123456789 \"().:,;_-+*/=!?";
+        this->keyboard_ = keyboard;
+        this->buffer_ = "";
+
+        this->keyboard_->setEventCallback(this);
+    }
+/*
+    void InputBuffer::registerListener(InputBufferListener* listener, void (InputBufferListener::*function)(), bool bOnlySingleInput)
+    {
+        struct InputBufferListenerTuple newListener = {listener, function, true, bOnlySingleInput, ' '};
+        this->listeners_.insert(this->listeners_.end(), newListener);
+    }
+
+    void InputBuffer::registerListener(InputBufferListener* listener, void (InputBufferListener::*function)(), char char_, bool bOnlySingleInput)
+    {
+        struct InputBufferListenerTuple newListener = {listener, function, false, bOnlySingleInput, char_};
+        this->listeners_.insert(this->listeners_.end(), newListener);
+    }
+*/
+    void InputBuffer::set(const std::string& input)
+    {
+        this->clear();
+        this->append(input);
+        this->updated();
+    }
+
+    void InputBuffer::append(const std::string& input)
+    {
+        for (unsigned int i = 0; i < input.size(); i++)
+        {
+            if (this->charIsAllowed(input[i]))
+                this->buffer_ += input[i];
+
+            this->updated(input[i], false);
+        }
+        this->updated();
+    }
+
+    void InputBuffer::append(const char& input)
+    {
+        if (this->charIsAllowed(input))
+            this->buffer_ += input;
+
+        this->updated(input, true);
+    }
+
+    void InputBuffer::clear()
+    {
+        this->buffer_ = "";
+        this->updated();
+    }
+
+    void InputBuffer::removeLast()
+    {
+        this->buffer_ = this->buffer_.substr(0, this->buffer_.size() - 1);
+        this->updated();
+    }
+
+    void InputBuffer::updated()
+    {
+        for (std::list<InputBufferListenerTuple>::iterator it = this->listeners_.begin(); it != this->listeners_.end(); ++it)
+        {
+            if ((*it).bListenToAllChanges_)
+                (*(*it).listener_.*(*it).function_)();
+        }
+    }
+
+    void InputBuffer::updated(const char& update, bool bSingleInput)
+    {
+        for (std::list<InputBufferListenerTuple>::iterator it = this->listeners_.begin(); it != this->listeners_.end(); ++it)
+        {
+            if (((*it).bListenToAllChanges_ || ((*it).char_ == update)) && (!(*it).bOnlySingleInput_ || bSingleInput))
+                (*(*it).listener_.*(*it).function_)();
+        }
+    }
+
+    void InputBuffer::activityChanged() const
+    {
+    }
+
+    bool InputBuffer::charIsAllowed(const char& input)
+    {
+        if (this->allowedChars_ == "")
+            return true;
+        else
+            return (this->allowedChars_.find(input) != std::string::npos);
+    }
+
+    bool InputBuffer::keyPressed(const OIS::KeyEvent &e)
+    {
+        if (e.key == OIS::KC_NUMPADENTER)
+        {
+            this->setActivated(!this->isActivated());
+            this->clear();
+            return true;
+        }
+
+        if (this->bActivated_)
+        {
+//std::cout << this->keyboard_->getAsString(e.key) << " / " << (char)e.text << std::endl;
+/*
+            std::string input = this->keyboard_->getAsString(e.key);
+            if (input.size() >= 1)
+                this->append(input[0]);
+*/
+            this->append((char)e.text);
+        }
+        return true;
+    }
+
+    bool InputBuffer::keyReleased(const OIS::KeyEvent &e)
+    {
+        return true;
+    }
+}
Index: code/branches/core2/src/orxonox/core/InputBuffer.h
===================================================================
--- code/branches/core2/src/orxonox/core/InputBuffer.h	(revision 955)
+++ code/branches/core2/src/orxonox/core/InputBuffer.h	(revision 955)
@@ -0,0 +1,125 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *
+ *
+ *   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 _InputBuffer_H__
+#define _InputBuffer_H__
+
+#include <string>
+#include <list>
+
+#ifdef WIN32
+#include <OIS/OISKeyboard.h>
+#else
+#include <OISKeyboard.h>
+#endif
+
+#include "CorePrereqs.h"
+
+namespace orxonox
+{
+    class _CoreExport InputBufferListener
+    {
+    };
+
+    class _CoreExport InputBuffer : public OIS::KeyListener
+    {
+        struct InputBufferListenerTuple
+        {
+            InputBufferListener* listener_;
+            void (InputBufferListener::*function_)();
+            bool bListenToAllChanges_;
+            bool bOnlySingleInput_;
+            char char_;
+        };
+
+        public:
+            InputBuffer(OIS::Keyboard* keyboard);
+
+            template <class T>
+            void registerListener(T* listener, void (T::*function)(), bool bOnlySingleInput)
+            {
+                struct InputBufferListenerTuple newListener = {listener, (void (InputBufferListener::*)())function, true, bOnlySingleInput, ' '};
+                this->listeners_.insert(this->listeners_.end(), newListener);
+            }
+            template <class T>
+            void registerListener(T* listener, void (T::*function)() const, bool bOnlySingleInput)
+            {
+                struct InputBufferListenerTuple newListener = {listener, (void (InputBufferListener::*)())function, true, bOnlySingleInput, ' '};
+                this->listeners_.insert(this->listeners_.end(), newListener);
+            }
+
+            template <class T>
+            void registerListener(T* listener, void (T::*function)(), char char_, bool bOnlySingleInput)
+            {
+                struct InputBufferListenerTuple newListener = {listener, (void (InputBufferListener::*)())function, false, bOnlySingleInput, char_};
+                this->listeners_.insert(this->listeners_.end(), newListener);
+            }
+            template <class T>
+            void registerListener(T* listener, void (T::*function)() const, char char_, bool bOnlySingleInput)
+            {
+                struct InputBufferListenerTuple newListener = {listener, (void (InputBufferListener::*)())function, false, bOnlySingleInput, char_};
+                this->listeners_.insert(this->listeners_.end(), newListener);
+            }
+
+            void set(const std::string& input);
+            void append(const std::string& input);
+            void append(const char& input);
+            void removeLast();
+            void clear();
+
+            void updated();
+            void updated(const char& update, bool bSingleInput);
+
+            inline std::string get() const
+                { return this->buffer_; }
+
+            inline void activate()
+                { this->setActivated(true); }
+            inline void deactivate()
+                { this->setActivated(false); }
+            inline void setActivated(bool bActivated)
+                { if (this->bActivated_ != bActivated) { this->bActivated_ = bActivated; this->activityChanged(); } else { this->bActivated_ = bActivated; } }
+            inline bool isActivated() const
+                { return this->bActivated_; }
+
+            void activityChanged() const;
+
+        private:
+            bool charIsAllowed(const char& input);
+
+            bool keyPressed(const OIS::KeyEvent &e);
+            bool keyReleased(const OIS::KeyEvent &e);
+
+            OIS::Keyboard* keyboard_;
+            bool bActivated_;
+            std::string buffer_;
+            std::list<InputBufferListenerTuple> listeners_;
+            std::string allowedChars_;
+    };
+}
+
+#endif /* _InputBuffer_H__ */
Index: code/branches/core2/src/orxonox/core/OutputHandler.h
===================================================================
--- code/branches/core2/src/orxonox/core/OutputHandler.h	(revision 954)
+++ code/branches/core2/src/orxonox/core/OutputHandler.h	(revision 955)
@@ -61,5 +61,5 @@
             /** @brief Puts some text on the outstream. @param text The text */
             static inline void log(const std::string& text)
-                { OutputHandler::getOutStream().setOutputLevel(0); OutputHandler::getOutStream().output(text); }
+                { OutputHandler::getOutStream().setOutputLevel(0); OutputHandler::getOutStream().output(text + "\n"); }
 
             /** @brief Returns a reference to the logfile. @return The logfile */
Index: code/branches/core2/src/orxonox/objects/SpaceShip.cc
===================================================================
--- code/branches/core2/src/orxonox/objects/SpaceShip.cc	(revision 954)
+++ code/branches/core2/src/orxonox/objects/SpaceShip.cc	(revision 955)
@@ -52,4 +52,7 @@
 {
     ConsoleCommand(SpaceShip, setMaxSpeedTest, AccessLevel::Debug, false);
+    ConsoleCommandGeneric(test1, SpaceShip, createExecutor(createFunctor(&SpaceShip::setMaxSpeedTest), "setMaxSpeed", AccessLevel::Debug), false);
+    ConsoleCommandGeneric(test2, SpaceShip, createExecutor(createFunctor(&SpaceShip::setMaxSpeedTest), "setMaxBlubber", AccessLevel::Debug), false);
+    ConsoleCommandGeneric(test3, SpaceShip, createExecutor(createFunctor(&SpaceShip::setMaxSpeedTest), "setRofl", AccessLevel::Debug), false);
 
     CreateFactory(SpaceShip);
