Index: orxonox/trunk/src/lib/graphics/importer/array.cc
===================================================================
--- orxonox/trunk/src/lib/graphics/importer/array.cc	(revision 4576)
+++ orxonox/trunk/src/lib/graphics/importer/array.cc	(revision 4577)
@@ -1,3 +1,3 @@
-/* 
+/*
    orxonox - the future of 3D-vertical-scrollers
 
@@ -17,4 +17,6 @@
 
 #include "array.h"
+
+#include "debug.h"
 
 /**
@@ -66,5 +68,5 @@
 void Array::finalizeArray (void)
 {
-  PRINTF(4)("Finalizing array. Length: %i\n", entryCount);  
+  PRINTF(4)("Finalizing array. Length: %i\n", entryCount);
   //  if ((array = (GLfloat*)malloc( entryCount* sizeof(GLfloat))) == NULL)
   if (!(this->array = new GLfloat [this->entryCount]))
@@ -90,5 +92,5 @@
     {
       PRINTF(5)("adding new Entry to Array: %f\n", entry);
-      
+
       this->currentEntry->value = entry;
       this->currentEntry->next = new Entry;
@@ -97,5 +99,5 @@
       ++this->entryCount;
     }
-  else 
+  else
     PRINTF(2)("adding failed, because list has been finalized\n");
 }
@@ -110,5 +112,5 @@
   this->addEntry (entry2);
 }
-  
+
 /**
    \brief Simple debug info about the Array
Index: orxonox/trunk/src/lib/graphics/importer/array.h
===================================================================
--- orxonox/trunk/src/lib/graphics/importer/array.h	(revision 4576)
+++ orxonox/trunk/src/lib/graphics/importer/array.h	(revision 4577)
@@ -8,6 +8,5 @@
 #ifndef _ARRAY_H
 #define _ARRAY_H
-
-#include "stdincl.h"
+#include "glincl.h"
 
 //! Array Class that handles dynamic-float arrays.
@@ -22,9 +21,9 @@
   void addEntry (GLfloat entry);
   void addEntry(GLfloat entry0, GLfloat entry1, GLfloat entry2);
-  
+
   /** \returns The array */
-  inline const GLfloat* getArray () const {return this->array;}
+  inline const GLfloat* getArray () const { return this->array; };
   /**   \returns The Count of entries in the Array*/
-  inline int getCount(void)const {return this->entryCount;}
+  inline int getCount(void)const { return this->entryCount; };
   void debug(void) const ;
  private:
@@ -41,6 +40,6 @@
   Entry* firstEntry;   //!< Pointer to the first Entry of this Array
   Entry* currentEntry; //!< Pointer to the current Entry of this Array. The one Entry we are working with.
-  
-  
+
+
 };
 
Index: orxonox/trunk/src/lib/graphics/importer/model.cc
===================================================================
--- orxonox/trunk/src/lib/graphics/importer/model.cc	(revision 4576)
+++ orxonox/trunk/src/lib/graphics/importer/model.cc	(revision 4577)
@@ -1,3 +1,3 @@
-/* 
+/*
    orxonox - the future of 3D-vertical-scrollers
 
@@ -21,5 +21,4 @@
 #include <stdarg.h>
 
-#include "array.h"
 #include "vector.h"
 #include "list.h"
@@ -38,5 +37,5 @@
   this->vertexNumber = -1;
   this->normalNumber = -1;
-  this->texCoordNumber = -1;    
+  this->texCoordNumber = -1;
 
   this->next = NULL;
@@ -60,7 +59,7 @@
 
   this->firstElem = NULL;
-  
+
   this->material = NULL;
-  
+
   this->next = NULL;
 
@@ -76,5 +75,5 @@
   if (this->firstElem != NULL)
     delete this->firstElem;
-  
+
   if (this->next != NULL)
     delete this->next;
@@ -89,7 +88,7 @@
   this->name = "";
   this->faceMode = -1;
-  this->faceCount = 0;  
+  this->faceCount = 0;
   this->next = NULL;
-  
+
   this->firstFace = new ModelFace;
   this->currentFace = this->firstFace;
@@ -135,6 +134,5 @@
 Model::Model(const char* modelName, MODEL_TYPE type)
 {
-  PRINTF(4)("new 3D-Model is being created\n"); 
-  this->name = NULL;
+  PRINTF(4)("new 3D-Model is being created\n");
   this->setName(modelName);
   this->type = type;
@@ -147,5 +145,5 @@
   this->normalCount = 0;
   this->texCoordCount = 0;
-  
+
   this->scaleFactor = 1;
 
@@ -168,8 +166,7 @@
 {
   PRINTF(4)("Deleting Model ");
-  if (this->name)
-    {
-      PRINT(4)("%s\n", this->name);
-      delete []this->name;
+  if (this->getName())
+    {
+      PRINT(4)("%s\n", this->getName());
     }
   else
@@ -204,5 +201,5 @@
   // this creates the display List.
   this->importToDisplayList();
-  
+
 
   // deletes everything we allocated.
@@ -223,5 +220,5 @@
 void Model::draw (void) const
 {
-  PRINTF(4)("drawing the 3D-Models\n"); 
+  PRINTF(4)("drawing the 3D-Models\n");
   ModelGroup* tmpGroup = this->firstGroup;
   while (tmpGroup != NULL)
@@ -239,5 +236,5 @@
    It does this by just calling the List that must have been created earlier.
 */
