Index: /branches/newModel/src/lib/collision_detection/bounding_volume.h
===================================================================
--- /branches/newModel/src/lib/collision_detection/bounding_volume.h	(revision 6020)
+++ /branches/newModel/src/lib/collision_detection/bounding_volume.h	(revision 6021)
@@ -9,5 +9,5 @@
 
 #include "base_object.h"
-#include "abstract_model.h"
+#include "model.h"
 
 class Vector;
Index: /branches/newModel/src/lib/collision_detection/bv_tree.h
===================================================================
--- /branches/newModel/src/lib/collision_detection/bv_tree.h	(revision 6020)
+++ /branches/newModel/src/lib/collision_detection/bv_tree.h	(revision 6021)
@@ -10,5 +10,5 @@
 
 #include "base_object.h"
-#include "abstract_model.h"
+#include "model.h"
 
 // FORWARD DECLARATION
Index: /branches/newModel/src/lib/collision_detection/bv_tree_node.h
===================================================================
--- /branches/newModel/src/lib/collision_detection/bv_tree_node.h	(revision 6020)
+++ /branches/newModel/src/lib/collision_detection/bv_tree_node.h	(revision 6021)
@@ -9,5 +9,5 @@
 
 #include "base_object.h"
-#include "abstract_model.h"
+#include "model.h"
 #include "vector.h"
 
Index: /branches/newModel/src/lib/collision_detection/cd_engine.cc
===================================================================
--- /branches/newModel/src/lib/collision_detection/cd_engine.cc	(revision 6020)
+++ /branches/newModel/src/lib/collision_detection/cd_engine.cc	(revision 6021)
@@ -21,5 +21,5 @@
 #include "list.h"
 
-#include "abstract_model.h"
+#include "model.h"
 #include "world_entity.h"
 #include "terrain.h"
Index: /branches/newModel/src/lib/collision_detection/cd_engine.h
===================================================================
--- /branches/newModel/src/lib/collision_detection/cd_engine.h	(revision 6020)
+++ /branches/newModel/src/lib/collision_detection/cd_engine.h	(revision 6021)
@@ -10,5 +10,5 @@
 #include "base_object.h"
 #include "collision_defs.h"
-#include "abstract_model.h"
+#include "model.h"
 
 
Index: /branches/newModel/src/lib/collision_detection/obb_tree.h
===================================================================
--- /branches/newModel/src/lib/collision_detection/obb_tree.h	(revision 6020)
+++ /branches/newModel/src/lib/collision_detection/obb_tree.h	(revision 6021)
@@ -9,5 +9,5 @@
 
 #include "bv_tree.h"
-#include "abstract_model.h"
+#include "model.h"
 #include "material.h"
 
Index: /branches/newModel/src/lib/collision_detection/obb_tree_node.cc
===================================================================
--- /branches/newModel/src/lib/collision_detection/obb_tree_node.cc	(revision 6020)
+++ /branches/newModel/src/lib/collision_detection/obb_tree_node.cc	(revision 6021)
@@ -21,5 +21,5 @@
 #include "obb_tree.h"
 #include "matrix.h"
-#include "abstract_model.h"
+#include "model.h"
 #include "world_entity.h"
 
Index: /branches/newModel/src/lib/graphics/importer/Makefile.am
===================================================================
--- /branches/newModel/src/lib/graphics/importer/Makefile.am	(revision 6020)
+++ /branches/newModel/src/lib/graphics/importer/Makefile.am	(revision 6021)
@@ -4,7 +4,7 @@
 noinst_LIBRARIES = libORXimporter.a
 
-libORXimporter_a_SOURCES = abstract_model.cc \
+libORXimporter_a_SOURCES = model.cc \
                            vertex_array_model.cc \
-                           model.cc \
+                           static_model.cc \
                            objModel.cc \
                            primitive_model.cc \
@@ -16,7 +16,7 @@
 
 
-noinst_HEADERS = abstract_model.h \
+noinst_HEADERS = model.h \
                  vertex_array_model.h \
-                 model.h \
+                 static_model.h \
                  objModel.h \
                  primitive_model.h \
