Index: branches/new_class_id/src/lib/graphics/effects/cloud_effect.cc
===================================================================
--- branches/new_class_id/src/lib/graphics/effects/cloud_effect.cc	(revision 9745)
+++ branches/new_class_id/src/lib/graphics/effects/cloud_effect.cc	(revision 9746)
@@ -50,8 +50,8 @@
 
 CREATE_SCRIPTABLE_CLASS(CloudEffect, CloudEffect::classID(),
-                        addMethod("skyColor", ExecutorLua4<CloudEffect,float,float,float,float>(&CloudEffect::shellSkyColor))
-                        ->addMethod("cloudColor", ExecutorLua4<CloudEffect,float,float,float,float>(&CloudEffect::shellCloudColor))
-                        ->addMethod("activate", ExecutorLua0<CloudEffect>(&CloudEffect::activate))
-                        ->addMethod("deactivate", ExecutorLua0<CloudEffect>(&CloudEffect::deactivate))
+                        addMethod("skyColor", Executor4<CloudEffect, lua_State*,float,float,float,float>(&CloudEffect::shellSkyColor))
+                        ->addMethod("cloudColor", Executor4<CloudEffect, lua_State*,float,float,float,float>(&CloudEffect::shellCloudColor))
+                        ->addMethod("activate", Executor0<CloudEffect, lua_State*>(&CloudEffect::activate))
+                        ->addMethod("deactivate", Executor0<CloudEffect, lua_State*>(&CloudEffect::deactivate))
                        );
 
Index: branches/new_class_id/src/lib/graphics/effects/fog_effect.cc
===================================================================
--- branches/new_class_id/src/lib/graphics/effects/fog_effect.cc	(revision 9745)
+++ branches/new_class_id/src/lib/graphics/effects/fog_effect.cc	(revision 9746)
@@ -21,4 +21,5 @@
 #include "script_class.h"
 #include "cloud_effect.h"
+#include "debug.h"
 
 ObjectListDefinition(FogEffect);
@@ -32,8 +33,8 @@
 
 CREATE_SCRIPTABLE_CLASS(FogEffect, FogEffect::classID(),
-                        addMethod("fadeIn", ExecutorLua0<FogEffect>(&FogEffect::fadeInFog))
-                            ->addMethod("fadeOut", ExecutorLua0<FogEffect>(&FogEffect::fadeOutFog))
-                            ->addMethod("activate", ExecutorLua0<FogEffect>(&FogEffect::activate))
-                            ->addMethod("deactivate", ExecutorLua0<FogEffect>(&FogEffect::deactivate))
+                        addMethod("fadeIn", Executor0<FogEffect, lua_State*>(&FogEffect::fadeInFog))
+                            ->addMethod("fadeOut", Executor0<FogEffect, lua_State*>(&FogEffect::fadeOutFog))
+                            ->addMethod("activate", Executor0<FogEffect, lua_State*>(&FogEffect::activate))
+                            ->addMethod("deactivate", Executor0<FogEffect, lua_State*>(&FogEffect::deactivate))
                        );
 
Index: branches/new_class_id/src/lib/graphics/effects/lightning_effect.cc
===================================================================
--- branches/new_class_id/src/lib/graphics/effects/lightning_effect.cc	(revision 9745)
+++ branches/new_class_id/src/lib/graphics/effects/lightning_effect.cc	(revision 9746)
@@ -27,4 +27,5 @@
 #include "cloud_effect.h"
 #include "script_class.h"
+#include "debug.h"
 #include "class_id_DEPRECATED.h"
 
@@ -35,6 +36,6 @@
 
 CREATE_SCRIPTABLE_CLASS(LightningEffect, LightningEffect::classID(),
-                        addMethod("activate", ExecutorLua0<LightningEffect>(&LightningEffect::activate))
-                            ->addMethod("deactivate", ExecutorLua0<LightningEffect>(&LightningEffect::deactivate))
+                        addMethod("activate", Executor0<LightningEffect, lua_State*>(&LightningEffect::activate))
+                            ->addMethod("deactivate", Executor0<LightningEffect, lua_State*>(&LightningEffect::deactivate))
                        );
 
Index: branches/new_class_id/src/lib/graphics/effects/rain_effect.cc
===================================================================
--- branches/new_class_id/src/lib/graphics/effects/rain_effect.cc	(revision 9745)
+++ branches/new_class_id/src/lib/graphics/effects/rain_effect.cc	(revision 9746)
@@ -30,4 +30,5 @@
 #include "cloud_effect.h"
 #include "script_class.h"
+#include "debug.h"
 
 #include "class_id_DEPRECATED.h"
