Index: /code/branches/objecthierarchy/src/core/Loader.cc
===================================================================
--- /code/branches/objecthierarchy/src/core/Loader.cc	(revision 2160)
+++ /code/branches/objecthierarchy/src/core/Loader.cc	(revision 2161)
@@ -37,4 +37,5 @@
 #include "Namespace.h"
 #include "util/Debug.h"
+#include "util/Exception.h"
 
 #include "tinyxml/ticpp.h"
@@ -157,9 +158,32 @@
             return true;
         }
-        catch(ticpp::Exception& ex)
+        catch (ticpp::Exception& ex)
+        {
+            COUT(1) << std::endl;
+            COUT(1) << "An XML-error occurred in Loader.cc while loading " << file->getFilename() << ":" << std::endl;
+            COUT(1) << ex.what() << std::endl;
+            COUT(1) << "Loading aborted." << std::endl;
+            return false;
+        }
+        catch (Exception& ex)
+        {
+            COUT(1) << std::endl;
+            COUT(1) << "A loading-error occurred in Loader.cc while loading " << file->getFilename() << ":" << std::endl;
+            COUT(1) << ex.what() << std::endl;
+            COUT(1) << "Loading aborted." << std::endl;
+            return false;
+        }
+        catch (std::exception& ex)
         {
             COUT(1) << std::endl;
             COUT(1) << "An error occurred in Loader.cc while loading " << file->getFilename() << ":" << std::endl;
             COUT(1) << ex.what() << std::endl;
+            COUT(1) << "Loading aborted." << std::endl;
+            return false;
+        }
+        catch (...)
+        {
+            COUT(1) << std::endl;
+            COUT(1) << "An unknown error occurred in Loader.cc while loading " << file->getFilename() << ":" << std::endl;
             COUT(1) << "Loading aborted." << std::endl;
             return false;
Index: /code/branches/objecthierarchy/src/core/XMLPort.h
===================================================================
--- /code/branches/objecthierarchy/src/core/XMLPort.h	(revision 2160)
+++ /code/branches/objecthierarchy/src/core/XMLPort.h	(revision 2161)
@@ -44,4 +44,5 @@
 
 #include "util/Debug.h"
+#include "util/Exception.h"
 #include "util/MultiType.h"
 #include "tinyxml/ticpp.h"
@@ -495,30 +496,47 @@
                                             if (this->identifierIsIncludedInLoaderMask(identifier))
                                             {
-                                                COUT(4) << ((BaseObject*)object)->getLoaderIndentation() << "fabricating " << child->Value() << "..." << std::endl;
-
-                                                BaseObject* newObject = identifier->fabricate((BaseObject*)object);
-                                                assert(newObject);
-                                                newObject->setLoaderIndentation(((BaseObject*)object)->getLoaderIndentation() + "  ");
-
-                                                O* castedObject = dynamic_cast<O*>(newObject);
-                                                assert(castedObject);
-
-                                                if (this->bLoadBefore_)
+                                                try
                                                 {
-                                                    newObject->XMLPort(*child, XMLPort::LoadObject);
-                                                    COUT(4) << ((BaseObject*)object)->getLoaderIndentation() << "assigning " << child->Value() << " (objectname " << newObject->getName() << ") to " << this->identifier_->getName() << " (objectname " << ((BaseObject*)object)->getName() << ")" << std::endl;
+                                                    COUT(4) << ((BaseObject*)object)->getLoaderIndentation() << "fabricating " << child->Value() << "..." << std::endl;
+
+                                                    BaseObject* newObject = identifier->fabricate((BaseObject*)object);
+                                                    assert(newObject);
+                                                    newObject->setLoaderIndentation(((BaseObject*)object)->getLoaderIndentation() + "  ");
+
+                                                    O* castedObject = dynamic_cast<O*>(newObject);
+                                                    assert(castedObject);
+
+                                                    if (this->bLoadBefore_)
+                                                    {
+                                                        newObject->XMLPort(*child, XMLPort::LoadObject);
+                                                        COUT(4) << ((BaseObject*)object)->getLoaderIndentation() << "assigning " << child->Value() << " (objectname " << newObject->getName() << ") to " << this->identifier_->getName() << " (objectname " << ((BaseObject*)object)->getName() << ")" << std::endl;
+                                                    }
+                                                    else
+                                                    {
+                                                        COUT(4) << ((BaseObject*)object)->getLoaderIndentation() << "assigning " << child->Value() << " (object not yet loaded) to " << this->identifier_->getName() << " (objectname " << ((BaseObject*)object)->getName() << ")" << std::endl;
+                                                    }
+
+                                                    COUT(5) << ((BaseObject*)object)->getLoaderIndentation();
+                                                    (*this->loadexecutor_)(object, castedObject);
+
+                                                    if (!this->bLoadBefore_)
+                                                        newObject->XMLPort(*child, XMLPort::LoadObject);
+
+                                                    COUT(5) << ((BaseObject*)object)->getLoaderIndentation() << "...fabricated " << child->Value() << " (objectname " << newObject->getName() << ")." << std::endl;
                                                 }
-                                                else
+                                                catch (AbortLoadingException& ex)
                                                 {
-                                                    COUT(4) << ((BaseObject*)object)->getLoaderIndentation() << "assigning " << child->Value() << " (object not yet loaded) to " << this->identifier_->getName() << " (objectname " << ((BaseObject*)object)->getName() << ")" << std::endl;
+                                                    COUT(1) << "An error occurred while loading object, abort loading..." << std::endl;
+                                                    throw ex;
                                                 }
-
-                                                COUT(5) << ((BaseObject*)object)->getLoaderIndentation();
-                                                (*this->loadexecutor_)(object, castedObject);
-
-                                                if (!this->bLoadBefore_)
-                                                    newObject->XMLPort(*child, XMLPort::LoadObject);
-
-                                                COUT(5) << ((BaseObject*)object)->getLoaderIndentation() << "...fabricated " << child->Value() << " (objectname " << newObject->getName() << ")." << std::endl;
+                                                catch (std::exception& ex)
+                                                {
+                                                    COUT(1) << "An error occurred while loading object:" << std::endl;
+                                                    COUT(1) << ex.what() << std::endl;
+                                                }
+                                                catch (...)
+                                                {
+                                                    COUT(1) << "An unknown error occurred while loading object." << std::endl;
+                                                }
                                             }
                                         }
