Index: code/branches/objecthierarchy/src/orxonox/tools/BillboardSet.cc
===================================================================
--- code/branches/objecthierarchy/src/orxonox/tools/BillboardSet.cc	(revision 2031)
+++ code/branches/objecthierarchy/src/orxonox/tools/BillboardSet.cc	(revision 2044)
@@ -32,7 +32,10 @@
 #include <sstream>
 #include <cassert>
+
 #include <OgreSceneManager.h>
+#include <OgreBillboard.h>
 
-#include "util/Math.h"
+#include "util/Convert.h"
+#include "util/String.h"
 
 namespace orxonox
@@ -45,28 +48,17 @@
     }
 
+    BillboardSet::~BillboardSet()
+    {
+        this->destroyBillboardSet();
+    }
+
     void BillboardSet::setBillboardSet(Ogre::SceneManager* scenemanager, const std::string& file, int count)
     {
-        assert(scenemanager);
-
-        std::ostringstream name;
-        name << (BillboardSet::billboardSetCounter_s++);
-        this->billboardSet_ = scenemanager->createBillboardSet("Billboard" + name.str(), count);
-        this->billboardSet_->createBillboard(Vector3::ZERO);
-        this->billboardSet_->setMaterialName(file);
-
-        this->scenemanager_ = scenemanager;
+        this->setBillboardSet(scenemanager, file, Vector3::ZERO, count);
     }
 
     void BillboardSet::setBillboardSet(Ogre::SceneManager* scenemanager, const std::string& file, const ColourValue& colour, int count)
     {
-        assert(scenemanager);
-
-        std::ostringstream name;
-        name << (BillboardSet::billboardSetCounter_s++);
-        this->billboardSet_ = scenemanager->createBillboardSet("Billboard" + name.str(), count);
-        this->billboardSet_->createBillboard(Vector3::ZERO, colour);
-        this->billboardSet_->setMaterialName(file);
-
-        this->scenemanager_ = scenemanager;
+        this->setBillboardSet(scenemanager, file, colour, Vector3::ZERO, count);
     }
 
@@ -74,10 +66,16 @@
     {
         assert(scenemanager);
+        this->destroyBillboardSet();
 
-        std::ostringstream name;
-        name << (BillboardSet::billboardSetCounter_s++);
-        this->billboardSet_ = scenemanager->createBillboardSet("Billboard" + name.str(), count);
-        this->billboardSet_->createBillboard(position);
-        this->billboardSet_->setMaterialName(file);
+        try
+        {
+            this->billboardSet_ = scenemanager->createBillboardSet("Billboard" + convertToString(BillboardSet::billboardSetCounter_s++), count);
+            this->billboardSet_->createBillboard(position);
+            this->billboardSet_->setMaterialName(file);
+        }
+        catch (...)
+        {
+            COUT(1) << "Error: Couln't load billboard \"" << file << "\"" << std::endl;
+        }
 
         this->scenemanager_ = scenemanager;
@@ -87,18 +85,79 @@
     {
         assert(scenemanager);
+        this->destroyBillboardSet();
 
-        std::ostringstream name;
-        name << (BillboardSet::billboardSetCounter_s++);
-        this->billboardSet_ = scenemanager->createBillboardSet("Billboard" + name.str(), count);
-        this->billboardSet_->createBillboard(position, colour);
-        this->billboardSet_->setMaterialName(file);
+        try
+        {
+            this->billboardSet_ = scenemanager->createBillboardSet("Billboard" + convertToString(BillboardSet::billboardSetCounter_s++), count);
+            this->billboardSet_->createBillboard(position, colour);
+            this->billboardSet_->setMaterialName(file);
+        }
+        catch (...)
+        {
+            COUT(1) << "Error: Couln't load billboard \"" << file << "\"" << std::endl;
+        }
 
         this->scenemanager_ = scenemanager;
     }
 
-    BillboardSet::~BillboardSet()
+    void BillboardSet::destroyBillboardSet()
     {
         if (this->billboardSet_ && this->scenemanager_)
             this->scenemanager_->destroyBillboardSet(this->billboardSet_);
     }
+
+    const std::string& BillboardSet::getName() const
+    {
+        if (this->billboardSet_)
+            return this->billboardSet_->getName();
+        else
+            return BLANKSTRING;
+    }
+
+    void BillboardSet::setVisible(bool visible)
+    {
+        if (this->billboardSet_)
+            this->billboardSet_->setVisible(visible);
+    }
+
+    bool BillboardSet::getVisible() const
+    {
+        if (this->billboardSet_)
+            return this->billboardSet_->getVisible();
+        else
+            return false;
+    }
+
+    void BillboardSet::setColour(const ColourValue& colour)
+    {
+        if (this->billboardSet_)
+        {
+            for (int i = 0; i < this->billboardSet_->getNumBillboards(); ++i)
+                this->billboardSet_->getBillboard(i)->setColour(colour);
+        }
+    }
+
+    const ColourValue& BillboardSet::getColour() const
+    {
+        if (this->billboardSet_ && this->billboardSet_->getNumBillboards() > 0)
+        {
+            return this->billboardSet_->getBillboard(0)->getColour();
+        }
+        else
+            return ColourValue::White;
+    }
+
+    void BillboardSet::setMaterial(const std::string& material)
+    {
+        if (this->billboardSet_)
+            this->billboardSet_->setMaterialName(material);
+    }
+
+    const std::string& BillboardSet::getMaterial() const
+    {
+        if (this->billboardSet_)
+            return this->billboardSet_->getMaterialName();
+        else
+            return BLANKSTRING;
+    }
 }
