Index: code/branches/consolecommands3/src/libraries/core/command/CommandEvaluation.cc
===================================================================
--- code/branches/consolecommands3/src/libraries/core/command/CommandEvaluation.cc	(revision 7220)
+++ code/branches/consolecommands3/src/libraries/core/command/CommandEvaluation.cc	(revision 7221)
@@ -67,9 +67,4 @@
     }
 
-    bool CommandEvaluation::isValid() const
-    {
-        return (this->function_);
-    }
-
     bool CommandEvaluation::execute() const
     {
@@ -84,5 +79,5 @@
             *success = false;
 
-        if (!this->isValid())
+        if (!this->function_ || !this->function_->isActive())
             return MT_Type::Null;
 
@@ -92,5 +87,5 @@
                 *success = true;
             COUT(6) << "CE_execute (evaluation): " << this->function_->getName() << ' ' << this->param_[0] << ' ' << this->param_[1] << ' ' << this->param_[2] << ' ' << this->param_[3] << ' ' << this->param_[4] << std::endl;
-            return (*this->function_)(this->param_[0], this->param_[1], this->param_[2], this->param_[3], this->param_[4]);
+            return (*this->function_->getExecutor())(this->param_[0], this->param_[1], this->param_[2], this->param_[3], this->param_[4]);
         }
 
@@ -101,7 +96,7 @@
             unsigned int startindex = this->getStartindex();
             if (this->commandTokens_.size() > startindex)
-                return this->function_->parse(removeSlashes(this->commandTokens_.subSet(startindex).join() + this->getAdditionalParameter()), success);
+                return this->function_->getExecutor()->parse(removeSlashes(this->commandTokens_.subSet(startindex).join() + this->getAdditionalParameter()), success);
             else
-                return this->function_->parse(removeSlashes(this->additionalParameter_), success);
+                return this->function_->getExecutor()->parse(removeSlashes(this->additionalParameter_), success);
         }
 