-void Model::draw (int groupNumber) const 
+void Model::draw (int groupNumber) const
 {
   if (groupNumber >= this->groupCount)
@@ -246,5 +243,5 @@
       return;
     }
-  PRINTF(4)("drawing the requested 3D-Models if found.\n"); 
+  PRINTF(4)("drawing the requested 3D-Models if found.\n");
   ModelGroup* tmpGroup = this->firstGroup;
   int counter = 0;
@@ -252,13 +249,13 @@
     {
       if (counter == groupNumber)
-	{
-	  PRINTF(4)("Drawing model number %i named %s\n", counter, tmpGroup->name);
-	  glCallList (tmpGroup->listNumber);
-	  return;
-	}
+        {
+          PRINTF(4)("Drawing model number %i named %s\n", counter, tmpGroup->name);
+          glCallList (tmpGroup->listNumber);
+          return;
+        }
       ++counter;
       tmpGroup = tmpGroup->next;
     }
-  PRINTF(2)("Model number %i in %s not Found.\n", groupNumber, this->name);
+  PRINTF(2)("Model number %i in %s not Found.\n", groupNumber, this->getName());
   return;
 
@@ -273,17 +270,17 @@
 void Model::draw (char* groupName) const
 {
-  PRINTF(4)("drawing the requested 3D-Models if found.\n"); 
+  PRINTF(4)("drawing the requested 3D-Models if found.\n");
   ModelGroup* tmpGroup = this->firstGroup;
   while (tmpGroup != NULL)
     {
       if (!strcmp(tmpGroup->name, groupName))
-	{
-	  PRINTF(4)("Drawing model %s\n", tmpGroup->name);
-	  glCallList (tmpGroup->listNumber);
-	  return;
-	}
+        {
+          PRINTF(4)("Drawing model %s\n", tmpGroup->name);
+          glCallList (tmpGroup->listNumber);
+          return;
+        }
       tmpGroup = tmpGroup->next;
     }
-  PRINTF(2)("Model Named %s in %s not Found.\n", groupName, this->name);
+  PRINTF(2)("Model Named %s in %s not Found.\n", groupName, this->getName());
   return;
 }
@@ -292,21 +289,4 @@
 // INIT //
 //////////
-/**
-   \brief sets a name to the Model
-   \param name The name to set to this Model
-*/
-void Model::setName(const char* name)
-{
-  if (this->name)
-    delete []this->name;
-  if (name)
-    {
-      this->name = new char[strlen(name)+1];
-      strcpy(this->name, name);
-    }
-  else 
-    this->name = NULL;
-}
-
 /**
    \brief deletes all the arrays
@@ -334,8 +314,6 @@
   PRINTF(4)("cleaning up the 3D-Model to save Memory.\n");
   this->firstGroup->cleanup();
-  return true; 
-}
-
-
+  return true;
+}
 
 //////////
@@ -366,5 +344,5 @@
 
   // adding material to the List of materials
-  this->materialList->add(newMat);  
+  this->materialList->add(newMat);
   return newMat;
 }
@@ -382,8 +360,8 @@
     {
       if (!strcmp(material->getName(), materialName))
-	{
-	  delete tmpIt;
-	  return material;
-	}
+        {
+          delete tmpIt;
+          return material;
+        }
       material = tmpIt->nextElement();
     }
@@ -396,5 +374,5 @@
    \param groupString the new Group to create
 
-   This function initializes a new Group. 
+   This function initializes a new Group.
    With it you should be able to create Models with more than one SubModel inside
 */
