Index: branches/script_engine/src/lib/script_engine/Makefile.am
===================================================================
--- branches/script_engine/src/lib/script_engine/Makefile.am	(revision 8389)
+++ branches/script_engine/src/lib/script_engine/Makefile.am	(revision 8390)
@@ -13,7 +13,9 @@
 
 libORXscript_a_SOURCES = \
-                script.cc\
-                script_manager.cc\
-		script_class.cc\
+                script.cc \
+                script_manager.cc \
+		script_class.cc \
+		script_method.cc \
+		\
 		account.cc \
 		object.cc
@@ -25,6 +27,7 @@
                 lunar.h\
                 script.h\
-                script_manager.h\
-		script_class.h
+                script_manager.h \
+		script_class.h \
+		script_method.h
 
 
@@ -32,16 +35,8 @@
 
 check_PROGRAMS = example
-
-
-
-
-
-
-
 example_DEPENDENCIES = \
                 $(MAINSRCDIR)/world_entities/libORXwe.a \
                 $(libORXlibs_a_LIBRARIES_) \
                 $(MAINSRCDIR)/util/libORXutils.a
-
 example_LDADD = \
                 $(MAINSRCDIR)/util/libORXutils.a \
Index: branches/script_engine/src/lib/script_engine/script.cc
===================================================================
--- branches/script_engine/src/lib/script_engine/script.cc	(revision 8389)
+++ branches/script_engine/src/lib/script_engine/script.cc	(revision 8390)
@@ -95,5 +95,5 @@
  {
    printf("Script %p: I am about to add %s of class %s\n",this,objectName.c_str(),className.c_str());
-   
+
    BaseObject* scriptClass = ClassList::getObject(className, CL_SCRIPT_CLASS);
    printf("The script class for %s is at %p \n",className.c_str(),scriptClass);
@@ -171,5 +171,5 @@
      reportError(error);
      //clean up
-     currentFunction.assign(""); 
+     currentFunction.assign("");
      argumentCount = returnCount = 0;
      return false;
@@ -184,5 +184,5 @@
    else
      printf("Error: no function selected.\n");
-   
+
    return false;
  }
