Index: branches/new_class_id/src/lib/util/executor/executor_functional.h
===================================================================
--- branches/new_class_id/src/lib/util/executor/executor_functional.h	(revision 9735)
+++ branches/new_class_id/src/lib/util/executor/executor_functional.h	(revision 9736)
@@ -54,16 +54,47 @@
 
 /**
+ * @brief this is a Template Class used as an evaluater.
+ *
+ * Trait to determine a default Value for any Type,
+ * and to define the Convertible, and how it is transformed into the
+ * corresponding SubTypes over the operator().
+ *
+ * This Class must be reimplemented for each Convertible and all of its
+ *  conversion-members.
+ *
+ * e.g: Convertible SubSting, that splits up into many Stings
+ *      conversion-members: (int) can be transformed from a String.
+ */
+template<typename FromType> class ExecutorEvaluater
+{
+public:
+  /** @brief Executes the Evaluater
+   * @param CallValue the Value that should be converted
+   * @param defaults the default Values.
+   */
+  template <typename ToType, int index>
+  ToType operator()(FromType& CallValue, const MultiType* const defaults)
+  {
+    return defaultValue; /*(CallValue.size() > index) ?
+           fromString<ToType>(CallValue[index], getDefault<ToType>(defaults, index)) :
+    fromMulti<ToType>(defaults[index]); */
+  }
+  static FromType& defaultValue() { return FromType(); };
+};
+
+/**
  * @brief to remove writing errors, this function is Used.
  * @param sub The SubString to use
  * @param default The default Values.
  */
-template<typename FromType, typename ToType, int index> class ExecutorEvaluater
-{
-public:
-  /** @brief Executes the Evaluator
+template<> class ExecutorEvaluater <const SubString>
+{
+public:
+  /** @brief Executes the Evaluater
    * @param CallValue the Value that should be converted
    * @param defaults the default Values.
    */
-  ToType operator()(FromType& CallValue, const MultiType* const defaults)
+  template <typename ToType, int index>
+  ToType operator()(const SubString& CallValue, const MultiType* const defaults)
   {
     return (CallValue.size() > index) ?
@@ -71,5 +102,9 @@
            fromMulti<ToType>(defaults[index]);
   }
-};
+  static const SubString& defaultValue() { return SubString::NullSubString; };
+};
+
+
+
 
 #endif /* __EXECUTOR_FUNCTIONAL_H_ */
@@ -137,5 +172,5 @@
 ///////////
 //! @brief ExecutorClass, that can execute Functions without any parameters.