@@ -44,8 +45,8 @@
 
 CREATE_SCRIPTABLE_CLASS(RainEffect, RainEffect::classID(),
-                        addMethod("startRaining", ExecutorLua0<RainEffect>(&RainEffect::startRaining))
-                            ->addMethod("stopRaining", ExecutorLua0<RainEffect>(&RainEffect::stopRaining))
-                            ->addMethod("activate", ExecutorLua0<RainEffect>(&RainEffect::activate))
-                            ->addMethod("deactivate", ExecutorLua0<RainEffect>(&RainEffect::deactivate))
+                        addMethod("startRaining", Executor0<RainEffect, lua_State*>(&RainEffect::startRaining))
+                            ->addMethod("stopRaining", Executor0<RainEffect, lua_State*>(&RainEffect::stopRaining))
+                            ->addMethod("activate", Executor0<RainEffect, lua_State*>(&RainEffect::activate))
+                            ->addMethod("deactivate", Executor0<RainEffect, lua_State*>(&RainEffect::deactivate))
                        );
 
Index: branches/new_class_id/src/lib/graphics/effects/snow_effect.cc
===================================================================
--- branches/new_class_id/src/lib/graphics/effects/snow_effect.cc	(revision 9745)
+++ branches/new_class_id/src/lib/graphics/effects/snow_effect.cc	(revision 9746)
@@ -38,6 +38,6 @@
 
 CREATE_SCRIPTABLE_CLASS(SnowEffect, SnowEffect::classID(),
-                            addMethod("activate", ExecutorLua0<SnowEffect>(&SnowEffect::activate))
-                            ->addMethod("deactivate", ExecutorLua0<SnowEffect>(&SnowEffect::deactivate))
+                            addMethod("activate", Executor0<SnowEffect, lua_State*>(&SnowEffect::activate))
+                            ->addMethod("deactivate", Executor0<SnowEffect, lua_State*>(&SnowEffect::deactivate))
                        );
 
Index: branches/new_class_id/src/lib/script_engine/script.cc
===================================================================
--- branches/new_class_id/src/lib/script_engine/script.cc	(revision 9745)
+++ branches/new_class_id/src/lib/script_engine/script.cc	(revision 9746)
@@ -26,8 +26,8 @@
 
 CREATE_SCRIPTABLE_CLASS(Script, Script::classID(),
-                    addMethod("addObject", ExecutorLua2<Script,const std::string&, const std::string& >(&Script::addObject))
-                    ->addMethod("registerClass", ExecutorLua1<Script,const std::string&>(&Script::registerClass))
-                    ->addMethod("selectFunction", ExecutorLua2ret<Script, bool, const std::string&, int >(&Script::selectFunction))
-                    ->addMethod("executeFunction", ExecutorLua0ret<Script,bool >(&Script::executeFunction))
+                    addMethod("addObject", Executor2<Script, lua_State*,const std::string&, const std::string& >(&Script::addObject))
+                    ->addMethod("registerClass", Executor1<Script, lua_State*,const std::string&>(&Script::registerClass))
+                    ->addMethod("selectFunction", Executor2ret<Script, lua_State*, bool, const std::string&, int >(&Script::selectFunction))
+                    ->addMethod("executeFunction", Executor0ret<Script, lua_State*,bool >(&Script::executeFunction))
                      );
 
Index: branches/new_class_id/src/lib/script_engine/script_method.h
===================================================================
--- branches/new_class_id/src/lib/script_engine/script_method.h	(revision 9745)
+++ branches/new_class_id/src/lib/script_engine/script_method.h	(revision 9746)
@@ -9,6 +9,6 @@
 #include <vector>
 
-#include "executor/executor_lua.h"
-
+#include "executor/executor_lua_state.h"
+#include "executor/executor_member.h"
 
 class ScriptMethod
Index: branches/new_class_id/src/lib/util/Makefile.am
===================================================================
--- branches/new_class_id/src/lib/util/Makefile.am	(revision 9745)
+++ branches/new_class_id/src/lib/util/Makefile.am	(revision 9746)
@@ -8,5 +8,4 @@
 libORXexecutor_a_SOURCES = \
 		executor/executor.cc \
-		executor/executor_lua.cc \
 		executor/executor_lua_state.cc \
 		executor/executor_substring.cc
@@ -49,5 +48,4 @@
 		executor/executor.h \
 		executor/executor_xml.h \
-		executor/executor_lua.h \
 		executor/executor_lua_state.h \
 		executor/executor_substring.h \
Index: branches/new_class_id/src/lib/util/executor/executor_generic.h
===================================================================
--- branches/new_class_id/src/lib/util/executor/executor_generic.h	(revision 9745)
+++ branches/new_class_id/src/lib/util/executor/executor_generic.h	(revision 9746)
@@ -74,8 +74,6 @@
    */
   __EXECUTOR_FUNCTIONAL_NAME(0,) (void (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)() __EXECUTOR_FUNCTIONAL_CONST )
