Index: trunk/src/lib/shell/shell_command.cc
===================================================================
--- trunk/src/lib/shell/shell_command.cc	(revision 7319)
+++ trunk/src/lib/shell/shell_command.cc	(revision 7320)
@@ -184,5 +184,5 @@
             {
 
-              (*alias)->getCommand()->executor->execute(objectList->front(), executionString.substr(inputSplits.getOffset(1))); /// TODO CHECK IF OK
+              (*alias)->getCommand()->executor->execute(objectList->front(), inputSplits.getSubSet(1).join()); /// TODO CHECK IF OK
             }
             else
@@ -241,5 +241,5 @@
               return false;
             if (inputSplits.size() > fktPos+1)
-              (*cmdIT)->executor->execute(objectPointer, executionString.substr(inputSplits.getOffset(fktPos +1))); /// TODO CHECK IF OK
+              (*cmdIT)->executor->execute(objectPointer, inputSplits.getSubSet(2).join()); /// TODO CHECK IF OK
             else
               (*cmdIT)->executor->execute(objectPointer, "");
Index: trunk/src/lib/util/substring.cc
===================================================================
--- trunk/src/lib/util/substring.cc	(revision 7319)
+++ trunk/src/lib/util/substring.cc	(revision 7320)
@@ -41,6 +41,5 @@
   split[0] = splitter;
   split[1] = '\0';
-  SubString::splitLine(this->strings, this->offsets,
-                       string, split);
+  SubString::splitLine(this->strings, string, split);
 }
 
@@ -52,6 +51,5 @@
 SubString::SubString(const std::string& string, bool whiteSpaces)
 {
-  SubString::splitLine(this->strings, this->offsets,
-                       string);
+  SubString::splitLine(this->strings, string);
 }
 
@@ -66,6 +64,5 @@
 SubString::SubString(const std::string& string, const std::string& splitters, char escapeChar,char safemode_char, char comment_char)
 {
-  SubString::splitLine(this->strings, this->offsets,
-                       string, splitters, escapeChar, safemode_char, comment_char);
+  SubString::splitLine(this->strings, string, splitters, escapeChar, safemode_char, comment_char);
 }
 
@@ -113,5 +110,4 @@
 SubString& SubString::operator=(const SubString& subString)
 {
-  this->offsets = subString.offsets;
   this->strings = subString.strings;
   return *this;
@@ -160,10 +156,9 @@
 unsigned int SubString::split(const std::string& string, char splitter)
 {
-  this->offsets.clear();
   this->strings.clear();
   char split[2];
   split[0] = splitter;
   split[1] = '\0';
-  SubString::splitLine(this->strings, this->offsets, string, split);
+  SubString::splitLine(this->strings, string, split);
   return strings.size();
 }
@@ -178,7 +173,6 @@
 unsigned int SubString::split(const std::string& string, bool whiteSpaces)
 {
-  this->offsets.clear();
   this->strings.clear();
-  SubString::splitLine(this->strings, this->offsets, string);
+  SubString::splitLine(this->strings, string);
   return strings.size();
 }
@@ -195,8 +189,6 @@
 unsigned int SubString::split(const std::string& string, const std::string& splitters, char escapeChar,char safemode_char, char comment_char)
 {
-  this->offsets.clear();
   this->strings.clear();
-  SubString::splitLine(this->strings, this->offsets,
-                       string, splitters, escapeChar, safemode_char);
+  SubString::splitLine(this->strings, string, splitters, escapeChar, safemode_char);
   return strings.size();
 }
@@ -248,18 +240,4 @@
 {
   return SubString(*this, subSetBegin, subSetEnd);
-}
-
-
-/**
- * @brief get a particular substring's offset
- * @param i the ID of the substring to get the offset from
- * @returns the offset or NULL if an invalid ID was given
- */
-unsigned int SubString::getOffset(unsigned int i) const
-{
-  if( i < this->offsets.size() && i >= 0)
-    return this->offsets[i];
-  else
-    return 0;
 }
 
@@ -283,7 +261,10 @@
  *
  */
-SPLIT_LINE_STATE SubString::splitLine(std::vector<std::string>& ret, std::vector<unsigned int>& offsets,
-                                      const std::string& line, const std::string& delimiters,
-                                      char escape_char, char safemode_char, char comment_char,
+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)
 {
@@ -317,5 +298,4 @@
           {
             ret.push_back(token);
-            offsets.push_back(i);
             token.clear();
           }
@@ -330,5 +310,4 @@
           {
             ret.push_back(token);
-            offsets.push_back(i);
             token.clear();
           }
@@ -384,5 +363,4 @@
           {
             ret.push_back(token);
-            offsets.push_back(i);
             token.clear();
           }
@@ -405,5 +383,4 @@
   {
     ret.push_back(token);
-    offsets.push_back(i);
     token.clear();
   }
Index: trunk/src/lib/util/substring.h
===================================================================
--- trunk/src/lib/util/substring.h	(revision 7319)
+++ trunk/src/lib/util/substring.h	(revision 7320)
@@ -48,5 +48,5 @@
   unsigned int split(const std::string& string, bool whiteSpaces);
   unsigned int split(const std::string& string, const std::string& splitters, char escapeChar ='\\', char safemode_char = '"', char comment_char = '\0');
-  std::string join(const std::string& delimiter) const;
+  std::string join(const std::string& delimiter = " ") const;
   ////////////////////////////////////////
 
@@ -57,13 +57,14 @@
   // retrieve Information from within
   inline unsigned int size() const { return this->strings.size(); };
-const std::string& getString(unsigned int i) const { return (i < this->strings.size()) ? this->strings[i] : emptyString; }
-  ; // safety-precaution
+  const std::string& getString(unsigned int i) const { return (i < this->strings.size()) ? this->strings[i] : emptyString; };
   const std::string& operator[](unsigned int i) const { return this->getString(i); };
-  unsigned int getOffset(unsigned int i) const;
 
   // the almighty algorithm.
-  static SPLIT_LINE_STATE splitLine(std::vector<std::string>& ret,std::vector<unsigned int>& offsets,
-                                    const std::string& line, const std::string& delimiters = " \t\r\n",
-                                    char escape_char = '\\', char safemode_char = '"', char comment_char = '\0',
+  static SPLIT_LINE_STATE splitLine(std::vector<std::string>& ret,
+                                    const std::string& line,
+                                    const std::string& delimiters = " \t\r\n",
+                                    char escape_char = '\\',
+                                    char safemode_char = '"',
+                                    char comment_char = '\0',
                                     SPLIT_LINE_STATE start_state = SL_NORMAL);
   // debugging.
@@ -72,5 +73,4 @@
 private:
   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;
