Index: code/trunk/src/core/BaseObject.cc
===================================================================
--- code/trunk/src/core/BaseObject.cc	(revision 2131)
+++ code/trunk/src/core/BaseObject.cc	(revision 2171)
@@ -41,4 +41,5 @@
 #include "Template.h"
 #include "util/String.h"
+#include "util/mbool.h"
 
 namespace orxonox
Index: code/trunk/src/core/BaseObject.h
===================================================================
--- code/trunk/src/core/BaseObject.h	(revision 2131)
+++ code/trunk/src/core/BaseObject.h	(revision 2171)
@@ -28,5 +28,5 @@
 
 /**
-    @file BaseObject.h
+    @file
     @brief Definition of the BaseObject class.
 
@@ -45,4 +45,5 @@
 #include "XMLIncludes.h"
 #include "Event.h"
+#include "util/mbool.h"
 
 namespace orxonox
@@ -72,14 +73,28 @@
 
             /** @brief Sets the state of the objects activity. @param bActive True = active */
-            inline void setActive(bool bActive) { this->bActive_ = bActive; this->changedActivity(); }
+            inline void setActive(bool bActive)
+            {
+                if (this->bActive_ != bActive)
+                {
+                    this->bActive_ = bActive;
+                    this->changedActivity();
+                }
+            }
             /** @brief Returns the state of the objects activity. @return The state of the activity */
-            inline bool isActive() const { return this->bActive_; }
+            inline const mbool& isActive() const { return this->bActive_; }
             /** @brief This function gets called if the activity of the object changes. */
             virtual void changedActivity() {}
 
             /** @brief Sets the state of the objects visibility. @param bVisible True = visible */
-            inline void setVisible(bool bVisible) { this->bVisible_ = bVisible; this->changedVisibility(); }
+            inline void setVisible(bool bVisible)
+            {
+                if (this->bVisible_ != bVisible)
+                {
+                    this->bVisible_ = bVisible;
+                    this->changedVisibility();
+                }
+            }
             /** @brief Returns the state of the objects visibility. @return The state of the visibility */
-            inline bool isVisible() const { return this->bVisible_; }
+            inline const mbool& isVisible() const { return this->bVisible_; }
             /** @brief This function gets called if the visibility of the object changes. */
             virtual void changedVisibility() {}
@@ -138,6 +153,6 @@
             std::string name_;                          //!< The name of the object
             std::string oldName_;                       //!< The old name of the object
-            bool bActive_;                              //!< True = the object is active
-            bool bVisible_;                             //!< True = the object is visible
+            mbool bActive_;                             //!< True = the object is active
+            mbool bVisible_;                            //!< True = the object is visible
 
         private:
Index: code/trunk/src/core/ClassFactory.h
===================================================================
--- code/trunk/src/core/ClassFactory.h	(revision 2131)
+++ code/trunk/src/core/ClassFactory.h	(revision 2171)
@@ -28,5 +28,5 @@
 
 /**
-    @file ClassFactory.h
+    @file
     @brief Definition and implementation of the ClassFactory class
 
Index: code/trunk/src/core/ClassTreeMask.cc
===================================================================
--- code/trunk/src/core/ClassTreeMask.cc	(revision 2131)
+++ code/trunk/src/core/ClassTreeMask.cc	(revision 2171)
@@ -28,5 +28,5 @@
 
 /**
-    @file ClassTreeMask.cc
+    @file
     @brief Implementation of the ClassTreeMask, ClassTreeMaskNode and ClassTreeMaskIterator classes.
 */
Index: code/trunk/src/core/ClassTreeMask.h
===================================================================
--- code/trunk/src/core/ClassTreeMask.h	(revision 2131)
+++ code/trunk/src/core/ClassTreeMask.h	(revision 2171)
@@ -28,5 +28,5 @@
 
 /**
-    @file ClassTreeMask.h
+    @file
     @brief Definition of the ClassTreeMask, ClassTreeMaskNode and ClassTreeMaskIterator classes.
 
Index: code/trunk/src/core/Clock.h
===================================================================
--- code/trunk/src/core/Clock.h	(revision 2131)
+++ code/trunk/src/core/Clock.h	(revision 2171)
@@ -28,5 +28,5 @@
 
 /**
-    @file Core.h
+    @file
     @brief Declaration of the Core class.
 
Index: code/trunk/src/core/ConfigValueContainer.cc
===================================================================
--- code/trunk/src/core/ConfigValueContainer.cc	(revision 2131)
+++ code/trunk/src/core/ConfigValueContainer.cc	(revision 2171)
@@ -28,5 +28,5 @@
 
 /**
-    @file ConfigValueContainer.cc
+    @file
     @brief Implementation of the ConfigValueContainer class.
 */