-      : Executor<CallType, BaseClass>(false, __EXECUTOR_FUNCTIONAL_FUNCTIONTYPE)
-  {
-    this->functionPointer = functionPointer;
-  };
+      : Executor<CallType, BaseClass>(false, __EXECUTOR_FUNCTIONAL_FUNCTIONTYPE), functionPointer(functionPointer)
+  {};
 
   /**
@@ -118,8 +116,6 @@
    */
   __EXECUTOR_FUNCTIONAL_NAME(1,) (void (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)(type0) __EXECUTOR_FUNCTIONAL_CONST)
-      : Executor<CallType, BaseClass>(false, ExecutorParamType<type0>(), __EXECUTOR_FUNCTIONAL_FUNCTIONTYPE)
-  {
-    this->functionPointer = functionPointer;
-  };
+      : Executor<CallType, BaseClass>(false, ExecutorParamType<type0>(), __EXECUTOR_FUNCTIONAL_FUNCTIONTYPE), functionPointer(functionPointer)
+  {};
 
   /**
@@ -163,8 +159,6 @@
    */
   __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)
-  {
-    this->functionPointer = functionPointer;
-  };
+      : Executor<CallType, BaseClass>(false, ExecutorParamType<type0>(), ExecutorParamType<type1>(), __EXECUTOR_FUNCTIONAL_FUNCTIONTYPE), functionPointer(functionPointer)
+  {};
 
   /**
@@ -209,8 +203,6 @@
    */
   __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)
-  {
-    this->functionPointer = functionPointer;
-  };
+      : Executor<CallType, BaseClass>(false, ExecutorParamType<type0>(), ExecutorParamType<type1>(), ExecutorParamType<type2>(), __EXECUTOR_FUNCTIONAL_FUNCTIONTYPE), functionPointer(functionPointer)
+  {};
 
   /**
@@ -256,8 +248,6 @@
    */
   __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)
-  {
-    this->functionPointer = functionPointer;
-  };
+      : Executor<CallType, BaseClass>(false, ExecutorParamType<type0>(), ExecutorParamType<type1>(), ExecutorParamType<type2>(), ExecutorParamType<type3>(), __EXECUTOR_FUNCTIONAL_FUNCTIONTYPE), functionPointer(functionPointer)
+  {};
 
   /**
@@ -304,8 +294,6 @@
    */
   __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)
