Index: branches/new_class_id/src/lib/lang/Makefile.am
===================================================================
--- branches/new_class_id/src/lib/lang/Makefile.am	(revision 9729)
+++ branches/new_class_id/src/lib/lang/Makefile.am	(revision 9730)
@@ -1,7 +1,4 @@
 MAINSRCDIR=../..
 include $(MAINSRCDIR)/defs/include_paths.am
-
-LIB_PREFIX=$(MAINSRCDIR)/lib
-include $(MAINSRCDIR)/lib/BuildLibs.am
 
 noinst_LIBRARIES = libORXlang.a
Index: branches/new_class_id/src/lib/lang/base_object.cc
===================================================================
--- branches/new_class_id/src/lib/lang/base_object.cc	(revision 9729)
+++ branches/new_class_id/src/lib/lang/base_object.cc	(revision 9730)
@@ -1,4 +1,2 @@
-
-
 /*
    orxonox - the future of 3D-vertical-scrollers
Index: branches/new_class_id/src/lib/util/executor/executor.cc
===================================================================
--- branches/new_class_id/src/lib/util/executor/executor.cc	(revision 9729)
+++ branches/new_class_id/src/lib/util/executor/executor.cc	(revision 9730)
@@ -61,4 +61,6 @@
       break;
     }
+    else
+      this->defaultValue[i].storeString();
   }
 }
@@ -106,4 +108,5 @@
     {
       this->defaultValue[i].setValueOf(*value[i]);
+      this->defaultValue[i].storeString();
     }
   }
Index: branches/new_class_id/src/lib/util/executor/executor.h
===================================================================
--- branches/new_class_id/src/lib/util/executor/executor.h	(revision 9729)
+++ branches/new_class_id/src/lib/util/executor/executor.h	(revision 9730)
@@ -15,6 +15,6 @@
 //! an enumerator for the definition of the Type.
 typedef enum {
-  Executor_Objective         = 1,
-  Executor_Static            = 2,
+  Executor_Objective,
+  Executor_Static,
 } Executor_Type;
 
@@ -51,13 +51,8 @@
   inline MultiType& getDefaultValue(unsigned int i) { return defaultValue[i]; };
 
-  // EXECUTE
-  /** executes a Command. @param objec the Object, @param count how many values, @param values the Values */
-  //     virtual void operator()(BaseObject* object, int& count, void* values) const = 0;
-  /** executes a Command @param object the object to apply this to @param parameters the parameters the command takes */
-  //     virtual void operator()(BaseObject* object, const SubString& sub = SubString()) const = 0;
-
   // RETRIEVE INFORMATION
   /** @returns the Type of this Function (either static or objective) */
-  inline long getType() const { return this->functorType; };
+  inline Executor_Type getType() const { return this->functorType; };
+
   /** @returns the Count of Parameters this Executor takes */
   inline unsigned int getParamCount() const { return this->paramCount; };
@@ -84,9 +79,9 @@
 
 protected:
-  short                       functorType;      //!< The type of Function we've got (either static or objective).
+  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.
 
-  bool                        bRetVal;          //!< True if the Executor has a return Value.
+  const bool                  bRetVal;          //!< True if the Executor has a return Value.
 };
 
Index: branches/new_class_id/src/lib/util/executor/executor_functional.cc
===================================================================
--- branches/new_class_id/src/lib/util/executor/executor_functional.cc	(revision 9729)
+++ branches/new_class_id/src/lib/util/executor/executor_functional.cc	(revision 9730)
@@ -15,6 +15,4 @@
 
 #include "executor_functional.h"
-std::string ExecutorFunctional_returningString_from[7];
-
 
 template<> bool fromString<bool>(const std::string& input, bool defaultValue) { return isBool(input, defaultValue); };
@@ -39,5 +37,5 @@
 template<> float getDefault<float>(const MultiType* const defaultValues, unsigned int i) { return defaultValues[i].getFloat(); };
 template<> char getDefault<char>(const MultiType* const defaultValues, unsigned int i) { return defaultValues[i].getChar(); };