Index: /code/branches/objecthierarchy/src/orxonox/gamestates/GSDedicated.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/gamestates/GSDedicated.cc	(revision 2160)
+++ /code/branches/objecthierarchy/src/orxonox/gamestates/GSDedicated.cc	(revision 2161)
@@ -32,5 +32,7 @@
 #include "core/CommandLine.h"
 #include "core/Core.h"
+#include "core/Iterator.h"
 #include "network/Server.h"
+#include "objects/Tickable.h"
 
 namespace orxonox
@@ -73,4 +75,10 @@
         server_->tick(time.getDeltaTime());
         this->tickChild(time);
+
+        /*** HACK *** HACK ***/
+        // Call the Tickable objects
+        for (ObjectList<Tickable>::iterator it = ObjectList<Tickable>::begin(); it; ++it)
+            it->tick(time.getDeltaTime());
+        /*** HACK *** HACK ***/
     }
 }
Index: /code/branches/objecthierarchy/src/orxonox/objects/worldentities/Billboard.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/objects/worldentities/Billboard.cc	(revision 2160)
+++ /code/branches/objecthierarchy/src/orxonox/objects/worldentities/Billboard.cc	(revision 2161)
@@ -75,5 +75,6 @@
             {
                 this->billboard_.setBillboardSet(this->getScene()->getSceneManager(), this->material_, this->colour_, 1);
-                this->getNode()->attachObject(this->billboard_.getBillboardSet());
+                if (this->billboard_.getBillboardSet())
+                    this->getNode()->attachObject(this->billboard_.getBillboardSet());
                 this->billboard_.setVisible(this->isVisible());
             }
@@ -90,5 +91,6 @@
             {
                 this->billboard_.setBillboardSet(this->getScene()->getSceneManager(), this->material_, this->colour_, 1);
-                this->getNode()->attachObject(this->billboard_.getBillboardSet());
+                if (this->billboard_.getBillboardSet())
+                    this->getNode()->attachObject(this->billboard_.getBillboardSet());
                 this->billboard_.setVisible(this->isVisible());
             }
Index: /code/branches/objecthierarchy/src/orxonox/objects/worldentities/Camera.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/objects/worldentities/Camera.cc	(revision 2160)
+++ /code/branches/objecthierarchy/src/orxonox/objects/worldentities/Camera.cc	(revision 2161)
@@ -38,4 +38,5 @@
 #include <OgreViewport.h>
 