Index: code/trunk/src/core/ConfigValueContainer.h
===================================================================
--- code/trunk/src/core/ConfigValueContainer.h	(revision 2131)
+++ code/trunk/src/core/ConfigValueContainer.h	(revision 2171)
@@ -28,5 +28,5 @@
 
 /**
-    @file ConfigValueContainer.h
+    @file
     @brief Definition of the ConfigValueContainer class.
 
Index: code/trunk/src/core/ConfigValueIncludes.h
===================================================================
--- code/trunk/src/core/ConfigValueIncludes.h	(revision 2131)
+++ code/trunk/src/core/ConfigValueIncludes.h	(revision 2171)
@@ -28,5 +28,5 @@
 
 /**
-    @file ConfigValueIncludes.h
+    @file
     @brief Definition of macros for config-values.
 */
Index: code/trunk/src/core/Core.cc
===================================================================
--- code/trunk/src/core/Core.cc	(revision 2131)
+++ code/trunk/src/core/Core.cc	(revision 2171)
@@ -28,5 +28,5 @@
 
 /**
-    @file Core.cc
+    @file
     @brief Implementation of the Core class.
 */
Index: code/trunk/src/core/Core.h
===================================================================
--- code/trunk/src/core/Core.h	(revision 2131)
+++ code/trunk/src/core/Core.h	(revision 2171)
@@ -28,5 +28,5 @@
 
 /**
-    @file Core.h
+    @file
     @brief Declaration of the Core class.
 
Index: code/trunk/src/core/CoreIncludes.h
===================================================================
--- code/trunk/src/core/CoreIncludes.h	(revision 2131)
+++ code/trunk/src/core/CoreIncludes.h	(revision 2171)
@@ -28,5 +28,5 @@
 
 /**
-    @file CoreIncludes.h
+    @file
     @brief Definition of macros for Identifier and Factory.
 
Index: code/trunk/src/core/Factory.cc
===================================================================
--- code/trunk/src/core/Factory.cc	(revision 2131)
+++ code/trunk/src/core/Factory.cc	(revision 2171)
@@ -28,5 +28,5 @@
 
 /**
-    @file Factory.cc
+    @file
     @brief Implementation of the Factory class.
 */
Index: code/trunk/src/core/Factory.h
===================================================================
--- code/trunk/src/core/Factory.h	(revision 2131)
+++ code/trunk/src/core/Factory.h	(revision 2171)
@@ -28,5 +28,5 @@
 
 /**
-    @file Factory.h
+    @file
     @brief Definition of the Factory and the BaseFactory class.
 
Index: code/trunk/src/core/Identifier.cc
===================================================================
--- code/trunk/src/core/Identifier.cc	(revision 2131)
+++ code/trunk/src/core/Identifier.cc	(revision 2171)
@@ -28,5 +28,5 @@
 
 /**
-    @file Identifier.cc
+    @file
     @brief Implementation of the Identifier class.
 */
Index: code/trunk/src/core/Identifier.h
===================================================================
--- code/trunk/src/core/Identifier.h	(revision 2131)
+++ code/trunk/src/core/Identifier.h	(revision 2171)
@@ -28,5 +28,5 @@
 
 /**
-    @file Identifier.h
+    @file
     @brief Definition of the Identifier, ClassIdentifier and SubclassIdentifier classes, implementation of the ClassIdentifier and SubclassIdentifier classes.
 
Index: code/trunk/src/core/Iterator.h
===================================================================
--- code/trunk/src/core/Iterator.h	(revision 2131)
+++ code/trunk/src/core/Iterator.h	(revision 2171)
@@ -28,5 +28,5 @@
 
 /**
-    @file Iterator.h
+    @file
     @brief Definition and implementation of the Iterator class.
 
Index: code/trunk/src/core/Language.cc
===================================================================
--- code/trunk/src/core/Language.cc	(revision 2131)
+++ code/trunk/src/core/Language.cc	(revision 2171)
@@ -28,5 +28,5 @@
 
 /**
-    @file Language.cc
+    @file
     @brief Implementation of the Language and the LanguageEntry classes.
 */
