Index: trunk/src/lib/util/executor/executor.cc
===================================================================
--- trunk/src/lib/util/executor/executor.cc	(revision 5636)
+++ trunk/src/lib/util/executor/executor.cc	(revision 5641)
@@ -32,4 +32,10 @@
 // SHELL COMMAND BASE //
 ////////////////////////
+// empty constructor
+Executor::Executor()
+{
+  this->defaultValue = NULL;
+}
+
 /**
  * constructs and registers a new Command
@@ -63,4 +69,18 @@
   delete[] this->defaultValue;
 }
+
+/**
+ * clones this element into executor.
+ */
+void Executor::cloning(Executor* executor) const
+{
+  executor->functorType  = this->functorType;
+  executor->paramCount   = this->paramCount;
+  executor->defaultValue = new MultiType[this->paramCount];
+  for (unsigned int i = 0; i < this->paramCount; i++)
+    executor->defaultValue[i] = this->defaultValue[i];
+}
+
+
 
 /**
Index: trunk/src/lib/util/executor/executor.h
===================================================================
--- trunk/src/lib/util/executor/executor.h	(revision 5636)
+++ trunk/src/lib/util/executor/executor.h	(revision 5641)
@@ -22,5 +22,5 @@
 typedef enum {
   Executor_Objective   = 1,
-  Executor_Static    = 2,
+  Executor_Static      = 2,
 } Executor_Type;
 
@@ -32,4 +32,8 @@
 {
   public:
+    virtual ~Executor();
+
+    virtual Executor* clone () const = 0;
+
     Executor* defaultValues(unsigned int count, ...);
     Executor* defaultValues(unsigned int count, va_list values);
@@ -38,12 +42,14 @@
     virtual void execute (BaseObject* object, const char* parameters) = 0;
 
+    /** @returns the Type of this Function (either static or objective) */
+    inline Executor_Type getType() const { return this->functorType; };
+
     static void debug();
 
   protected:
+    Executor();
     Executor(unsigned int paramCount, ...);
-    ~Executor();
-
-    /** @returns the Type of this Function (either static or objective) */
-    inline Executor_Type getType() { return this->functorType; };
+
+    void cloning(Executor* executor) const;
 
   protected:
@@ -51,6 +57,4 @@
     unsigned int                     paramCount;                           //!< the count of parameters.
     MultiType*                       defaultValue;                         //!< Default Values.
-
-  private:
 };
 
@@ -226,6 +230,15 @@
 template<class T> class ExecutorObjective : public Executor
 {
-
   public:
+    ExecutorObjective() : Executor() { };
+    // COPY constuctor (virtual version)
+    virtual Executor* clone () const
+    {
+      ExecutorObjective<T>* executor = new ExecutorObjective<T>();
+      this->cloning(executor);
+      executor->fp = this->fp;
+      return executor;
+    }
+
 //! FUNCTOR_LIST is the List of CommandConstructors
 #define FUNCTOR_LIST(x) ExecutorConstructor ## x
@@ -279,4 +292,14 @@
 {
   public:
+    ExecutorStatic() : Executor() { };
+    // COPY constuctor
+    virtual Executor* clone () const
+    {
+      ExecutorStatic<T>* executor = new ExecutorStatic<T>();
+      this->cloning(executor);
+      executor->fp = this->fp;
+      return executor;
+    }
+
 //! FUNCTOR_LIST is the List of CommandConstructors
 #define FUNCTOR_LIST(x) ExecutorConstructor ## x
@@ -303,22 +326,3 @@
 };
 
-//! A Class, that handles aliases.
-class ExecutorAlias
-{
-  friend class ExecutorBase;
-  public:
-    /** @returns the Name of the Alias. */
-    const char* getName() const { return this->aliasName; };
-    /** @returns the Command, this Alias is asociated with */
-    ExecutorBase* getCommand() const { return this->command; };
-
-  private:
-    /** @param aliasName the name of the Alias @param command the Command, to associate this alias with */
-    ExecutorAlias(const char* aliasName, ExecutorBase* command) { this->aliasName = aliasName; this->command = command; };
-
-  private:
-    const char*         aliasName;       //!< the name of the Alias
-    ExecutorBase*       command;         //!< a pointer to the command, this alias executes.
-};
-
 #endif /* _EXECUTOR_H */
