Index: code/branches/testing/src/libraries/core/command/ConsoleCommand.h
===================================================================
--- code/branches/testing/src/libraries/core/command/ConsoleCommand.h	(revision 9046)
+++ code/branches/testing/src/libraries/core/command/ConsoleCommand.h	(revision 9047)
@@ -222,6 +222,4 @@
 #include <stack>
 #include <vector>
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/facilities/expand.hpp>
 
 #include "util/VA_NARGS.h"
Index: code/branches/testing/src/libraries/util/SubString.cc
===================================================================
--- code/branches/testing/src/libraries/util/SubString.cc	(revision 9046)
+++ code/branches/testing/src/libraries/util/SubString.cc	(revision 9047)
@@ -87,32 +87,17 @@
         @param other The other SubString
         @param begin The beginning of the subset
-
-        The subset ranges from the token with index @a begin to the end of the tokens.
-        If @a begin is greater than the greatest index, the new SubString will be empty.
-    */
-    SubString::SubString(const SubString& other, unsigned int begin)
-    {
-        for (unsigned int i = begin; i < other.size(); ++i)
-        {
-            this->tokens_.push_back(other[i]);
-            this->bTokenInSafemode_.push_back(other.isInSafemode(i));
-        }
-    }
-
-    /**
-        @brief creates a new SubString based on a subset of an other SubString.
-        @param other The other SubString
-        @param begin The beginning of the subset
-        @param end The end of the subset
-
-        The subset ranges from the token with index @a begin until (but not including) the token with index @a end.
-        If @a begin or @a end are beyond the allowed index, the resulting SubString will be empty.
-    */
-    SubString::SubString(const SubString& other, unsigned int begin, unsigned int end)
-    {
-        for (unsigned int i = begin; i < std::min(other.size(), end); ++i)
-        {
-            this->tokens_.push_back(other[i]);
-            this->bTokenInSafemode_.push_back(other.isInSafemode(i));
+        @param length The length of the subset
+
+        The subset ranges from the token with index @a begin and contains @a length elements.
+    */
+    SubString::SubString(const SubString& other, size_t begin, size_t length)
+    {
+        for (size_t i = 0; i < length; ++i)
+        {
+            if (begin + i >= other.size())
+                break;
+
+            this->tokens_.push_back(other[begin + i]);
+            this->bTokenInSafemode_.push_back(other.isInSafemode(begin + i));
         }
     }
@@ -123,7 +108,7 @@
         @param argv An array of pointers to the arguments
     */
-    SubString::SubString(unsigned int argc, const char** argv)
-    {
-        for(unsigned int i = 0; i < argc; ++i)
+    SubString::SubString(size_t argc, const char** argv)
+    {
+        for (size_t i = 0; i < argc; ++i)
         {
             this->tokens_.push_back(std::string(argv[i]));
@@ -158,24 +143,17 @@
 
     /**
-        @copydoc operator==
-    */
-    bool SubString::compare(const SubString& other) const
-    {
-        return (*this == other);
-    }
-
-    /**
         @brief Compares this SubString to another SubString and returns true if the first @a length values match.
         @param other The other SubString
         @param length How many tokens to compare
     */
-    bool SubString::compare(const SubString& other, unsigned int length) const
-    {
-        if (length > this->size() || length > other.size())
+    bool SubString::compare(const SubString& other, size_t length) const
+    {
+        if (std::min(length, this->size()) != std::min(length, other.size()))
             return false;
 
-        for (unsigned int i = 0; i < length; ++i)
+        for (size_t i = 0; i < std::min(length, this->size()); ++i)
             if ((this->tokens_[i] != other.tokens_[i]) || (this->bTokenInSafemode_[i] != other.bTokenInSafemode_[i]))
                 return false;
+
         return true;
     }
@@ -196,5 +174,5 @@
     SubString& SubString::operator+=(const SubString& other)
     {
-        for (unsigned int i = 0; i < other.size(); ++i)
+        for (size_t i = 0; i < other.size(); ++i)
         {
             this->tokens_.push_back(other[i]);
@@ -207,8 +185,8 @@
         @copydoc SubString(const std::string&,const std::string&,const std::string&,bool,char,bool,char,bool,char,char,bool,char)
     */
-    unsigned int SubString::split(const std::string& line,
-                                  const std::string& delimiters, const std::string& delimiterNeighbours, bool bAllowEmptyEntries,
-                                  char escapeChar, bool bRemoveEscapeChar, char safemodeChar, bool bRemoveSafemodeChar,
-                                  char openparenthesisChar, char closeparenthesisChar, bool bRemoveParenthesisChars, char commentChar)
+    size_t SubString::split(const std::string& line,
+                            const std::string& delimiters, const std::string& delimiterNeighbours, bool bAllowEmptyEntries,
+                            char escapeChar, bool bRemoveEscapeChar, char safemodeChar, bool bRemoveSafemodeChar,
+                            char openparenthesisChar, char closeparenthesisChar, bool bRemoveParenthesisChars, char commentChar)
     {
         this->tokens_.clear();
@@ -228,5 +206,5 @@
         {
             std::string retVal = this->tokens_[0];
-            for (unsigned int i = 1; i < this->tokens_.size(); ++i)
+            for (size_t i = 1; i < this->tokens_.size(); ++i)
                 retVal += delimiter + this->tokens_[i];
             return retVal;
@@ -239,32 +217,15 @@
         @brief Creates a subset of this SubString.
         @param begin The beginning of the subset
+        @param length The length of the subset
         @return A new SubString containing the defined subset.
 
-        The subset ranges from the token with index @a begin to the end of the tokens.
-        If @a begin is greater than the greatest index, the new SubString will be empty.
+        The subset ranges from the token with index @a begin and contains @a length elements.
 
         This function is added for your convenience, and does the same as
-        SubString::SubString(const SubString& other, unsigned int begin)
-    */
-    SubString SubString::subSet(unsigned int begin) const
-    {
-        return SubString(*this, begin);
-    }
-
-    /**
-        @brief Creates a subset of this SubString.
-        @param begin The beginning of the subset
-        @param end The ending of the subset
-        @return A new SubString containing the defined subset.
-
-        The subset ranges from the token with index @a begin until (but not including) the token with index @a end.
-        If @a begin or @a end are beyond the allowed index, the resulting SubString will be empty.
-
-        This function is added for your convenience, and does the same as
-        SubString::SubString(const SubString& other, unsigned int begin, unsigned int end)
-    */
-    SubString SubString::subSet(unsigned int begin, unsigned int end) const
-    {
-        return SubString(*this, begin, end);
+        SubString::SubString(const SubString& other, size_t begin, size_t length)
+    */
+    SubString SubString::subSet(size_t begin, size_t length) const
+    {
+        return SubString(*this, begin, length);
     }
 
@@ -298,6 +259,6 @@
     {
         SPLIT_LINE_STATE state = start_state;
-        unsigned int i = 0;
-        unsigned int fallBackNeighbours = 0;
+        size_t i = 0;
+        size_t fallBackNeighbours = 0;
 
         std::string token;
@@ -514,5 +475,5 @@
     {
         orxout(debug_output) << "Substring-information::count=" << this->tokens_.size() << " ::";
-        for (unsigned int i = 0; i < this->tokens_.size(); ++i)
+        for (size_t i = 0; i < this->tokens_.size(); ++i)
             orxout(debug_output) << "s" << i << "='" << this->tokens_[i].c_str() << "'::";
         orxout(debug_output) << endl;
Index: code/branches/testing/src/libraries/util/SubString.h
===================================================================
--- code/branches/testing/src/libraries/util/SubString.h	(revision 9046)
+++ code/branches/testing/src/libraries/util/SubString.h	(revision 9047)
@@ -58,5 +58,5 @@
     SubString tokens(text, SubString::WhiteSpaces, "", false, '\\', true, '"', true, '{', '}', true, '\0');
 
-    for (unsigned int i = 0; i < tokens.size(); ++i)
+    for (size_t i = 0; i < tokens.size(); ++i)
         orxout() << i << ": " << tokens[i] << endl;
     @endcode
@@ -127,7 +127,6 @@
                   bool bRemoveParenthesisChars = true,
                   char commentChar = '\0');
-        SubString(unsigned int argc, const char** argv);
-        SubString(const SubString& other, unsigned int begin);
-        SubString(const SubString& other, unsigned int begin, unsigned int end);
+        SubString(size_t argc, const char** argv);
+        SubString(const SubString& other, size_t begin, size_t length = std::string::npos);
         ~SubString();
 
@@ -135,6 +134,5 @@
         SubString& operator=(const SubString& other);
         bool operator==(const SubString& other) const;
-        bool compare(const SubString& other) const;
-        bool compare(const SubString& other, unsigned int length) const;
+        bool compare(const SubString& other, size_t length = std::string::npos) const;
         SubString operator+(const SubString& other) const;
         SubString& operator+=(const SubString& other);
@@ -144,16 +142,16 @@
         /////////////////////////////////////////
         // Split and Join the any String. ///////
-        unsigned int split(const std::string& line,
-                           const std::string& delimiters = SubString::WhiteSpaces,
-                           const std::string& delimiterNeighbours = "",
-                           bool bAllowEmptyEntries = false,
-                           char escapeChar ='\\',
-                           bool bRemoveEscapeChar = true,
-                           char safemodeChar = '"',
-                           bool bRemoveSafemodeChar = true,
-                           char openparenthesisChar = '{',
-                           char closeparenthesisChar = '}',
-                           bool bRemoveParenthesisChars = true,
-                           char commentChar = '\0');
+        size_t split(const std::string& line,
+                     const std::string& delimiters = SubString::WhiteSpaces,
+                     const std::string& delimiterNeighbours = "",
+                     bool bAllowEmptyEntries = false,
+                     char escapeChar ='\\',
+                     bool bRemoveEscapeChar = true,
+                     char safemodeChar = '"',
+                     bool bRemoveSafemodeChar = true,
+                     char openparenthesisChar = '{',
+                     char closeparenthesisChar = '}',
+                     bool bRemoveParenthesisChars = true,
+                     char commentChar = '\0');
 
         std::string join(const std::string& delimiter = " ") const;
@@ -161,6 +159,5 @@
 
         // retrieve a SubSet from the String
-        SubString subSet(unsigned int begin) const;
-        SubString subSet(unsigned int begin, unsigned int end) const;
+        SubString subSet(size_t begin, size_t length = std::string::npos) const;
 
         // retrieve Information from within
@@ -168,13 +165,13 @@
         inline bool empty() const { return this->tokens_.empty(); }
         /// Returns the number of tokens stored in this SubString
-        inline unsigned int size() const { return this->tokens_.size(); }
+        inline size_t size() const { return this->tokens_.size(); }
         /// Returns the i'th token from the subset of strings @param index The index of the requested token
-        inline const std::string& operator[](unsigned int index) const { return this->tokens_[index]; }
+        inline const std::string& operator[](size_t index) const { return this->tokens_[index]; }
         /// Returns the i'th token from the subset of strings @param index The index of the requested token
-        inline const std::string& getString(unsigned int index) const { return (*this)[index]; }
+        inline const std::string& getString(size_t index) const { return (*this)[index]; }
         /// Returns all tokens as std::vector
         inline const std::vector<std::string>& getAllStrings() const { return this->tokens_; }
         /// Returns true if the token is in safemode. @param index The index of the token
-        inline bool isInSafemode(unsigned int index) const { return this->bTokenInSafemode_[index]; }
+        inline bool isInSafemode(size_t index) const { return this->bTokenInSafemode_[index]; }
         /// Returns the front of the list of tokens.
         inline const std::string& front() const { return this->tokens_.front(); }
Index: code/branches/testing/src/libraries/util/VA_NARGS.h
===================================================================
--- code/branches/testing/src/libraries/util/VA_NARGS.h	(revision 9046)
+++ code/branches/testing/src/libraries/util/VA_NARGS.h	(revision 9047)
@@ -36,4 +36,6 @@
     type aware, but for different numbers of arguments is still very powerful).
 
+    Important: The macro can not be overloaded for 0 arguments: ORXONOX_VA_NARGS() returns 1!
+
     Example: A macro to call functions
     @code
@@ -64,4 +66,5 @@
 */
 
+#include <boost/preprocessor/cat.hpp>
 #include <boost/preprocessor/facilities/expand.hpp>
 
Index: code/branches/testing/src/modules/notifications/dispatchers/CommandNotification.cc
===================================================================
--- code/branches/testing/src/modules/notifications/dispatchers/CommandNotification.cc	(revision 9046)
+++ code/branches/testing/src/modules/notifications/dispatchers/CommandNotification.cc	(revision 9047)
@@ -117,8 +117,8 @@
     const std::string& CommandNotification::bindingNiceifyer(const std::string& binding)
     {
-        SubString string = SubString(binding, ".");
+        SubString substring = SubString(binding, ".");
         std::string name;
         std::string group;
-        switch(string.size())
+        switch(substring.size())
         {
             case 0:
@@ -127,7 +127,7 @@
                 return binding;
             case 2:
-                group = string[0];
+                group = substring[0];
             default:
-                name = string.subSet(1, string.size()).join(".");
+                name = substring.subSet(1).join(".");
         }
 
@@ -148,4 +148,4 @@
         return *(new std::string(stream.str()));
     }
-    
+
 }
