Index: trunk/src/lib/shell/shell_command.cc
===================================================================
--- trunk/src/lib/shell/shell_command.cc	(revision 7387)
+++ trunk/src/lib/shell/shell_command.cc	(revision 7388)
@@ -24,7 +24,4 @@
 
 #include "key_names.h"
-#include <stdarg.h>
-#include <stdio.h>
-#include <string.h>
 
 namespace OrxShell
@@ -44,7 +41,8 @@
     this->executor = executor.clone();
     this->executor->setName(commandName);
+    this->alias = NULL;
 
     //  this->classID = classID;
-    this->shellClass = ShellCommandClass::getCommandClass(className); //ClassList::IDToString(classID);
+    this->shellClass = ShellCommandClass::getCommandClass(className);
     if (this->shellClass != NULL)
       this->shellClass->commandList.push_back(this);
@@ -130,5 +128,5 @@
     if (checkClass != NULL)
     {
-      std::list<ShellCommand*>::const_iterator elem;
+      std::vector<ShellCommand*>::const_iterator elem;
       for (elem = checkClass->commandList.begin(); elem != checkClass->commandList.end(); elem++)
       {
@@ -237,5 +235,5 @@
         if (commandClass != NULL && (fktPos == 1 || (fktPos == 2 && inputSplits.size() >= 3)))
         {
-          std::list<ShellCommand*>::iterator cmdIT;
+          std::vector<ShellCommand*>::iterator cmdIT;
           for (cmdIT = commandClass->commandList.begin(); cmdIT != commandClass->commandList.end(); cmdIT++)
           {
@@ -334,5 +332,5 @@
       PRINT(0)("Class:'%s' registered %d commands: \n", (*classIT)->className.c_str(), (*classIT)->commandList.size());
 
-      std::list<ShellCommand*>::iterator cmdIT;
+      std::vector<ShellCommand*>::iterator cmdIT;
       for (cmdIT = (*classIT)->commandList.begin(); cmdIT != (*classIT)->commandList.end(); cmdIT++)
       {
Index: trunk/src/lib/shell/shell_command.h
===================================================================
--- trunk/src/lib/shell/shell_command.h	(revision 7387)
+++ trunk/src/lib/shell/shell_command.h	(revision 7388)
@@ -88,7 +88,6 @@
     ShellCommandAlias*               alias;                                //!< An Alias for the Class.
 
-    std::string                      description;                          //!< A description for this commnand. (initially NULL). Assigned with (create)->describe("blablabla");
+    std::string                      description;                          //!< A description for this commnand. (initially ""). Assigned with (create)->describe("blablabla");
     Executor*                        executor;                             //!< The Executor, that really executes the Function.
-
   };
 
Index: trunk/src/lib/shell/shell_command_class.cc
===================================================================
--- trunk/src/lib/shell/shell_command_class.cc	(revision 7387)
+++ trunk/src/lib/shell/shell_command_class.cc	(revision 7388)
@@ -24,7 +24,4 @@
 #include "compiler.h"
 
-#include <stdio.h>
-#include <string.h>
-
 namespace OrxShell
 {
@@ -53,8 +50,8 @@
   ShellCommandClass::~ShellCommandClass()
   {
-    while(this->commandList.size() > 0)
-    {
-      delete this->commandList.front();
-      this->commandList.pop_front();
+    while(!this->commandList.empty())
+    {
+      delete this->commandList.back();
+      this->commandList.pop_back();
     }
   }
@@ -73,5 +70,5 @@
       if (className == (*elem)->getName())
       {
-        std::list<ShellCommand*>::iterator command;
+        std::vector<ShellCommand*>::iterator command;
         for(command = (*elem)->commandList.begin(); command != (*elem)->commandList.end(); command++)
           stringList.push_back((*command)->getName());
@@ -194,5 +191,5 @@
         {
           PRINT(0)("Class:'%s' registered %d commands: \n", (*classIT)->className.c_str(), (*classIT)->commandList.size());
-          std::list<ShellCommand*>::const_iterator cmdIT;
+          std::vector<ShellCommand*>::const_iterator cmdIT;
           for (cmdIT = (*classIT)->commandList.begin(); cmdIT != (*classIT)->commandList.end(); cmdIT++)
           {
@@ -216,3 +213,21 @@
   }
 
+  void ShellCommandClass::registerCommand(ShellCommand* command)
+  {
+    this->commandList.push_back(command);
+  }
+
+
+  void ShellCommandClass::unregisterCommand(ShellCommand* command)
+  {
+    std::vector<ShellCommand*>::iterator delC = std::find(this->commandList.begin(), this->commandList.end(), command);
+    this->commandList.erase(delC);
+  }
+
+
+
 }
+
+
+
+
Index: trunk/src/lib/shell/shell_command_class.h
===================================================================
--- trunk/src/lib/shell/shell_command_class.h	(revision 7387)
+++ trunk/src/lib/shell/shell_command_class.h	(revision 7388)
@@ -8,5 +8,5 @@
 
 #include "base_object.h"
-#include <list>
+#include <vector>
 
 
@@ -41,10 +41,13 @@
     static void initCommandClassList();
 
+    void registerCommand(ShellCommand* command);
+    void unregisterCommand(ShellCommand* command);
+
   private:
     const std::string                      className;                 //!< The Name of the Class. This should match the ClassName of the Commands Class.
     long                                   classID;                   //!< The classID of this Class
-    std::list<ShellCommand*>               commandList;               //!< A list of Commands from this Class
+    std::vector<ShellCommand*>             commandList;               //!< A list of Commands from this Class
     static std::list<ShellCommandClass*>*  commandClassList;          //!< A list of Classes
-    static std::list<ShellCommandAlias*>*  aliasList;                 //!< An Alias to A Command. (only for classes with one Instance)
+    static std::list<ShellCommandAlias*>*  aliasList;                 //!< A list of Aliases to A Commands.
   };
 
Index: trunk/src/lib/shell/shell_completion.cc
===================================================================
--- trunk/src/lib/shell/shell_completion.cc	(revision 7387)
+++ trunk/src/lib/shell/shell_completion.cc	(revision 7388)
@@ -18,4 +18,5 @@
 #include "shell_completion.h"
 #include "shell_command_class.h"
+#include "shell_completion_plugin.h"
 
 #include "shell_command.h"
@@ -50,11 +51,9 @@
   bool ShellCompletion::autoComplete(std::string& input)
   {
-    const char* completionLine;           //< the inputLine we complete.
-
-    long classID;                         //< the classID retrieved from the Class.
+    long classID;                               //< the classID retrieved from the Class.
     const std::list<BaseObject*>* objectList;   //< the list of Objects stored in classID
-    bool emptyComplete = false;           //< if the completion input is empty string. e.g ""
-    long completeType = NullCompletion;   //< the Type we'd like to complete.
-    std::string completeString;           //< the string to complete.
+    bool emptyComplete = false;                 //< if the completion input is empty string. e.g ""
+    long completeType = NullCompletion;         //< the Type we'd like to complete.
+    std::string completeString;                 //< the string to complete.
 
 
@@ -119,22 +118,4 @@
 
     this->generalComplete(input, completeString);
-    return true;
-  }
-
-  /**
-   * @brief autocompletes a className
-   * @param classBegin the Beginning of a String to autoComplete
-   * @return true on success, false otherwise
-   */
-  bool ShellCompletion::classComplete(const std::string& classBegin)
-  {
-    const std::list<std::string>* clList = ClassList::getClassNames();
-    if (clList != NULL)
-    {
-      if (!this->addToCompleteList(*clList, classBegin, ClassCompletion))
-        return false;
-    }
-    else
-      return false;
     return true;
   }
Index: trunk/src/lib/shell/shell_completion.h
===================================================================
--- trunk/src/lib/shell/shell_completion.h	(revision 7387)
+++ trunk/src/lib/shell/shell_completion.h	(revision 7388)
@@ -45,5 +45,4 @@
     // Functions to produce the Complete Lists.
     bool autoComplete(std::string& input);
-    bool classComplete(const std::string& classBegin);
     //  long classMatch(const char* input, unsigned int* length);
     bool objectComplete(const std::string& objectBegin, long classID);
@@ -60,6 +59,6 @@
     bool addToCompleteList(const std::list<std::string>& inputList, const std::string& completionBegin, ShellCompletion::CompletionType type);
     bool addToCompleteList(const std::list<BaseObject*>& inputList, const std::string& completionBegin, ShellCompletion::CompletionType type);
+
     void clearCompletionList();
-
 
     // Helpers.
Index: trunk/src/lib/shell/shell_completion_plugin.cc
===================================================================
--- trunk/src/lib/shell/shell_completion_plugin.cc	(revision 7387)
+++ trunk/src/lib/shell/shell_completion_plugin.cc	(revision 7388)
@@ -27,6 +27,4 @@
 namespace OrxShell
 {
-
-
   void CompletorStringArray::addToCompleteList(std::vector<std::string>& completionList, const std::string& completionBegin)
   {
