Index: branches/new_class_id/src/lib/Makefile.am
===================================================================
--- branches/new_class_id/src/lib/Makefile.am	(revision 9702)
+++ branches/new_class_id/src/lib/Makefile.am	(revision 9705)
@@ -16,6 +16,6 @@
 		data/data_tank.h
 
-SUBDIRS = \
-	. \
+SUBDIRS =
+#	. \
 	math \
 	lang \
Index: branches/new_class_id/src/lib/lang/base_object.h
===================================================================
--- branches/new_class_id/src/lib/lang/base_object.h	(revision 9702)
+++ branches/new_class_id/src/lib/lang/base_object.h	(revision 9705)
@@ -48,4 +48,5 @@
   inline const std::string& getClassName() const { return _classes.front()._objectList->name(); }
 
+  inline const NewClassID& getClassID() const { return *_leafClassID; }
   /** @returns the ID of the Topmost object of the ClassStack */
   inline const int& getLeafClassID() const { return _leafClassID->id(); }
Index: branches/new_class_id/src/lib/lang/new_object_list.cc
===================================================================
--- branches/new_class_id/src/lib/lang/new_object_list.cc	(revision 9702)
+++ branches/new_class_id/src/lib/lang/new_object_list.cc	(revision 9705)
@@ -104,4 +104,35 @@
 
 /**
+ * @brief searches for a NewClassID in the list of all NewObjectLists, and returns its Identity
+ * @param id: The Id to search for
+ * @returns the ClassID if found and NullClass' identity if not.
+ */
+const NewClassID& NewObejctListBase::retrieveIdentity(int id)
+{
+  const NewObjectListBase* const base = NewObjectListBase::getObjectList(id);
+
+  if (base != NULL)
+    return base->_identity;
+  else
+    return NullClass::classID();
+}
+
+/**
+ * @brief searches for a NewClassID in the list of all NewObjectLists, and returns its Identity
+ * @param name: The Name to search for
+ * @returns the ClassID if found and NullClass' identity if not.
+ */
+const NewClassID& NewObjectListBase::retrieveIdentity(const std::string& name)
+{
+  const NewObjectListBase* const base = NewObjectListBase::getObjectList(name);
+
+  if (base != NULL)
+    return base->_identity;
+  else
+    return NullObject::classID();
+}
+
+
+/**
  * @brief Checks if a Class with name already exists.
  * @param name The Name of the Class to check.
Index: branches/new_class_id/src/lib/lang/new_object_list.h
===================================================================
--- branches/new_class_id/src/lib/lang/new_object_list.h	(revision 9702)
+++ branches/new_class_id/src/lib/lang/new_object_list.h	(revision 9705)
@@ -44,19 +44,44 @@
   //! A fast iterator Base-Class, for iterator-casting and storing.
   /**
-   * @note This Iterator is explicitely used only for storage purposes
+   * @note This Iterator is explicitely used only for storage purposes in the BaseObject
    */
   class IteratorBase { };
 
+  typedef std::list<BaseObject*>            base_list;
+  typedef base_list::iterator               base_iterator;
+
 public:
+  /** @returns The Identity of the Class stored within. */
   inline const NewClassID& identity() const { return _identity; }
+  /** @returns the ID of the Identity of the ObjectList */
   inline int id() const { return _id; };
+  /** @returns The Name of the Class stored in this ObjectList */
   inline const std::string& name() const { return _name; };
-  bool operator==(int id) const { return _id == id; };
-  bool operator==(const NewClassID& id) const { return id == _id; };
-  bool operator==(const std::string& name) const { return _name == name; };
-
-  void acquireID(const int*& id, const std::string*& name) const { id = &_id; name = &_name; };
-
-  virtual void debug() const = 0;
+  /** @param id The id to compare @returns true on match, false otherwise */
+  inline bool operator==(int id) const { return _id == id; };
+  /** @param id The id to compare @returns true on match, false otherwise */
+  inline bool operator==(const NewClassID& id) const { return id == _id; };
+  /** @param name The name to compare @returns true on match, false otherwise */
+  inline bool operator==(const std::string& name) const { return _name == name; };
+  /** @param id The id to check @returns true on match, false otherwise */
+  inline void acquireID(const int*& id, const std::string*& name) const { id = &_id; name = &_name; };
+  /** @brief fills a list of Objects into a BaseObject*-List. @param list the list to fill */
+  virtual void getBaseObjectList(base_list* list) const = 0;
+
+  static const NewClassID& retrieveIdentity(int id);
+  static const NewClassID& retrieveIdentity(const std::string& name);
+
+  static const NewObjectListBase* const getObjectList(int classID);
+  static const NewObjectListBase* const getObjectList(const std::string& className);
+  static const NewObjectListBase* const getObjectList(const NewClassID& classID);
+
+  static BaseObject* getBaseObject(int classID, const std::string& objectName);
+  static BaseObject* getBaseObject(const std::string& className, const std::string& objectName);
+  static BaseObject* getBaseObject(const NewClassID& classID, const std::string& objectName);
+
+  /** @returns an Object with Name name out of this List @param name the name of the Object. */
+  virtual BaseObject* getBaseObject(const std::string& name) const = 0;
+
+  static const std::list<std::string>&  getClassNames();
 
   static unsigned int                   classCount();
@@ -64,23 +89,8 @@
   static int                            StringToID(const std::string& className);
 
-  static const std::list<std::string>&  getClassNames();
-
+  virtual void debug() const = 0;
+
+  //! Only uset to unsubscribe a BaseObject.
   virtual void unregisterObject(IteratorBase* _iterators) = 0;
-
-public:
-  typedef std::list<BaseObject*>            base_list;
-  typedef std::list<BaseObject*>::iterator  base_iterator;
-
-  virtual void getBaseObjectList(base_list* list) const = 0;
-
-  static const NewObjectListBase* const getObjectList(int classID);
-  static const NewObjectListBase* const getObjectList(const std::string& className);
-  static const NewObjectListBase* const getObjectList(const NewClassID& classID);
-
-  static BaseObject* getBaseObject(int classID, const std::string& objectName);
-  static BaseObject* getBaseObject(const std::string& className, const std::string& objectName);
-  static BaseObject* getBaseObject(const NewClassID& classID, const std::string& objectName);
-
-  virtual BaseObject* getBaseObject(const std::string& name) const = 0;
 
 protected:
@@ -99,4 +109,5 @@
   typedef std::map<std::string, NewObjectListBase*> classNameMap; //!< The Generic Map.
 
+private:
   int                           _id;
   const std::string             _name;              //!< The Name of the Class.
@@ -146,4 +157,5 @@
   T*                      getObject(const std::string& name) const;
   inline const list&      objects() const { return _objects; };
+  bool exists(const T* const object) const;
 
   inline iterator begin() { return _objects.begin(); };
@@ -157,6 +169,7 @@
   inline T* back() const { return _objects.back(); };
 
+
   NewObjectListBase::IteratorBase* registerObject(T* object);
-  void unregisterObject(IteratorBase* iterator);
+  virtual void unregisterObject(IteratorBase* iterator);
 
   virtual void debug() const;
@@ -233,4 +246,16 @@
 
 /**
+ * @brief checks if Object object exists in this ClassList.
+ * @param object the Object to check for
+ * @returns True if the object is found within the List, false otherwise
+ */
+template <class T>
+    bool NewObjectList<T>::exists(const T* const object) const
+{
+  return (std::find(_objects.begin(), _objects.end(), object) != _objects.end());
+}
+
+
+/**
  * @brief retrieves a List of BaseObjects
  * @param list the list to push the ObjectList into.