+#include "util/Exception.h"
 #include "core/CoreIncludes.h"
 #include "core/ConfigValueIncludes.h"
@@ -51,6 +52,6 @@
         RegisterObject(Camera);
 
-        assert(this->getScene());
-        assert(this->getScene()->getSceneManager());
+        if (!this->getScene() || !this->getScene()->getSceneManager())
+            throw AbortLoadingException("Can't create Camera, no scene or no scene manager given.");
 
         this->camera_ = this->getScene()->getSceneManager()->createCamera(getUniqueNumberString());
Index: /code/branches/objecthierarchy/src/orxonox/objects/worldentities/ParticleEmitter.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/objects/worldentities/ParticleEmitter.cc	(revision 2160)
+++ /code/branches/objecthierarchy/src/orxonox/objects/worldentities/ParticleEmitter.cc	(revision 2161)
@@ -37,4 +37,5 @@
 
 #include "tools/ParticleInterface.h"
+#include "util/Exception.h"
 #include "core/CoreIncludes.h"
 #include "core/XMLPort.h"
@@ -49,6 +50,6 @@
         RegisterObject(ParticleEmitter);
 
-        assert(this->getScene());
-        assert(this->getScene()->getSceneManager());
+        if (!this->getScene() || !this->getScene()->getSceneManager())
+            throw AbortLoadingException("Can't create Camera, no scene or no scene manager given.");
 
         this->particles_ = 0;
Index: /code/branches/objecthierarchy/src/orxonox/objects/worldentities/WorldEntity.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/objects/worldentities/WorldEntity.cc	(revision 2160)
+++ /code/branches/objecthierarchy/src/orxonox/objects/worldentities/WorldEntity.cc	(revision 2161)
@@ -36,4 +36,5 @@
 #include "core/XMLPort.h"
 #include "util/Convert.h"
+#include "util/Exception.h"
 
 #include "objects/Scene.h"
@@ -52,6 +53,6 @@
         RegisterObject(WorldEntity);
 
-        assert(this->getScene());
-        assert(this->getScene()->getRootSceneNode());
+        if (!this->getScene() || !this->getScene()->getRootSceneNode())
+            throw AbortLoadingException("Can't create WorldEntity, no scene or no root-scenenode given.");
 
         this->node_ = this->getScene()->getRootSceneNode()->createChildSceneNode();
Index: /code/branches/objecthierarchy/src/orxonox/objects/worldentities/pawns/Spectator.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/objects/worldentities/pawns/Spectator.cc	(revision 2160)
+++ /code/branches/objecthierarchy/src/orxonox/objects/worldentities/pawns/Spectator.cc	(revision 2161)
@@ -62,5 +62,6 @@
         this->greetingFlare_ = new BillboardSet();
         this->greetingFlare_->setBillboardSet(this->getScene()->getSceneManager(), "Examples/Flare", ColourValue(1.0, 1.0, 0.8), Vector3(0, 20, 0), 1);
-        this->getNode()->attachObject(this->greetingFlare_->getBillboardSet());
+        if (this->greetingFlare_->getBillboardSet())
+            this->getNode()->attachObject(this->greetingFlare_->getBillboardSet());
         this->greetingFlare_->setVisible(false);
         this->bGreetingFlareVisible_ = false;
@@ -76,5 +77,6 @@
             if (this->greetingFlare_)
             {
-                this->getNode()->detachObject(this->greetingFlare_->getBillboardSet());
+                if (this->greetingFlare_->getBillboardSet())
+                    this->getNode()->detachObject(this->greetingFlare_->getBillboardSet());
                 delete this->greetingFlare_;
             }
Index: /code/branches/objecthierarchy/src/orxonox/objects/worldentities/triggers/Trigger.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/objects/worldentities/triggers/Trigger.cc	(revision 2160)
+++ /code/branches/objecthierarchy/src/orxonox/objects/worldentities/triggers/Trigger.cc	(revision 2161)
@@ -69,7 +69,9 @@
       this->debugBillboard_.setBillboardSet(this->getScene()->getSceneManager(), "Examples/Flare", ColourValue(1.0, 0.0, 0.0), 1);
       this->debugBillboard_.setVisible(false);
-    }
-
-    this->getNode()->attachObject(this->debugBillboard_.getBillboardSet());
+
+      if (this->debugBillboard_.getBillboardSet())
+        this->getNode()->attachObject(this->debugBillboard_.getBillboardSet());
+    }
+
     this->setObjectMode(0x0);
   }