-template<> const std::string& getDefault<const std::string&>(const MultiType* const defaultValues, unsigned int i) { return ExecutorFunctional_returningString_from[i] = defaultValues[i].getString(); };
+template<> const std::string& getDefault<const std::string&>(const MultiType* const defaultValues, unsigned int i) { return defaultValues[i].getStoredString(); };
 
 
Index: branches/new_class_id/src/lib/util/executor/executor_functional.h
===================================================================
--- branches/new_class_id/src/lib/util/executor/executor_functional.h	(revision 9729)
+++ branches/new_class_id/src/lib/util/executor/executor_functional.h	(revision 9730)
@@ -51,4 +51,18 @@
 template<> char getDefault<char>(const MultiType* const defaultValues, unsigned int i);
 template<> const std::string& getDefault<const std::string&>(const MultiType* const defaultValues, unsigned int i);
+
+
+/**
+ * @brief to remove writing errors, this function is Used.
+ * @param sub The SubString to use
+ * @param default The default Values.
+ */
+template<typename type, int index> type Evaluate(const SubString& sub, const MultiType* const defaults)
+{
+  return (sub.size() > index) ?
+      fromString<type>(sub[index], getDefault<type>(defaults, index)) :
+      fromMulti<type>(defaults[index]);
+};
+
 
 #endif /* __EXECUTOR_FUNCTIONAL_H_ */
@@ -80,5 +94,5 @@
  #endif
 
-  #ifdef __EXECUTOR_FUNCTIONAL_STATIC_INCLUDED
+#ifdef __EXECUTOR_FUNCTIONAL_STATIC_INCLUDED
    #define __EXECUTOR_FUNCTIONAL_NOT_INCLUDE_THIS
   #else
@@ -103,4 +117,5 @@
 
 #ifndef __EXECUTOR_FUNCTIONAL_NOT_INCLUDE_THIS
+
 ///////////
 //// 0 ////
@@ -177,5 +192,5 @@
   {
     (__EXECUTOR_FUNCTIONAL_FUNCTION_EXEC)(
-      (sub.size() > 0) ? fromString<type0>(sub[0], getDefault<type0>(this->defaultValue, 0)) : (fromMulti<type0>(this->defaultValue[0])));
+      Evaluate<type0, 0>(sub, this->defaultValue));
   };
 
@@ -220,6 +235,6 @@
   {
     (__EXECUTOR_FUNCTIONAL_FUNCTION_EXEC)(
-      (sub.size() > 0) ? fromString<type0>(sub[0], getDefault<type0>(this->defaultValue, 0)) : (fromMulti<type0>(this->defaultValue[0])),
-      (sub.size() > 1) ? fromString<type1>(sub[1], getDefault<type1>(this->defaultValue, 1)) : (fromMulti<type1>(this->defaultValue[1])));
+      Evaluate<type0, 0>(sub, this->defaultValue),
+      Evaluate<type1, 1>(sub, this->defaultValue));
   };
 
@@ -265,7 +280,7 @@
   {
     (__EXECUTOR_FUNCTIONAL_FUNCTION_EXEC)(
-      (sub.size() > 0) ? fromString<type0>(sub[0], getDefault<type0>(this->defaultValue, 0)) : (fromMulti<type0>(this->defaultValue[0])),
-      (sub.size() > 1) ? fromString<type1>(sub[1], getDefault<type1>(this->defaultValue, 1)) : (fromMulti<type1>(this->defaultValue[1])),
-      (sub.size() > 2) ? fromString<type2>(sub[2], getDefault<type2>(this->defaultValue, 2)) : (fromMulti<type2>(this->defaultValue[2])));
+      Evaluate<type0, 0>(sub, this->defaultValue),
+      Evaluate<type1, 1>(sub, this->defaultValue),
+      Evaluate<type2, 2>(sub, this->defaultValue));
   };
 