@@ -439,5 +417,5 @@
    \param y the Y-coordinate of the Vertex to add.
    \param z the Z-coordinate of the Vertex to add.
-   
+
 */
 bool Model::addVertex(float x, float y, float z)
@@ -538,5 +516,5 @@
     {
       if (this->currentGroup->currentFace->vertexCount>0)
-	  tmpElem = tmpElem->next = new ModelFaceElement;
+          tmpElem = tmpElem->next = new ModelFaceElement;
       tmpElem->next = NULL;
 
@@ -552,24 +530,24 @@
 
       if ((texture = strstr (vertex, "/")) != NULL)
-	{
-	  texture[0] = '\0';
-	  texture ++;
-	  
-	  if ((normal = strstr (texture, "/")) !=NULL)
-	    {
-	      normal[0] = '\0';
-	      normal ++;
-	    }	  
-	}
+        {
+          texture[0] = '\0';
+          texture ++;
+
+          if ((normal = strstr (texture, "/")) !=NULL)
+            {
+              normal[0] = '\0';
+              normal ++;
+            }
+        }
       if (vertex)
-	tmpElem->vertexNumber = atoi(vertex)-1;
+        tmpElem->vertexNumber = atoi(vertex)-1;
       if (texture)
-	tmpElem->texCoordNumber = atoi(texture)-1;
+        tmpElem->texCoordNumber = atoi(texture)-1;
       if (normal)
-	tmpElem->normalNumber = atoi(normal)-1;
+        tmpElem->normalNumber = atoi(normal)-1;
 
       faceString += tmpLen;
       if (strcmp (faceString, "\0"))
-	faceString++;
+        faceString++;
       this->currentGroup->currentFace->vertexCount++;
     }
@@ -587,7 +565,7 @@
   if (this->currentGroup->faceCount > 0)
     this->currentGroup->currentFace = this->currentGroup->currentFace->next = new ModelFace;
-  
+
   ModelFaceElement* tmpElem = this->currentGroup->currentFace->firstElem = new ModelFaceElement;
-  
+
   va_list itemlist;
   va_start (itemlist, type);
@@ -596,11 +574,11 @@
     {
       if (this->currentGroup->currentFace->vertexCount > 0)
-	tmpElem = tmpElem->next = new ModelFaceElement;
+        tmpElem = tmpElem->next = new ModelFaceElement;
 
       tmpElem->vertexNumber = va_arg (itemlist, int);
       if (type & TEXCOORD)
-	tmpElem->texCoordNumber = va_arg (itemlist, int);
+        tmpElem->texCoordNumber = va_arg (itemlist, int);
       if (type & NORMAL)
- 	tmpElem->normalNumber = va_arg(itemlist, int);
+        tmpElem->normalNumber = va_arg(itemlist, int);
       this->currentGroup->currentFace->vertexCount++;
     }
@@ -618,5 +596,5 @@
   if (this->currentGroup->faceCount > 0)
     this->currentGroup->currentFace = this->currentGroup->currentFace->next = new ModelFace;
-  
+
   this->currentGroup->currentFace->material = this->findMaterialByName(matString);
 
@@ -633,5 +611,5 @@
   if (this->currentGroup->faceCount > 0)
     this->currentGroup->currentFace = this->currentGroup->currentFace->next = new ModelFace;
-  
+
   this->currentGroup->currentFace->material = mtl;
 
@@ -650,5 +628,5 @@
 */
 bool Model::buildVertexNormals ()
