Index: /branches/new_class_id/src/lib/util/executor/executor.cc
===================================================================
--- /branches/new_class_id/src/lib/util/executor/executor.cc	(revision 9732)
+++ /branches/new_class_id/src/lib/util/executor/executor.cc	(revision 9733)
@@ -18,5 +18,4 @@
 #include "executor.h"
 
-
 template<> MT_Type ExecutorParamType<bool>() { return MT_BOOL; };
 template<> MT_Type ExecutorParamType<int>() { return MT_INT; };
@@ -25,96 +24,2 @@
 template<> MT_Type ExecutorParamType<char>() { return MT_CHAR; };
 template<> MT_Type ExecutorParamType<const std::string&>() { return MT_STRING; };
-
-
-
-/**
- * @brief constructs and registers a new Command
- * @param commandName the name of the Command
- * @param className the name of the class to apply this command to
- * @param paramCount the count of parameters this command takes
- */
-ExecutorBase::ExecutorBase(bool hasRetVal,
-                           const MultiType& param0,
-                           const MultiType& param1,
-                           const MultiType& param2,
-                           const MultiType& param3,
-                           const MultiType& param4,
-                           const MultiType& param5,
-                           const MultiType& param6)
-  : bRetVal(hasRetVal)
-{
-  // What Parameters have we got
-  this->defaultValue[0] = param0;
-  this->defaultValue[1] = param1;
-  this->defaultValue[2] = param2;
-  this->defaultValue[3] = param3;
-  this->defaultValue[4] = param4;
-  this->defaultValue[5] = param5;
-  this->defaultValue[6] = param6;
-
-  this->paramCount = 0;
-  for (unsigned int i = 0; i <= EXECUTOR_MAX_ARGUMENTS; i++)
-  {
-    if (this->defaultValue[i] == MT_NULL || i == EXECUTOR_MAX_ARGUMENTS)
-    {
-      this->paramCount = i;
-      break;
-    }
-    else
-      this->defaultValue[i].storeString();
-  }
-}
-
-/**
- * clones this element into executor.
- * @param executor the Executor to clone
- */
-void ExecutorBase::cloning(ExecutorBase* executor) const
-{
-  executor->functorType  = this->functorType;
-  executor->paramCount   = this->paramCount;
-  for (unsigned int i = 0; i < this->paramCount; i++)
-    executor->defaultValue[i] =  this->defaultValue[i];
-}
-
-/**
- * @brief set the default values of the executor
- * @param value0 the first default value
- * @param value1 the second default value
- * @param value2 the third default value
- * @param value3 the fourth default value
- * @param value4 the fifth default value
- * @returns itself
- */
-void ExecutorBase::defaultValues(const MultiType& value0,
-                                  const MultiType& value1,
-                                  const MultiType& value2,
-                                  const MultiType& value3,
-                                  const MultiType& value4,
-                                  const MultiType& value5,
-                                  const MultiType& value6)
-{
-  const MultiType* value[5];
-  value[0] = &value0;
-  value[1] = &value1;
-  value[2] = &value2;
-  value[3] = &value3;
-  value[4] = &value4;
-  value[5] = &value5;
-  value[6] = &value6;
-  for (unsigned int i = 0; i < this->paramCount; i++)
-  {
-    if (*value[i] != MT_NULL)
-    {
-      this->defaultValue[i].setValueOf(*value[i]);
-      this->defaultValue[i].storeString();
-    }
-  }
-}
-
-/**
- * @brief prints out nice information about the Executor
- */
-void ExecutorBase::debug()
-{
-}
Index: /branches/new_class_id/src/lib/util/executor/executor.h
===================================================================
--- /branches/new_class_id/src/lib/util/executor/executor.h	(revision 9732)
+++ /branches/new_class_id/src/lib/util/executor/executor.h	(revision 9733)
@@ -9,13 +9,5 @@
 #include "base_object.h"
 
-#include "helper_functions.h"
 #include "multi_type.h"
-#include "functor_list.h" //< MUST BE INCLUDED HERE AT LEAST ONCE.
-
-//! an enumerator for the definition of the Type.
-typedef enum {
-  Executor_Objective,
-  Executor_Static,
-} Executor_Type;
 
 //! The maximum Count of Arguments of the Executor
@@ -47,13 +39,25 @@
  *  Functions with many types (@see functor_list.h)
  */
