Index: branches/bsp_model/src/defs/class_id.h
===================================================================
--- branches/bsp_model/src/defs/class_id.h	(revision 8438)
+++ branches/bsp_model/src/defs/class_id.h	(revision 8439)
@@ -291,4 +291,5 @@
   CL_STATIC_MODEL               =    0x00902000,
   CL_VERTEX_ARRAY_MODEL         =    0x00904000,
+  CL_INTERACTIVE_MODEL          =    0x00908000,        ///FIXME: is this ok bensch?
 
   // Models
Index: branches/bsp_model/src/lib/graphics/importer/Makefile.am
===================================================================
--- branches/bsp_model/src/lib/graphics/importer/Makefile.am	(revision 8438)
+++ branches/bsp_model/src/lib/graphics/importer/Makefile.am	(revision 8439)
@@ -5,4 +5,5 @@
 
 libORXimporter_a_SOURCES = model.cc \
+			   interactive_model.cc \
 			   md_model_structure.cc \
                            vertex_array_model.cc \
@@ -39,4 +40,5 @@
 noinst_HEADERS = \
 		model.h \
+		interactive_model.h \
 		md_model_structure.cc \
 		tc.h \
Index: branches/bsp_model/src/lib/graphics/importer/interactive_model.cc
===================================================================
--- branches/bsp_model/src/lib/graphics/importer/interactive_model.cc	(revision 8439)
+++ branches/bsp_model/src/lib/graphics/importer/interactive_model.cc	(revision 8439)
@@ -0,0 +1,40 @@
+/*
+   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 "interactive_model.h"
+
+#include "glincl.h"
+
+using namespace std;
+
+/**
+ * standard constructor
+ * @todo this constructor is not jet implemented - do it
+*/
+InteractiveModel::InteractiveModel()
+{
+  this->setClassID(CL_INTERACTIVE_MODEL, "InteractiveModel");
+}
+
+
+/**
+ * standard deconstructor
+*/
+InteractiveModel::~InteractiveModel()
+{}
+
+
Index: branches/bsp_model/src/lib/graphics/importer/interactive_model.h
===================================================================
--- branches/bsp_model/src/lib/graphics/importer/interactive_model.h	(revision 8439)
+++ branches/bsp_model/src/lib/graphics/importer/interactive_model.h	(revision 8439)
@@ -0,0 +1,42 @@
+/*
+   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 interactive_model.h
+ *  Definition of an abstract interactive model.
+ *   it offers a skeletton for choosing animations, ticking the model a.s.o
+ */
+
+#ifndef _INTERACTIVE_MODEL_H
+#define _INTERACTIVE_MODEL_H
+
+#include "model.h"
+#include "vector.h"
+
+
+
+class InteractiveModel : public Model
+{
+  public:
+    InteractiveModel();
+    ~InteractiveModel();
+
+    virtual void tick(float) = 0;
+
+    virtual void setAnimation(int animNum, int playbackMode = 0) = 0;
+};
+
+
+#endif /* _INTERACTIVE_MODEL_H */
Index: branches/bsp_model/src/lib/graphics/importer/md2/md2Model.cc
===================================================================
--- branches/bsp_model/src/lib/graphics/importer/md2/md2Model.cc	(revision 8438)
+++ branches/bsp_model/src/lib/graphics/importer/md2/md2Model.cc	(revision 8439)
@@ -90,5 +90,5 @@
   this->animationState.type = STAND;
   this->animationState.numPlays = 1;
-  this->setAnim(STAND);
+  this->setAnimation(STAND);
 
   this->debug();
@@ -164,5 +164,5 @@
   the animation types can be looked up in the animationType table
 */