-{  
+{
   PRINTF(4)("Normals are being calculated.\n");
 
@@ -656,5 +634,5 @@
   for (int i=0; i<vertices->getCount()/3;i++)
     normArray[i] = Vector(.0,.0,.0);
-  
+
   int firstTouch;
   int secondTouch;
@@ -668,38 +646,38 @@
       ModelFace* tmpFace = tmpGroup->firstFace;
       while (tmpFace)
-	{
-	  if (tmpFace->firstElem)
-	    {
-	      ModelFaceElement* firstElem = tmpFace->firstElem;
-	      ModelFaceElement* prevElem;
-	      ModelFaceElement* curElem = firstElem;
-	      ModelFaceElement* nextElem;
-	      ModelFaceElement* lastElem;
-	      // find last Element of the Chain. !! IMPORTANT:the last Element of the Chain must point to NULL, or it will resolv into an infinity-loop.
-	      while (curElem)
-		{
-		  prevElem = curElem;
-		  curElem = curElem->next;
-		}
-	      lastElem = prevElem;
-	      
-	      curElem = firstElem;
-	      for (int j=0; j<tmpFace->vertexCount; j++)
-		{
-		  if (!(nextElem = curElem->next))
-		    nextElem = firstElem;
-		  curElem->normalNumber = curElem->vertexNumber;
-		  
-		  curV = Vector (vertices->getArray()[curElem->vertexNumber*3], vertices->getArray()[curElem->vertexNumber*3+1], vertices->getArray()[curElem->vertexNumber*3+2]);
-		  prevV = Vector (vertices->getArray()[prevElem->vertexNumber*3], vertices->getArray()[prevElem->vertexNumber*3+1], vertices->getArray()[prevElem->vertexNumber*3+2]) - curV;
-		  nextV = Vector (vertices->getArray()[nextElem->vertexNumber*3], vertices->getArray()[nextElem->vertexNumber*3+1], vertices->getArray()[nextElem->vertexNumber*3+2]) - curV;
-		  normArray[curElem->vertexNumber] = normArray[curElem->vertexNumber] + nextV.cross(prevV);
-
-		  prevElem = curElem;
-		  curElem = curElem->next;
-		}
-	    }
-	  tmpFace = tmpFace->next;
-	}
+        {
+          if (tmpFace->firstElem)
+            {
+              ModelFaceElement* firstElem = tmpFace->firstElem;
+              ModelFaceElement* prevElem;
+              ModelFaceElement* curElem = firstElem;
+              ModelFaceElement* nextElem;
+              ModelFaceElement* lastElem;
+              // find last Element of the Chain. !! IMPORTANT:the last Element of the Chain must point to NULL, or it will resolv into an infinity-loop.
+              while (curElem)
+                {
+                  prevElem = curElem;
+                  curElem = curElem->next;
+                }
+              lastElem = prevElem;
+
+              curElem = firstElem;
+              for (int j=0; j<tmpFace->vertexCount; j++)
+                {
+                  if (!(nextElem = curElem->next))
+                    nextElem = firstElem;
+                  curElem->normalNumber = curElem->vertexNumber;
+
+                  curV = Vector (vertices->getArray()[curElem->vertexNumber*3], vertices->getArray()[curElem->vertexNumber*3+1], vertices->getArray()[curElem->vertexNumber*3+2]);
+                  prevV = Vector (vertices->getArray()[prevElem->vertexNumber*3], vertices->getArray()[prevElem->vertexNumber*3+1], vertices->getArray()[prevElem->vertexNumber*3+2]) - curV;
+                  nextV = Vector (vertices->getArray()[nextElem->vertexNumber*3], vertices->getArray()[nextElem->vertexNumber*3+1], vertices->getArray()[nextElem->vertexNumber*3+2]) - curV;
+                  normArray[curElem->vertexNumber] = normArray[curElem->vertexNumber] + nextV.cross(prevV);
+
+                  prevElem = curElem;
+                  curElem = curElem->next;
+                }
+            }
+          tmpFace = tmpFace->next;
+        }
       tmpGroup = tmpGroup->next;
     }
@@ -709,9 +687,9 @@
       normArray[i].normalize();
       PRINTF(5)("Found Normale number %d: (%f; %f, %f).\n", i, normArray[i].x, normArray[i].y, normArray[i].z);
-      
+
       this->addVertexNormal(normArray[i].x, normArray[i].y, normArray[i].z);
 
     }
-  delete []normArray; 
+  delete []normArray;
 }
 
@@ -738,8 +716,8 @@
       // creating a glList for the Group
       if ((this->currentGroup->listNumber = glGenLists(1)) == 0)
