Index: /orxonox/trunk/src/lib/math/curve.cc
===================================================================
--- /orxonox/trunk/src/lib/math/curve.cc	(revision 3587)
+++ /orxonox/trunk/src/lib/math/curve.cc	(revision 3588)
@@ -28,4 +28,19 @@
 #include <math.h>
 #include <stdio.h>
+
+
+/** 
+    \brief default constructor for a Curve
+*/
+Curve::Curve(void)
+{
+  nodeCount = 0;
+  firstNode = new PathNode;
+  currentNode = firstNode;
+
+  firstNode->position = Vector (.0, .0, .0);
+  firstNode->number = 0;
+  firstNode->next = 0; // not sure if this really points to NULL!!
+}
 
 /**
@@ -131,5 +146,4 @@
   this->derivation = 0;
   dirCurve = new BezierCurve(1);
-  this->init();
 }
 
@@ -141,5 +155,4 @@
   this->derivation = derivation;
   dirCurve=NULL;
-  this->init();
 }
 
@@ -161,20 +174,4 @@
   if (dirCurve)
     delete dirCurve;
-}
-
-/**
-   \brief Initializes a BezierCurve
-*/
-void BezierCurve::init(void)
-{
-  nodeCount = 0;
-  firstNode = new PathNode;
-  currentNode = firstNode;
-
-  firstNode->position = Vector (.0, .0, .0);
-  firstNode->number = 0;
-  firstNode->next = 0; // not sure if this really points to NULL!!
-
-  return;
 }
 
@@ -297,5 +294,4 @@
 {
   this->derivation = 0;
-  this->init();
 }
 
@@ -307,5 +303,4 @@
   this->derivation = derivation;
   dirCurve=NULL;
-  this->init();
 }
 
@@ -327,20 +322,4 @@
   if (dirCurve)
     delete dirCurve;
-}
-
-/**
-   \brief Initializes a UPointCurve
-*/
-void UPointCurve::init(void)
-{
-  nodeCount = 0;
-  firstNode = new PathNode;
-  currentNode = firstNode;
-
-  firstNode->position = Vector (.0, .0, .0);
-  firstNode->number = 0;
-  firstNode->next = 0; // not sure if this really points to NULL!!
-
-  return;
 }
 
Index: /orxonox/trunk/src/lib/math/curve.h
===================================================================
--- /orxonox/trunk/src/lib/math/curve.h	(revision 3587)
+++ /orxonox/trunk/src/lib/math/curve.h	(revision 3588)
@@ -38,7 +38,10 @@
   PathNode* currentNode; //!< The node we are working with (the Last node).
 
+
  private:
   virtual void rebuild(void) = 0;
  public:
+  Curve(void);
+
   Curve* dirCurve;       //!< The derivation-curve of this Curve.
   void addNode(const Vector& newNode);
@@ -68,6 +71,5 @@
   BezierCurve(void);
   BezierCurve(int derivation);
-  ~BezierCurve(void);
-  void init(void);
+  virtual ~BezierCurve(void);
 
   Vector calcPos(float t);
@@ -106,5 +108,4 @@
   UPointCurve(int derivation);
   ~UPointCurve(void);
-  void init(void);
 
   Vector calcPos(float t);
Index: /orxonox/trunk/src/light.h
===================================================================
--- /orxonox/trunk/src/light.h	(revision 3587)
+++ /orxonox/trunk/src/light.h	(revision 3588)
@@ -32,5 +32,5 @@
    A Light is a source that emits light rays (photons)
 */
-class Light : public WorldEntity
+class Light : public BaseObject
 {
  private:
Index: /orxonox/trunk/src/story_entities/world.cc
===================================================================
--- /orxonox/trunk/src/story_entities/world.cc	(revision 3587)
+++ /orxonox/trunk/src/story_entities/world.cc	(revision 3588)
@@ -71,5 +71,5 @@
   delete this->nullParent;
   delete this->entities;
-
+  delete this->light;
   delete this->trackManager;
 }
@@ -296,5 +296,6 @@
   // LIGHT initialisation
   light = Light::getInstance();
-  light->addLight(0);
+  light->setAmbientColor(.1,.1,.1);
+  light->addLight();
   light->setAttenuation(QUADRATIC, 1.0);
   light->setAttenuation(CONSTANT, 2.0);
Index: /orxonox/trunk/src/track_manager.cc
===================================================================
--- /orxonox/trunk/src/track_manager.cc	(revision 3587)
+++ /orxonox/trunk/src/track_manager.cc	(revision 3588)
@@ -37,9 +37,8 @@
   this->mainJoin = false;
   this->ID = -1;
-  this->startingTime = 0; //!< \todo eventually set this to the max time of TrackManager.
-  this->duration = 1;
+  this->startingTime = 0;
+  this->duration = TMAN_DEFAULT_DURATION;
   this->endTime = 1;
   this->jumpTime = 0;