@@ -310,5 +312,5 @@
   void Trigger::setBillboardColour(const ColourValue& colour)
   {
-    this->debugBillboard_.getBillboardSet()->getBillboard(0)->setColour(colour);
+    this->debugBillboard_.setColour(colour);
   }
 
Index: /code/branches/objecthierarchy/src/orxonox/overlays/OrxonoxOverlay.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/overlays/OrxonoxOverlay.cc	(revision 2160)
+++ /code/branches/objecthierarchy/src/orxonox/overlays/OrxonoxOverlay.cc	(revision 2161)
@@ -40,5 +40,7 @@
 #include <OgrePanelOverlayElement.h>
 #include "util/Convert.h"
+#include "util/Exception.h"
 #include "util/String.h"
+#include "core/Core.h"
 #include "core/CoreIncludes.h"
 #include "core/XMLPort.h"
@@ -58,4 +60,7 @@
     {
         RegisterObject(OrxonoxOverlay);
+
+        if (!Core::showsGraphics())
+            throw NoGraphicsException("Can't create OrxonoxOverlay, graphics engine not initialized");
 
         // add this overlay to the static map of OrxonoxOverlays
Index: /code/branches/objecthierarchy/src/orxonox/tools/BillboardSet.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/tools/BillboardSet.cc	(revision 2160)
+++ /code/branches/objecthierarchy/src/orxonox/tools/BillboardSet.cc	(revision 2161)
@@ -36,4 +36,5 @@
 #include <OgreBillboard.h>
 
+#include "core/Core.h"
 #include "util/Convert.h"
 #include "util/String.h"
@@ -70,11 +71,15 @@
         try
         {
-            this->billboardSet_ = scenemanager->createBillboardSet("Billboard" + convertToString(BillboardSet::billboardSetCounter_s++), count);
-            this->billboardSet_->createBillboard(position);
-            this->billboardSet_->setMaterialName(file);
+            if (Core::showsGraphics())
+            {
+                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->billboardSet_ = 0;
         }
 
@@ -89,11 +94,15 @@
         try
         {
-            this->billboardSet_ = scenemanager->createBillboardSet("Billboard" + convertToString(BillboardSet::billboardSetCounter_s++), count);
-            this->billboardSet_->createBillboard(position, colour);
-            this->billboardSet_->setMaterialName(file);
+            if (Core::showsGraphics())
+            {
+                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->billboardSet_ = 0;
         }
 
@@ -105,4 +114,5 @@
         if (this->billboardSet_ && this->scenemanager_)
             this->scenemanager_->destroyBillboardSet(this->billboardSet_);
+        this->billboardSet_ = 0;
     }
 
Index: /code/branches/objecthierarchy/src/orxonox/tools/Mesh.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/tools/Mesh.cc	(revision 2160)
+++ /code/branches/objecthierarchy/src/orxonox/tools/Mesh.cc	(revision 2161)
@@ -73,4 +73,5 @@
             {
                 COUT(1) << "Error: Couln't load mesh \"" << meshsource << "\"" << std::endl;
+                this->entity_ = 0;
             }
         }
Index: /code/branches/objecthierarchy/src/orxonox/tools/ParticleInterface.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/tools/ParticleInterface.cc	(revision 2160)
+++ /code/branches/objecthierarchy/src/orxonox/tools/ParticleInterface.cc	(revision 2161)
@@ -41,4 +41,5 @@
 
 #include "GraphicsEngine.h"
+#include "core/Core.h"
 #include "core/CoreIncludes.h"
 #include "util/Convert.h"
@@ -57,4 +58,5 @@
         this->scenemanager_ = scenemanager;
         this->sceneNode_ = 0;
+        this->particleSystem_ = 0;
 
         this->bEnabled_ = true;
@@ -62,7 +64,18 @@
         this->bAllowedByLOD_ = true;
 
-        this->particleSystem_ = this->scenemanager_->createParticleSystem("particles" + getConvertedValue<unsigned int, std::string>(ParticleInterface::counter_s++), templateName);
-        this->particleSystem_->setSpeedFactor(1.0f);
-        //this->particleSystem_->setSpeedFactor(Orxonox::getInstance().getTimeFactor());
+        if (Core::showsGraphics())
+        {
+            try
+            {
+                this->particleSystem_ = this->scenemanager_->createParticleSystem("particles" + getConvertedValue<unsigned int, std::string>(ParticleInterface::counter_s++), templateName);
+                this->particleSystem_->setSpeedFactor(1.0f);
+//                this->particleSystem_->setSpeedFactor(Orxonox::getInstance().getTimeFactor());
+            }
+            catch (...)
+            {
+                COUT(1) << "Error: Couln't load particle system \"" << templateName << "\"" << std::endl;
+                this->particleSystem_ = 0;
+            }
+        }
 
         this->setDetailLevel((unsigned int)detaillevel);
@@ -71,7 +84,10 @@
     ParticleInterface::~ParticleInterface()
     {
-        this->particleSystem_->removeAllEmitters();
-        this->detachFromSceneNode();
-        this->scenemanager_->destroyParticleSystem(particleSystem_);
+        if (this->particleSystem_)
+        {
+            this->particleSystem_->removeAllEmitters();
+            this->detachFromSceneNode();
+            this->scenemanager_->destroyParticleSystem(this->particleSystem_);
+        }
     }
 
@@ -81,6 +97,9 @@
             this->detachFromSceneNode();
 
-        this->sceneNode_ = sceneNode;
-        this->sceneNode_->attachObject(this->particleSystem_);
+        if (this->particleSystem_)
+        {
+            this->sceneNode_ = sceneNode;
+            this->sceneNode_->attachObject(this->particleSystem_);
+        }
     }
 
