Index: branches/std/src/lib/util/executor/executor.h
===================================================================
--- branches/std/src/lib/util/executor/executor.h	(revision 7212)
+++ branches/std/src/lib/util/executor/executor.h	(revision 7214)
@@ -48,5 +48,5 @@
 
     /** executes a Command @param object the object to apply this to @param parameters the parameters the command takes */
-    virtual void execute (BaseObject* object, const void* parameters = NULL) = 0;
+    virtual void execute (BaseObject* object, const std::string& parameters = "") = 0;
 
     /** @returns the Type of this Function (either static or objective) */
@@ -192,20 +192,20 @@
 #define ExecutorExecute1(t1) \
    else if (this->paramCount == 1 && this->defaultValue[0] == t1##_PARAM) \
-    EXECUTOREXECUTER(_1_##t1)(t1##_FUNC((const char*)parameters, t1##_DEFGRAB(0)))
+    EXECUTOREXECUTER(_1_##t1)(t1##_FUNC(sub[0], t1##_DEFGRAB(0)))
 
 //! execute-macro for functions with two parameters
 #define ExecutorExecute2(t1,t2) \
    else if (this->paramCount == 2 && this->defaultValue[0] == t1##_PARAM && this->defaultValue[1] == t2##_PARAM) \
-    EXECUTOREXECUTER(_2_##t1##_##t2)(t1##_FUNC(sub.getString(0), t1##_DEFGRAB(0)), t2##_FUNC(sub.getString(1), t2##_DEFGRAB(1)))
+    EXECUTOREXECUTER(_2_##t1##_##t2)(t1##_FUNC(sub[0], t1##_DEFGRAB(0)), t2##_FUNC(sub[1], t2##_DEFGRAB(1)))
 
 //! execute-macro for functions with three parameters
 #define ExecutorExecute3(t1,t2,t3) \
    else if (this->paramCount == 3 && this->defaultValue[0] == t1##_PARAM && this->defaultValue[1] == t2##_PARAM && this->defaultValue[2] == t3##_PARAM) \
-    EXECUTOREXECUTER(_3_##t1##_##t2##_##t3)(t1##_FUNC(sub.getString(0), t1##_DEFGRAB(0)), t2##_FUNC(sub.getString(1), t2##_DEFGRAB(1)), t3##_FUNC(sub.getString(2), t3##_DEFGRAB(2)))
+    EXECUTOREXECUTER(_3_##t1##_##t2##_##t3)(t1##_FUNC(sub[0], t1##_DEFGRAB(0)), t2##_FUNC(sub[1], t2##_DEFGRAB(1)), t3##_FUNC(sub[2], t3##_DEFGRAB(2)))
 
 //! execute-macro for functions with four parameters
 #define ExecutorExecute4(t1,t2,t3,t4) \
    else if (this->paramCount == 4 && this->defaultValue[0] == t1##_PARAM && this->defaultValue[1] == t2##_PARAM && this->defaultValue[2] == t3##_PARAM && this->defaultValue[3] == t4##_PARAM) \
-    EXECUTOREXECUTER(_4_##t1##_##t2##_##t3##_##t4)(t1##_FUNC(sub.getString(0), t1##_DEFGRAB(0)), t2##_FUNC(sub.getString(1), t2##_DEFGRAB(1)), t3##_FUNC(sub.getString(2), t3##_DEFGRAB(2)), t4##_FUNC(sub.getString(3), t4##_DEFGRAB(3))) \
+    EXECUTOREXECUTER(_4_##t1##_##t2##_##t3##_##t4)(t1##_FUNC(sub[0], t1##_DEFGRAB(0)), t2##_FUNC(sub[1], t2##_DEFGRAB(1)), t3##_FUNC(sub[2], t3##_DEFGRAB(2)), t4##_FUNC(sub[3], t4##_DEFGRAB(3))) \
 
 
@@ -213,5 +213,5 @@
 #define ExecutorExecute5(t1,t2,t3,t4,t5) \
    else if (this->paramCount == 5 && this->defaultValue[0] == t1##_PARAM && this->defaultValue[1] == t2##_PARAM && this->defaultValue[2] == t3##_PARAM && this->defaultValue[3] == t4##_PARAM && this->defaultValue[4] == t5##_PARAM) \
-    EXECUTOREXECUTER(_5_##t1##_##t2##_##t3##_##t4##_##t5)(t1##_FUNC(sub.getString(0), t1##_DEFGRAB(0)), t2##_FUNC(sub.getString(1), t2##_DEFGRAB(1)), t3##_FUNC(sub.getString(2), t3##_DEFGRAB(2)), t4##_FUNC(sub.getString(3), t4##_DEFGRAB(3)), t5##_FUNC(sub.getString(4), t5##_DEFGRAB(4)))
+    EXECUTOREXECUTER(_5_##t1##_##t2##_##t3##_##t4##_##t5)(t1##_FUNC(sub[0], t1##_DEFGRAB(0)), t2##_FUNC(sub[1], t2##_DEFGRAB(1)), t3##_FUNC(sub[2], t3##_DEFGRAB(2)), t4##_FUNC(sub[3], t4##_DEFGRAB(3)), t5##_FUNC(sub[4], t5##_DEFGRAB(4)))
 
 
@@ -242,12 +242,12 @@
 #define EXECUTORTYPE                   Executor_Objective
 //! keeps information about a Executor
-template<class T> class ExecutorObjective : public Executor
+template<class T> class EXECUTOR : public Executor
 {
   public:
-    ExecutorObjective() : Executor() { };
+    EXECUTOR() : Executor() { };
     // COPY constuctor (virtual version)
     virtual Executor* clone () const
     {
-      ExecutorObjective<T>* executor = new ExecutorObjective<T>();
+      EXECUTOR<T>* executor = new EXECUTOR<T>();
       this->cloning(executor);
       executor->fp = this->fp;
@@ -268,10 +268,10 @@
     } fp;
 
-    virtual void execute (BaseObject* object, const void* parameters = NULL)
+    virtual void execute (BaseObject* object, const std::string& parameters = "")
     {
       SubString sub;
-      printf("===%s\n", (const char*)parameters);
-      if (parameters != NULL)
-        sub.split((const char*)parameters, " \n\t,", '\\');
+      printf("===%s\n", parameters.c_str());
+      sub.split(parameters, " \n\t,", '\\');
+      sub.debug();
 //! FUNCTOR_LIST is the List of Executive Functions
 #define FUNCTOR_LIST(x) ExecutorExecute ## x
@@ -309,9 +309,9 @@
 {
   public:
-    ExecutorStatic() : Executor() { };
+    EXECUTOR() : Executor() { };
     // COPY constuctor
     virtual Executor* clone () const
     {
-      ExecutorStatic<T>* executor = new ExecutorStatic<T>();
+      EXECUTOR<T>* executor = new EXECUTOR<T>();
       this->cloning(executor);
       executor->fp = this->fp;
@@ -333,9 +333,8 @@
 
 
-    virtual void execute (BaseObject* object, const void* parameters = NULL)
+    virtual void execute (BaseObject* object, const std::string& parameters = "")
     {
       SubString sub;
-      if (parameters != NULL)
-        sub.split((const char*)parameters, " \n\t,", '\\');
+      sub.split(parameters, " \n\t,", '\\');
 //! FUNCTOR_LIST is the List of Executive Functions
 #define FUNCTOR_LIST(x) ExecutorExecute ## x
Index: branches/std/src/lib/util/executor/executor_specials.h
===================================================================
--- branches/std/src/lib/util/executor/executor_specials.h	(revision 7212)
+++ branches/std/src/lib/util/executor/executor_specials.h	(revision 7214)
@@ -60,5 +60,5 @@
      * @param loadString ignored in this case
      */
-    virtual void execute(BaseObject* object, const void* parameters = NULL)
+    virtual void execute(BaseObject* object, const std::string& = "")
     {
       if (object != NULL && this->element != NULL)
Index: branches/std/src/lib/util/executor/functor_list.h
===================================================================
--- branches/std/src/lib/util/executor/functor_list.h	(revision 7212)
+++ branches/std/src/lib/util/executor/functor_list.h	(revision 7214)
@@ -74,14 +74,14 @@
 //#define l_VECTOR_DEFAULT   Vector(0,0,0)        //!< Default value for a VECTOR
 
-#define l_CSTRING_TYPE     const char*          //!< The type of a STRING
-#define l_CSTRING_FUNC     isCString            //!< The function to parse a STRING
-#define l_CSTRING_NAME     "cstring"            //!< The name of a STRING
-#define l_CSTRING_PARAM    MT_STRING            //!< the type of the parameter STRING
-#define l_CSTRING_DEFAULT  ""                   //!< a default Value for an STRING
+#define l_CSTRING_TYPE     const char*          //!< The type of a CSTRING
+#define l_CSTRING_FUNC     isCString            //!< The function to parse a CSTRING
+#define l_CSTRING_NAME     "cstring"            //!< The name of a CSTRING
+#define l_CSTRING_PARAM    MT_STRING            //!< the type of the parameter CSTRING
+#define l_CSTRING_DEFAULT  ""                   //!< a default Value for an CSTRING
 
 #define l_STRING_TYPE      const std::string&   //!< The type of a STRING
 #define l_STRING_FUNC      isString             //!< The function to parse a STRING
 #define l_STRING_NAME      "string"             //!< The name of a STRING
-#define l_STRING_PARAM     MT_STRING            //!< the type of the parameter STRING
+#define l_STRING_PARAM     MT_CSTRING           //!< the type of the parameter STRING
 #define l_STRING_DEFAULT   ""                   //!< a default Value for an STRING
 
Index: branches/std/src/lib/util/helper_functions.cc
===================================================================
--- branches/std/src/lib/util/helper_functions.cc	(revision 7212)
+++ branches/std/src/lib/util/helper_functions.cc	(revision 7214)
@@ -104,7 +104,13 @@
 {
   if (STRING.size() > 0)
+  {
+    printf("DECISION1: %s\n", STRING.c_str());
     return STRING;
+  }
   else
+  {
+    printf("DECISION2: %s\n", defaultValue.c_str());
     return defaultValue;
+  }
 }
 
Index: branches/std/src/lib/util/loading/load_param.cc
===================================================================
--- branches/std/src/lib/util/loading/load_param.cc	(revision 7212)
+++ branches/std/src/lib/util/loading/load_param.cc	(revision 7214)
@@ -66,6 +66,6 @@
           ((this->executor->getType() & Executor_NoLoadString) == Executor_NoLoadString)))
     {
-      PRINTF(0)("Loading '%s' with Parameters '%s' onto: '%s'(%s)\n", this->paramName.c_str(), loadString.c_str(), this->object->getName(), this->object->getClassName());
-      this->executor->execute(this->object, (const void*)loadString.c_str());
+      PRINTF(0)("Loading value '%s' with Parameters '%s' onto: %s::%s\n", this->paramName.c_str(), loadString.c_str(), this->object->getClassName(), this->object->getName());
+      this->executor->execute(this->object, loadString);
     }
     delete this->executor;
Index: branches/std/src/lib/util/multi_type.cc
===================================================================
--- branches/std/src/lib/util/multi_type.cc	(revision 7212)
+++ branches/std/src/lib/util/multi_type.cc	(revision 7214)
@@ -55,4 +55,5 @@
       break;
     case MT_STRING:
+    case MT_CSTRING:
       this->storedString = "";
       break;
Index: branches/std/src/lib/util/multi_type.h
===================================================================
--- branches/std/src/lib/util/multi_type.h	(revision 7212)
+++ branches/std/src/lib/util/multi_type.h	(revision 7214)
@@ -24,4 +24,6 @@
   MT_EXT1            = 32,                 //!< An external Type.
   MT_EXT2            = 64,                 //!< An external Type.
+
+  MT_CSTRING         = 128,                //!< An entire String.
 } MT_Type;
 
Index: branches/std/src/lib/util/substring.cc
===================================================================
--- branches/std/src/lib/util/substring.cc	(revision 7212)
+++ branches/std/src/lib/util/substring.cc	(revision 7214)
@@ -63,4 +63,10 @@
 }
 
+/**
+ * An empty String
+ */
+const std::string SubString::emptyString = "";
+
+
 
 unsigned int SubString::split(const std::string& string, char splitter)
@@ -101,8 +107,19 @@
 
 /**
- * splits line into tokens and stores them in ret. Supports delimiters, escape characters,
+ * @brief splits line into tokens and stores them in ret.
+ * @param ret the Array, where the Splitted strings will be stored in
+ * @param offsets an Array of Offsets, here the distance from the inputstring
+ * to the beginning of the current token is stored
+ * @param line the inputLine to split
+ * @param delimiters a String of Delimiters (here the input will be splitted)
+ * @param escape_char: Escape carater (escapes splitters)
+ * @param safemode_char: the beginning of the safemode is marked with this
+ * @param comment_char: the beginning of a comment is marked with this: (until the end of a Line)
+ * @param start_state: the Initial state on how to parse the String.
+ * @returns SPLIT_LINE_STATE the parser was in when returning
+ *
+ * Supports delimiters, escape characters,
  * ignores special  characters between safemode_char and between comment_char and linend '\n'.
  *
- * @returns SPLIT_LINE_STATE the parser was in when returning
  */
 SPLIT_LINE_STATE SubString::splitLine(std::vector<std::string>& ret, std::vector<unsigned int>& offsets,
Index: branches/std/src/lib/util/substring.h
===================================================================
--- branches/std/src/lib/util/substring.h	(revision 7212)
+++ branches/std/src/lib/util/substring.h	(revision 7214)
@@ -35,5 +35,5 @@
 
   inline unsigned int getCount() { return this->strings.size(); };
-  const std::string& getString(unsigned int i) { return this->strings[i]; };
+  const std::string& getString(unsigned int i) { return (i < this->strings.size()) ? this->strings[i] : emptyString; };
   unsigned int getOffset(unsigned int i);
 
@@ -48,4 +48,6 @@
    std::vector<std::string>  strings;                      //!< strings produced from a single string splitted in multiple strings
    std::vector<unsigned int> offsets;                      //!< offsets of the beginning of the input-string to the beginning of each substring.
+
+   static const std::string emptyString;
 };
 
