Index: /trunk/src/lib/shell/shell.cc
===================================================================
--- /trunk/src/lib/shell/shell.cc	(revision 5203)
+++ /trunk/src/lib/shell/shell.cc	(revision 5204)
@@ -40,6 +40,5 @@
 SHELL_COMMAND(deactivate, Shell, deactivate)
     ->describe("Deactivates the Shell. (moves it into background)")
-    ->setAlias("deactivate");
-
+    ->setAlias("hide");
 
 /**
Index: /trunk/src/lib/shell/shell.h
===================================================================
--- /trunk/src/lib/shell/shell.h	(revision 5203)
+++ /trunk/src/lib/shell/shell.h	(revision 5204)
@@ -2,5 +2,7 @@
  * @file shell.h
  * Definition of a on-screen-shell
-*/
+ *
+ * @todo check for smooth deletion process
+ */
 
 #ifndef _SHELL_H
Index: /trunk/src/lib/shell/shell_command.cc
===================================================================
--- /trunk/src/lib/shell/shell_command.cc	(revision 5203)
+++ /trunk/src/lib/shell/shell_command.cc	(revision 5204)
@@ -212,4 +212,45 @@
     ShellCommandClass::commandClassList = new tList<ShellCommandClass>;
     ShellCommand<ShellCommandBase>::registerCommand("debug", "ShellCommand", &ShellCommandBase::debugDyn);
+  }
+}
+
+void ShellCommandClass::help(const char* className)
+{
+  if (className == NULL)
+    return;
+  if (likely(ShellCommandClass::commandClassList != NULL))
+  {
+    tIterator<ShellCommandClass>* itCL = ShellCommandClass::commandClassList->getIterator();
+    ShellCommandClass* elemCL = itCL->firstElement();
+    while(elemCL != NULL)
+    {
+      if (elemCL->className && !strcasecmp(className, elemCL->className))
+      {
+        PRINT(0)("Class:'%s' registered %d commands: \n", elemCL->className, elemCL->commandList->getSize());
+        tIterator<ShellCommandBase>* iterator = elemCL->commandList->getIterator();
+        const ShellCommandBase* elem = iterator->firstElement();
+        while(elem != NULL)
+        {
+          PRINT(0)("  command:'%s' : params:%d: ", elem->getName(), elem->paramCount);
+          for (unsigned int i = 0; i< elem->paramCount; i++)
+            PRINT(0)("%s ", ShellCommandBase::paramToString(elem->parameters[i]));
+          if (elem->description != NULL)
+            PRINT(0)("- %s", elem->description);
+          PRINT(0)("\n");
+          elem = iterator->nextElement();
+        }
+        delete iterator;
+
+        delete itCL;
+        return;
+      }
+      elemCL = itCL->nextElement();
+    }
+    delete itCL;
+    PRINTF(3)("Class %s not found in Command's classes\n", className);
+  }
+  else
+  {
+    PRINTF(1)("List of commandClasses does not exist");
   }
 }
@@ -413,5 +454,8 @@
           if (objectList != NULL)
           {
-            elemAL->getCommand()->executeCommand(objectList->firstElement(), executionString+inputSplits.getOffset(1));
+            if (inputSplits.getCount() > 1)
+              elemAL->getCommand()->executeCommand(objectList->firstElement(), executionString+inputSplits.getOffset(1));
+            else
+              elemAL->getCommand()->executeCommand(objectList->firstElement(), "");
             delete itAL;
             return true;
@@ -441,5 +485,4 @@
       delete itCL;
     }
-
 
     if (classID != CL_NULL && inputSplits.getCount() >= 2 && objectList != NULL)
@@ -484,12 +527,7 @@
         }
         delete itCMD;
-
-      }
-
-    }
-
-
-  }
-
+      }
+    }
+  }
 }
 
Index: /trunk/src/lib/shell/shell_command.h
===================================================================
--- /trunk/src/lib/shell/shell_command.h	(revision 5203)
+++ /trunk/src/lib/shell/shell_command.h	(revision 5204)
@@ -2,4 +2,5 @@
  * @file shell_command.h
  * Definition of a on-screen-shell
+ * @todo simple way to supply Default Values with the macro.
 */
 
@@ -59,4 +60,6 @@
     static void unregisterAllCommands();
 
+    static void help (const char* className);
+
   private:
     ShellCommandClass(const char* className);
@@ -310,5 +313,5 @@
     {
 //      if (parameters != NULL)
-      SubString sub(parameters);
+      SubString sub(parameters, true);
 //! FUNCTOR_LIST is the List of Executive Functions
 #define FUNCTOR_LIST(x) ShellCommandExecute ## x
Index: /trunk/src/lib/shell/shell_input.cc
===================================================================
--- /trunk/src/lib/shell/shell_input.cc	(revision 5203)
+++ /trunk/src/lib/shell/shell_input.cc	(revision 5204)
@@ -177,11 +177,20 @@
  * prints out some nice help about the Shell
  */
-void ShellInput::help()
-{
-  PRINT(0)("Help for the most important Shell-commands\n");
-  PRINT(0)("F1 - HELP; F2 - DEBUG; ` - open/close shell\n");
-  PRINT(0)("input order:\n");
-  PRINT(0)("ClassName [objectName] function [parameter1, [parameter2 ...]]  or\n");
-  PRINT(0)("Alias [parameter]\n");
+void ShellInput::help(const char* className, const char* functionName)
+{
+  if (strlen(className) == 0)
+  {
+    PRINT(0)("Help for the most important Shell-commands\n");
+    PRINT(0)("F1 - HELP; F2 - DEBUG; ` - open/close shell\n");
+    PRINT(0)("input order:\n");
+    PRINT(0)("ClassName [objectName] function [parameter1, [parameter2 ...]]  or\n");
+    PRINT(0)("Alias [parameter]\n");
+    PRINT(0)("- Also try 'help className'");
+  }
+  else if (strlen (className) > 0 && strlen (functionName) == 0)
+  {
+    ShellCommandClass::help(className);
+    //PRINTF(1)("%s::%s\n", className, functionName);
+  }
 }
 
Index: /trunk/src/lib/shell/shell_input.h
===================================================================
--- /trunk/src/lib/shell/shell_input.h	(revision 5203)
+++ /trunk/src/lib/shell/shell_input.h	(revision 5204)
@@ -32,5 +32,5 @@
   void setRepeatDelay(float repeatDelay, float repeatRate);
   bool executeCommand();
-  void help();
+  void help(const char* className = "", const char* function = "");
 
   virtual void tick(float dt);