-class ExecutorBase
+template <typename CallType> class Executor
 {
 public:
+  //! an enumerator for the definition of the Type.
+  typedef enum {
+    FunctionDefault,
+    FunctionStatic,
+    FunctionConst,
+  } FunctionType;
+
+public:
+  virtual ~Executor() {};
+
+  // RETRIEVE INFORMATION
   /** @param i the i'th defaultValue, @returns reference to the MultiType */
   inline MultiType& getDefaultValue(unsigned int i) { return defaultValue[i]; };
+  /** @returns the default Values as a List */
+  inline const MultiType* const getDefaultValues() { return defaultValue; };
 
-  // RETRIEVE INFORMATION
   /** @returns the Type of this Function (either static or objective) */
-  inline Executor_Type getType() const { return this->functorType; };
+  inline FunctionType getType() const { return this->functionType; };
 
   /** @returns the Count of Parameters this Executor takes */
@@ -61,38 +65,4 @@
   /** @returns true if the Executor has a return Value. */
   inline bool hasRetVal() const { return bRetVal; };
-
-  static void debug();
-
-protected:
-  virtual ~ExecutorBase() {};
-  ExecutorBase(bool hasRetVal = false,
-               const MultiType& param0 = MT_NULL, const MultiType& param1 = MT_NULL,
-               const MultiType& param2 = MT_NULL, const MultiType& param3 = MT_NULL,
-               const MultiType& param4 = MT_NULL, const MultiType& param5 = MT_NULL,
-               const MultiType& param6 = MT_NULL);
-
-  // SETTING up the EXECUTOR
-  void defaultValues(const MultiType& value0 = MT_NULL, const MultiType& value1 = MT_NULL,
-                     const MultiType& value2 = MT_NULL, const MultiType& value3 = MT_NULL,
-                     const MultiType& value4 = MT_NULL, const MultiType& param5 = MT_NULL,
-                     const MultiType& param6 = MT_NULL);
-
-  void cloning(ExecutorBase* executor) const;
-
-protected:
-  Executor_Type               functorType;      //!< The type of Function we've got (either static or objective).
-  unsigned int                paramCount;       //!< the count of parameters.
-  MultiType                   defaultValue[7];  //!< Default Values.
-
-private:
-  const bool                  bRetVal;          //!< True if the Executor has a return Value.
-  const bool                  bStaticFunction;  //!< A Executor to a Static Function
-  const bool                  bConstFunction;   //!< A Executor to a Constant Function
-};
-
-template <typename CallType> class Executor : public ExecutorBase
-{
-public:
-  virtual Executor<CallType>* clone () const = 0;
 
   /** executes a Command. @param objec the Object, @param count how many values, @param values the Values */
@@ -114,7 +84,24 @@
                           const MultiType& value6 = MT_NULL)
   {
-    this->ExecutorBase::defaultValues(value0, value1, value2, value3, value4, value5, value6);
+    const MultiType* value[5];
+    value[0] = &value0;
+    value[1] = &value1;
+    value[2] = &value2;
+    value[3] = &value3;
+    value[4] = &value4;
+    value[5] = &value5;
+    value[6] = &value6;
+    for (unsigned int i = 0; i < this->paramCount; i++)
+    {
+      if (*value[i] != MT_NULL)
+      {
+        this->defaultValue[i].setValueOf(*value[i]);
+        this->defaultValue[i].storeString();
+      }
+    }
     return this;
   }
+
+  virtual Executor<CallType>* clone () const = 0;
 
 protected:
@@ -124,7 +111,38 @@
            const MultiType& param4 = MT_NULL, const MultiType& param5 = MT_NULL,
            const MultiType& param6 = MT_NULL)
-      : ExecutorBase(hasRetVal, param0, param1, param2, param3, param4, param5, param6)
-{}}
-;
+      : bRetVal(hasRetVal)
+  {
+    // What Parameters have we got
+    this->defaultValue[0] = param0;
+    this->defaultValue[1] = param1;
+    this->defaultValue[2] = param2;
+    this->defaultValue[3] = param3;
+    this->defaultValue[4] = param4;
+    this->defaultValue[5] = param5;
+    this->defaultValue[6] = param6;
+
+    this->paramCount = 0;
+    for (unsigned int i = 0; i <= EXECUTOR_MAX_ARGUMENTS; i++)
+    {
+      if (this->defaultValue[i] == MT_NULL || i == EXECUTOR_MAX_ARGUMENTS)
+      {
+        this->paramCount = i;
+        break;
+      }
+      else
+        this->defaultValue[i].storeString();
+    }
+  }
+
+
+
+protected:
+  unsigned int                paramCount;       //!< the count of parameters.
+  MultiType                   defaultValue[7];  //!< Default Values.
+
+  FunctionType          functionType;     //!< What Type of Function it is.
+private:
+  const bool                  bRetVal;          //!< True if the Executor has a return Value.
+};
 
 #endif /* _EXECUTOR_H */
Index: /branches/new_class_id/src/lib/util/executor/executor_functional.h
===================================================================
--- /branches/new_class_id/src/lib/util/executor/executor_functional.h	(revision 9732)
+++ /branches/new_class_id/src/lib/util/executor/executor_functional.h	(revision 9733)
@@ -140,5 +140,5 @@
       : Executor<CallType>(false)
   {
-    this->functorType = Executor_Objective;
+    this->functionType = Executor<CallType>::FunctionDefault;
     this->functionPointer = functionPointer;
   };
@@ -185,5 +185,5 @@
       : Executor<CallType>(false, ExecutorParamType<type0>())
   {
-    this->functorType = Executor_Objective;
+    this->functionType = Executor<CallType>::FunctionDefault;
     this->functionPointer = functionPointer;
   };
