Index: trunk/src/lib/shell/shell_command.cc
===================================================================
--- trunk/src/lib/shell/shell_command.cc	(revision 7407)
+++ trunk/src/lib/shell/shell_command.cc	(revision 7408)
@@ -51,5 +51,5 @@
 
     //  this->classID = classID;
-    this->shellClass = ShellCommandClass::getCommandClass(className);
+    this->shellClass = ShellCommandClass::acquireCommandClass(className);
     assert (this->shellClass != NULL);
     this->shellClass->registerCommand(this);
@@ -92,5 +92,5 @@
   {
 
-    ShellCommandClass* cmdClass = ShellCommandClass::getCommandClass(className);
+    ShellCommandClass* cmdClass = ShellCommandClass::acquireCommandClass(className);
     if (cmdClass != NULL)
     {
@@ -100,4 +100,31 @@
           delete (*cmd);
     }
+  }
+
+
+  /**
+   * @brief gets a command if it has already been registered.
+   * @param commandName the name of the Command
+   * @param className the name of the Class the command should apply to.
+   * @returns The Registered Command, or NULL if it does not exist.
+   */
+  const ShellCommand* const ShellCommand::getCommand(const std::string& commandName, const std::string& className)
+  {
+    const ShellCommandClass* checkClass = ShellCommandClass::getCommandClass(className);
+    if (likely(checkClass != NULL))
+    {
+      std::vector<ShellCommand*>::const_iterator elem;
+      for (elem = checkClass->commandList.begin(); elem != checkClass->commandList.end(); elem++)
+      {
+        if (commandName == (*elem)->getName())
+        {
+          PRINTF(2)("Command '%s::%s' already registered\n", className.c_str(), commandName.c_str());
+          return (*elem);
+        }
+      }
+      return NULL;
+    }
+    else
+      return NULL;
   }
 
@@ -113,20 +140,5 @@
   bool ShellCommand::exists(const std::string& commandName, const std::string& className)
   {
-    const ShellCommandClass* checkClass = ShellCommandClass::exists(className);
-    if (likely(checkClass != NULL))
-    {
-      std::vector<ShellCommand*>::const_iterator elem;
-      for (elem = checkClass->commandList.begin(); elem != checkClass->commandList.end(); elem++)
-      {
-        if (commandName == (*elem)->getName())
-        {
-          PRINTF(2)("Command '%s::%s' already registered\n", className.c_str(), commandName.c_str());
-          return true;
-        }
-      }
-      return false;
-    }
-    else
-      return false;
+    return (ShellCommand::getCommand(commandName, className) != NULL);
   }
 
Index: trunk/src/lib/shell/shell_command.h
===================================================================
--- trunk/src/lib/shell/shell_command.h	(revision 7407)
+++ trunk/src/lib/shell/shell_command.h	(revision 7408)
@@ -72,4 +72,5 @@
     static ShellCommand* registerCommand(const std::string& commandName, const std::string& className, const Executor& executor);
     static void unregisterCommand(const std::string& commandName, const std::string& className);
+    static const ShellCommand* const getCommand(const std::string& commandName, const std::string& className);
     static bool exists(const std::string& commandName, const std::string& className);
 
Index: trunk/src/lib/shell/shell_command_class.cc
===================================================================
--- trunk/src/lib/shell/shell_command_class.cc	(revision 7407)
+++ trunk/src/lib/shell/shell_command_class.cc	(revision 7408)
@@ -110,5 +110,5 @@
    * @returns the CommandClass if found, NULL otherwise
    */
-  const ShellCommandClass* ShellCommandClass::exists(const std::string& className)
+  const ShellCommandClass* ShellCommandClass::getCommandClass(const std::string& className)
   {
     std::vector<ShellCommandClass*>::const_iterator classIT;
@@ -127,9 +127,19 @@
 
   /**
+   * @brief checks if a Class is already registered to the Commands' class-stack
+   * @param className the Name of the Class to check for
+   * @returns the CommandClass if found, NULL otherwise
+   */
+/*  bool ShellCommandClass::exists(const std::string& className)
+  {
+
+  }*/
+
+  /**
    * @brief searches for a CommandClass
    * @param className the name of the CommandClass
    * @returns the CommandClass if found, or a new CommandClass if not
    */
-  ShellCommandClass* ShellCommandClass::getCommandClass(const std::string& className)
+  ShellCommandClass* ShellCommandClass::acquireCommandClass(const std::string& className)
   {
     std::vector<ShellCommandClass*>::iterator classIT;
Index: trunk/src/lib/shell/shell_command_class.h
===================================================================
--- trunk/src/lib/shell/shell_command_class.h	(revision 7407)
+++ trunk/src/lib/shell/shell_command_class.h	(revision 7408)
@@ -28,7 +28,7 @@
     static bool getCommandListOfClass(const std::string& className, std::list<std::string>& stringList);
 
-    static ShellCommandClass* getCommandClass(const std::string& className);
     static void unregisterAllCommands();
-    static const ShellCommandClass* exists(const std::string& className);
+    static const ShellCommandClass* getCommandClass(const std::string& className);
+    static bool exists(const std::string& className);
 
     static void help (const std::string& className);
@@ -36,4 +36,5 @@
   private:
     ShellCommandClass(const std::string& className);
+    static ShellCommandClass* acquireCommandClass(const std::string& className);
     virtual ~ShellCommandClass();
 
Index: trunk/src/lib/shell/shell_completion.cc
===================================================================
--- trunk/src/lib/shell/shell_completion.cc	(revision 7407)
+++ trunk/src/lib/shell/shell_completion.cc	(revision 7408)
@@ -56,4 +56,5 @@
     long completeType = NullCompletion;              //< the Type we'd like to complete.
     std::string completeString = "";                 //< the string to complete.
+    unsigned int parameterBegin = 0;                 //< The SubString-entry, the Parameters begin.
 
 
@@ -96,4 +97,6 @@
         completeType |= FunctionCompletion;
     }
+
+    // Looking for ParameterCompletions.
 
     if (completeType & ClassCompletion)
@@ -105,4 +108,10 @@
     if (completeType & AliasCompletion)
       this->aliasComplete(completeString);
+
+    if (completeType == NullCompletion)
+    {
+      printf("Completing a Parameter\n");
+//      ShellCommand::
+    }
 
 