-  this->curveType = BEZIERCURVE;
   this->nodeCount = 0;
   this->childCount = 0;
@@ -115,4 +114,31 @@
 
 /**
+   \param name the Name to set.
+*/
+void TrackElement::setName(const char* name)
+{
+  //  delete the old name
+  if (this->name)
+    delete []this->name;
+  // if a name was given already.
+  if (name)
+    {
+      this->name = new char[strlen(name)+1];
+      strcpy(this->name, name);
+    }
+  else 
+    this->name = NULL;
+}
+
+/**
+   \returns The name of this TrackElement
+*/
+char* TrackElement::getName(void) const
+{
+  return this->name;
+}
+
+
+/**
    \brief CONDITION that chooses the first child for the decision (static)
    \param nothing Nothing in this function
@@ -266,4 +292,6 @@
       this->addPoint(this->currentTrackElem->curve->getNode(this->currentTrackElem->curve->getNodeCount()), this->currentTrackElem->children[i]);
     }
+  if (childCount == 1)
+    this->currentTrackElem->children[0]->setName(this->currentTrackElem->getName());
 }
 
@@ -307,5 +335,5 @@
       return;
     }
-  trackElem->curveType = curveType;
+  this->curveType = curveType;
   switch (curveType)
     {
@@ -348,5 +376,5 @@
   if (trackElem->isFresh)
     {
-      this->setCurveType(BEZIERCURVE, trackElem);
+      this->setCurveType(TMAN_DEFAULT_CURVETYPE, trackElem);
       trackElem->isFresh = false;
     }
@@ -757,6 +785,6 @@
 	  TrackElement* tmpElem = this->findTrackElementByID(i);
 	  PRINT(0)("--== TrackElement:%i ==--", tmpElem->ID);
-	  if(tmpElem->name)
-	    PRINT(0)("Name: %s::", tmpElem->name);
+	  if(tmpElem->getName())
+	    PRINT(0)("Name: %s::", tmpElem->getName());
 	  if(tmpElem->isFresh)
 	    PRINT(0)("  -- has not jet eddited in any way --\n");
Index: /orxonox/trunk/src/track_manager.h
===================================================================
--- /orxonox/trunk/src/track_manager.h	(revision 3587)
+++ /orxonox/trunk/src/track_manager.h	(revision 3588)
@@ -17,4 +17,11 @@
 class PNode;
 
+// Static Definitions
+
+//! The Default Curve-Type to set for the whole path (if not chosen otherwise).
+#define TMAN_DEFAULT_CURVETYPE BEZIERCURVE
+#define TMAN_DEFAULT_DURATION 10
+
+
 //! A Graph-Element, that holds the curve-structure of a Level.
 /**
@@ -31,4 +38,5 @@
   bool backLoopCheck(TrackElement* trackElem);
 
+  // atributes
   bool isFresh;              //!< If no Points where added until now
   bool isHotPoint;           //!< If the first node is a specialPoint;
@@ -42,10 +50,11 @@
   float endTime;             //!< The time at which this Track ends.
   float jumpTime;            //!< The Time this Track has to jump to its preceding Track (only >0 if Track isJoined==true)
-  CurveType curveType;       //!< The CurveType this will have.
   int nodeCount;             //!< The count of points this TrackElement has.
-  char* name;                //!< A name for the Trac.
   Curve* curve;              //!< The Curve of this TrackElement
   int childCount;            //!< The number of Children This TrackElement has.
   TrackElement** children;   //!< A TrackElement can have a Tree of following TrackElements.
+
+  void setName(const char* name);
+  char* getName(void) const;
 
   // runtime
@@ -63,4 +72,8 @@
   int nearest(void* node);
   // todo  int enemyKilled(void* entity);
+
+ private:
+  char* name;                //!< A name for the Trac.
+ 
 };
 
@@ -108,7 +121,9 @@
   TrackManager(void);
 
-  static TrackManager* singletonRef;  //!< There may only be one TrackManager existing.
+  static TrackManager* singletonRef;  //!< There may only be one TrackManager.
+
   TrackElement* firstTrackElem;       //!< The first TrackElement that exists.
   TrackElement* currentTrackElem;     //!< The TrackElement we are working on.
+  CurveType curveType;                //!< The CurveType the entire TrackSystem will have.
   float localTime;                    //!< The time that has been passed since the traveling the Track.
   float maxTime;                      //!< The maximal time the track has.
Index: /orxonox/trunk/src/world_entities/primitive.cc
===================================================================
--- /orxonox/trunk/src/world_entities/primitive.cc	(revision 3587)
+++ /orxonox/trunk/src/world_entities/primitive.cc	(revision 3588)
@@ -41,5 +41,5 @@
   this->material->setDiffuseMap("../data/pictures/sky-replace.jpg");
   this->material->setIllum(3);
-  this->material->setAmbient(1.0, 1.0, 1.0);
+  this->material->setSpecular(.3, .3, .3);
 }
 