-	{
-	  PRINTF(2)("glList could not be created for this Model\n");
-	  return false;
-	}
+        {
+          PRINTF(2)("glList could not be created for this Model\n");
+          return false;
+        }
       glNewList (this->currentGroup->listNumber, GL_COMPILE);
 
@@ -747,66 +725,66 @@
       ModelFace* tmpFace = this->currentGroup->firstFace;
       while (tmpFace != NULL)
-	{
-	  if (tmpFace->vertexCount == 0 && tmpFace->material != NULL)
-	    {
-	      if (this->currentGroup->faceMode != -1)
-		glEnd();
-	      this->currentGroup->faceMode = 0;
-	      Material* tmpMat;
-	      if (tmpFace->material != NULL)
-		{
-		  tmpFace->material->select();
-		  PRINTF(5)("using material %s for coming Faces.\n", tmpFace->material->getName());
-		}
-	    }
-
-	  else if (tmpFace->vertexCount == 3)
-	    {
-	      if (this->currentGroup->faceMode != 3)
-		{
-		  if (this->currentGroup->faceMode != -1)
-		    glEnd();
-		  glBegin(GL_TRIANGLES);
-		}
-	      
-	      this->currentGroup->faceMode = 3;
-	      PRINTF(5)("found triag.\n");
-	    }
-	  
-	  else if (tmpFace->vertexCount == 4)
-	    {
-	      if (this->currentGroup->faceMode != 4)
-		{
-		  if (this->currentGroup->faceMode != -1)
-		    glEnd();
-		  glBegin(GL_QUADS);
-		}
-	      this->currentGroup->faceMode = 4;
-	      PRINTF(5)("found quad.\n");
-	    }
-	  
-	  else if (tmpFace->vertexCount > 4)
-	    {
-	      if (this->currentGroup->faceMode != -1)
-		glEnd();
-	      glBegin(GL_POLYGON);
-	      PRINTF(5)("Polygon with %i faces found.", tmpFace->vertexCount);
-	      this->currentGroup->faceMode = tmpFace->vertexCount;
-	    }
-	  
-	  ModelFaceElement* tmpElem = tmpFace->firstElem;
-	  while (tmpElem != NULL)
-	    {
-	      //      PRINTF(2)("%s\n", tmpElem->value);
-	      this->addGLElement(tmpElem);
-	      tmpElem = tmpElem->next;
-	    }
-	  tmpFace = tmpFace->next;
-	}
+        {
+          if (tmpFace->vertexCount == 0 && tmpFace->material != NULL)
+            {
+              if (this->currentGroup->faceMode != -1)
+                glEnd();
+              this->currentGroup->faceMode = 0;
+              Material* tmpMat;
+              if (tmpFace->material != NULL)
+                {
+                  tmpFace->material->select();
+                  PRINTF(5)("using material %s for coming Faces.\n", tmpFace->material->getName());
+                }
+            }
+
+          else if (tmpFace->vertexCount == 3)
+            {
+              if (this->currentGroup->faceMode != 3)
+                {
+                  if (this->currentGroup->faceMode != -1)
+                    glEnd();
+                  glBegin(GL_TRIANGLES);
+                }
+
+              this->currentGroup->faceMode = 3;
+              PRINTF(5)("found triag.\n");
+            }
+
+          else if (tmpFace->vertexCount == 4)
+            {
+              if (this->currentGroup->faceMode != 4)
+                {
+                  if (this->currentGroup->faceMode != -1)
+                    glEnd();
+                  glBegin(GL_QUADS);
+                }
+              this->currentGroup->faceMode = 4;
+              PRINTF(5)("found quad.\n");
+            }
+
+          else if (tmpFace->vertexCount > 4)
+            {
+              if (this->currentGroup->faceMode != -1)
+                glEnd();
+              glBegin(GL_POLYGON);
+              PRINTF(5)("Polygon with %i faces found.", tmpFace->vertexCount);
+              this->currentGroup->faceMode = tmpFace->vertexCount;
+            }
+
+          ModelFaceElement* tmpElem = tmpFace->firstElem;
+          while (tmpElem != NULL)
+            {
+              //      PRINTF(2)("%s\n", tmpElem->value);
+              this->addGLElement(tmpElem);
+              tmpElem = tmpElem->next;
+            }
+          tmpFace = tmpFace->next;
+        }
       glEnd();
       glEndList();
 
       this->currentGroup = this->currentGroup->next;