-void MD2Model::setAnim(int type, int animPlayback)
+void MD2Model::setAnimation(int type, int animPlayback)
 {
   if( (type < 0) || (type > MAX_ANIMATIONS) )
Index: branches/bsp_model/src/lib/graphics/importer/md2/md2Model.h
===================================================================
--- branches/bsp_model/src/lib/graphics/importer/md2/md2Model.h	(revision 8438)
+++ branches/bsp_model/src/lib/graphics/importer/md2/md2Model.h	(revision 8439)
@@ -21,5 +21,5 @@
 #include "base_object.h"
 
-#include "model.h"
+#include "interactive_model.h"
 #include "material.h"
 
@@ -147,5 +147,5 @@
 
 //! This is a MD2 Model class
-class MD2Model : public Model {
+class MD2Model : public InteractiveModel {
 
 public:
@@ -157,5 +157,5 @@
 
 
-  void setAnim(int type, int animPlayback = MD2_ANIM_LOOP);
+  virtual void setAnimation(int type, int animPlayback = MD2_ANIM_LOOP);
   /**  returns the current animation @returns animation type */
   inline int MD2Model::getAnim() { return this->animationState.type; }
Index: branches/bsp_model/src/lib/graphics/importer/md3/md3_data.cc
===================================================================
--- branches/bsp_model/src/lib/graphics/importer/md3/md3_data.cc	(revision 8438)
+++ branches/bsp_model/src/lib/graphics/importer/md3/md3_data.cc	(revision 8439)
@@ -381,4 +381,6 @@
     this->meshes[mesh]->normals[i].vertexNormal[0] = vc->vertexNormal[0];
     this->meshes[mesh]->normals[i].vertexNormal[1] = vc->vertexNormal[1];
+
+    delete vc;
   }
 
Index: branches/bsp_model/src/lib/graphics/importer/md3/md3_model.h
===================================================================
--- branches/bsp_model/src/lib/graphics/importer/md3/md3_model.h	(revision 8438)
+++ branches/bsp_model/src/lib/graphics/importer/md3/md3_model.h	(revision 8439)
@@ -10,5 +10,5 @@
 
 #include <string>
-#include "model.h"
+#include "interactive_model.h"
 
 
@@ -19,5 +19,5 @@
 class MD3Data;
 
-class MD3Model : public Model
+class MD3Model : public InteractiveModel
 {
 
@@ -26,4 +26,6 @@
     ~MD3Model();
 
+    virtual void tick(float dt) {}
+    virtual void setAnimation(int animNum, int playbackMode = 0) {}
 
   private:
Index: branches/bsp_model/src/world_entities/creatures/md2_creature.cc
===================================================================
--- branches/bsp_model/src/world_entities/creatures/md2_creature.cc	(revision 8438)
+++ branches/bsp_model/src/world_entities/creatures/md2_creature.cc	(revision 8439)
@@ -256,17 +256,17 @@
   if( this->bJump && likely(this->getModel(0) != NULL))
   {
-    ((MD2Model*)this->getModel(0))->setAnim(JUMP);
+    ((MD2Model*)this->getModel(0))->setAnimation(JUMP);
   }
   else if( this->bFire && likely(this->getModel(0) != NULL))
   {
-    if( ((MD2Model*)this->getModel(0))->getAnim() != ATTACK) ((MD2Model*)this->getModel(0))->setAnim(ATTACK);
+    if( ((MD2Model*)this->getModel(0))->getAnim() != ATTACK) ((MD2Model*)this->getModel(0))->setAnimation(ATTACK);
   }
   else if( fabs(move.len()) > 0.0f && likely(this->getModel(0) != NULL))
   {
-    if( ((MD2Model*)this->getModel(0))->getAnim() != RUN) ((MD2Model*)this->getModel(0))->setAnim(RUN);
+    if( ((MD2Model*)this->getModel(0))->getAnim() != RUN) ((MD2Model*)this->getModel(0))->setAnimation(RUN);
   }
   else if (likely(this->getModel(0) != NULL))
   {
-    if( ((MD2Model*)this->getModel(0))->getAnim() != STAND) ((MD2Model*)this->getModel(0))->setAnim(STAND);
+    if( ((MD2Model*)this->getModel(0))->getAnim() != STAND) ((MD2Model*)this->getModel(0))->setAnimation(STAND);
   }
 
Index: branches/bsp_model/src/world_entities/test_entity.cc
===================================================================
--- branches/bsp_model/src/world_entities/test_entity.cc	(revision 8438)
+++ branches/bsp_model/src/world_entities/test_entity.cc	(revision 8439)
@@ -26,8 +26,9 @@
 
 #include "test_entity.h"
-#include "stdincl.h"
-#include "model.h"
+
+
+#include "interactive_model.h"
 #include "md2/md2Model.h"
-#include "obb_tree.h"
+
 #include "state.h"
 
@@ -90,5 +91,5 @@
 {
   if( likely(this->getModel(0) != NULL))
-    ((MD2Model*)this->getModel(0))->setAnim(animationIndex, animPlaybackMode);
+    ((InteractiveModel*)this->getModel(0))->setAnimation(animationIndex, animPlaybackMode);
 }
 
@@ -97,5 +98,5 @@
 {
   if( likely(this->getModel(0) != NULL))
-    ((MD2Model*)this->getModel(0))->tick(time);
+    ((InteractiveModel*)this->getModel(0))->tick(time);
 
 }
@@ -122,5 +123,4 @@
 
   this->bDeath = true;
-  float anim;
   int randi = (int)(5.0f * (float)rand()/(float)RAND_MAX);
 