Index: anches/newModel/src/lib/graphics/importer/abstract_model.cc
===================================================================
--- /branches/newModel/src/lib/graphics/importer/abstract_model.cc	(revision 6020)
+++ 	(revision )
@@ -1,47 +1,0 @@
-/*
-   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: Patrick Boenzli
-   co-programmer: ...
-*/
-
-#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_MODEL
-
-#include "abstract_model.h"
-
-using namespace std;
-
-
-/**
- * standard constructor
- * @todo this constructor is not jet implemented - do it
-*/
-AbstractModel::AbstractModel()
-{
-//   this->setClassID(CL_PROTO_ID, "ProtoClass");
-  this->pModelInfo.numVertices = 0;
-  this->pModelInfo.numTriangles = 0;
-  this->pModelInfo.numTexCoor = 0;
-
-  this->pModelInfo.pVertices = NULL;
-  this->pModelInfo.pTriangles = NULL;
-  this->pModelInfo.pNormals = NULL;
-  this->pModelInfo.pTexCoor = NULL;
-}
-
-
-/**
- * standard deconstructor
-*/
-AbstractModel::~AbstractModel()
-{
-  // delete what has to be deleted here
-}
Index: anches/newModel/src/lib/graphics/importer/abstract_model.h
===================================================================
--- /branches/newModel/src/lib/graphics/importer/abstract_model.h	(revision 6020)
+++ 	(revision )
@@ -1,160 +1,0 @@
-/*
-   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: Patrick Boenzli
-   co-programmer:
-*/
-
-/*!
- * @file abstract_model.h
- *  Definition of an abstract model. containing all needed for other model
- */
-
-#ifndef _ABSTRACT_MODEL_H
-#define _ABSTRACT_MODEL_H
-
-#include "base_object.h"
-#include "vector.h"
-
-using namespace std;
-
-
-
-//! compressed vertex data: char insetead of float, the value will be expanded by the scale value. only for loading
-typedef struct
-{
-  char             v[3];                 //!< the vector of the vertex
-  unsigned char    lightNormalIndex;     //!< the index of the light normal
-} sVertex;
-
-
-//! compressed texture offset data: coords scaled by the texture size. Only for loading
-typedef struct
-{
-  short            s;                    //!< the s,t coordinates of a texture
-  short            t;                    //!< the s,t coordinates of a texture
-} sTexCoor;
-
-
-//! holds tha informations about a md2 frame
-typedef struct
-{
-  sVec3D           scale;                //!< scales values of the model
-  sVec3D           translate;            //!< translates the model
-  char             name[16];             //!< frame name: something like "run32"
-  sVertex          pVertices[1];         //!< first vertex of thes frame
-} sFrame;
-
-
-//! holds the information about a triangle
-typedef struct
-{
-  unsigned short   indexToVertices[3];   //!< index to the verteces of the triangle
-  unsigned short   indexToTexCoor[3];    //!< index to the texture coordinates
-} sTriangle;
-
-
-//! holds the information about a triangle
-typedef struct
-{
-  unsigned int   indexToVertices[3];   //!< index to the verteces of the triangle
-  unsigned int   indexToNormals[3];    //!< index to the normals of the triangle
-  unsigned int   indexToTexCoor[3];    //!< index to the texture coordinates
-} sTriangleExt;
-
-
-//! the command list of the md2 model, very md2 specific
-typedef struct
-{
-  float            s;                    //!< texture coordinate 1
-  float            t;                    //!< texture coordinate 2
-  int              vertexIndex;          //!< index of the vertex in the vertex list
-} glCommandVertex;
-
-
-//! a md2 animation definition
-typedef struct
-{
-  int              firstFrame;           //!< first frame of the animation
-  int              lastFrame;            //!< last frame of the animation
-  int              fps;                  //!< speed: number of frames per second
-} sAnim;
-
-
-//! animation state definition
-typedef struct
-{
-  int              startFrame;           //!< the start frame of an animation
-  int              endFrame;             //!< last frame of the animation
-  int              fps;                  //!< fps of the animaion (speed)
-
-  float            localTime;            //!< the local time
-  float            lastTime;             //!< last time stamp
-  float            interpolationState;   //!< the state of the animation [0..1]
-
-  int              type;                 //!< animation type
-
-  int              currentFrame;         //!< the current frame
-  int              nextFrame;            //!< the next frame in the list
-} sAnimState;
-
-//! Model Information definitions
-typedef struct
-{
-  unsigned int     numVertices;          //!< number of Vertices in the Model
-  unsigned int     numTriangles;         //!< number of triangles in the Model
-  unsigned int     numNormals;           //!< how many Normals in the Model
-  unsigned int     numTexCoor;           //!< how many Texture Coordinates in the Model
-
-  const float*     pVertices;            //!< array of the Vertives
-  sTriangleExt*    pTriangles;           //!< array of all triangles
-  const float*     pNormals;             //!< array of the Normals
-  const float*     pTexCoor;             //!< array of the Texture Coordinates
-
-} modelInfo;
-
-
-
-//! This class defines the basic components of a model
-class AbstractModel : public BaseObject {
-
-  public:
-    AbstractModel();
-    virtual ~AbstractModel();
-
-    inline const modelInfo* getModelInfo() const { return &this->pModelInfo; }
-
-    /** @returns a Pointer to the Vertex-Array, if it was deleted it returns NULL */
-    inline const float* getVertexArray() const { return this->pModelInfo.pVertices; };
-    /** @returns the VertexCount of this Model */
-    inline unsigned int getVertexCount() const { return this->pModelInfo.numVertices; };
-
-    /** @returns a Pointer to the Normals-Array, if it was deleted it returns NULL */
-    inline const float* getNormalsArray() const { return this->pModelInfo.pNormals; };
-    /** @returns the NormalsCount of this Model */
-    inline unsigned int getNormalsCount() const { return this->pModelInfo.numNormals; };
-
-    /** @returns a Pointer to the TexCoord-Array, if it was deleted it returns NULL */
-    inline const float* getTexCoordArray() const { return this->pModelInfo.pTexCoor; };
-    /** @returns the TexCoord-Count of this Model */
-    inline unsigned int getTexCoordCount() const { return this->pModelInfo.numTexCoor; };
-
-    /** @returns the Array of triangles */
-    inline sTriangleExt* getTriangles() const { return this->pModelInfo.pTriangles; };
-    /** @returns the Count of Faces of this Model */
-    inline unsigned int getFaceCount() const { return this->pModelInfo.numTriangles; };
-
-
-  protected:
-    modelInfo      pModelInfo;      //!< Reference to the modelInfo
-};
-
-#endif /* _ABSTRACT_MODEL_H */
Index: /branches/newModel/src/lib/graphics/importer/md2Model.cc
===================================================================
--- /branches/newModel/src/lib/graphics/importer/md2Model.cc	(revision 6020)
+++ /branches/newModel/src/lib/graphics/importer/md2Model.cc	(revision 6021)
@@ -160,6 +160,8 @@
 
 /**
-  \brief draws the model: interface for all other classes out in the world
-*/
+ * @brief draws the model: interface for all other classes out in the world
+ * @todo make it const and virtual
+ * FIXME
+ */
 void MD2Model::draw()
 {
Index: /branches/newModel/src/lib/graphics/importer/md2Model.h
===================================================================
--- /branches/newModel/src/lib/graphics/importer/md2Model.h	(revision 6020)
+++ /branches/newModel/src/lib/graphics/importer/md2Model.h	(revision 6021)
@@ -19,5 +19,5 @@
 #define _MD2MODEL_H
 
-#include "abstract_model.h"
+#include "model.h"
 #include "base_object.h"
 #include "stdincl.h"
@@ -137,5 +137,5 @@
 
 //! This is a MD2 Model class
-class MD2Model : public AbstractModel {
+class MD2Model : public Model {
 
 public:
Index: /branches/newModel/src/lib/graphics/importer/model.cc
===================================================================
--- /branches/newModel/src/lib/graphics/importer/model.cc	(revision 6021)
+++ /branches/newModel/src/lib/graphics/importer/model.cc	(revision 6021)
@@ -0,0 +1,46 @@
+/*
+   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: Patrick Boenzli
+   co-programmer: ...
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_MODEL
+
+#include "model.h"
+
+using namespace std;
+
+/**
+ * standard constructor
+ * @todo this constructor is not jet implemented - do it
+*/
+Model::Model()
+{
+//   this->setClassID(CL_PROTO_ID, "ProtoClass");
+  this->pModelInfo.numVertices = 0;
+  this->pModelInfo.numTriangles = 0;
+  this->pModelInfo.numTexCoor = 0;
+
+  this->pModelInfo.pVertices = NULL;
+  this->pModelInfo.pTriangles = NULL;
+  this->pModelInfo.pNormals = NULL;
+  this->pModelInfo.pTexCoor = NULL;
+}
+
+
+/**
+ * standard deconstructor
+*/
+Model::~Model()
+{
+  // delete what has to be deleted here
+}
Index: /branches/newModel/src/lib/graphics/importer/model.h
===================================================================
--- /branches/newModel/src/lib/graphics/importer/model.h	(revision 6021)
+++ /branches/newModel/src/lib/graphics/importer/model.h	(revision 6021)
@@ -0,0 +1,163 @@
+/*
+   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: Patrick Boenzli
+   co-programmer:
+*/
+
+/*!
+ * @file model.h
+ *  Definition of an abstract model.
+ *  containing all needed for other models
+ */
+
+#ifndef _MODEL_H
+#define _MODEL_H
+
+#include "base_object.h"
+#include "vector.h"
+
+using namespace std;
+
+
+
+//! compressed vertex data: char insetead of float, the value will be expanded by the scale value. only for loading
+typedef struct
+{
+  char             v[3];                 //!< the vector of the vertex
+  unsigned char    lightNormalIndex;     //!< the index of the light normal
+} sVertex;
+
+
+//! compressed texture offset data: coords scaled by the texture size. Only for loading
+typedef struct
+{
+  short            s;                    //!< the s,t coordinates of a texture
+  short            t;                    //!< the s,t coordinates of a texture
+} sTexCoor;
+
+
+//! holds tha informations about a md2 frame
+typedef struct
+{
+  sVec3D           scale;                //!< scales values of the model
+  sVec3D           translate;            //!< translates the model
+  char             name[16];             //!< frame name: something like "run32"
+  sVertex          pVertices[1];         //!< first vertex of thes frame
+} sFrame;
+
+
+//! holds the information about a triangle
+typedef struct
+{
+  unsigned short   indexToVertices[3];   //!< index to the verteces of the triangle
+  unsigned short   indexToTexCoor[3];    //!< index to the texture coordinates
+} sTriangle;
+
+
+//! holds the information about a triangle
+typedef struct
+{
+  unsigned int   indexToVertices[3];   //!< index to the verteces of the triangle
+  unsigned int   indexToNormals[3];    //!< index to the normals of the triangle
+  unsigned int   indexToTexCoor[3];    //!< index to the texture coordinates
+} sTriangleExt;
+
+
+//! the command list of the md2 model, very md2 specific
+typedef struct
+{
+  float            s;                    //!< texture coordinate 1
+  float            t;                    //!< texture coordinate 2
+  int              vertexIndex;          //!< index of the vertex in the vertex list
+} glCommandVertex;
+
+
+//! a md2 animation definition
+typedef struct
+{
+  int              firstFrame;           //!< first frame of the animation
+  int              lastFrame;            //!< last frame of the animation
+  int              fps;                  //!< speed: number of frames per second
+} sAnim;
+
+
+//! animation state definition
+typedef struct
+{
+  int              startFrame;           //!< the start frame of an animation
+  int              endFrame;             //!< last frame of the animation
+  int              fps;                  //!< fps of the animaion (speed)
+
+  float            localTime;            //!< the local time
+  float            lastTime;             //!< last time stamp
+  float            interpolationState;   //!< the state of the animation [0..1]
+
+  int              type;                 //!< animation type
+
+  int              currentFrame;         //!< the current frame
+  int              nextFrame;            //!< the next frame in the list
+} sAnimState;
+
+//! Model Information definitions
+typedef struct
+{
+  unsigned int     numVertices;          //!< number of Vertices in the Model
+  unsigned int     numTriangles;         //!< number of triangles in the Model
+  unsigned int     numNormals;           //!< how many Normals in the Model
+  unsigned int     numTexCoor;           //!< how many Texture Coordinates in the Model
+
+  const float*     pVertices;            //!< array of the Vertives
+  sTriangleExt*    pTriangles;           //!< array of all triangles
+  const float*     pNormals;             //!< array of the Normals
+  const float*     pTexCoor;             //!< array of the Texture Coordinates
+
+} modelInfo;
+
+
+
+//! This class defines the basic components of a model
+class Model : public BaseObject {
+
+  public:
+    Model();
+    virtual ~Model();
+
+    virtual void draw() const {  }
+
+    inline const modelInfo* getModelInfo() const { return &this->pModelInfo; }
+
+    /** @returns a Pointer to the Vertex-Array, if it was deleted it returns NULL */
+    inline const float* getVertexArray() const { return this->pModelInfo.pVertices; };
+    /** @returns the VertexCount of this Model */
+    inline unsigned int getVertexCount() const { return this->pModelInfo.numVertices; };
+
+    /** @returns a Pointer to the Normals-Array, if it was deleted it returns NULL */
+    inline const float* getNormalsArray() const { return this->pModelInfo.pNormals; };
+    /** @returns the NormalsCount of this Model */
+    inline unsigned int getNormalsCount() const { return this->pModelInfo.numNormals; };
+
+    /** @returns a Pointer to the TexCoord-Array, if it was deleted it returns NULL */
+    inline const float* getTexCoordArray() const { return this->pModelInfo.pTexCoor; };
+    /** @returns the TexCoord-Count of this Model */
+    inline unsigned int getTexCoordCount() const { return this->pModelInfo.numTexCoor; };
+
+    /** @returns the Array of triangles */
+    inline sTriangleExt* getTriangles() const { return this->pModelInfo.pTriangles; };
+    /** @returns the Count of Faces of this Model */
+    inline unsigned int getFaceCount() const { return this->pModelInfo.numTriangles; };
+
+
+  protected:
+    modelInfo      pModelInfo;      //!< Reference to the modelInfo
+};
+
+#endif /* _MODEL_H */
Index: /branches/newModel/src/lib/graphics/importer/objModel.cc
===================================================================
--- /branches/newModel/src/lib/graphics/importer/objModel.cc	(revision 6020)
+++ /branches/newModel/src/lib/graphics/importer/objModel.cc	(revision 6021)
@@ -32,5 +32,5 @@
  * @param scaling The factor that the model will be scaled with.
 */
-OBJModel::OBJModel(const char* fileName, float scaling) : Model(fileName)
+OBJModel::OBJModel(const char* fileName, float scaling) : StaticModel(fileName)
 {
   this->objPath = "./";
Index: /branches/newModel/src/lib/graphics/importer/objModel.h
===================================================================
--- /branches/newModel/src/lib/graphics/importer/objModel.h	(revision 6020)
+++ /branches/newModel/src/lib/graphics/importer/objModel.h	(revision 6021)
@@ -7,8 +7,8 @@
 #define _OBJMODEL_H
 
-#include "model.h"
+#include "static_model.h"
 
 //! A Class, that handles the parsing of an obj-file, and inclusion as a Model.
-class OBJModel : public Model
+class OBJModel : public StaticModel
 {
  public:
Index: /branches/newModel/src/lib/graphics/importer/primitive_model.h
===================================================================
--- /branches/newModel/src/lib/graphics/importer/primitive_model.h	(revision 6020)
+++ /branches/newModel/src/lib/graphics/importer/primitive_model.h	(revision 6021)
@@ -8,5 +8,5 @@
 #define _PRIMITIVE_MODEL_H
 
-#include "model.h"
+#include "static_model.h"
 
 //! Specification of different primitives the Model knows
@@ -18,5 +18,5 @@
 
 //! A Class to create some default Models
-class PrimitiveModel : public Model {
+class PrimitiveModel : public StaticModel {
 
  public:
Index: /branches/newModel/src/lib/graphics/importer/static_model.cc
===================================================================
--- /branches/newModel/src/lib/graphics/importer/static_model.cc	(revision 6020)
+++ /branches/newModel/src/lib/graphics/importer/static_model.cc	(revision 6021)
@@ -18,5 +18,5 @@
 #define DEBUG_SPECIAL_MODULE DEBUG_MODULE_IMPORTER
 
-#include "model.h"
+#include "static_model.h"
 
 #include "stdlibincl.h"
@@ -141,5 +141,5 @@
    assigns it a Name and a Type
 */
-Model::Model(const char* modelName, MODEL_TYPE type)
+StaticModel::StaticModel(const char* modelName, MODEL_TYPE type)
 {
   this->setClassID(CL_MODEL, "Model");
@@ -174,5 +174,5 @@
    Looks if any from model allocated space is still in use, and if so deleted it.
 */
-Model::~Model()
+StaticModel::~StaticModel()
 {
   PRINTF(4)("Deleting Model ");
@@ -209,5 +209,5 @@
  *  Finalizes an Object. This can be done outside of the Class.
 */
-void Model::finalize()
+void StaticModel::finalize()
 {
   // this creates the display List.
@@ -236,5 +236,5 @@
  * rebuild the Model from the Information we got.
  */
-void Model::rebuild()
+void StaticModel::rebuild()
 {
   PRINTF(3)("Rebuilding Model '%s'\n", this->getName());
@@ -250,5 +250,5 @@
    It does this by just calling the Lists that must have been created earlier.
 */
-void Model::draw () const
+void StaticModel::draw () const
 {
 
@@ -295,5 +295,5 @@
    It does this by just calling the List that must have been created earlier.
 */
-void Model::draw (int groupNumber) const
+void StaticModel::draw (int groupNumber) const
 {
   if (groupNumber >= this->groupCount)
@@ -327,5 +327,5 @@
    It does this by just calling the List that must have been created earlier.
 */
-void Model::draw (char* groupName) const
+void StaticModel::draw (char* groupName) const
 {
   PRINTF(4)("drawing the requested 3D-Models if found.\n");
@@ -351,5 +351,5 @@
  *  deletes all the arrays
 */
-bool Model::deleteArrays()
+bool StaticModel::deleteArrays()
 {
   if (this->vertices)
@@ -375,5 +375,5 @@
  * This will be applied at the end of the importing Process.
 */
-bool Model::cleanup()
+bool StaticModel::cleanup()
 {
   PRINTF(4)("cleaning up the 3D-Model to save Memory.\n");
@@ -393,5 +393,5 @@
  * with this option set the Materials will not be deleted with the Model.
  */
-Material* Model::addMaterial(Material* material)
+Material* StaticModel::addMaterial(Material* material)
 {
   if (material == NULL)
@@ -409,5 +409,5 @@
  * @returns the added material
 */
-Material* Model::addMaterial(const char* materialName)
+Material* StaticModel::addMaterial(const char* materialName)
 {
   ModelMaterial* modMat = new ModelMaterial;
@@ -425,5 +425,5 @@
  * @returns the Material if found, NULL otherwise
 */
-Material* Model::findMaterialByName(const char* materialName)
+Material* StaticModel::findMaterialByName(const char* materialName)
 {
   list<ModelMaterial*>::iterator modMat;
@@ -441,5 +441,5 @@
    With it you should be able to create Models with more than one SubModel inside
 */
-bool Model::addGroup(const char* groupString)
+bool StaticModel::addGroup(const char* groupString)
 {
   PRINTF(5)("Read Group: %s.\n", groupString);
@@ -464,5 +464,5 @@
    If a vertex line is found this function will inject it into the vertex-Array
 */
-bool Model::addVertex (const char* vertexString)
+bool StaticModel::addVertex (const char* vertexString)
 {
   float subbuffer1;
@@ -482,5 +482,5 @@
 
 */
-bool Model::addVertex(float x, float y, float z)
+bool StaticModel::addVertex(float x, float y, float z)
 {
   PRINTF(5)("reading in a vertex: %f %f %f\n", x, y, z);
@@ -496,5 +496,5 @@
    If a vertexNormal line is found this function will inject it into the vertexNormal-Array
 */
-bool Model::addVertexNormal (const char* normalString)
+bool StaticModel::addVertexNormal (const char* normalString)
 {
   float subbuffer1;
@@ -515,5 +515,5 @@
    If a vertexNormal line is found this function will inject it into the vertexNormal-Array
 */
-bool Model::addVertexNormal(float x, float y, float z)
+bool StaticModel::addVertexNormal(float x, float y, float z)
 {
   PRINTF(5)("found vertex-Normal %f, %f, %f\n", x, y, z);
@@ -532,5 +532,5 @@
    !! WARNING THIS IS DIFFERNT FROM addVervexTexture(float, float); because it changes the second entry to 1-v !!
 */
-bool Model::addVertexTexture (const char* vTextureString)
+bool StaticModel::addVertexTexture (const char* vTextureString)
 {
   float subbuffer1;
@@ -550,5 +550,5 @@
    If a TextureCoordinate line is found this function will inject it into the TextureCoordinate-Array
 */
-bool Model::addVertexTexture(float u, float v)
+bool StaticModel::addVertexTexture(float u, float v)
 {
   PRINTF(5)("found vertex-Texture %f, %f\n", u, v);
@@ -567,5 +567,5 @@
    String is different from the argument addFace, in this that the first Vertex/Normal/Texcoord is 1 instead of 0
 */
-bool Model::addFace (const char* faceString)
+bool StaticModel::addFace (const char* faceString)
 {
   if (this->currentGroup->faceCount >0)
@@ -623,5 +623,5 @@
  * @param type The information Passed with each Vertex
 */
-bool Model::addFace(int faceElemCount, VERTEX_FORMAT type, ...)
+bool StaticModel::addFace(int faceElemCount, VERTEX_FORMAT type, ...)
 {
   if (this->currentGroup->faceCount > 0)
@@ -655,5 +655,5 @@
  * @param matString the Material that will be set.
 */
-bool Model::setMaterial(const char* matString)
+bool StaticModel::setMaterial(const char* matString)
 {
   if (this->currentGroup->faceCount > 0)
@@ -670,5 +670,5 @@
  * @param mtl the Material that will be set.
 */
-bool Model::setMaterial(Material* mtl)
+bool StaticModel::setMaterial(Material* mtl)
 {
   if (this->currentGroup->faceCount > 0)
@@ -690,5 +690,5 @@
    4. It goes through all the normale-Points and calculates the VertexNormale and includes it in the normals-Array.
 */
-bool Model::buildVertexNormals ()
+bool StaticModel::buildVertexNormals ()
 {
   PRINTF(4)("Normals are being calculated.\n");
@@ -763,5 +763,5 @@
  *  reads and includes the Faces/Materials into the openGL state Machine
 */
-bool Model::importToDisplayList()
+bool StaticModel::importToDisplayList()
 {
   // finalize the Arrays
@@ -855,5 +855,5 @@
  *  reads and includes the Faces/Materials into the openGL state Machine
 */
-bool Model::importToVertexArray()
+bool StaticModel::importToVertexArray()
 {
   // finalize the Arrays
@@ -875,5 +875,5 @@
  *  builds an array of triangles, that can later on be used for obb separation and octree separation
  */
-bool Model::buildTriangleList()
+bool StaticModel::buildTriangleList()
 {
   if( unlikely(this->triangles != NULL))
@@ -1007,5 +1007,5 @@
    merging this information, the face will be drawn.
 */
-bool Model::addGLElement (ModelFaceElement* elem)
+bool StaticModel::addGLElement (ModelFaceElement* elem)
 {
   PRINTF(5)("importing grafical Element to openGL.\n");
@@ -1043,5 +1043,5 @@
    This will inject a Cube, because this is the most basic model.
 */
-void Model::cubeModel()
+void StaticModel::cubeModel()
 {
   this->addVertex (-0.5, -0.5, 0.5);
Index: /branches/newModel/src/lib/graphics/importer/static_model.h
===================================================================
--- /branches/newModel/src/lib/graphics/importer/static_model.h	(revision 6020)
+++ /branches/newModel/src/lib/graphics/importer/static_model.h	(revision 6021)
@@ -1,11 +1,11 @@
 /*!
-  \file model.h
-  \brief Contains the Model Class that handles 3D-Models
-*/
-
-#ifndef _MODEL_H
-#define _MODEL_H
-
-#include "abstract_model.h"
+ * @file static_model.h
+ * @brief Contains the Model Class that handles Static 3D-Models rendered with glList's
+ */
+
+#ifndef _STATIC_MODEL_H
+#define _STATIC_MODEL_H
+
+#include "model.h"
 
 #include "material.h"
@@ -103,12 +103,16 @@
 /// MODEL ///
 /////////////
-//! Class that handles 3D-Models. it can also read them in and display them.
-class Model : public AbstractModel
-{
- public:
-  Model(const char* modelName = NULL, MODEL_TYPE type = MODEL_DISPLAY_LIST);
-  virtual ~Model();
-
-  void draw() const;
+//! Class that handles static 3D-Models.
+/**
+ * it can also read them in and display them.
+ * All the objects are rendered with glLists
+ */
+class StaticModel : public Model
+{
+ public:
+  StaticModel(const char* modelName = NULL, MODEL_TYPE type = MODEL_DISPLAY_LIST);
+  virtual ~StaticModel();
+
+  virtual void draw() const;
   void draw(int groupNumber) const;
   void draw(char* groupName) const;
@@ -188,5 +192,5 @@
   tArray<GLfloat>*           normals;         //!< The Array that handles the Normals.
   tArray<GLfloat>*           vTexture;        //!< The Array that handles the VertexTextureCoordinates.
-  sTriangleExt*              triangles;       //!< The Array of triangles in the abstract_model.h style
+  sTriangleExt*              triangles;       //!< The Array of triangles in the model.h style
 
   ModelGroup*                firstGroup;      //!< The first of all groups.
Index: /branches/newModel/src/lib/graphics/importer/vertex_array_model.h
===================================================================
--- /branches/newModel/src/lib/graphics/importer/vertex_array_model.h	(revision 6020)
+++ /branches/newModel/src/lib/graphics/importer/vertex_array_model.h	(revision 6021)
@@ -7,5 +7,5 @@
 #define _VERTEX_ARRAY_MODEL_H
 
-#include "abstract_model.h"
+#include "model.h"
 
 #include "glincl.h"
@@ -22,5 +22,5 @@
 /////////////
 //! Class that handles 3D-Models. it can also read them in and display them.
-class VertexArrayModel : public AbstractModel
+class VertexArrayModel : public Model
 {
  public:
Index: /branches/newModel/src/lib/graphics/spatial_separation/quadtree.h
===================================================================
--- /branches/newModel/src/lib/graphics/spatial_separation/quadtree.h	(revision 6020)
+++ /branches/newModel/src/lib/graphics/spatial_separation/quadtree.h	(revision 6021)
@@ -12,5 +12,5 @@
 
 #include "base_object.h"
-#include "abstract_model.h"
+#include "model.h"
 
 
Index: /branches/newModel/src/lib/graphics/spatial_separation/quadtree_node.cc
===================================================================
--- /branches/newModel/src/lib/graphics/spatial_separation/quadtree_node.cc	(revision 6020)
+++ /branches/newModel/src/lib/graphics/spatial_separation/quadtree_node.cc	(revision 6021)
@@ -21,5 +21,5 @@
 #include "quadtree.h"
 #include "material.h"
-#include "abstract_model.h"
+#include "model.h"
 #include "debug.h"
 
@@ -346,5 +346,5 @@
 /**
  *  gets the maximal dimension of a model
- * @return the dimension of the AbstractModel as a Rectangle
+ * @return the dimension of the Model as a Rectangle
 
    The rectangle is x-z axis aligned. ATTENTION: if there are any vertices in the model, that exceed the
Index: /branches/newModel/src/lib/graphics/spatial_separation/quadtree_node.h
===================================================================
--- /branches/newModel/src/lib/graphics/spatial_separation/quadtree_node.h	(revision 6020)
+++ /branches/newModel/src/lib/graphics/spatial_separation/quadtree_node.h	(revision 6021)
@@ -17,5 +17,5 @@
 #include "base_object.h"
 
-#include "abstract_model.h"
+#include "model.h"
 
 // FORWARD DECLARATION
Index: /branches/newModel/src/lib/graphics/spatial_separation/spatial_separation.cc
===================================================================
--- /branches/newModel/src/lib/graphics/spatial_separation/spatial_separation.cc	(revision 6020)
+++ /branches/newModel/src/lib/graphics/spatial_separation/spatial_separation.cc	(revision 6021)
@@ -18,5 +18,5 @@
 #include "spatial_separation.h"
 
-#include "abstract_model.h"
+#include "model.h"
 #include "quadtree.h"
 #include "debug.h"
@@ -34,5 +34,5 @@
 
  */
-SpatialSeparation::SpatialSeparation (AbstractModel* model, float overlapSize)
+SpatialSeparation::SpatialSeparation (Model* model, float overlapSize)
 {
   PRINT(3)("+---------Debug Information SpatialSeparation----------\n");
@@ -52,5 +52,5 @@
    The boxes are overlaping because this makes collision detection a lot simpler
  */
-SpatialSeparation::SpatialSeparation (AbstractModel* model, AbstractModel* playerModel)
+SpatialSeparation::SpatialSeparation (Model* model, Model* playerModel)
 {
   this->setClassID(CL_SPATIAL_SEPARATION, "SpatialSeparation");
@@ -75,5 +75,5 @@
  * @return the new quadtree
  */
-Quadtree* SpatialSeparation::createQuadtree(AbstractModel* model, float minLength)
+Quadtree* SpatialSeparation::createQuadtree(Model* model, float minLength)
 {
   this->minLength = minLength;
@@ -88,5 +88,5 @@
  * @return the new quadtree
  */
-Quadtree* SpatialSeparation::createQuadtree(AbstractModel* model, int treeDepth)
+Quadtree* SpatialSeparation::createQuadtree(Model* model, int treeDepth)
 {
   this->treeDepth = treeDepth;
@@ -100,5 +100,5 @@
  * @return the new quadtree
  */
-Quadtree* SpatialSeparation::createQuadtree(AbstractModel* model)
+Quadtree* SpatialSeparation::createQuadtree(Model* model)
 {
   this->quadtree = new Quadtree(model->getModelInfo(), 4);
Index: /branches/newModel/src/lib/graphics/spatial_separation/spatial_separation.h
===================================================================
--- /branches/newModel/src/lib/graphics/spatial_separation/spatial_separation.h	(revision 6020)
+++ /branches/newModel/src/lib/graphics/spatial_separation/spatial_separation.h	(revision 6021)
@@ -9,5 +9,5 @@
 
 
-class AbstractModel;
+class Model;
 class Quadtree;
 
@@ -21,6 +21,6 @@
 
   public:
-    SpatialSeparation(AbstractModel* model, float overlapSize);
-    SpatialSeparation(AbstractModel* model, AbstractModel* playerModel);
+    SpatialSeparation(Model* model, float overlapSize);
+    SpatialSeparation(Model* model, Model* playerModel);
     virtual ~SpatialSeparation();
 
@@ -28,7 +28,7 @@
     void setMinLength(int minLength) { this->minLength = minLength; }
 
-    Quadtree* createQuadtree(AbstractModel* model, float minLength);
-    Quadtree* createQuadtree(AbstractModel* model, int treeDepth);
-    Quadtree* createQuadtree(AbstractModel* model);
+    Quadtree* createQuadtree(Model* model, float minLength);
+    Quadtree* createQuadtree(Model* model, int treeDepth);
+    Quadtree* createQuadtree(Model* model);
 
     inline Quadtree* getQuadtree() { return this->quadtree; }
@@ -41,8 +41,8 @@
 
   private:
-    AbstractModel*             model;        //!< the reference to the model that has to be handled
+    Model*             model;        //!< the reference to the model that has to be handled
     Quadtree*                  quadtree;     //!< the reference to the created quadtree
 
-    AbstractModel*             playerModel;  //!< referece to the player model, if needed for overlap calculations
+    Model*             playerModel;  //!< referece to the player model, if needed for overlap calculations
     float                      overlapSize;  //!< the size of overlaping
 
Index: /branches/newModel/src/world_entities/skybox.cc
===================================================================
--- /branches/newModel/src/world_entities/skybox.cc	(revision 6020)
+++ /branches/newModel/src/world_entities/skybox.cc	(revision 6021)
@@ -20,6 +20,6 @@
 #include "load_param.h"
 #include "factory.h"
-#include "model.h"
-
+#include "static_model.h"
+#include "material.h"
 
 using namespace std;
@@ -170,5 +170,5 @@
 void SkyBox::rebuild()
 {
-  Model* model = new Model();
+  StaticModel* model = new StaticModel();
 
   model->addVertex (-0.5*size, -0.5*size, 0.5*size);
Index: /branches/newModel/src/world_entities/terrain.cc
===================================================================
--- /branches/newModel/src/world_entities/terrain.cc	(revision 6020)
+++ /branches/newModel/src/world_entities/terrain.cc	(revision 6021)
@@ -40,5 +40,5 @@
 
 //  if (this->model != NULL)
-    //this->ssp = new SpatialSeparation((AbstractModel*)this->model, 10.0f);
+    //this->ssp = new SpatialSeparation((Model*)this->model, 10.0f);
 }
 
Index: /branches/newModel/src/world_entities/weapons/test_gun.cc
===================================================================
--- /branches/newModel/src/world_entities/weapons/test_gun.cc	(revision 6020)
+++ /branches/newModel/src/world_entities/weapons/test_gun.cc	(revision 6021)
@@ -24,5 +24,5 @@
 
 #include "world_entity.h"
-#include "model.h"
+#include "static_model.h"
 #include "test_bullet.h"
 #include "weapon_manager.h"
@@ -219,5 +219,5 @@
   if( this->leftRight == W_RIGHT)
     glScalef(1.0, 1.0, -1.0);
-  this->getModel()->draw(1);
+  static_cast<StaticModel*>(this->getModel())->draw(1);
   glPopMatrix();
 
@@ -230,5 +230,5 @@
   tmpRot = this->objectComponent1->getAbsDir().getSpacialAxis();
   glRotatef (this->objectComponent1->getAbsDir().getSpacialAxisAngle(), tmpRot.x, tmpRot.y, tmpRot.z );
-  this->getModel()->draw(0);
+  static_cast<StaticModel*>(this->getModel())->draw(0);
   glPopMatrix();
 }