-  {
-    this->functionPointer = functionPointer;
-  };
+      : Executor<CallType, BaseClass>(false, ExecutorParamType<type0>(), ExecutorParamType<type1>(), ExecutorParamType<type2>(), ExecutorParamType<type3>(), ExecutorParamType<type4>(), __EXECUTOR_FUNCTIONAL_FUNCTIONTYPE), functionPointer(functionPointer)
+  {};
 
   /**
@@ -334,3 +322,128 @@
 };
 
+
+////////////////////
+//// 0 & RETURN ////
+////////////////////
+//! @brief ExecutorClass, that can execute Functions with one parameter.
+template<class T, typename CallType, typename ret, template<typename> class Evaluater = ExecutorEvaluater, class BaseClass = BaseObject>
+class __EXECUTOR_FUNCTIONAL_NAME(0,ret) : public Executor<CallType, BaseClass>
+{
+private:
+  /** @brief the FunctioPointer. */
+  ret (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)() __EXECUTOR_FUNCTIONAL_CONST;
+
+public:
+  /**
+   * @brief constructs the Executor.
+   * @param __EXECUTOR_FUNCTIONAL_FUNCTION_POINTER the FunctionPointer to the Calling Function.
+   */
+  __EXECUTOR_FUNCTIONAL_NAME(0,ret) (ret (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)() __EXECUTOR_FUNCTIONAL_CONST)
+      : Executor<CallType, BaseClass>(true, __EXECUTOR_FUNCTIONAL_FUNCTIONTYPE), functionPointer(functionPointer)
+  {};
+
+  /**
+     * @brief executes the Functional
+     * @param object the Object the action should be executed on.
+     * @param eval the CallType to get the Parameters from.
+   */
+  virtual void operator()(BaseObject* object, CallType& eval = Evaluater<CallType>::defaultValue()) const
+  {
+    Evaluater<CallType>().template storeRet<ret>(eval, (__EXECUTOR_FUNCTIONAL_FUNCTION_EXEC)());
+  };
+
+  /**
+     * @brief copies the Executor
+     * @returns a new Executor that's a copy of this one.
+   */
+  virtual Executor<CallType, BaseClass>* clone() const
+  {
+    return  new __EXECUTOR_FUNCTIONAL_NAME(0,ret)<T, CallType, ret>(this->functionPointer);
+  };
+};
+
+////////////////////
+//// 1 & RETURN ////
+////////////////////
+//! @brief ExecutorClass, that can execute Functions with one parameter.
+template<class T, typename CallType, typename ret, typename type0, template<typename> class Evaluater = ExecutorEvaluater, class BaseClass = BaseObject>
+class __EXECUTOR_FUNCTIONAL_NAME(1,ret) : public Executor<CallType, BaseClass>
+{
+private:
+  /** @brief the FunctioPointer. */
+  ret (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)(type0) __EXECUTOR_FUNCTIONAL_CONST;
+
+public:
+  /**
+   * @brief constructs the Executor.
+   * @param __EXECUTOR_FUNCTIONAL_FUNCTION_POINTER the FunctionPointer to the Calling Function.
+   */
+  __EXECUTOR_FUNCTIONAL_NAME(1,ret) (ret (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)(type0) __EXECUTOR_FUNCTIONAL_CONST)
+      : Executor<CallType, BaseClass>(true, ExecutorParamType<type0>(), __EXECUTOR_FUNCTIONAL_FUNCTIONTYPE), functionPointer(functionPointer)
+  {};
+
+  /**
+     * @brief executes the Functional
+     * @param object the Object the action should be executed on.
+     * @param eval the CallType to get the Parameters from.
+   */
+  virtual void operator()(BaseObject* object, CallType& eval = Evaluater<CallType>::defaultValue()) const
+  {
+    Evaluater<CallType>().template storeRet<ret>(eval, (__EXECUTOR_FUNCTIONAL_FUNCTION_EXEC)(
+          Evaluater<CallType>().template operator()<type0, 0>(eval, this->defaultValue)));
+  };
+
+  /**
+     * @brief copies the Executor
+     * @returns a new Executor that's a copy of this one.
+   */
+  virtual Executor<CallType, BaseClass>* clone() const
+  {
+    return  new __EXECUTOR_FUNCTIONAL_NAME(1,ret)<T, CallType, ret, type0>(this->functionPointer);
+  };
+};
+
+
+////////////////////
+//// 1 & RETURN ////
+////////////////////
+//! @brief ExecutorClass, that can execute Functions with one parameter.
+template<class T, typename CallType, typename ret, typename type0, typename type1, template<typename> class Evaluater = ExecutorEvaluater, class BaseClass = BaseObject>
+class __EXECUTOR_FUNCTIONAL_NAME(2,ret) : public Executor<CallType, BaseClass>
+{
+private:
+  /** @brief the FunctioPointer. */
+  ret (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)(type0, type1) __EXECUTOR_FUNCTIONAL_CONST;
+
+public:
+  /**
+   * @brief constructs the Executor.
+   * @param __EXECUTOR_FUNCTIONAL_FUNCTION_POINTER the FunctionPointer to the Calling Function.
+   */
+  __EXECUTOR_FUNCTIONAL_NAME(2,ret) (ret (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)(type0, type1) __EXECUTOR_FUNCTIONAL_CONST)
+      : Executor<CallType, BaseClass>(true, ExecutorParamType<type0>(), __EXECUTOR_FUNCTIONAL_FUNCTIONTYPE), functionPointer(functionPointer)
+  {};
+
+  /**
+     * @brief executes the Functional
+     * @param object the Object the action should be executed on.
+     * @param eval the CallType to get the Parameters from.
+   */
+  virtual void operator()(BaseObject* object, CallType& eval = Evaluater<CallType>::defaultValue()) const
+  {
+    Evaluater<CallType>().template storeRet<ret>(eval, (__EXECUTOR_FUNCTIONAL_FUNCTION_EXEC)(
+          Evaluater<CallType>().template operator()<type0, 0>(eval, this->defaultValue),
+          Evaluater<CallType>().template operator()<type1, 1>(eval, this->defaultValue)));
+  };
+
+  /**
+     * @brief copies the Executor
+     * @returns a new Executor that's a copy of this one.
+   */
+  virtual Executor<CallType, BaseClass>* clone() const
+  {
+    return  new __EXECUTOR_FUNCTIONAL_NAME(2,ret)<T, CallType, ret, type0, type1>(this->functionPointer);
+  };
+};
+
 #endif /* __EXECUTOR_FUNCTIONAL_NAME */
Index: branches/new_class_id/src/lib/util/executor/executor_lua_state.h
===================================================================
--- branches/new_class_id/src/lib/util/executor/executor_lua_state.h	(revision 9745)
+++ branches/new_class_id/src/lib/util/executor/executor_lua_state.h	(revision 9746)
@@ -66,4 +66,9 @@
     return (fromLua<ToType>(CallValue, index));
   }
+  template <typename ToType>
+  void storeRet(lua_State*& state, ToType value)
+  {
+    toLua<ToType>(state, value);
+  }
   static lua_State*& defaultValue() { static lua_State* nullState; return nullState; };
 };
