Index: branches/script_engine/src/lib/script_engine/account.cc
===================================================================
--- branches/script_engine/src/lib/script_engine/account.cc	(revision 8392)
+++ branches/script_engine/src/lib/script_engine/account.cc	(revision 8393)
@@ -39,4 +39,4 @@
  };
 
- CREATE_SCRIPTABLE_CLASS(Account, CL_ACCOUNT);
+ CREATE_SCRIPTABLE_CLASS(Account, CL_ACCOUNT, ScriptMethod("deposit", ExecutorLua1<Account, float>(&Account::deposit)));
 
Index: branches/script_engine/src/lib/script_engine/object.cc
===================================================================
--- branches/script_engine/src/lib/script_engine/object.cc	(revision 8392)
+++ branches/script_engine/src/lib/script_engine/object.cc	(revision 8393)
@@ -51,3 +51,3 @@
  };
 
- CREATE_SCRIPTABLE_CLASS(Object, CL_TEST_OBJECT);
+ CREATE_SCRIPTABLE_CLASS(Object, CL_TEST_OBJECT, ScriptMethod("printName", ExecutorLua0<Object>(&Object::printName)));
Index: branches/script_engine/src/lib/script_engine/script_class.cc
===================================================================
--- branches/script_engine/src/lib/script_engine/script_class.cc	(revision 8392)
+++ branches/script_engine/src/lib/script_engine/script_class.cc	(revision 8393)
@@ -17,14 +17,18 @@
 
 #include "script_class.h"
+#include <cassert>
 
 /**
- * standard constructor
+ * @brief standard constructor
  * @todo this constructor is not jet implemented - do it
 */
-ScriptClass::ScriptClass(const std::string& name, ClassID classID)
- : BaseObject(name)
+ScriptClass::ScriptClass(const std::string& name, ClassID classID, ScriptMethod* scriptMethods)
+    : BaseObject(name)
 {
-   this->setClassID(CL_SCRIPT_CLASS, "ScriptClass");
-   this->classID = classID;
+  assert(scriptMethods != NULL);
+  this->setClassID(CL_SCRIPT_CLASS, "ScriptClass");
+  this->classID = classID;
+
+  this->scriptMethods = scriptMethods;
 }
 
@@ -35,4 +39,4 @@
 ScriptClass::~ScriptClass ()
 {
-  // delete what has to be deleted here
+  delete this->scriptMethods;
 }
Index: branches/script_engine/src/lib/script_engine/script_class.h
===================================================================
--- branches/script_engine/src/lib/script_engine/script_class.h	(revision 8392)
+++ branches/script_engine/src/lib/script_engine/script_class.h	(revision 8393)
@@ -11,4 +11,6 @@
 #include "script.h"
 #include "lunar.h"
+#include "script_method.h"
+
 
 /**
@@ -16,6 +18,6 @@
  * this should be used at the beginning of all the Classes that should be loadable (in the cc-file)
  */
-#define CREATE_SCRIPTABLE_CLASS(CLASS_NAME, CLASS_ID) \
-    tScriptable<CLASS_NAME> global_##CLASS_NAME##_ScriptableClass(#CLASS_NAME, CLASS_ID)
+#define CREATE_SCRIPTABLE_CLASS(CLASS_NAME, CLASS_ID, SCRIPT_METHODS) \
+    tScriptable<CLASS_NAME> global_##CLASS_NAME##_ScriptableClass(#CLASS_NAME, CLASS_ID, new SCRIPT_METHODS)
 
 
@@ -35,8 +37,9 @@
 
 protected:
-  ScriptClass(const std::string& name, ClassID classID);
+  ScriptClass(const std::string& name, ClassID classID, ScriptMethod* scriptMethods);
 
 private:
   ClassID             classID;
+  ScriptMethod*       scriptMethods;
 };
 
@@ -48,6 +51,6 @@
 {
 public:
-  tScriptable(const std::string& name, ClassID classID)
-      : ScriptClass(name, classID)
+  tScriptable(const std::string& name, ClassID classID, ScriptMethod* scriptMethods)
+      : ScriptClass(name, classID, scriptMethods)
   { }
 
Index: branches/script_engine/src/lib/script_engine/script_method.cc
===================================================================
--- branches/script_engine/src/lib/script_engine/script_method.cc	(revision 8392)
+++ branches/script_engine/src/lib/script_engine/script_method.cc	(revision 8393)
@@ -27,9 +27,9 @@
 }
 
-ScriptMethod& ScriptMethod::addMethod(const std::string& methodName, const Executor& executor)
+ScriptMethod* ScriptMethod::addMethod(const std::string& methodName, const Executor& executor)
 {
   this->methods.push_back(ScriptMethod::Method(methodName, executor));
 
-  return *this;
+  return this;
 }
 
Index: branches/script_engine/src/lib/script_engine/script_method.h
===================================================================
--- branches/script_engine/src/lib/script_engine/script_method.h	(revision 8392)
+++ branches/script_engine/src/lib/script_engine/script_method.h	(revision 8393)
@@ -19,5 +19,8 @@
   ~ScriptMethod();
 
-  ScriptMethod& addMethod(const std::string& methodName, const Executor& executor);
+  ScriptMethod* addMethod(const std::string& methodName, const Executor& executor);
+
+  const std::string& name(unsigned int methodNumber) const { return methods[methodNumber].name; };
+  const Executor* executor(unsigned int methodNumber) const { return methods[methodNumber].executor; };
 
 
Index: branches/script_engine/src/world_entities/space_ships/helicopter.cc
===================================================================
--- branches/script_engine/src/world_entities/space_ships/helicopter.cc	(revision 8392)
+++ branches/script_engine/src/world_entities/space_ships/helicopter.cc	(revision 8393)
@@ -36,5 +36,5 @@
 CREATE_FACTORY(Helicopter, CL_HELICOPTER);
 #include "script_class.h"
-//CREATE_SCRIPTABLE_CLASS(Helicopter, CL_HELICOPTER);
+//CREATE_SCRIPTABLE_CLASS(Helicopter, CL_HELICOPTER, NULL);
 
 