Index: code/trunk/src/core/Language.h
===================================================================
--- code/trunk/src/core/Language.h	(revision 2131)
+++ code/trunk/src/core/Language.h	(revision 2171)
@@ -28,5 +28,5 @@
 
 /**
-    @file Language.h
+    @file
     @brief Definition of the Language and the LanguageEntry class.
 
Index: code/trunk/src/core/Loader.cc
===================================================================
--- code/trunk/src/core/Loader.cc	(revision 2131)
+++ code/trunk/src/core/Loader.cc	(revision 2171)
@@ -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/trunk/src/core/MetaObjectList.cc
===================================================================
--- code/trunk/src/core/MetaObjectList.cc	(revision 2131)
+++ code/trunk/src/core/MetaObjectList.cc	(revision 2171)
@@ -28,5 +28,5 @@
 
 /**
-    @file MetaObjectList.cc
+    @file
     @brief Implementation of the MetaObjectList class.
 */
Index: code/trunk/src/core/MetaObjectList.h
===================================================================
--- code/trunk/src/core/MetaObjectList.h	(revision 2131)
+++ code/trunk/src/core/MetaObjectList.h	(revision 2171)
@@ -28,5 +28,5 @@
 
 /**
-    @file MetaObjectList.h
+    @file
     @brief Definition of the MetaObjectList class.
 
Index: code/trunk/src/core/ObjectList.h
===================================================================
--- code/trunk/src/core/ObjectList.h	(revision 2131)
+++ code/trunk/src/core/ObjectList.h	(revision 2171)
@@ -28,5 +28,5 @@
 
 /**
-    @file ObjectList.h
+    @file
     @brief Definition and implementation of the ObjectList class.
 
Index: code/trunk/src/core/ObjectListBase.cc
===================================================================
--- code/trunk/src/core/ObjectListBase.cc	(revision 2131)
+++ code/trunk/src/core/ObjectListBase.cc	(revision 2171)
@@ -28,5 +28,5 @@
 
 /**
-    @file ObjectListBase.cc
+    @file
     @brief Implementation of the ObjectListBase class.
 
Index: code/trunk/src/core/ObjectListBase.h
===================================================================
--- code/trunk/src/core/ObjectListBase.h	(revision 2131)
+++ code/trunk/src/core/ObjectListBase.h	(revision 2171)
@@ -28,5 +28,5 @@
 
 /**
-    @file ObjectListBase.h
+    @file
     @brief Definition of the ObjectListBase class.
 
Index: code/trunk/src/core/OrxonoxClass.cc
===================================================================
--- code/trunk/src/core/OrxonoxClass.cc	(revision 2131)
+++ code/trunk/src/core/OrxonoxClass.cc	(revision 2171)
@@ -28,5 +28,5 @@
 
 /**
-    @file OrxonoxClass.cc
+    @file
     @brief Implementation of the OrxonoxClass Class.
 */
Index: code/trunk/src/core/OrxonoxClass.h
===================================================================
--- code/trunk/src/core/OrxonoxClass.h	(revision 2131)
+++ code/trunk/src/core/OrxonoxClass.h	(revision 2171)
@@ -28,5 +28,5 @@
 
 /**
-    @file OrxonoxClass.h
+    @file
     @brief Declaration of the OrxonoxClass Class.
 
Index: code/trunk/src/core/Super.h
===================================================================
--- code/trunk/src/core/Super.h	(revision 2131)
+++ code/trunk/src/core/Super.h	(revision 2171)
@@ -28,5 +28,5 @@
 
 /**
-    @file Super.h
+    @file
     @brief Definition of all super-function related macros.
 
Index: code/trunk/src/core/XMLIncludes.h
===================================================================
--- code/trunk/src/core/XMLIncludes.h	(revision 2131)
+++ code/trunk/src/core/XMLIncludes.h	(revision 2171)
@@ -28,5 +28,5 @@
 
 /**
-    @file XMLIncludes.h
+    @file
     @brief Forward declarations of some XML classes.
 */
Index: code/trunk/src/core/XMLPort.h
===================================================================
--- code/trunk/src/core/XMLPort.h	(revision 2131)
+++ code/trunk/src/core/XMLPort.h	(revision 2171)
@@ -28,5 +28,5 @@
 
 /**
-    @file XMLPort.h
+    @file
     @brief Declaration of the XMLPort helper classes and macros.
 
@@ -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;
+                                                }
                                             }
                                         }