-    } 
+    }
 }
 
@@ -832,5 +810,5 @@
 
 /**
-   \brief Adds a Face-element (one vertex of a face) with all its information. 
+   \brief Adds a Face-element (one vertex of a face) with all its information.
    \param elem The FaceElement to add to the OpenGL-environment.
 
@@ -848,8 +826,8 @@
     {
       if (likely(elem->texCoordNumber < this->texCoordCount))
-	glTexCoord2fv(this->vTexture->getArray() + elem->texCoordNumber * 2);
+        glTexCoord2fv(this->vTexture->getArray() + elem->texCoordNumber * 2);
       else
-	PRINTF(2)("TextureCoordinate %d is not in the List (max: %d)\nThe Model might be incomplete\n",
-		  elem->texCoordNumber, this->texCoordCount);
+        PRINTF(2)("TextureCoordinate %d is not in the List (max: %d)\nThe Model might be incomplete\n",
+                  elem->texCoordNumber, this->texCoordCount);
     }
   if (elem->normalNumber != -1)
@@ -858,15 +836,15 @@
       glNormal3fv(this->normals->getArray() + elem->normalNumber * 3);
     else
-	PRINTF(2)("Normal %d is not in the List (max: %d)\nThe Model might be incomplete",
-		  elem->normalNumber, this->normalCount);      
+        PRINTF(2)("Normal %d is not in the List (max: %d)\nThe Model might be incomplete",
+                  elem->normalNumber, this->normalCount);
     }
   if (elem->vertexNumber != -1)
     {
       if (likely(elem->vertexNumber < this->vertexCount))
-	  glVertex3fv(this->vertices->getArray() + elem->vertexNumber * 3);
+          glVertex3fv(this->vertices->getArray() + elem->vertexNumber * 3);
       else
-	PRINTF(2)("Vertex %d is not in the List (max: %d)\nThe Model might be incomplete",
-		  elem->vertexNumber, this->vertexCount);      
-    }	
+        PRINTF(2)("Vertex %d is not in the List (max: %d)\nThe Model might be incomplete",
+                  elem->vertexNumber, this->vertexCount);
+    }
 
 }
Index: orxonox/trunk/src/lib/graphics/importer/model.h
===================================================================
--- orxonox/trunk/src/lib/graphics/importer/model.h	(revision 4576)
+++ orxonox/trunk/src/lib/graphics/importer/model.h	(revision 4577)
@@ -7,6 +7,9 @@
 #define _MODEL_H
 
+#include "base_object.h"
 #include "material.h"
 #include "glincl.h"
+#include "array.h"
+
 
 // FORWARD DEFINITION //
@@ -19,7 +22,8 @@
    MODEL_DISPLAY_LIST means, that a DisplayList will be built out of the model. This model will be STATIC, meaning it cannot be changed after initialisation.
    MODEL_VERTEX_ARRAY means, that a VertexArray will be built out of the model. This moel will be DYNAMIX, meaning that one can change the properties from outside of the model.
+ * \todo implement this stuff
 */
 typedef enum MODEL_TYPE {MODEL_DISPLAY_LIST,
-			 MODEL_VERTEX_ARRAY};
+                         MODEL_VERTEX_ARRAY};
 
 
@@ -30,8 +34,8 @@
 
 //! an enumerator for VERTEX_FORMAT
-typedef enum VERTEX_FORMAT {VERTEX_ONLY = VERTEX,
-			    VERTEX_NORMAL = NORMAL,
-			    VERTEX_TEXCOORD = TEXCOORD,
-			    VERTEX_TEXCOORD_NORMAL = NORMAL | TEXCOORD};
+typedef enum VERTEX_FORMAT { VERTEX_ONLY = VERTEX,
+                             VERTEX_NORMAL = NORMAL,
+                             VERTEX_TEXCOORD = TEXCOORD,
+                             VERTEX_TEXCOORD_NORMAL = NORMAL | TEXCOORD };
 
 ////////////////////
@@ -45,9 +49,9 @@
   ~ModelFaceElement();
 