@@ -241,5 +241,5 @@
  int Script::getReturnedInt()
  {
-   int returnValue;
+   int returnValue = 0;
    if(returnCount > 0)
    {
@@ -257,5 +257,5 @@
  bool Script::getReturnedBool()
  {
-   bool returnValue;
+   bool returnValue = false;
    if(returnCount > 0)
    {
@@ -272,5 +272,5 @@
 float Script::getReturnedFloat()
  {
-   float returnValue;
+   float returnValue = 0.0f;
    if(returnCount > 0)
    {
@@ -287,5 +287,5 @@
  void Script::getReturnedString(std::string& string)
  {
-   const char* returnValue;
+   const char* returnValue = "";
    if(returnCount > 0)
    {
Index: branches/script_engine/src/lib/script_engine/script_class.cc
===================================================================
--- branches/script_engine/src/lib/script_engine/script_class.cc	(revision 8389)
+++ branches/script_engine/src/lib/script_engine/script_class.cc	(revision 8390)
@@ -17,7 +17,4 @@
 
 #include "script_class.h"
-
-using namespace std;
-
 
 /**
Index: branches/script_engine/src/lib/script_engine/script_class.h
===================================================================
--- branches/script_engine/src/lib/script_engine/script_class.h	(revision 8389)
+++ branches/script_engine/src/lib/script_engine/script_class.h	(revision 8390)
@@ -11,7 +11,4 @@
 #include "script.h"
 #include "lunar.h"
-
-// FORWARD DECLARATION
-
 
 /**
@@ -28,18 +25,18 @@
 {
 
-  public:
-    virtual ~ScriptClass();
+public:
+  virtual ~ScriptClass();
 
-    bool operator==(const std::string& name) { return (this->getName() == name); }
-    bool operator==(ClassID classID) { return (this->classID == classID); }
+  bool operator==(const std::string& name) { return (this->getName() == name); }
+  bool operator==(ClassID classID) { return (this->classID == classID); }
 
-    virtual void registerClass(Script* script) = 0;
-    virtual int insertObject(Script* L, BaseObject* obj, bool gc=false) = 0;
+  virtual void registerClass(Script* script) = 0;
+  virtual int insertObject(Script* L, BaseObject* obj, bool gc=false) = 0;
 
-  protected:
-    ScriptClass(const std::string& name, ClassID classID);
+protected:
+  ScriptClass(const std::string& name, ClassID classID);
 
-  private:
-    ClassID             classID;
+private:
+  ClassID             classID;
 };
 
@@ -50,22 +47,18 @@
 class tScriptable : public ScriptClass
 {
-  public:
-    tScriptable(const std::string& name, ClassID classID)
-        : ScriptClass(name, classID)
-    { }
+public:
+  tScriptable(const std::string& name, ClassID classID)
+      : ScriptClass(name, classID)
+  { }
 
-    virtual void registerClass(Script* script)
-    {
-      Lunar<T>::Register(script);
-    }
-    virtual int insertObject(Script* L, BaseObject* obj, bool gc=false)
-    {
-      return Lunar<T>::insertObject(L, dynamic_cast<T*>(obj), obj->getName(), gc);
-    }
-
-
-
-}
-;
+  virtual void registerClass(Script* script)
+  {
+    Lunar<T>::Register(script);
+  }
+  virtual int insertObject(Script* L, BaseObject* obj, bool gc=false)
+  {
+    return Lunar<T>::insertObject(L, dynamic_cast<T*>(obj), obj->getName(), gc);
+  }
+};
 
 
Index: branches/script_engine/src/lib/script_engine/script_method.cc
===================================================================
--- branches/script_engine/src/lib/script_engine/script_method.cc	(revision 8390)
+++ branches/script_engine/src/lib/script_engine/script_method.cc	(revision 8390)
@@ -0,0 +1,54 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: ...
+   co-programmer: ...
+*/
+
+//#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_
+
+#include "script_method.h"
+
+/**
+ * @param standard constructor
+ * @todo this constructor is not jet implemented - do it
+*/
+ScriptMethod::ScriptMethod(const std::string& methodName, const Executor& executor)
+{
+  this->addMethod(methodName, executor);
+}
+
+ScriptMethod& ScriptMethod::addMethod(const std::string& methodName, const Executor& executor)
+{
+  this->methods.push_back(ScriptMethod::Method(methodName, executor));
+
+  return *this;
+}
+
+ScriptMethod::Method::Method(const std::string& name, const Executor& executor)
+{
+  this->name = name;
+  this->executor = executor.clone();
+}
+
+/**
+ * standard deconstructor
+*/
+ScriptMethod::~ScriptMethod()
+{
+  for (unsigned int i = 0; i < methods.size(); i ++)
+  {
+    delete methods[i].executor;
+  };
+}
+
+
+
Index: branches/script_engine/src/lib/script_engine/script_method.h
===================================================================
--- branches/script_engine/src/lib/script_engine/script_method.h	(revision 8390)
+++ branches/script_engine/src/lib/script_engine/script_method.h	(revision 8390)
@@ -0,0 +1,35 @@
+/*!
+ * @file script_class.h
+ * @brief Definition of ...
+*/
+
+#ifndef _SCRIPT_METHOD_H
+#define _SCRIPT_METHOD_H
+
+#include <vector>
+
+#include "lunar.h"
+#include "executor/executor_lua.h"
+
+
+class ScriptMethod
+{
+public:
+  ScriptMethod(const std::string& methodName, const Executor& executor);
+  ~ScriptMethod();
+
+  ScriptMethod& addMethod(const std::string& methodName, const Executor& executor);
+
+
+private:
+  struct Method
+  {
+    Method(const std::string& name, const Executor& executor);
+    std::string    name;
+    Executor*      executor;
+  };
+
+  std::vector<Method> methods;
+};
+
+#endif /* _SCRIPT_METHOD_H */
