Index: trunk/src/lib/util/executor/executor.h
===================================================================
--- trunk/src/lib/util/executor/executor.h	(revision 7462)
+++ trunk/src/lib/util/executor/executor.h	(revision 7474)
@@ -52,5 +52,5 @@
     // EXECUTE
     /** executes a Command @param object the object to apply this to @param parameters the parameters the command takes */
-    virtual void operator()(BaseObject* object, const std::string& parameters = "") const = 0;
+    virtual void operator()(BaseObject* object, const SubString& sub = SubString()) const = 0;
     /** executes a Command @param object the object to apply this to @param parameters the parameters the command takes @brief here for your convenience*/
     void execute (BaseObject* object, const std::string& parameters = "") const { (*this)(object, parameters); };
@@ -256,8 +256,6 @@
     } fp;
 
-    virtual void operator()(BaseObject* object, const std::string& parameters = "") const
+    virtual void operator()(BaseObject* object, const SubString& sub = SubString()) const
     {
-      SubString sub;
-      sub.split(parameters, " \n\t,", '\\');
 //! FUNCTOR_LIST is the List of Executive Functions
 #define FUNCTOR_LIST(x) ExecutorExecute ## x
@@ -319,8 +317,6 @@
 
 
-    virtual void operator()(BaseObject* object, const std::string& parameters = "") const
+    virtual void operator()(BaseObject* object, const SubString& sub = SubString()) const
     {
-      SubString sub;
-      sub.split(parameters, " \n\t,", '\\');
 //! FUNCTOR_LIST is the List of Executive Functions
 #define FUNCTOR_LIST(x) ExecutorExecute ## x
Index: trunk/src/lib/util/executor/executor_specials.h
===================================================================
--- trunk/src/lib/util/executor/executor_specials.h	(revision 7462)
+++ trunk/src/lib/util/executor/executor_specials.h	(revision 7474)
@@ -60,5 +60,5 @@
      * @param loadString ignored in this case
      */
-    virtual void operator()(BaseObject* object, const std::string& = "") const
+    virtual void operator()(BaseObject* object, const SubString& = SubString()) const
     {
       if (object != NULL && this->element != NULL)
Index: trunk/src/lib/util/loading/load_param.cc
===================================================================
--- trunk/src/lib/util/loading/load_param.cc	(revision 7462)
+++ trunk/src/lib/util/loading/load_param.cc	(revision 7474)
@@ -67,5 +67,5 @@
     {
       PRINTF(4)("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)(this->object, loadString);
+      (*this->executor)(this->object, SubString(loadString, ",", SubString::WhiteSpaces, false, '\\'));
     }
     delete this->executor;
Index: trunk/src/lib/util/substring.cc
===================================================================
--- trunk/src/lib/util/substring.cc	(revision 7462)
+++ trunk/src/lib/util/substring.cc	(revision 7474)
@@ -42,12 +42,9 @@
  * @brief create a SubString from
  * @param string the String to Spilit
- * @param splitter the Character at which to split string (delimiter)
- */
-SubString::SubString(const std::string& string, char splitter)
-{
-  char split[2];
-  split[0] = splitter;
-  split[1] = '\0';
-  SubString::splitLine(this->strings, string, split);
+ * @param delimiter the Character at which to split string (delimiter)
+ */
+SubString::SubString(const std::string& string, char delimiter)
+{
+  this->split(string, delimiter);
 }
 
@@ -56,12 +53,15 @@
  * @brief Splits a String into multiple splitters.
  * @param string the String to split
- * @param splitters multiple set of characters at what to split. (delimiters)
+ * @param delimiters multiple set of characters at what to split. (delimiters)
+ * @param delimiterNeighbours neighbours of the delimiters, that will be erased only when near a delimiter.
  * @param escapeChar The Escape Character that overrides splitters commends and so on...
  * @param safemode_char within these characters splitting won't happen
  * @param comment_char the Comment character.
  */
-SubString::SubString(const std::string& string, const std::string& splitters, char escapeChar, char safemode_char, char comment_char)
-{
-  SubString::splitLine(this->strings, string, splitters, escapeChar, safemode_char, comment_char);
+SubString::SubString(const std::string& string,
+                     const std::string& delimiters, const std::string& delimiterNeighbours, bool emptyEntries,
+                     char escapeChar, char safemode_char, char comment_char)
+{
+  SubString::splitLine(this->strings, string, delimiters, delimiterNeighbours, emptyEntries, escapeChar, safemode_char, comment_char);
 }
 
@@ -196,13 +196,17 @@
  * @brief Splits a String into multiple splitters.
  * @param string the String to split
- * @param splitters multiple set of characters at what to split. (delimiters)
+ * @param delimiters multiple set of characters at what to split. (delimiters)
+ * @param delimiterNeighbours: Neighbours to the Delimiters that will be erased too.
+ * @param emptyEntries: If empty entries are added to the List of SubStrings
  * @param escapeChar The Escape Character that overrides splitters commends and so on...
  * @param safemode_char within these characters splitting won't happen
  * @param comment_char the Comment character.
  */
-unsigned int SubString::split(const std::string& string, const std::string& splitters, char escapeChar,char safemode_char, char comment_char)
+unsigned int SubString::split(const std::string& string,
+                              const std::string& delimiters, const std::string& delimiterNeighbours, bool emptyEntries,
+                              char escapeChar,char safemode_char, char comment_char)
 {
   this->strings.clear();
-  SubString::splitLine(this->strings, string, splitters, escapeChar, safemode_char, comment_char);
+  SubString::splitLine(this->strings, string, delimiters, delimiterNeighbours, emptyEntries, escapeChar, safemode_char, comment_char);
   return this->strings.size();
 }
@@ -264,4 +268,6 @@
  * @param line the inputLine to split
  * @param delimiters a String of Delimiters (here the input will be splitted)
+ * @param delimiterNeighbour Naighbours to the Delimitter, that will be removed if they are to the left or the right of a Delimiter.
+ * @param emptyEntries: if empty Strings are added to the List of Strings.
  * @param escape_char: Escape carater (escapes splitters)
  * @param safemode_char: the beginning of the safemode is marked with this
@@ -274,15 +280,21 @@
  * ignores special  characters between safemode_char and between comment_char and linend '\n'.
  *
- */
-SPLIT_LINE_STATE SubString::splitLine(std::vector<std::string>& ret,
-                                      const std::string& line,
-                                      const std::string& delimiters,
-                                      char escape_char,
-                                      char safemode_char,
-                                      char comment_char,
-                                      SPLIT_LINE_STATE start_state)
+ *
+ */
+SubString::SPLIT_LINE_STATE
+SubString::splitLine(std::vector<std::string>& ret,
+                     const std::string& line,
+                     const std::string& delimiters,
+                     const std::string& delimiterNeighbours,
+                     bool emptyEntries,
+                     char escape_char,
+                     char safemode_char,
+                     char comment_char,
+                     SPLIT_LINE_STATE start_state)
 {
   SPLIT_LINE_STATE state = start_state;
   unsigned int i = 0;
+  unsigned int fallBackNeighbours = 0;
+
   std::string token;
 
@@ -297,5 +309,5 @@
     switch(state)
     {
-        case SL_NORMAL:
+      case SL_NORMAL:
         if(line[i] == escape_char)
         {
@@ -308,6 +320,8 @@
         else if(line[i] == comment_char)
         {
+          if (fallBackNeighbours > 0)
+            token = token.substr(0, token.size() - fallBackNeighbours);
           /// FINISH
-          if(token.size() > 0)
+          if(emptyEntries || token.size() > 0)
           {
             ret.push_back(token);
@@ -320,17 +334,32 @@
         {
           // line[i] is a delimiter
+          if (fallBackNeighbours > 0)
+            token = token.substr(0, token.size() - fallBackNeighbours);
           /// FINISH
-          if(token.size() > 0)
+          if(emptyEntries || token.size() > 0)
           {
             ret.push_back(token);
             token.clear();
           }
+          state = SL_NORMAL;
         }
         else
         {
+          if (delimiterNeighbours.find(line[i]) != std::string::npos)
+          {
+            if (token.size() > 0)
+              ++fallBackNeighbours;
+            else
+            {
+              i++;
+              continue;
+            }
+          }
+          else
+            fallBackNeighbours = 0;
           token += line[i];       // EAT
         }
         break;
-        case SL_ESCAPE:
+      case SL_ESCAPE:
         if(line[i] == 'n') token += '\n';
         else if(line[i] == 't') token += '\t';
@@ -344,5 +373,5 @@
         state = SL_NORMAL;
         break;
-        case SL_SAFEMODE:
+      case SL_SAFEMODE:
         if(line[i] == safemode_char)
         {
@@ -358,5 +387,6 @@
         }
         break;
-        case SL_SAFEESCAPE:
+
+      case SL_SAFEESCAPE:
         if(line[i] == 'n') token += '\n';
         else if(line[i] == 't') token += '\t';
@@ -370,5 +400,6 @@
         state = SL_SAFEMODE;
         break;
-        case SL_COMMENT:
+
+      case SL_COMMENT:
         if(line[i] == '\n')
         {
@@ -386,5 +417,6 @@
         }
         break;
-        default:
+
+      default:
         // nothing
         break;
@@ -394,5 +426,7 @@
 
   /// FINISH
-  if(token.size() > 0)
+  if (fallBackNeighbours > 0)
+    token = token.substr(0, token.size() - fallBackNeighbours);
+  if(emptyEntries || token.size() > 0)
   {
     ret.push_back(token);
Index: trunk/src/lib/util/substring.h
===================================================================
--- trunk/src/lib/util/substring.h	(revision 7462)
+++ trunk/src/lib/util/substring.h	(revision 7474)
@@ -10,11 +10,4 @@
 #include <string>
 
-typedef enum {
-  SL_NORMAL,
-  SL_ESCAPE,
-  SL_SAFEMODE,
-  SL_SAFEESCAPE,
-  SL_COMMENT,
-} SPLIT_LINE_STATE;
 
 //! A class that can load one string and split it in multipe ones
@@ -26,7 +19,19 @@
 {
 public:
+  typedef enum {
+    SL_NORMAL,
+    SL_ESCAPE,
+    SL_SAFEMODE,
+    SL_SAFEESCAPE,
+    SL_COMMENT,
+  } SPLIT_LINE_STATE;
+
+
+public:
   SubString();
-  SubString(const std::string& string, char splitter = ',');
-  SubString(const std::string& string, const std::string& splitters, char escapeChar ='\\', char safemode_char = '"', char comment_char = '\0');
+  SubString(const std::string& string, char delimiter = ',');
+  SubString(const std::string& string,
+            const std::string& delimiters, const std::string& delimiterNeighbours = "", bool emptyEntries=false,
+            char escapeChar ='\\', char safemode_char = '"', char comment_char = '\0');
   /** @brief create a Substring as a copy of another one. @param subString the SubString to copy. */
   SubString(const SubString& subString) { *this = subString; };
@@ -47,6 +52,8 @@
   /////////////////////////////////////////
   // Split and Join the any String. ///////
-  unsigned int split(const std::string& string = "", char splitter = ',');
-  unsigned int split(const std::string& string, const std::string& splitters, char escapeChar ='\\', char safemode_char = '"', char comment_char = '\0');
+  unsigned int split(const std::string& string = "", char delimiter = ',');
+  unsigned int split(const std::string& string,
+                     const std::string& delimiters, const std::string& delimiterNeighbours = "", bool emptyEntries = false,
+                     char escapeChar ='\\', char safemode_char = '"', char comment_char = '\0');
   std::string join(const std::string& delimiter = " ") const;
   ////////////////////////////////////////
@@ -62,5 +69,5 @@
   inline unsigned int size() const { return this->strings.size(); };
   /** @param i the i'th String @returns the i'th string from the subset of Strings */
-  const std::string& operator[](unsigned int i) const { return (i < this->strings.size()) ? this->strings[i] : emptyString;return this->getString(i); };
+const std::string& operator[](unsigned int i) const { return (i < this->strings.size()) ? this->strings[i] : emptyString;return this->getString(i); };
   /** @param i the i'th String @returns the i'th string from the subset of Strings */
   const std::string& getString(unsigned int i) const { return (*this)[i]; };
@@ -70,4 +77,6 @@
                                     const std::string& line,
                                     const std::string& delimiters = SubString::WhiteSpaces,
+                                    const std::string& delimiterNeighbours = "",
+                                    bool emptyEntries = false,
                                     char escape_char = '\\',
                                     char safemode_char = '"',