Index: code/branches/objecthierarchy/src/orxonox/tools/BillboardSet.h
===================================================================
--- code/branches/objecthierarchy/src/orxonox/tools/BillboardSet.h	(revision 2031)
+++ code/branches/objecthierarchy/src/orxonox/tools/BillboardSet.h	(revision 2044)
@@ -44,4 +44,5 @@
             BillboardSet();
             ~BillboardSet();
+
             void setBillboardSet(Ogre::SceneManager* scenemanager, const std::string& file, int count = 1);
             void setBillboardSet(Ogre::SceneManager* scenemanager, const std::string& file, const ColourValue& colour, int count = 1);
@@ -52,13 +53,18 @@
                 { return this->billboardSet_; }
 
-            inline const std::string& getName() const
-                { return this->billboardSet_->getName(); }
+            const std::string& getName() const;
 
-            inline void setVisible(bool visible)
-                { this->billboardSet_->setVisible(visible); }
-            inline bool getVisible() const
-                { return this->billboardSet_->getVisible(); }
+            void setVisible(bool visible);
+            bool getVisible() const;
+
+            void setColour(const ColourValue& colour);
+            const ColourValue& getColour() const;
+
+            void setMaterial(const std::string& material);
+            const std::string& getMaterial() const;
 
         private:
+            void destroyBillboardSet();
+
             static unsigned int billboardSetCounter_s;
             Ogre::BillboardSet* billboardSet_;
Index: code/branches/objecthierarchy/src/orxonox/tools/Light.cc
===================================================================
--- code/branches/objecthierarchy/src/orxonox/tools/Light.cc	(revision 2031)
+++ 	(revision )
@@ -1,65 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   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
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      ...
- *   Co-authors:
- *      ...
- *
- */
-
-#include "OrxonoxStableHeaders.h"
-#include "Light.h"
-
-#include <sstream>
-#include <cassert>
-
-#include <OgreSceneManager.h>
-
-namespace orxonox
-{
-    unsigned int Light::lightCounter_s = 0;
-
-    Light::Light()
-    {
-        this->light_ = 0;
-    }
-
-    void Light::setLight(Ogre::SceneManager* scenemanager, Ogre::Light::LightTypes type, const ColourValue& diffuse, const ColourValue& specular)
-    {
-        assert(scenemanager);
-
-        std::ostringstream name;
-        name << (Light::lightCounter_s++);
-        this->light_ = scenemanager->createLight("Light" + name.str());
-        this->light_->setType(type);
-        this->light_->setDiffuseColour(diffuse);
-        this->light_->setSpecularColour(specular);
-
-        this->scenemanager_ = scenemanager;
-    }
-
-    Light::~Light()
-    {
-        if (this->light_ && this->scenemanager_)
-            this->scenemanager_->destroyLight(this->light_);
-    }
-}
Index: code/branches/objecthierarchy/src/orxonox/tools/Light.h
===================================================================
--- code/branches/objecthierarchy/src/orxonox/tools/Light.h	(revision 2031)
+++ 	(revision )
@@ -1,62 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   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
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      ...
- *   Co-authors:
- *      ...
- *
- */
-
-#ifndef _Light_H__
-#define _Light_H__
-
-#include "OrxonoxPrereqs.h"
-
-#include <string>
-
-#include <OgreLight.h>
-
-#include "util/Math.h"
-
-namespace orxonox
-{
-    class _OrxonoxExport Light
-    {
-        public:
-            Light();
-            ~Light();
-            void setLight(Ogre::SceneManager* scenemanager, Ogre::Light::LightTypes type = Ogre::Light::LT_POINT, const ColourValue& diffuse = ColourValue(1.0, 1.0, 1.0), const ColourValue& specular = ColourValue(1.0, 1.0, 1.0));
-
-            inline Ogre::Light* getLight()
-                { return this->light_; }
-
-            inline const std::string& getName() const
-                { return this->light_->getName(); }
-
-        private:
-            static unsigned int lightCounter_s;
-            Ogre::Light* light_;
-            Ogre::SceneManager* scenemanager_;
-    };
-}
-
-#endif /* _Light_H__ */
