Index: branches/new_class_id/src/lib/graphics/importer/material.cc
===================================================================
--- branches/new_class_id/src/lib/graphics/importer/material.cc	(revision 9717)
+++ branches/new_class_id/src/lib/graphics/importer/material.cc	(revision 9718)
@@ -324,5 +324,5 @@
  * @param textureNumber The Texture-Number from 0 to GL_MAX_TEXTURE_UNITS
  */
-void Material::setDiffuseMap(const TextureDataPointer& textureDataPointer, unsigned int textureNumber)
+void Material::setDiffuseMap(const TextureData::Pointer& textureDataPointer, unsigned int textureNumber)
 {
   assert(textureNumber < Material::getMaxTextureUnits());
Index: branches/new_class_id/src/lib/graphics/importer/material.h
===================================================================
--- branches/new_class_id/src/lib/graphics/importer/material.h	(revision 9717)
+++ branches/new_class_id/src/lib/graphics/importer/material.h	(revision 9718)
@@ -54,5 +54,5 @@
   // MAPPING //
   void setDiffuseMap(const Texture& texture, unsigned int textureNumber = 0);
-  void setDiffuseMap(const TextureDataPointer& texturePointer, unsigned int textureNumber = 0);
+  void setDiffuseMap(const TextureData::Pointer& texturePointer, unsigned int textureNumber = 0);
   void setDiffuseMap(const std::string& dMap, GLenum target = GL_TEXTURE_2D, unsigned int textureNumber = 0);
   void setSDLDiffuseMap(SDL_Surface *surface, GLenum target = GL_TEXTURE_2D, unsigned int textureNumber = 0);
Index: branches/new_class_id/src/lib/graphics/importer/texture.cc
===================================================================
--- branches/new_class_id/src/lib/graphics/importer/texture.cc	(revision 9717)
+++ branches/new_class_id/src/lib/graphics/importer/texture.cc	(revision 9718)
@@ -151,5 +151,5 @@
   this->registerObject(this, Texture::_objectList);
 
-  this->data = TextureDataPointer(new TextureData());
+  this->data = TextureData::Pointer(new TextureData());
 
   this->priority = 0.5;
@@ -176,5 +176,5 @@
 }
 
-Texture& Texture::operator=(const TextureDataPointer& textureDataPointer)
+Texture& Texture::operator=(const TextureData::Pointer& textureDataPointer)
 {
   this->data = textureDataPointer;
Index: branches/new_class_id/src/lib/graphics/importer/texture.h
===================================================================
--- branches/new_class_id/src/lib/graphics/importer/texture.h	(revision 9717)
+++ branches/new_class_id/src/lib/graphics/importer/texture.h	(revision 9718)
@@ -29,5 +29,5 @@
 
   Texture& operator=(const Texture& texture);
-  Texture& operator=(const TextureDataPointer& textureDataPointer);
+  Texture& operator=(const TextureData::Pointer& textureDataPointer);
 
   virtual ~Texture();
@@ -63,5 +63,5 @@
 
 private:
-  TextureDataPointer            data;               //!< The TextureData
+  TextureData::Pointer          data;               //!< The TextureData
   GLclampf                      priority;           //!< the priority of the current texture (used for garphics cards with limited mem)
 
Index: branches/new_class_id/src/lib/graphics/importer/texture_data.h
===================================================================
--- branches/new_class_id/src/lib/graphics/importer/texture_data.h	(revision 9717)
+++ branches/new_class_id/src/lib/graphics/importer/texture_data.h	(revision 9718)
@@ -18,4 +18,6 @@
 class TextureData
 {
+  public:
+    typedef CountPointer<TextureData> Pointer;
   public:
     TextureData();
@@ -43,5 +45,3 @@
 };
 
-typedef CountPointer<TextureData> TextureDataPointer;
-
 #endif /* _TEXTURE_DATA_H */
Index: branches/new_class_id/src/lib/graphics/text_engine/font.cc
===================================================================
--- branches/new_class_id/src/lib/graphics/text_engine/font.cc	(revision 9717)
+++ branches/new_class_id/src/lib/graphics/text_engine/font.cc	(revision 9718)
@@ -139,5 +139,5 @@
 }
 