@@ -122,5 +117,5 @@
                     if (this->function_)
                     {
-                        if (this->function_->getParamCount() == 0)
+                        if (this->function_->getExecutor()->getParamCount() == 0)
                             return (this->command_ = this->function_->getName());
                         else
@@ -133,5 +128,5 @@
                     if (this->function_)
                     {
-                        if (this->function_->getParamCount() == 0)
+                        if (this->function_->getExecutor()->getParamCount() == 0)
                             return (this->command_ = this->functionclass_->getName() + ' ' + this->function_->getName());
                         else
@@ -153,5 +148,5 @@
                     {
                         this->argument_ = this->possibleArgument_;
-                        if (this->function_->getParamCount() > (maxIndex + 1 - this->getStartindex()))
+                        if (this->function_->getExecutor()->getParamCount() > (maxIndex + 1 - this->getStartindex()))
                             whitespace = " ";
                     }
@@ -213,5 +208,5 @@
             this->param_[i] = MT_Type::Null;
 
-        if (!this->isValid())
+        if (!this->function_)
             return;
 
@@ -220,10 +215,10 @@
         if (this->commandTokens_.size() <= startindex)
         {
-            if (this->function_->evaluate(this->getAdditionalParameter(), this->param_, " "))
+            if (this->function_->getBaseExecutor()->evaluate(this->getAdditionalParameter(), this->param_, " "))
                 this->bEvaluatedParams_ = true;
         }
         else if (this->commandTokens_.size() > startindex)
         {
-            if (this->function_->evaluate(this->commandTokens_.subSet(startindex).join() + this->getAdditionalParameter(), this->param_, " "))
+            if (this->function_->getBaseExecutor()->evaluate(this->commandTokens_.subSet(startindex).join() + this->getAdditionalParameter(), this->param_, " "))
                 this->bEvaluatedParams_ = true;
         }
@@ -280,24 +275,24 @@
     }
 
-    std::string CommandEvaluation::dump(const ConsoleCommand* command)
+    std::string CommandEvaluation::dump(const _ConsoleCommand* command)
     {
         std::string output = command->getName();
-        if (command->getParamCount() > 0)
+        if (command->getExecutor()->getParamCount() > 0)
             output += ": ";
 
-        for (unsigned int i = 0; i < command->getParamCount(); i++)
+        for (unsigned int i = 0; i < command->getExecutor()->getParamCount(); i++)
         {
             if (i != 0)
                 output += ' ';
 
-            if (command->defaultValueSet(i))
+            if (command->getExecutor()->defaultValueSet(i))
                 output += '[';
             else
                 output += '{';
 
-            output += command->getTypenameParam(i);
-
-            if (command->defaultValueSet(i))
-                output += '=' + command->getDefaultValue(i).getString() + ']';
+            output += command->getExecutor()->getTypenameParam(i);
+
+            if (command->getExecutor()->defaultValueSet(i))
+                output += '=' + command->getExecutor()->getDefaultValue(i).getString() + ']';
             else
                 output += '}';
Index: code/branches/consolecommands3/src/libraries/core/command/CommandEvaluation.h
===================================================================
--- code/branches/consolecommands3/src/libraries/core/command/CommandEvaluation.h	(revision 7220)
+++ code/branches/consolecommands3/src/libraries/core/command/CommandEvaluation.h	(revision 7221)
@@ -72,7 +72,8 @@
             void evaluateParams();
 
-            bool isValid() const;
+            bool isValid() const
+                { return this->function_; }
 
-            inline ConsoleCommand* getConsoleCommand() const
+            inline _ConsoleCommand* getConsoleCommand() const
                 { return this->function_; }
             inline const std::string& getOriginalCommand() const
@@ -93,5 +94,5 @@
             static std::string dump(const std::list<std::pair<const std::string*, const std::string*> >& list);
             static std::string dump(const ArgumentCompletionList& list);
-            static std::string dump(const ConsoleCommand* command);
+            static std::string dump(const _ConsoleCommand* command);
 
 
@@ -109,5 +110,5 @@
 
             Identifier* functionclass_;
-            ConsoleCommand* function_;
+            _ConsoleCommand* function_;
             std::string possibleArgument_;
             std::string argument_;
Index: code/branches/consolecommands3/src/libraries/core/command/CommandExecutor.cc
===================================================================
--- code/branches/consolecommands3/src/libraries/core/command/CommandExecutor.cc	(revision 7220)
+++ code/branches/consolecommands3/src/libraries/core/command/CommandExecutor.cc	(revision 7221)
@@ -49,9 +49,4 @@
     }
 
-    const CommandEvaluation& CommandExecutor::getLastEvaluation()
-    {
-        return CommandExecutor::getInstance().evaluation_;
-    }
-
     bool CommandExecutor::execute(const std::string& command, bool useTcl)
     {
@@ -216,5 +211,5 @@
                         CommandExecutor::getEvaluation().functionclass_ = 0;
                         CommandExecutor::getEvaluation().command_ = CommandExecutor::getEvaluation().function_->getName();
-                        if (CommandExecutor::getEvaluation().function_->getParamCount() > 0)
+                        if (CommandExecutor::getEvaluation().function_->getExecutor()->getParamCount() > 0)
                         {
                             CommandExecutor::getEvaluation().command_ += ' ';
@@ -303,5 +298,5 @@
                             CommandExecutor::getEvaluation().state_ = CommandState::ParamPreparation;
                             CommandExecutor::getEvaluation().command_ = CommandExecutor::getEvaluation().functionclass_->getName() + ' ' + CommandExecutor::getEvaluation().function_->getName();
-                            if (CommandExecutor::getEvaluation().function_->getParamCount() > 0)
+                            if (CommandExecutor::getEvaluation().function_->getExecutor()->getParamCount() > 0)
                             {
                                 CommandExecutor::getEvaluation().command_ += ' ';
@@ -335,5 +330,5 @@
             case CommandState::ParamPreparation:
             {
-                if (CommandExecutor::getEvaluation().function_->getParamCount() == 0 || CommandExecutor::enoughArgumentsGiven(CommandExecutor::getEvaluation().function_))
+                if (CommandExecutor::getEvaluation().function_->getExecutor()->getParamCount() == 0 || CommandExecutor::enoughArgumentsGiven(CommandExecutor::getEvaluation().function_))
                 {
                     CommandExecutor::getEvaluation().state_ = CommandState::Finished;
@@ -418,10 +413,10 @@
     }
 
-    bool CommandExecutor::enoughArgumentsGiven(ConsoleCommand* command)
+    bool CommandExecutor::enoughArgumentsGiven(_ConsoleCommand* command)
     {
         if (CommandExecutor::getEvaluation().functionclass_)
-            return (CommandExecutor::argumentsGiven() > (2 + command->getParamCount()));
-        else
-            return (CommandExecutor::argumentsGiven() > (1 + command->getParamCount()));
+            return (CommandExecutor::argumentsGiven() > (2 + command->getExecutor()->getParamCount()));
+        else
+            return (CommandExecutor::argumentsGiven() > (1 + command->getExecutor()->getParamCount()));
     }
 
@@ -441,4 +436,5 @@
     void CommandExecutor::createListOfPossibleIdentifiers(const std::string& fragment)
     {
+/*
         CommandExecutor::getEvaluation().listOfPossibleIdentifiers_.clear();
         const std::string& lowercase = getLowercase(fragment);
@@ -447,13 +443,15 @@
                 if (it->first.find(lowercase) == 0 || fragment.empty())
                     CommandExecutor::getEvaluation().listOfPossibleIdentifiers_.push_back(std::pair<const std::string*, const std::string*>(&it->first, &it->second->getName()));
+*/
     }
 
     void CommandExecutor::createListOfPossibleFunctions(const std::string& fragment, Identifier* identifier)
     {
+/*
         CommandExecutor::getEvaluation().listOfPossibleFunctions_.clear();
         const std::string& lowercase = getLowercase(fragment);
         if (!identifier)
         {
-            for (std::map<std::string, ConsoleCommand*>::const_iterator it = CommandExecutor::getLowercaseConsoleCommandShortcutMapBegin(); it != CommandExecutor::getLowercaseConsoleCommandShortcutMapEnd(); ++it)
+            for (std::map<std::string, _ConsoleCommand*>::const_iterator it = CommandExecutor::getLowercaseConsoleCommandShortcutMapBegin(); it != CommandExecutor::getLowercaseConsoleCommandShortcutMapEnd(); ++it)
                 if (it->first.find(lowercase) == 0 || fragment.empty())
                     CommandExecutor::getEvaluation().listOfPossibleFunctions_.push_back(std::pair<const std::string*, const std::string*>(&it->first, &it->second->getName()));
@@ -461,12 +459,14 @@
         else
         {
-            for (std::map<std::string, ConsoleCommand*>::const_iterator it = identifier->getLowercaseConsoleCommandMapBegin(); it != identifier->getLowercaseConsoleCommandMapEnd(); ++it)
+            for (std::map<std::string, _ConsoleCommand*>::const_iterator it = identifier->getLowercaseConsoleCommandMapBegin(); it != identifier->getLowercaseConsoleCommandMapEnd(); ++it)
                 if (it->first.find(lowercase) == 0 || fragment.empty())
                     CommandExecutor::getEvaluation().listOfPossibleFunctions_.push_back(std::pair<const std::string*, const std::string*>(&it->first, &it->second->getName()));
         }
-    }
-
-    void CommandExecutor::createListOfPossibleArguments(const std::string& fragment, ConsoleCommand* command, unsigned int param)
-    {
+*/
+    }
+
+    void CommandExecutor::createListOfPossibleArguments(const std::string& fragment, _ConsoleCommand* command, unsigned int param)
+    {
+/*
         CommandExecutor::createArgumentCompletionList(command, param);
 
@@ -486,22 +486,25 @@
             }
         }
+*/
     }
 
     Identifier* CommandExecutor::getPossibleIdentifier(const std::string& name)
     {
+/*
         const std::string& lowercase = getLowercase(name);
         std::map<std::string, Identifier*>::const_iterator it = Identifier::getLowercaseStringIdentifierMap().find(lowercase);
         if ((it != Identifier::getLowercaseStringIdentifierMapEnd()) && it->second->hasConsoleCommands())
             return it->second;
-
+*/
         return 0;
     }
 
-    ConsoleCommand* CommandExecutor::getPossibleCommand(const std::string& name, Identifier* identifier)
-    {
+    _ConsoleCommand* CommandExecutor::getPossibleCommand(const std::string& name, Identifier* identifier)
+    {
+/*
         const std::string& lowercase = getLowercase(name);
         if (!identifier)
         {
-            std::map<std::string, ConsoleCommand*>::const_iterator it = CommandExecutor::getLowercaseConsoleCommandShortcutMap().find(lowercase);
+            std::map<std::string, _ConsoleCommand*>::const_iterator it = CommandExecutor::getLowercaseConsoleCommandShortcutMap().find(lowercase);
             if (it != CommandExecutor::getLowercaseConsoleCommandShortcutMapEnd())
                 return it->second;
@@ -509,13 +512,15 @@
         else
         {
-            std::map<std::string, ConsoleCommand*>::const_iterator it = identifier->getLowercaseConsoleCommandMap().find(lowercase);
+            std::map<std::string, _ConsoleCommand*>::const_iterator it = identifier->getLowercaseConsoleCommandMap().find(lowercase);
             if (it != identifier->getLowercaseConsoleCommandMapEnd())
                 return it->second;
         }
+*/
         return 0;
     }
 
-    const std::string& CommandExecutor::getPossibleArgument(const std::string& name, ConsoleCommand* command, unsigned int param)
-    {
+    const std::string& CommandExecutor::getPossibleArgument(const std::string& name, _ConsoleCommand* command, unsigned int param)
+    {
+/*
         CommandExecutor::createArgumentCompletionList(command, param);
 
@@ -534,10 +539,11 @@
             }
         }
-
+*/
         return BLANKSTRING;
     }
 
-    void CommandExecutor::createArgumentCompletionList(ConsoleCommand* command, unsigned int param)
-    {
+    void CommandExecutor::createArgumentCompletionList(_ConsoleCommand* command, unsigned int param)
+    {
+/*
         std::string params[5];
 
@@ -554,4 +560,5 @@
 
         command->createArgumentCompletionList(param, params[0], params[1], params[2], params[3], params[4]);
+*/
     }
 
@@ -643,10 +650,3 @@
         }
     }
-
-    void CommandExecutor::destroyExternalCommands()
-    {
-        for (std::set<ConsoleCommand*>::const_iterator it = CommandExecutor::getInstance().consoleCommandExternals_.begin();
-            it != CommandExecutor::getInstance().consoleCommandExternals_.end(); ++it)
-            delete *it;
-    }
 }
Index: code/branches/consolecommands3/src/libraries/core/command/CommandExecutor.h
===================================================================
--- code/branches/consolecommands3/src/libraries/core/command/CommandExecutor.h	(revision 7220)
+++ code/branches/consolecommands3/src/libraries/core/command/CommandExecutor.h	(revision 7221)
@@ -55,5 +55,4 @@
 
             static CommandEvaluation evaluate(const std::string& command);
-            static const CommandEvaluation& getLastEvaluation();
 
         private:
@@ -70,5 +69,5 @@
             static unsigned int argumentsFinished();
             static unsigned int argumentsGiven();
-            static bool enoughArgumentsGiven(ConsoleCommand* command);
+            static bool enoughArgumentsGiven(_ConsoleCommand* command);
             static const std::string& getArgument(unsigned int index);
             static const std::string& getLastArgument();
@@ -76,11 +75,11 @@
             static void createListOfPossibleIdentifiers(const std::string& fragment);
             static void createListOfPossibleFunctions(const std::string& fragment, Identifier* identifier = 0);
-            static void createListOfPossibleArguments(const std::string& fragment, ConsoleCommand* command, unsigned int param);
+            static void createListOfPossibleArguments(const std::string& fragment, _ConsoleCommand* command, unsigned int param);
 
             static Identifier* getPossibleIdentifier(const std::string& name);
-            static ConsoleCommand* getPossibleCommand(const std::string& name, Identifier* identifier = 0);
-            static const std::string& getPossibleArgument(const std::string& name, ConsoleCommand* command, unsigned int param);
+            static _ConsoleCommand* getPossibleCommand(const std::string& name, Identifier* identifier = 0);
+            static const std::string& getPossibleArgument(const std::string& name, _ConsoleCommand* command, unsigned int param);
 
-            static void createArgumentCompletionList(ConsoleCommand* command, unsigned int param);
+            static void createArgumentCompletionList(_ConsoleCommand* command, unsigned int param);
             static std::string getCommonBegin(const std::list<std::pair<const std::string*, const std::string*> >& list);
             static std::string getCommonBegin(const ArgumentCompletionList& list);
Index: code/branches/consolecommands3/src/libraries/core/command/ConsoleCommand.cc
===================================================================
--- code/branches/consolecommands3/src/libraries/core/command/ConsoleCommand.cc	(revision 7220)
+++ code/branches/consolecommands3/src/libraries/core/command/ConsoleCommand.cc	(revision 7221)
@@ -343,12 +343,4 @@
     }
 
-    void _ConsoleCommand::createArgumentCompletionList(unsigned int param, const std::string& param1, const std::string& param2, const std::string& param3, const std::string& param4, const std::string& param5)
-    {
-        if (param < 5 && this->argumentCompleter_[param])
-            this->argumentList_ = (*this->argumentCompleter_[param])(param1, param2, param3, param4, param5);
-        else
-            this->argumentList_.clear();
-    }
-
     _ConsoleCommand& _ConsoleCommand::description(const std::string& description)
     {
Index: code/branches/consolecommands3/src/libraries/core/command/ConsoleCommand.h
===================================================================
--- code/branches/consolecommands3/src/libraries/core/command/ConsoleCommand.h	(revision 7220)
+++ code/branches/consolecommands3/src/libraries/core/command/ConsoleCommand.h	(revision 7221)
@@ -268,12 +268,4 @@
             ArgumentCompleter* getArgumentCompleter(unsigned int param) const;
 
-            void createArgumentCompletionList(unsigned int param, const std::string& param1 = "", const std::string& param2 = "", const std::string& param3 = "", const std::string& param4 = "", const std::string& param5 = "");
-            const ArgumentCompletionList& getArgumentCompletionList() const
-                { return this->argumentList_; }
-            ArgumentCompletionList::const_iterator getArgumentCompletionListBegin() const
-                { return this->argumentList_.begin(); }
-            ArgumentCompletionList::const_iterator getArgumentCompletionListEnd() const
-                { return this->argumentList_.end(); }
-
             inline _ConsoleCommand& setAsInputCommand()
             {
@@ -325,5 +317,4 @@
 
             ArgumentCompleter* argumentCompleter_[5];
-            ArgumentCompletionList argumentList_;
 
             KeybindMode::Value keybindMode_;