@@ -312,8 +327,8 @@
   {
     (__EXECUTOR_FUNCTIONAL_FUNCTION_EXEC)(
-      (sub.size() > 0) ? fromString<type0>(sub[0], getDefault<type0>(this->defaultValue, 0)) : (fromMulti<type0>(this->defaultValue[0])),
-      (sub.size() > 1) ? fromString<type1>(sub[1], getDefault<type1>(this->defaultValue, 1)) : (fromMulti<type1>(this->defaultValue[1])),
-      (sub.size() > 2) ? fromString<type2>(sub[2], getDefault<type2>(this->defaultValue, 2)) : (fromMulti<type2>(this->defaultValue[2])),
-      (sub.size() > 3) ? fromString<type3>(sub[3], getDefault<type3>(this->defaultValue, 3)) : (fromMulti<type3>(this->defaultValue[3])));
+      Evaluate<type0, 0>(sub, this->defaultValue),
+      Evaluate<type1, 1>(sub, this->defaultValue),
+      Evaluate<type2, 2>(sub, this->defaultValue),
+      Evaluate<type3, 3>(sub, this->defaultValue));
   };
 
@@ -360,9 +375,9 @@
   {
     (__EXECUTOR_FUNCTIONAL_FUNCTION_EXEC)(
-      (sub.size() > 0) ? fromString<type0>(sub[0], getDefault<type0>(this->defaultValue, 0)) : (fromMulti<type0>(this->defaultValue[0])),
-      (sub.size() > 1) ? fromString<type1>(sub[1], getDefault<type1>(this->defaultValue, 1)) : (fromMulti<type1>(this->defaultValue[1])),
-      (sub.size() > 2) ? fromString<type2>(sub[2], getDefault<type2>(this->defaultValue, 2)) : (fromMulti<type2>(this->defaultValue[2])),
-      (sub.size() > 3) ? fromString<type3>(sub[3], getDefault<type3>(this->defaultValue, 3)) : (fromMulti<type3>(this->defaultValue[3])),
-      (sub.size() > 4) ? fromString<type4>(sub[4], getDefault<type4>(this->defaultValue, 4)) : (fromMulti<type4>(this->defaultValue[4])));
+      Evaluate<type0, 0>(sub, this->defaultValue),
+      Evaluate<type1, 1>(sub, this->defaultValue),
+      Evaluate<type2, 2>(sub, this->defaultValue),
+      Evaluate<type3, 3>(sub, this->defaultValue),
+      Evaluate<type4, 4>(sub, this->defaultValue));
   };
 
Index: branches/new_class_id/src/lib/util/multi_type.cc
===================================================================
--- branches/new_class_id/src/lib/util/multi_type.cc	(revision 9729)
+++ branches/new_class_id/src/lib/util/multi_type.cc	(revision 9730)
@@ -33,21 +33,21 @@
   {
     default:
-      this->value.Float = 0.0f;
-      break;
+    this->value.Float = 0.0f;
+    break;
     case MT_BOOL:
-      this->value.Bool = false;
-      break;
+    this->value.Bool = false;
+    break;
     case MT_INT:
-      this->value.Int = 0;
-      break;
+    this->value.Int = 0;
+    break;
     case MT_FLOAT:
-      this->value.Float = 0.0f;
-      break;
+    this->value.Float = 0.0f;
+    break;
     case MT_CHAR:
-      this->value.Char = '\0';
-      break;
+    this->value.Char = '\0';
+    break;
     case MT_STRING:
-      this->storedString = "";
-      break;
+    this->storedString = "";
+    break;
   }
 }
@@ -142,17 +142,17 @@
   {
     case MT_NULL:
-      return true;
+    return true;
     case MT_BOOL:
-      return (this->value.Bool == mt.value.Bool);
+    return (this->value.Bool == mt.value.Bool);
     case MT_INT:
-      return (this->value.Int == mt.value.Int);
+    return (this->value.Int == mt.value.Int);
     case MT_CHAR:
-      return (this->value.Char == mt.value.Char);
+    return (this->value.Char == mt.value.Char);
     case MT_FLOAT:
-      return (this->value.Float == mt.value.Float);
+    return (this->value.Float == mt.value.Float);
     case MT_STRING:
-      return (this->storedString == mt.storedString);
+    return (this->storedString == mt.storedString);
     default:
-      return false;
+    return false;
   }
 }