-FontDataPointer Font::defaultFontData(NULL);
+FontData::Pointer Font::defaultFontData(NULL);
 
 /**
@@ -147,5 +147,5 @@
 {
   // temporarily create a Font.
-  Font::defaultFontData = FontDataPointer(new FontData);
+  Font::defaultFontData = FontData::Pointer(new FontData);
   // apply the Data.
   Font::defaultFontData = Font(font_xpm).data;
@@ -160,5 +160,5 @@
 bool Font::loadFontFromTTF(const std::string& fontFile, unsigned int renderSize)
 {
-  this->data = FontDataPointer (new FontData());
+  this->data = FontData::Pointer (new FontData());
   bool retVal = this->data->loadFontFromTTF(fontFile, renderSize);
   if (!retVal)
@@ -175,5 +175,5 @@
 bool Font::loadFontFromSDL_Surface(SDL_Surface* surface)
 {
-  this->data = FontDataPointer (new FontData());
+  this->data = FontData::Pointer (new FontData());
   bool retVal = this->data->loadFontFromSDL_Surface(surface);
   if (!retVal)
@@ -197,5 +197,5 @@
 
 
-void Font::setTexture(const TextureDataPointer& texDataPointer)
+void Font::setTexture(const TextureData::Pointer& texDataPointer)
 {
   this->setDiffuseMap(texDataPointer);
Index: branches/new_class_id/src/lib/graphics/text_engine/font.h
===================================================================
--- branches/new_class_id/src/lib/graphics/text_engine/font.h	(revision 9717)
+++ branches/new_class_id/src/lib/graphics/text_engine/font.h	(revision 9718)
@@ -20,5 +20,6 @@
 {
   ObjectListDeclaration(Font);
-
+public:
+  typedef FontData::Glyph Glyph;
 public:
   Font();
@@ -40,5 +41,5 @@
 
   /** @returns a Pointer to the Array of Glyphs */
-  inline Glyph** getGlyphArray() const { return this->data->getGlyphArray(); };
+  inline const Glyph* const * const getGlyphArray() const { return this->data->getGlyphArray(); };
 
   inline int getMaxHeight() const { return data->getMaxHeight(); };
@@ -55,10 +56,10 @@
   static void initDefaultFont();
 
-  void setTexture(const TextureDataPointer& texDataPointer);
+  void setTexture(const TextureData::Pointer& texDataPointer);
 
 private:
-  FontDataPointer           data;                //!< A Data-Pointer to a Font.
+  FontData::Pointer         data;                //!< A Data-Pointer to a Font.
 
-  static FontDataPointer    defaultFontData;     //!< a default font, that is used, if other fonts were unable to be loaded.
+  static FontData::Pointer  defaultFontData;     //!< a default font, that is used, if other fonts were unable to be loaded.
 };
 
Index: branches/new_class_id/src/lib/graphics/text_engine/font_data.h
===================================================================
--- branches/new_class_id/src/lib/graphics/text_engine/font_data.h	(revision 9717)
+++ branches/new_class_id/src/lib/graphics/text_engine/font_data.h	(revision 9718)
@@ -26,28 +26,32 @@
 #define FONT_DEFAULT_RENDER_SIZE     50            //!< At what Resolution to render fonts.
 