@@ -229,5 +229,5 @@
       : Executor<CallType>(false, ExecutorParamType<type0>(), ExecutorParamType<type1>())
   {
-    this->functorType = Executor_Objective;
+    this->functionType = Executor<CallType>::FunctionDefault;
     this->functionPointer = functionPointer;
   };
@@ -275,5 +275,5 @@
       : Executor<CallType>(false, ExecutorParamType<type0>(), ExecutorParamType<type1>(), ExecutorParamType<type2>())
   {
-    this->functorType = Executor_Objective;
+    this->functionType = Executor<CallType>::FunctionDefault;
     this->functionPointer = functionPointer;
   };
@@ -323,5 +323,5 @@
       : Executor<CallType>(false, ExecutorParamType<type0>(), ExecutorParamType<type1>(), ExecutorParamType<type2>(), ExecutorParamType<type3>())
   {
-    this->functorType = Executor_Objective;
+    this->functionType = Executor<CallType>::FunctionDefault;
     this->functionPointer = functionPointer;
   };
@@ -372,5 +372,5 @@
       : Executor<CallType>(false, ExecutorParamType<type0>(), ExecutorParamType<type1>(), ExecutorParamType<type2>(), ExecutorParamType<type3>(), ExecutorParamType<type4>())
   {
-    this->functorType = Executor_Objective;
+    this->functionType = Executor<CallType>::FunctionDefault;
     this->functionPointer = functionPointer;
   };
Index: /branches/new_class_id/src/lib/util/executor/executor_lua.h
===================================================================
--- /branches/new_class_id/src/lib/util/executor/executor_lua.h	(revision 9732)
+++ /branches/new_class_id/src/lib/util/executor/executor_lua.h	(revision 9733)
@@ -51,5 +51,5 @@
   {
     this->functionPointer = function;
-    this->functorType = Executor_Objective;
+    this->functionType = Executor<lua_State*>::FunctionDefault;
   }
 
@@ -88,5 +88,5 @@
   {
     this->functionPointer = function;
-    this->functorType = Executor_Objective;
+    this->functionType = Executor<lua_State*>::FunctionDefault;
   }
 
@@ -124,5 +124,5 @@
   {
     this->functionPointer = function;
-    this->functorType = Executor_Objective;
+    this->functionType = Executor<lua_State*>::FunctionDefault;
   }
 
@@ -161,5 +161,5 @@
   {
     this->functionPointer = function;
-    this->functorType = Executor_Objective;
+    this->functionType = Executor<lua_State*>::FunctionDefault;
   }
 
@@ -200,5 +200,5 @@
   {
     this->functionPointer = function;
-    this->functorType = Executor_Objective;
+    this->functionType = Executor<lua_State*>::FunctionDefault;
   }
 
@@ -246,5 +246,5 @@
   {
     this->functionPointer = function;
-    this->functorType = Executor_Objective;
+    this->functionType = Executor<lua_State*>::FunctionDefault;
   }
 
@@ -282,5 +282,5 @@
   {
     this->functionPointer = function;
-    this->functorType = Executor_Objective;
+    this->functionType = Executor<lua_State*>::FunctionDefault;
   }
 
@@ -317,5 +317,5 @@
   {
     this->functionPointer = function;
-    this->functorType = Executor_Objective;
+    this->functionType = Executor<lua_State*>::FunctionDefault;
   }
 
@@ -354,5 +354,5 @@
   {
     this->functionPointer = function;
-    this->functorType = Executor_Objective;
+    this->functionType = Executor<lua_State*>::FunctionDefault;
   }
 
@@ -392,5 +392,5 @@
   {
     this->functionPointer = function;
-    this->functorType = Executor_Objective;
+    this->functionType = Executor<lua_State*>::FunctionDefault;
   }
 
@@ -430,5 +430,5 @@
   {
     this->functionPointer = function;
-    this->functorType = Executor_Objective;
+    this->functionType = Executor<lua_State*>::FunctionDefault;
   }
 
@@ -471,5 +471,5 @@
   {
     this->functionPointer = function;
-    this->functorType = Executor_Objective;
+    this->functionType = Executor<lua_State*>::FunctionDefault;
   }
 
@@ -514,5 +514,5 @@
   {
     this->functionPointer = function;
-    this->functorType = Executor_Objective;
+    this->functionType = Executor<lua_State*>::FunctionDefault;
   }
 
Index: /branches/new_class_id/src/lib/util/executor/executor_xml.h
===================================================================
--- /branches/new_class_id/src/lib/util/executor/executor_xml.h	(revision 9732)
+++ /branches/new_class_id/src/lib/util/executor/executor_xml.h	(revision 9733)
@@ -40,5 +40,5 @@
     this->paramName = paramName;
     this->functionPointer = function;
-    this->functorType = Executor_Objective;
+    this->functionType = FunctionDefault;
   }
 