-  int                vertexNumber;         //!< The number of the Vertex out of the Array* vertices, this vertex points to.
-  int                normalNumber;         //!< The number of the Normal out of the Array* normals, this vertex points to.
-  int                texCoordNumber;       //!< The number of the textureCoordinate out of the Array* vTexture, this vertex points to.
+  int                 vertexNumber;         //!< The number of the Vertex out of the Array* vertices, this vertex points to.
+  int                 normalNumber;         //!< The number of the Normal out of the Array* normals, this vertex points to.
+  int                 texCoordNumber;       //!< The number of the textureCoordinate out of the Array* vTexture, this vertex points to.
 
-  ModelFaceElement*  next;                 //!< Point to the next FaceElement in this List.
+  ModelFaceElement*   next;                 //!< Point to the next FaceElement in this List.
 };
 
@@ -58,11 +62,11 @@
   ModelFace();
   ~ModelFace();
-  
-  int                 vertexCount;     //!< The Count of vertices this Face has.
+
+  unsigned int        vertexCount;     //!< The Count of vertices this Face has.
   ModelFaceElement*   firstElem;       //!< Points to the first Vertex (FaceElement) of this Face.
   Material*           material;        //!< The Material to use.
-  
+
   ModelFace*          next;            //!< Pointer to the next Face.
-}; 
+};
 
 //! Group to handle multiple Models per obj-file.
@@ -82,5 +86,5 @@
   int          faceMode;       //!< The Mode the Face is in: initially -1, 0 for FaceList opened, 1 for Material,  3 for triangle, 4 for Quad, 5+ for Poly \todo ENUM...
   int          faceCount;      //!< The Number of Faces this Group holds.
-  
+
   ModelGroup*  next;           //!< Pointer to the next Group.
 };
@@ -91,5 +95,5 @@
 
 //! Class that handles 3D-Models. it can also read them in and display them.
-class Model
+class Model : public BaseObject
 {
  public:
@@ -97,8 +101,4 @@
   virtual ~Model(void);
 
-  void setName(const char* name);
-  /** \returns the Name of the Model */
-  inline const char* getName() {return this->name;}
-  
   void draw(void) const;
   void draw(int groupNumber) const;
@@ -106,5 +106,21 @@
 
   /** \returns Count of the Models (Groups) in this File */
-  inline int getGroupCount(void) const {return this->groupCount;}
+  inline int getGroupCount(void) const { return this->groupCount; };
+
+  /** \returns a Pointer to the Vertex-Array, if it was deleted it returns NULL */
+  inline const GLfloat* getVertexArray(void) const { return this->vertices->getArray(); };
+  /** \returns the VertexCount of this Model */
+  inline unsigned int getVertexArrayCount(void) const { return this->vertexCount; };
+
+  /** \returns a Pointer to the Normals-Array, if it was deleted it returns NULL */
+  inline const GLfloat* getNormalsArray(void) const { return this->normals->getArray(); };
+  /** \returns the NormalsCount of this Model */
+  inline unsigned int getNormalsArrayCount(void) const { return this->normalCount; };
+
+  /** \returns a Pointer to the TexCoord-Array, if it was deleted it returns NULL */
+  inline const GLfloat* getTexCoordArray(void) const { return this->vTexture->getArray(); };
+  /** \returns the TexCoord-Count of this Model */
+  inline unsigned int getTexCoordArrayCount(void) const { return this->texCoordCount; };
+
 
   Material* addMaterial(Material* material);
@@ -152,11 +168,10 @@
 
  private:
-  char*            name;            //!< This is the name of the Model.
   MODEL_TYPE       type;            //!< A type for the Model
   bool             finalized;       //!< Sets the Object to be finalized.
 
-  int              vertexCount;     //!< A modelwide Counter for vertices.
-  int              normalCount;     //!< A modelwide Counter for the normals.
-  int              texCoordCount;   //!< A modelwide Counter for the texCoord.
+  unsigned int     vertexCount;     //!< A modelwide Counter for vertices.
+  unsigned int     normalCount;     //!< A modelwide Counter for the normals.
+  unsigned int     texCoordCount;   //!< A modelwide Counter for the texCoord.
   Array*           vertices;        //!< The Array that handles the Vertices.
   Array*           normals;         //!< The Array that handles the Normals.