@@ -89,5 +108,6 @@
         if (this->sceneNode_)
         {
-            this->sceneNode_->detachObject(this->particleSystem_);
+            if (this->particleSystem_)
+                this->sceneNode_->detachObject(this->particleSystem_);
             this->sceneNode_ = 0;
         }
@@ -96,5 +116,5 @@
     Ogre::ParticleEmitter* ParticleInterface::createNewEmitter()
     {
-        if (this->particleSystem_->getNumEmitters() > 0)
+        if (this->particleSystem_ && this->particleSystem_->getNumEmitters() > 0)
         {
             Ogre::ParticleEmitter* newemitter = this->particleSystem_->addEmitter(this->particleSystem_->getEmitter(0)->getType());
@@ -107,5 +127,5 @@
     Ogre::ParticleEmitter* ParticleInterface::getEmitter(unsigned int emitterNr) const
     {
-        if (emitterNr < this->particleSystem_->getNumEmitters())
+        if (this->particleSystem_ && (emitterNr < this->particleSystem_->getNumEmitters()))
             return this->particleSystem_->getEmitter(emitterNr);
         else
@@ -114,23 +134,30 @@
     void ParticleInterface::removeEmitter(unsigned int emitterNr)
     {
-        if (emitterNr < this->particleSystem_->getNumEmitters())
+        if (this->particleSystem_ && (emitterNr < this->particleSystem_->getNumEmitters()))
             this->particleSystem_->removeEmitter(emitterNr);
     }
     void ParticleInterface::removeAllEmitters()
     {
-        this->particleSystem_->removeAllEmitters();
+        if (this->particleSystem_)
+            this->particleSystem_->removeAllEmitters();
     }
     unsigned int ParticleInterface::getNumEmitters() const
     {
-        return this->particleSystem_->getNumEmitters();
+        if (this->particleSystem_)
+            return this->particleSystem_->getNumEmitters();
+        else
+            return 0;
     }
 
     Ogre::ParticleAffector* ParticleInterface::addAffector(const std::string& name)
     {
-        return this->particleSystem_->addAffector(name);
+        if (this->particleSystem_)
+            return this->particleSystem_->addAffector(name);
+        else
+            return 0;
     }
     Ogre::ParticleAffector* ParticleInterface::getAffector(unsigned int affectorNr) const
     {
-        if (affectorNr < this->particleSystem_->getNumAffectors())
+        if (this->particleSystem_ && (affectorNr < this->particleSystem_->getNumAffectors()))
             return this->particleSystem_->getAffector(affectorNr);
         else
@@ -139,14 +166,18 @@
     void ParticleInterface::removeAffector(unsigned int affectorNr)
     {
-        if (affectorNr < this->particleSystem_->getNumAffectors())
+        if (this->particleSystem_ && (affectorNr < this->particleSystem_->getNumAffectors()))
             this->particleSystem_->removeAffector(affectorNr);
     }
     void ParticleInterface::removeAllAffectors()
     {
-        this->particleSystem_->removeAllAffectors();
+        if (this->particleSystem_)
+            this->particleSystem_->removeAllAffectors();
     }
     unsigned int ParticleInterface::getNumAffectors() const
     {
-        return this->particleSystem_->getNumAffectors();
+        if (this->particleSystem_)
+            return this->particleSystem_->getNumAffectors();
+        else
+            return 0;
     }
 
@@ -155,6 +186,7 @@
         this->bEnabled_ = enable;
 
-        for (unsigned int i = 0; i < this->particleSystem_->getNumEmitters(); i++)
-            this->particleSystem_->getEmitter(i)->setEnabled(this->bEnabled_ && this->bAllowedByLOD_);
+        if (this->particleSystem_)
+            for (unsigned int i = 0; i < this->particleSystem_->getNumEmitters(); i++)
+                this->particleSystem_->getEmitter(i)->setEnabled(this->bEnabled_ && this->bAllowedByLOD_);
     }
 
@@ -163,5 +195,6 @@
         this->bVisible_ = visible;
 
-        this->particleSystem_->setVisible(this->bVisible_ && this->bAllowedByLOD_);
+        if (this->particleSystem_)
+            this->particleSystem_->setVisible(this->bVisible_ && this->bAllowedByLOD_);
     }
 
@@ -169,5 +202,6 @@
     {
         this->detaillevel_ = level;
-        this->detailLevelChanged(GraphicsEngine::getInstance().getDetailLevelParticle());
+        if (GraphicsEngine::getInstancePtr())
+            this->detailLevelChanged(GraphicsEngine::getInstance().getDetailLevelParticle());
     }
 
@@ -190,20 +224,32 @@
     void ParticleInterface::setSpeedFactor(float factor)
     {
-        //this->particleSystem_->setSpeedFactor(Orxonox::getInstance().getTimeFactor() * factor);
-        this->particleSystem_->setSpeedFactor(1.0f * factor);
+        if (this->particleSystem_)
+        {
+//            this->particleSystem_->setSpeedFactor(Orxonox::getInstance().getTimeFactor() * factor);
+            this->particleSystem_->setSpeedFactor(1.0f * factor);
+        }
     }
     float ParticleInterface::getSpeedFactor() const
     {
-        //return (this->particleSystem_->getSpeedFactor() / Orxonox::getInstance().getTimeFactor());
-        return (this->particleSystem_->getSpeedFactor() / 1.0f);
+        if (this->particleSystem_)
+        {
+//            return (this->particleSystem_->getSpeedFactor() / Orxonox::getInstance().getTimeFactor());
+            return (this->particleSystem_->getSpeedFactor() / 1.0f);
+        }
+        else
+            return 1.0f;
     }
 
     bool ParticleInterface::getKeepParticlesInLocalSpace() const
     {
-        return this->particleSystem_->getKeepParticlesInLocalSpace();
+        if (this->particleSystem_)
+            return this->particleSystem_->getKeepParticlesInLocalSpace();
+        else
+            return false;
     }
     void ParticleInterface::setKeepParticlesInLocalSpace(bool keep)
     {
-        this->particleSystem_->setKeepParticlesInLocalSpace(keep);
+        if (this->particleSystem_)
+            this->particleSystem_->setKeepParticlesInLocalSpace(keep);
     }
 }
Index: /code/branches/objecthierarchy/src/util/Exception.h
===================================================================
--- /code/branches/objecthierarchy/src/util/Exception.h	(revision 2160)
+++ /code/branches/objecthierarchy/src/util/Exception.h	(revision 2161)
@@ -63,5 +63,7 @@
             InitialisationFailed,
             NotImplemented,
-            GameState
+            GameState,
+            NoGraphics,
+            AbortLoading
         };
 
@@ -127,4 +129,6 @@
             RETURN_EXCEPTION_CODE(NotImplemented);
             RETURN_EXCEPTION_CODE(GameState);
+            RETURN_EXCEPTION_CODE(NoGraphics);
+            RETURN_EXCEPTION_CODE(AbortLoading);
             default:
                 return "";
@@ -141,4 +145,6 @@
     CREATE_ORXONOX_EXCEPTION(NotImplemented);
     CREATE_ORXONOX_EXCEPTION(GameState);
+    CREATE_ORXONOX_EXCEPTION(NoGraphics);
+    CREATE_ORXONOX_EXCEPTION(AbortLoading);
 }
 