+class FontData
+{
+
+
+public:
+
 //! A struct for handling glyphs
 /**
  * a Glyph is one letter of a certain font
  */
-struct Glyph
-{
+  struct Glyph
+  {
   // Glyph-specific (size and so on)
-  Uint16   character;         //!< The character
-  float    minX;              //!< The minimum distance from the origin in X
-  float    maxX;              //!< The maximum distance from the origin in X
-  float    minY;              //!< The minimum distance from the origin in Y
-  float    maxY;              //!< The maximum distance from the origin in Y
-  float    width;             //!< The width of the Glyph
-  float    height;            //!< The height of the Glyph
-  float    bearingX;          //!< How much is right of the Origin
-  float    bearingY;          //!< How much is above the Origin
-  float    advance;           //!< How big a Glyph would be in monospace-mode
+    Uint16   character;         //!< The character
+    float    minX;              //!< The minimum distance from the origin in X
+    float    maxX;              //!< The maximum distance from the origin in X
+    float    minY;              //!< The minimum distance from the origin in Y
+    float    maxY;              //!< The maximum distance from the origin in Y
+    float    width;             //!< The width of the Glyph
+    float    height;            //!< The height of the Glyph
+    float    bearingX;          //!< How much is right of the Origin
+    float    bearingY;          //!< How much is above the Origin
+    float    advance;           //!< How big a Glyph would be in monospace-mode
 
-  GLfloat texCoord[4];        //!< Texture coordinates: 0:left, 1:right, 2: top, 3: bottom.
-};
+    GLfloat texCoord[4];        //!< Texture coordinates: 0:left, 1:right, 2: top, 3: bottom.
+  };
 
-
-class FontData
-{
+  typedef CountPointer<FontData> Pointer;
 public:
   FontData();
@@ -61,5 +65,5 @@
 
   /** @returns a Pointer to the Array of Glyphs */
-  inline Glyph** getGlyphArray() const { return this->glyphArray; };
+  inline const Glyph* const * const getGlyphArray() const { return this->glyphArray; };
 
   int getMaxHeight() const { return maxHeight; };
@@ -68,5 +72,5 @@
 
   /** @returns the Texture-Data of this FontData */
-  const TextureDataPointer& textureData() const { return texData; };
+  const TextureData::Pointer& textureData() const { return texData; };
 
   bool rebuild() { return texData->rebuild(); };
@@ -91,8 +95,6 @@
   int           maxDescent;          //!< Max Desent of the Font.
 
-  TextureDataPointer   texData;
+  TextureData::Pointer   texData;
 };
 
-typedef CountPointer<FontData> FontDataPointer;
-
 #endif /* _FONT_DATA_H */
Index: branches/new_class_id/src/lib/graphics/text_engine/limited_width_text.cc
===================================================================
--- branches/new_class_id/src/lib/graphics/text_engine/limited_width_text.cc	(revision 9717)
+++ branches/new_class_id/src/lib/graphics/text_engine/limited_width_text.cc	(revision 9718)
@@ -76,5 +76,5 @@
   glRotatef(this->getAbsDir2D(), 0, 0, 1);
 
-  Glyph* tmpGlyph;
+  const Font::Glyph* tmpGlyph;
   float posX = 0.0f;
   glBegin(GL_QUADS);
Index: branches/new_class_id/src/lib/graphics/text_engine/multi_line_text.cc
===================================================================
--- branches/new_class_id/src/lib/graphics/text_engine/multi_line_text.cc	(revision 9717)
+++ branches/new_class_id/src/lib/graphics/text_engine/multi_line_text.cc	(revision 9718)
@@ -80,5 +80,5 @@
   glRotatef(this->getAbsDir2D(), 0, 0, 1);
 
-  Glyph* tmpGlyph;
+  const Font::Glyph* tmpGlyph;
   float posX = 0.0f;
   float posY = 0.0f;
Index: branches/new_class_id/src/lib/graphics/text_engine/text.cc
===================================================================
--- branches/new_class_id/src/lib/graphics/text_engine/text.cc	(revision 9717)
+++ branches/new_class_id/src/lib/graphics/text_engine/text.cc	(revision 9718)
@@ -235,5 +235,5 @@
   glRotatef(this->getAbsDir2D(), 0, 0, 1);
 
-  Glyph* tmpGlyph;
+  const Font::Glyph* tmpGlyph;
   float posX = 0.0f;
   glBegin(GL_QUADS);
Index: branches/new_class_id/src/lib/lang/base_object.cc
===================================================================
--- branches/new_class_id/src/lib/lang/base_object.cc	(revision 9717)
+++ branches/new_class_id/src/lib/lang/base_object.cc	(revision 9718)
@@ -28,5 +28,4 @@
  */
 BaseObject::BaseObject(const std::string& objectName)
-  : _leafClassID(&BaseObject::classID())
 {
   this->className = "BaseObject";
Index: branches/new_class_id/src/lib/lang/base_object.h
===================================================================
--- branches/new_class_id/src/lib/lang/base_object.h	(revision 9717)
+++ branches/new_class_id/src/lib/lang/base_object.h	(revision 9718)
@@ -48,7 +48,7 @@
   inline const std::string& getClassName() const { return _classes.front()._objectList->name(); };
 
-  inline const ClassID& getClassID() const { return *_leafClassID; }
+  inline const ClassID& getClassID() const { return _classes.front()._objectList->identity(); }
   /** @returns the ID of the Topmost object of the ClassStack */
-  inline const int& getLeafClassID() const { return _leafClassID->id(); }
+  inline const int& getLeafClassID() const { return _classes.front()._objectList->identity().id(); }
 
   bool isA(const ObjectListBase& objectList) const;
@@ -89,5 +89,4 @@
   std::string                         className;    //!< the name of the class
   ClassList                           _classes;     //!< All Classes this object is part of.
-  const ClassID*                       _leafClassID;  //!< Topmost ClassID.
 };
 
@@ -105,5 +104,4 @@
 inline void BaseObject::registerObject(T* object, ObjectList<T>& objectList)
 {
-  this->_leafClassID = &objectList.identity();
   this->_classes.push_front(ClassEntry(&objectList, objectList.registerObject(object)));
 }
Index: branches/new_class_id/src/lib/lang/object_list.h
===================================================================
--- branches/new_class_id/src/lib/lang/object_list.h	(revision 9717)
+++ branches/new_class_id/src/lib/lang/object_list.h	(revision 9718)
@@ -72,10 +72,10 @@
   virtual void                          getBaseObjectList(base_list* list) const = 0;
 
-  static const ClassID&              retrieveIdentity(int id);
-  static const ClassID&              retrieveIdentity(const std::string& name);
-
-  static const ObjectListBase* const getObjectList(int classID);
-  static const ObjectListBase* const getObjectList(const std::string& className);
-  static const ObjectListBase* const getObjectList(const ClassID& classID);
+  static const ClassID&                 retrieveIdentity(int id);
+  static const ClassID&                 retrieveIdentity(const std::string& name);
+
+  static const ObjectListBase* const    getObjectList(int classID);
+  static const ObjectListBase* const    getObjectList(const std::string& className);
+  static const ObjectListBase* const    getObjectList(const ClassID& classID);
 
   static BaseObject*                    getBaseObject(int classID, const std::string& objectName);
@@ -115,7 +115,7 @@
 
 private:
-  int                           _id;
+  int                           _id;                //!< The Unique ID of the Class.
   const std::string             _name;              //!< The Name of the Class.
-  ClassID                    _identity;          //!< The Identity of the Class. (equal to _id and _name)
+  ClassID                       _identity;          //!< The Identity of the Class. (equal to _id and _name)
 
 private:
@@ -169,15 +169,19 @@
 {
 public:
-  typedef std::list<T*>                  list;
-  typedef typename list::iterator        iterator;
-  typedef typename list::const_iterator  const_iterator;
-
-
+  typedef std::list<T*>                  list;             //!< The list of Type T* (used for Objects in this ObjectList)
+  typedef typename list::iterator        iterator;         //!< The iterator for the List of type T (use with ObjectList<Type>::iterator)
+  typedef typename list::const_iterator  const_iterator;   //!< A constant iterator for the List of type T (use with ObjectList<Type>::const_iterator)
+
+
+  //! An iterator to store Objects in the BaseObject, and remove Objects fast.
 class Iterator : public ObjectListBase::IteratorBase
   {
   public:
-    Iterator(iterator it) { _it = it; }
+    /** @brief creates an Iterator fast. @param it the Iterator. */
+    inline Iterator(iterator it) { _it = it; }
+    /** @returns the Iterator */
     inline iterator& it() { return _it; }
-    typename ObjectList::iterator _it;
+  private:
+    typename ObjectList::iterator _it;  //!< Stored Iterator
   };
 
@@ -210,5 +214,5 @@
 
 
-  ObjectListBase::IteratorBase*   registerObject(T* object);
+  ObjectListBase::IteratorBase*      registerObject(T* object);
   virtual void                       unregisterObject(IteratorBase* iterator);
 
@@ -288,5 +292,5 @@
  */
 template <class T>
-    bool ObjectList<T>::exists(const T* const object) const
+bool ObjectList<T>::exists(const T* const object) const
 {
   return (std::find(_objects.begin(), _objects.end(), object) != _objects.end());
Index: branches/new_class_id/src/lib/util/loading/resource.cc
===================================================================
--- branches/new_class_id/src/lib/util/loading/resource.cc	(revision 9717)
+++ branches/new_class_id/src/lib/util/loading/resource.cc	(revision 9718)
@@ -18,5 +18,5 @@
 #include "resource.h"
 
-
+ObjectListDefinition(Resource);
 
 
@@ -26,5 +26,5 @@
 Resource::Resource (const std::string& fileName)
 {
-//   this->setClassID(CL_RESOURCE, "Resource");
+  this->registerObject(this, Resource::_objectList);
 
 }
Index: branches/new_class_id/src/lib/util/loading/resource.h
===================================================================
--- branches/new_class_id/src/lib/util/loading/resource.h	(revision 9717)
+++ branches/new_class_id/src/lib/util/loading/resource.h	(revision 9718)
@@ -19,16 +19,17 @@
 class Resource : virtual public BaseObject
 {
+  ObjectListDeclaration(Resource);
 public:
-  class Priority
+  class KeepLevel
   {
   public:
-    void setPriorityName(unsigned int level, const std::string& name)
+    void setKeepLevelName(unsigned int level, const std::string& name)
     {
-      if (_priorityName.size() <= level)
-        _priorityName.resize(level+1);
-      _priorityName[level] = name;
+      if (_keepLevelName.size() <= level)
+        _keepLevelName.resize(level+1);
+      _keepLevelName[level] = name;
     }
   private:
-    std::vector<std::string>     _priorityName;
+    std::vector<std::string>     _keepLevelName;
   };
 
@@ -46,7 +47,5 @@
     std::vector<std::string>      _resourceSubPaths;
     std::vector<std::string>      _fileExtensions;
-
   };
-
 
 public:
@@ -60,20 +59,14 @@
 
 private:
+  std::string              _fileName;
+  MultiType                _parameters[3];          //!< The Parameters given to this Resource.
+  Resource::KeepLevel      _keepLevel;              //!< The Priority of this resource. (can only be increased, so noone else will delete this)
 
-  static std::vector<std::vector<std::string> >     _resourcePaths;
 
-  static std::vector<std::string>                   _resourceClassNames;
+  static std::vector<Resource::Type>     _resourceTypes;
 
   //! GLOBALS
-  static std::string                                _mainGlobalPath;
-  static std::vector<std::string>                   _globalPaths;
-
-  std::string       fileName;
-
-  unsigned int      referenceCount;    //!< How many times this Resource has been loaded.
-  /// TODO REMOVE THIS:   ResourceType      type;              //!< ResourceType of this Resource.
-  Resource::Priority  prio;              //!< The Priority of this resource. (can only be increased, so noone else will delete this)
-
-  MultiType         param[3];          //!< The Parameters given to this Resource.
+  static std::string                     _mainGlobalPath;
+  static std::vector<std::string>        _globalPaths;
 };
 