@@ -171,20 +171,20 @@
   {
     case MT_BOOL:
-      this->setBool(this->getBool());
-      break;
+    this->setBool(this->getBool());
+    break;
     case MT_INT:
-      this->setInt(this->getInt());
-      break;
+    this->setInt(this->getInt());
+    break;
     case MT_FLOAT:
-      this->setFloat(this->getFloat());
-      break;
+    this->setFloat(this->getFloat());
+    break;
     case MT_CHAR:
-      this->setChar(this->getChar());
-      break;
+    this->setChar(this->getChar());
+    break;
     case MT_STRING:
-      this->setString(this->getString());
-      break;
+    this->setString(this->getString());
+    break;
     default:
-      this->type = type;
+    this->type = type;
   }
 }
@@ -257,4 +257,13 @@
 }
 
+/**
+ * @brief stores any value to the string.
+ * @note this Value can be grabbed by using the getStoredString function.
+ */
+void MultiType::storeString()
+{
+  if (!(this->type & MT_STRING))
+    this->storedString = this->getString();
+}
 
 /**************************
@@ -381,13 +390,30 @@
  * @brief returns a Constant string (actually this is slower than getString()
  * @returns a constant string of the stored version's one.
- * @note this  could lead to a inconsistency of data
+ * @note this  could lead to a inconsistency of data AND IS HIGHLY NON_THREAD_SAFE!
+ * PLEASE THINK ABOUT USING THE getStoredString function in conjunction with storeString().
  */
 const std::string& MultiType::getConstString() const
 {
-
   MultiType::constString = this->getString();
   return MultiType::constString;
 }
 
+/**
+ * @brief returns the currently stored string.
+ * @returns the Stored string.
+ * @note Storing a string works as follows: \\
+ * MultiType a(3);  // Creates a MultiType of Type int with value 3 \\
+ * a.storeString(); // Stores the String in the internal structure. \\
+ * std::string name = a.getStoredString();
+ *
+ * This would be the same as
+ * name = a.getString();
+ * but with much more const'ness.
+ */
+const std::string& MultiType::getStoredString() const
+{
+  MultiType::constString = this->getString();
+  return MultiType::constString;
+}
 
 /**
@@ -433,23 +459,23 @@
   {
     case MT_BOOL:
-      this->setBool(false);
-      break;
+    this->setBool(false);
+    break;
     case MT_INT:
-      this->setInt(0);
-      break;
+    this->setInt(0);
+    break;
     case MT_FLOAT:
-      this->setFloat(0.0f);
-      break;
+    this->setFloat(0.0f);
+    break;
     case MT_CHAR:
-      this->setChar('\0');
-      break;
+    this->setChar('\0');
+    break;
     case MT_STRING:
-      this->setString("");
-      break;
+    this->setString("");
+    break;
     default:
 #ifdef DEBUG
-      PRINTF(2)("Unknown Type not reseting\n");
+    PRINTF(2)("Unknown Type not reseting\n");
 #endif
-      break;
+    break;
   }
 }
@@ -465,15 +491,15 @@
   {
     case MT_BOOL:
-      return MultiType::typeNames[1];
+    return MultiType::typeNames[1];
     case MT_INT:
-      return MultiType::typeNames[2];
+    return MultiType::typeNames[2];
     case MT_FLOAT:
-      return MultiType::typeNames[3];
+    return MultiType::typeNames[3];
     case MT_CHAR:
-      return MultiType::typeNames[4];
+    return MultiType::typeNames[4];
     case MT_STRING:
-      return MultiType::typeNames[5];
+    return MultiType::typeNames[5];
     default:
-      return MultiType::typeNames[0];
+    return MultiType::typeNames[0];
   }
 }
Index: branches/new_class_id/src/lib/util/multi_type.h
===================================================================
--- branches/new_class_id/src/lib/util/multi_type.h	(revision 9729)
+++ branches/new_class_id/src/lib/util/multi_type.h	(revision 9730)
@@ -79,4 +79,5 @@
     inline MT_Type getType() const { return this->type; };
 
+    void storeString();
 
     /* RETRIEVING FUNCTIONS */
@@ -88,4 +89,5 @@
     std::string getString() const;
     const std::string& getConstString() const;
+    const std::string& getStoredString() const;
 
     void reset();