-template<class T, typename CallType, template<typename, typename, int> class Evaluater = ExecutorEvaluater, class BaseClass = BaseObject>
+template<class T, typename CallType, template<typename> class Evaluater = ExecutorEvaluater, class BaseClass = BaseObject>
 class __EXECUTOR_FUNCTIONAL_NAME(0) :public Executor<CallType, BaseClass>
 {
@@ -160,5 +195,5 @@
    * @param sub the SubString to get the Parameters from.
    */
-  virtual void operator()(BaseObject* object, CallType& sub = SubString()) const
+  virtual void operator()(BaseObject* object, CallType& sub = Evaluater<CallType>::defaultValue()) const
   {
     (__EXECUTOR_FUNCTIONAL_FUNCTION_EXEC)();
@@ -183,5 +218,5 @@
 ///////////
 //! @brief ExecutorClass, that can execute Functions with one parameter.
-template<class T, typename CallType, typename type0, template<typename, typename, int> class Evaluater = ExecutorEvaluater, class BaseClass = BaseObject>
+template<class T, typename CallType, typename type0, template<typename> class Evaluater = ExecutorEvaluater, class BaseClass = BaseObject>
 class __EXECUTOR_FUNCTIONAL_NAME(1) : public Executor<CallType, BaseClass>
 {
@@ -206,8 +241,8 @@
    * @param sub the SubString to get the Parameters from.
    */
-  virtual void operator()(BaseObject* object, CallType& sub = SubString()) const
+  virtual void operator()(BaseObject* object, CallType& sub = Evaluater<CallType>::defaultValue()) const
   {
     (__EXECUTOR_FUNCTIONAL_FUNCTION_EXEC)(
-      Evaluater<CallType, type0, 0>()(sub, this->defaultValue));
+      Evaluater<CallType>().template operator()<type0, 0>(sub, this->defaultValue));
   };
 
@@ -230,5 +265,5 @@
 ///////////
 //! @brief ExecutorClass, that can execute Functions with two parameters.
-template<class T, typename CallType, typename type0, typename type1, template<typename, typename, int> class Evaluater = ExecutorEvaluater, class BaseClass = BaseObject>
+template<class T, typename CallType, typename type0, typename type1, template<typename> class Evaluater = ExecutorEvaluater, class BaseClass = BaseObject>
 class __EXECUTOR_FUNCTIONAL_NAME(2) : public Executor<CallType, BaseClass>
 {
@@ -243,5 +278,5 @@
    */
   __EXECUTOR_FUNCTIONAL_NAME(2) (void (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)(type0, type1) __EXECUTOR_FUNCTIONAL_CONST)
-  : Executor<CallType, BaseClass>(false, ExecutorParamType<type0>(), ExecutorParamType<type1>(), __EXECUTOR_FUNCTIONAL_FUNCTIONTYPE)
+      : Executor<CallType, BaseClass>(false, ExecutorParamType<type0>(), ExecutorParamType<type1>(), __EXECUTOR_FUNCTIONAL_FUNCTIONTYPE)
   {
     this->functionPointer = functionPointer;
@@ -253,9 +288,9 @@
    * @param sub the SubString to get the Parameters from.
    */
-  virtual void operator()(BaseObject* object, CallType& sub = SubString()) const
+  virtual void operator()(BaseObject* object, CallType& sub = Evaluater<CallType>::defaultValue()) const
   {
     (__EXECUTOR_FUNCTIONAL_FUNCTION_EXEC)(
-      Evaluater<CallType, type0, 0>()(sub, this->defaultValue),
-      Evaluater<CallType, type1, 1>()(sub, this->defaultValue));
+      Evaluater<CallType>().template operator()<type0, 0>(sub, this->defaultValue),
+      Evaluater<CallType>().template operator()<type1, 1>(sub, this->defaultValue));
   };
 
@@ -278,5 +313,5 @@
 ///////////
 //! @brief ExecutorClass, that can execute Functions with three parameters.
-template<class T, typename CallType, typename type0, typename type1, typename type2, template<typename, typename, int> class Evaluater = ExecutorEvaluater, class BaseClass = BaseObject>
+template<class T, typename CallType, typename type0, typename type1, typename type2, template<typename> class Evaluater = ExecutorEvaluater, class BaseClass = BaseObject>
 class __EXECUTOR_FUNCTIONAL_NAME(3) : public Executor<CallType, BaseClass>
 {
@@ -291,5 +326,5 @@
    */
   __EXECUTOR_FUNCTIONAL_NAME(3) (void (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)(type0, type1, type2) __EXECUTOR_FUNCTIONAL_CONST)
-  : Executor<CallType, BaseClass>(false, ExecutorParamType<type0>(), ExecutorParamType<type1>(), ExecutorParamType<type2>(), __EXECUTOR_FUNCTIONAL_FUNCTIONTYPE)
+      : Executor<CallType, BaseClass>(false, ExecutorParamType<type0>(), ExecutorParamType<type1>(), ExecutorParamType<type2>(), __EXECUTOR_FUNCTIONAL_FUNCTIONTYPE)
   {
     this->functionPointer = functionPointer;
@@ -301,10 +336,10 @@
    * @param sub the SubString to get the Parameters from.
    */
-  virtual void operator()(BaseObject* object, CallType& sub = SubString()) const
+  virtual void operator()(BaseObject* object, CallType& sub = Evaluater<CallType>::defaultValue()) const
   {
     (__EXECUTOR_FUNCTIONAL_FUNCTION_EXEC)(
-      Evaluater<CallType, type0, 0>()(sub, this->defaultValue),
-      Evaluater<CallType, type1, 1>()(sub, this->defaultValue),
-      Evaluater<CallType, type2, 2>()(sub, this->defaultValue));
+      Evaluater<CallType>().template operator()<type0, 0>(sub, this->defaultValue),
+      Evaluater<CallType>().template operator()<type1, 1>(sub, this->defaultValue),
+      Evaluater<CallType>().template operator()<type2, 2>(sub, this->defaultValue));
   };
 
@@ -327,5 +362,5 @@
 ///////////
 //! @brief ExecutorClass, that can execute Functions with four parameters.
-template<class T, typename CallType, typename type0, typename type1, typename type2, typename type3, template<typename, typename, int> class Evaluater = ExecutorEvaluater, class BaseClass = BaseObject>
+template<class T, typename CallType, typename type0, typename type1, typename type2, typename type3, template<typename> class Evaluater = ExecutorEvaluater, class BaseClass = BaseObject>
 class __EXECUTOR_FUNCTIONAL_NAME(4) : public Executor<CallType, BaseClass>
 {
@@ -340,5 +375,5 @@
    */
   __EXECUTOR_FUNCTIONAL_NAME(4) (void (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)(type0, type1, type2, type3) __EXECUTOR_FUNCTIONAL_CONST)
-  : Executor<CallType, BaseClass>(false, ExecutorParamType<type0>(), ExecutorParamType<type1>(), ExecutorParamType<type2>(), ExecutorParamType<type3>(), __EXECUTOR_FUNCTIONAL_FUNCTIONTYPE)
+      : Executor<CallType, BaseClass>(false, ExecutorParamType<type0>(), ExecutorParamType<type1>(), ExecutorParamType<type2>(), ExecutorParamType<type3>(), __EXECUTOR_FUNCTIONAL_FUNCTIONTYPE)
   {
     this->functionPointer = functionPointer;
@@ -350,11 +385,11 @@
   * @param sub the SubString to get the Parameters from.
    */
-  virtual void operator()(BaseObject* object, CallType& sub = SubString()) const
+  virtual void operator()(BaseObject* object, CallType& sub = Evaluater<CallType>::defaultValue()) const
   {
     (__EXECUTOR_FUNCTIONAL_FUNCTION_EXEC)(
-      Evaluater<CallType, type0, 0>()(sub, this->defaultValue),
-      Evaluater<CallType, type1, 1>()(sub, this->defaultValue),
-      Evaluater<CallType, type2, 2>()(sub, this->defaultValue),
-      Evaluater<CallType, type3, 3>()(sub, this->defaultValue));
+      Evaluater<CallType>().template operator()<type0, 0>(sub, this->defaultValue),
+      Evaluater<CallType>().template operator()<type1, 1>(sub, this->defaultValue),
+      Evaluater<CallType>().template operator()<type2, 2>(sub, this->defaultValue),
+      Evaluater<CallType>().template operator()<type3, 3>(sub, this->defaultValue));
   };
 
@@ -378,5 +413,5 @@
 ///////////
 //! @brief ExecutorClass, that can execute Functions with five parameters.
-template<class T, typename CallType, typename type0, typename type1, typename type2, typename type3, typename type4, template<typename, typename, int> class Evaluater = ExecutorEvaluater, class BaseClass = BaseObject>
+template<class T, typename CallType, typename type0, typename type1, typename type2, typename type3, typename type4, template<typename> class Evaluater = ExecutorEvaluater, class BaseClass = BaseObject>
 class __EXECUTOR_FUNCTIONAL_NAME(5) : public Executor<CallType, BaseClass>
 {
@@ -391,5 +426,5 @@
    */
   __EXECUTOR_FUNCTIONAL_NAME(5) (void (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)(type0, type1, type2, type3, type4) __EXECUTOR_FUNCTIONAL_CONST)
-  : Executor<CallType, BaseClass>(false, ExecutorParamType<type0>(), ExecutorParamType<type1>(), ExecutorParamType<type2>(), ExecutorParamType<type3>(), ExecutorParamType<type4>(), __EXECUTOR_FUNCTIONAL_FUNCTIONTYPE)
+      : Executor<CallType, BaseClass>(false, ExecutorParamType<type0>(), ExecutorParamType<type1>(), ExecutorParamType<type2>(), ExecutorParamType<type3>(), ExecutorParamType<type4>(), __EXECUTOR_FUNCTIONAL_FUNCTIONTYPE)
   {
     this->functionPointer = functionPointer;
@@ -401,12 +436,12 @@
   * @param sub the SubString to get the Parameters from.
    */
-  virtual void operator()(BaseObject* object, CallType& sub = SubString()) const
+  virtual void operator()(BaseObject* object, CallType& sub = Evaluater<CallType>::defaultValue()) const
   {
     (__EXECUTOR_FUNCTIONAL_FUNCTION_EXEC)(
-      Evaluater<CallType, type0, 0>()(sub, this->defaultValue),
-      Evaluater<CallType, type1, 1>()(sub, this->defaultValue),
-      Evaluater<CallType, type2, 2>()(sub, this->defaultValue),
-      Evaluater<CallType, type3, 3>()(sub, this->defaultValue),
-      Evaluater<CallType, type4, 4>()(sub, this->defaultValue));
+      Evaluater<CallType>().template operator()<type0, 0>(sub, this->defaultValue),
+      Evaluater<CallType>().template operator()<type1, 1>(sub, this->defaultValue),
+      Evaluater<CallType>().template operator()<type2, 2>(sub, this->defaultValue),
+      Evaluater<CallType>().template operator()<type3, 3>(sub, this->defaultValue),
+      Evaluater<CallType>().template operator()<type4, 4>(sub, this->defaultValue));
   };
 
Index: branches/new_class_id/src/lib/util/substring.cc
===================================================================
--- branches/new_class_id/src/lib/util/substring.cc	(revision 9735)
+++ branches/new_class_id/src/lib/util/substring.cc	(revision 9736)
@@ -109,4 +109,6 @@
 /** @brief Helper that gets you a String consisting of all WhiteSpaces and the Comma */
 const std::string SubString::WhiteSpacesWithComma = " \n\t,";
+/** An Empty SubString */
+const SubString SubString::NullSubString = SubString();
 
 /**
Index: branches/new_class_id/src/lib/util/substring.h
===================================================================
--- branches/new_class_id/src/lib/util/substring.h	(revision 9735)
+++ branches/new_class_id/src/lib/util/substring.h	(revision 9736)
@@ -110,4 +110,5 @@
   static const std::string WhiteSpaces;
   static const std::string WhiteSpacesWithComma;
+  static const SubString   NullSubString;
 
 private:
