Index: orxonox/trunk/src/Makefile.am
===================================================================
--- orxonox/trunk/src/Makefile.am	(revision 3651)
+++ orxonox/trunk/src/Makefile.am	(revision 3652)
@@ -119,6 +119,4 @@
 		 lib/util/ini_parser.h \
 		 lib/math/vector.h \
-		 lib/math/vector_new.h \
-		 lib/math/quaternion.h \
 		 lib/math/curve.h \
 		 glmenu/glmenu_imagescreen.h 
Index: orxonox/trunk/src/Makefile.in
===================================================================
--- orxonox/trunk/src/Makefile.in	(revision 3651)
+++ orxonox/trunk/src/Makefile.in	(revision 3652)
@@ -323,6 +323,4 @@
 		 lib/util/ini_parser.h \
 		 lib/math/vector.h \
-		 lib/math/vector_new.h \
-		 lib/math/quaternion.h \
 		 lib/math/curve.h \
 		 glmenu/glmenu_imagescreen.h 
Index: orxonox/trunk/src/lib/util/list.h
===================================================================
--- orxonox/trunk/src/lib/util/list.h	(revision 3651)
+++ orxonox/trunk/src/lib/util/list.h	(revision 3652)
@@ -46,35 +46,63 @@
 };
 
-class Iterator
-{
-
+
+
+template<class T> struct listElement
+{
+  listElement* prev;
+  T* curr;
+  listElement* next;
+};
+
+template<class T> class tIterator
+{
  public:
-  bool hasNext();
-  WorldEntity* next();
+  tIterator(listElement<T>* startElement);
+  ~tIterator();
+  
+  T* nextElement();
 
  private:
-
-};
+  listElement<T>* currentEl;
+  listElement<T>* firstEl;
+};
+
+
+template<class T>
+tIterator<T>::tIterator (listElement<T>* startElement) 
+{
+  this->currentEl = startElement;
+  this->firstEl = startElement;
+}
+
+
+template<class T>
+tIterator<T>::~tIterator ()
+{
+  this->currentEl = NULL;
+}
+
+
+template<class T>
+inline T* tIterator<T>::nextElement ()
+{
+  if( this->currentEl == NULL)
+    {
+      PRINTF(1)("Iterator has not been initialized - there is no currentEl\n");
+      return NULL;
+    }
+  if( this->currentEl->next == NULL)
+    return NULL;
+  return this->currentEl->next->curr;
+}
+
 
 
 template<class T> class tList 
 {
- private:
-  struct listElement
-  {
-    listElement* prev;
-    T* curr;
-    listElement* next;
-  };
-
-  Uint32 size;
-  listElement* first;
-  listElement* last;
-  listElement* currentEl;
   
  public:
   tList ();
   ~tList ();
-  
 
   void add(T* entity);
@@ -85,8 +113,17 @@
   int getSize();
   T* enumerate();
+  tIterator<T>* getIterator();
   T* nextElement();
   T* nextElement(T* toEntity);
   T* toArray();
   void debug();
+
+ private:
+
+  Uint32 size;
+  listElement<T>* first;
+  listElement<T>* last;
+  listElement<T>* currentEl;
+
 };
 
@@ -106,5 +143,5 @@
   while(this->currentEl != NULL)
     {
-      listElement* le = this->currentEl->next;
+      listElement<T>* le = this->currentEl->next;
       //delete this->currentEl->curr;
       delete this->currentEl;
@@ -121,5 +158,5 @@
 {
   if( entity == NULL) return;
-  listElement* el = new listElement;
+  listElement<T>* el = new listElement<T>;
   el->prev = this->last;
   el->curr = entity;
@@ -139,5 +176,5 @@
   if( entity == NULL) return;
   this->currentEl = this->first;
-  listElement* te;
+  listElement<T>* te;
   while( this->currentEl != NULL)
     {
@@ -167,5 +204,5 @@
   while(this->currentEl != NULL)
     {
-      listElement* le = this->currentEl->next;
+      listElement<T>* le = this->currentEl->next;
       //delete this->currentEl->curr;
       delete this->currentEl;
@@ -203,5 +240,5 @@
 {
   //if( this->last == this->first == NULL) return NULL;
-  if(this->size == 0) return NULL;
+  if( this->size == 0) return NULL;
   this->currentEl = this->first;
   return this->currentEl->curr;
@@ -210,10 +247,19 @@
 
 template<class T>
+tIterator<T>* tList<T>::getIterator()
+{
+  if( this->size == 0) return NULL;
+  tIterator<T>* iterator = new tIterator<T>(this->first);
+  return iterator;
+}
+
+
+template<class T>
 T* tList<T>::nextElement()
 {
   // if( this->last == this->first == NULL) return NULL;
-  if(this->size == 0) return NULL;
+  if( this->size == 0) return NULL;
   this->currentEl = this->currentEl->next;
-  if(this->currentEl == NULL) return NULL;
+  if( this->currentEl == NULL) return NULL;
   return this->currentEl->curr;
 }
Index: orxonox/trunk/src/orxonox.cc
===================================================================
--- orxonox/trunk/src/orxonox.cc	(revision 3651)
+++ orxonox/trunk/src/orxonox.cc	(revision 3652)
@@ -628,12 +628,5 @@
 	  mi = mittel / (float)VECTOR_MAX;
 	  printf(" Generate rot matrix: q->matrix(m)\t%11.2f\n", mi);
-	  
-	  
-
-	  
-
 	}
-      
-
     }
 }
