Index: /trunk/src/lib/shell/shell_command.cc
===================================================================
--- /trunk/src/lib/shell/shell_command.cc	(revision 5206)
+++ /trunk/src/lib/shell/shell_command.cc	(revision 5207)
@@ -572,4 +572,60 @@
   return this;
 }
+
+/**
+ * sets default Values of the Commands
+ * @param count how many default Values to set.
+ * @param ... the default Values in order. They will be cast to the right type
+ * @returns itself
+ *
+ * Be aware, that when you use this Function, you !!MUST!! match the input as
+ * count, [EXACTLY THE SAME AS IF YOU WOULD CALL THE FUNCTION UP TO count ARGUMENTS]
+ */
+ShellCommandBase* ShellCommandBase::defaultValues(unsigned int count, ...)
+{
+  if (this == NULL)
+    return NULL;
+  if (count == 0)
+    return this;
+  if (count > this->paramCount)
+    count = this->paramCount;
+
+  va_list defaultList;
+  va_start(defaultList, count);
+
+  for (unsigned int i = 0; i < count; i++)
+  {
+    switch (this->parameters[i])
+    {
+      case ParameterBool:
+        this->defaultBools[i] = va_arg(defaultList, int);
+        break;
+      case ParameterChar:
+        this->defaultStrings[i] = new char[2];
+        sprintf(this->defaultStrings[0], "%c",  va_arg(defaultList, int));
+        break;
+      case ParameterString:
+        this->defaultStrings[i] = va_arg(defaultList, char*);
+        break;
+      case ParameterInt:
+        this->defaultInts[i] = va_arg(defaultList, int);
+        break;
+      case ParameterUInt:
+        this->defaultInts[i] = va_arg(defaultList, unsigned int);
+        break;
+      case ParameterFloat:
+        this->defaultFloats[i] = va_arg(defaultList, double);
+        break;
+      case ParameterLong:
+        this->defaultInts[i] = va_arg(defaultList, long);
+        break;
+      default:
+        break;
+    }
+  }
+
+  return this;
+}
+
 
 /**
Index: /trunk/src/lib/shell/shell_command.h
===================================================================
--- /trunk/src/lib/shell/shell_command.h	(revision 5206)
+++ /trunk/src/lib/shell/shell_command.h	(revision 5207)
@@ -2,5 +2,4 @@
  * @file shell_command.h
  * Definition of a on-screen-shell
- * @todo simple way to supply Default Values with the macro.
 */
 
@@ -87,4 +86,5 @@
     ShellCommandBase* describe(const char* description);
     ShellCommandBase* setAlias(const char* alias);
+    ShellCommandBase* defaultValues(unsigned int count, ...);
 
     /** @returns the CommandList of the Shell */
Index: /trunk/src/lib/shell/shell_input.cc
===================================================================
--- /trunk/src/lib/shell/shell_input.cc	(revision 5206)
+++ /trunk/src/lib/shell/shell_input.cc	(revision 5207)
@@ -36,5 +36,4 @@
     ->describe("retrieve some help about the input mode")
     ->setAlias("help");
-
 /**
  * standard constructor
@@ -179,4 +178,6 @@
 void ShellInput::help(const char* className, const char* functionName)
 {
+  printf("%s::%s\n", className, functionName);
+
   if (strlen(className) == 0)
   {
Index: /trunk/src/lib/util/helper_functions.cc
===================================================================
--- /trunk/src/lib/util/helper_functions.cc	(revision 5206)
+++ /trunk/src/lib/util/helper_functions.cc	(revision 5207)
@@ -63,5 +63,5 @@
 const char* isString(const char* STRING, const char* defaultValue)
 {
-  if (STRING != NULL)
+  if (STRING != NULL && strlen(STRING) > 0)
     return STRING;
   else
Index: /trunk/src/orxonox.cc
===================================================================
--- /trunk/src/orxonox.cc	(revision 5206)
+++ /trunk/src/orxonox.cc	(revision 5207)
@@ -58,4 +58,6 @@
 
 using namespace std;
+
+SHELL_COMMAND(restart, Orxonox, restart);
 
 /**
@@ -121,4 +123,26 @@
 Orxonox* Orxonox::singletonRef = NULL;
 
+// DANGEROUS
+void Orxonox::restart()
+{
+//   int argc = this->argc;
+//   char** argv = this->argv;
+//
+//   Orxonox *orx = Orxonox::getInstance();
+//
+//   delete orx;
+//
+//   orx = Orxonox::getInstance();
+//
+//   if((*orx).init(argc, argv) == -1)
+//   {
+//     PRINTF(1)("! Orxonox initialization failed\n");
+//     return;
+//   }
+//
+//   printf("finished inizialisation\n");
+//   orx->start();
+}
+
 /**
  *  this finds the config file
Index: /trunk/src/orxonox.h
===================================================================
--- /trunk/src/orxonox.h	(revision 5206)
+++ /trunk/src/orxonox.h	(revision 5207)
@@ -25,4 +25,6 @@
   int init (int argc, char** argv);
 
+  void restart();
+
   void start();
 
@@ -40,4 +42,5 @@
   int initNetworking ();
   int initMisc ();
+
 
   const char* getConfigFile ();
