Index: /code/branches/objecthierarchy/src/orxonox/overlays/OrxonoxOverlay.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/overlays/OrxonoxOverlay.cc	(revision 2045)
+++ /code/branches/objecthierarchy/src/orxonox/overlays/OrxonoxOverlay.cc	(revision 2046)
@@ -56,8 +56,37 @@
     OrxonoxOverlay::OrxonoxOverlay(BaseObject* creator)
         : BaseObject(creator)
-        , overlay_(0)
-        , background_(0)
     {
         RegisterObject(OrxonoxOverlay);
+
+        // add this overlay to the static map of OrxonoxOverlays
+        if (overlays_s.find(this->getName()) != overlays_s.end())
+        {
+            COUT(1) << "Overlay names should be unique or you cannnot access them via console." << std::endl;
+        }
+        overlays_s[this->getName()] = this;
+
+        // create the Ogre::Overlay
+        overlay_ = Ogre::OverlayManager::getSingleton().create("OrxonoxOverlay_overlay_"
+            + convertToString(hudOverlayCounter_s++));
+
+        // create background panel (can be used to show any picture)
+        this->background_ = static_cast<Ogre::PanelOverlayElement*>(
+            Ogre::OverlayManager::getSingleton().createOverlayElement("Panel",
+            "OrxonoxOverlay_background_" + convertToString(hudOverlayCounter_s++)));
+        this->overlay_->add2D(this->background_);
+
+        // We'll have to get the aspect ratio manually for the first time. Afterwards windowResized() gets
+        // called automatically by GSGraphics.
+        this->windowAspectRatio_ = Ogre::OverlayManager::getSingleton().getViewportAspectRatio();
+        this->sizeCorrectionChanged();
+
+        this->changedVisibility();
+
+        setSize(Vector2(1.0f, 1.0f));
+        setPickPoint(Vector2(0.0f, 0.0f));
+        setPosition(Vector2(0.0f, 0.0f));
+        setRotation(Degree(0.0));
+        setAspectCorrection(true);
+        setBackgroundMaterial("");
     }
 
@@ -70,13 +99,14 @@
     OrxonoxOverlay::~OrxonoxOverlay()
     {
-        // erase ourself from the map with all overlays
-        std::map<std::string, OrxonoxOverlay*>::iterator it = overlays_s.find(this->getName());
-        if (it != overlays_s.end())
-            overlays_s.erase(it);
-
-        if (this->background_)
+        if (this->isInitialized())
+        {
+            // erase ourself from the map with all overlays
+            std::map<std::string, OrxonoxOverlay*>::iterator it = overlays_s.find(this->getName());
+            if (it != overlays_s.end())
+                overlays_s.erase(it);
+
             Ogre::OverlayManager::getSingleton().destroyOverlayElement(this->background_);
-        if (this->overlay_)
             Ogre::OverlayManager::getSingleton().destroy(this->overlay_);
+        }
     }
 
@@ -94,45 +124,10 @@
         SUPER(OrxonoxOverlay, XMLPort, xmlElement, mode);
 
-        if (mode == XMLPort::LoadObject)
-        {
-            // add this overlay to the static map of OrxonoxOverlays
-            if (overlays_s.find(this->getName()) != overlays_s.end())
-            {
-                COUT(1) << "Overlay names should be unique or you cannnot access them via console." << std::endl;
-            }
-            overlays_s[this->getName()] = this;
-
-            // create the Ogre::Overlay
-            overlay_ = Ogre::OverlayManager::getSingleton().create("OrxonoxOverlay_overlay_"
-                + convertToString(hudOverlayCounter_s++));
-
-            // create background panel (can be used to show any picture)
-            this->background_ = static_cast<Ogre::PanelOverlayElement*>(
-                Ogre::OverlayManager::getSingleton().createOverlayElement("Panel",
-                "OrxonoxOverlay_background_" + convertToString(hudOverlayCounter_s++)));
-            this->overlay_->add2D(this->background_);
-
-            // We'll have to get the aspect ratio manually for the first time. Afterwards windowResized() gets
-            // called automatically by GSGraphics.
-            //this->windowResized(GraphicsEngine::getInstance().getWindowWidth(),
-            //    GraphicsEngine::getInstance().getWindowHeight());
-            this->windowAspectRatio_ = Ogre::OverlayManager::getSingleton().getViewportAspectRatio();
-            this->sizeCorrectionChanged();
-
-            this->changedVisibility();
-        }
-
-        XMLPortParam(OrxonoxOverlay, "size",      setSize,      getSize,      xmlElement, mode)
-            .defaultValues(Vector2(1.0f, 1.0f));
-        XMLPortParam(OrxonoxOverlay, "pickPoint", setPickPoint, getPickPoint, xmlElement, mode)
-            .defaultValues(Vector2(0.0f, 0.0f));
-        XMLPortParam(OrxonoxOverlay, "position",  setPosition,  getPosition,  xmlElement, mode)
-            .defaultValues(Vector2(0.0f, 0.0f));
-        XMLPortParam(OrxonoxOverlay, "rotation",  setRotation,  getRotation,  xmlElement, mode)
-            .defaultValues(0.0f);
-        XMLPortParam(OrxonoxOverlay, "correctAspect", setAspectCorrection,   getAspectCorrection,   xmlElement, mode)
-            .defaultValues(true);
-        XMLPortParam(OrxonoxOverlay, "background",    setBackgroundMaterial, getBackgroundMaterial, xmlElement, mode)
-            .defaultValues("");
+        XMLPortParam(OrxonoxOverlay, "size",      setSize,      getSize,      xmlElement, mode);
+        XMLPortParam(OrxonoxOverlay, "pickPoint", setPickPoint, getPickPoint, xmlElement, mode);
+        XMLPortParam(OrxonoxOverlay, "position",  setPosition,  getPosition,  xmlElement, mode);
+        XMLPortParam(OrxonoxOverlay, "rotation",  setRotation,  getRotation,  xmlElement, mode);
+        XMLPortParam(OrxonoxOverlay, "correctAspect", setAspectCorrection,   getAspectCorrection,   xmlElement, mode);
+        XMLPortParam(OrxonoxOverlay, "background",    setBackgroundMaterial, getBackgroundMaterial, xmlElement, mode);
     }
 
Index: /code/branches/objecthierarchy/src/orxonox/overlays/OverlayGroup.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/overlays/OverlayGroup.cc	(revision 2045)
+++ /code/branches/objecthierarchy/src/orxonox/overlays/OverlayGroup.cc	(revision 2046)
@@ -50,7 +50,11 @@
     SetConsoleCommand(OverlayGroup, scrollGroup, false).accessLevel(AccessLevel::User);
 
-    OverlayGroup::OverlayGroup(BaseObject* creator) : BaseObject(creator)
+    OverlayGroup::OverlayGroup(BaseObject* creator)
+        : BaseObject(creator)
     {
         RegisterObject(OverlayGroup);
+
+        setScale(Vector2(1.0, 1.0));
+        setScroll(Vector2(0.0, 0.0));
     }
 
@@ -71,6 +75,6 @@
         SUPER(OverlayGroup, XMLPort, xmlElement, mode);
 
-        XMLPortParam(OverlayGroup, "scale",  setScale,  getScale,  xmlElement, mode).defaultValues(Vector2(1.0, 1.0));
-        XMLPortParam(OverlayGroup, "scroll", setScroll, getScroll, xmlElement, mode).defaultValues(Vector2(0.0, 0.0));
+        XMLPortParam(OverlayGroup, "scale",  setScale,  getScale,  xmlElement, mode);
+        XMLPortParam(OverlayGroup, "scroll", setScroll, getScroll, xmlElement, mode);
         // loads all the child elements
         XMLPortObject(OverlayGroup, OrxonoxOverlay, "", addElement, getElement, xmlElement, mode);
Index: /code/branches/objecthierarchy/src/orxonox/overlays/OverlayText.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/overlays/OverlayText.cc	(revision 2045)
+++ /code/branches/objecthierarchy/src/orxonox/overlays/OverlayText.cc	(revision 2046)
@@ -41,12 +41,25 @@
     CreateFactory(OverlayText);
 
-    OverlayText::OverlayText(BaseObject* creator) : OrxonoxOverlay(creator), text_(0)
+    OverlayText::OverlayText(BaseObject* creator)
+        : OrxonoxOverlay(creator)
     {
         RegisterObject(OverlayText);
+
+        this->text_ = static_cast<Ogre::TextAreaOverlayElement*>(Ogre::OverlayManager::getSingleton()
+            .createOverlayElement("TextArea", "OverlayText_text_" + getUniqueNumberString()));
+        this->text_->setCharHeight(1.0);
+
+        setFont("Monofur");
+        setColour(ColourValue(1.0, 1.0, 1.0, 1.0));
+        setCaption("");
+        setTextSize(1.0f);
+        setAlignmentString("left");
+
+        this->background_->addChild(this->text_);
     }
 
     OverlayText::~OverlayText()
     {
-        if (this->text_)
+        if (this->isInitialized())
             Ogre::OverlayManager::getSingleton().destroyOverlayElement(this->text_);
     }
@@ -56,60 +69,15 @@
         SUPER(OverlayText, XMLPort, xmlElement, mode);
 
-        if (mode == XMLPort::LoadObject)
-        {
-            this->text_ = static_cast<Ogre::TextAreaOverlayElement*>(Ogre::OverlayManager::getSingleton()
-                .createOverlayElement("TextArea", "OverlayText_text_" + getUniqueNumberString()));
-            this->text_->setCharHeight(1.0);
-
-            this->background_->addChild(this->text_);
-        }
-
-        XMLPortParam(OverlayText, "font",     setFont,            getFont,            xmlElement, mode).defaultValues("Monofur");
-        XMLPortParam(OverlayText, "colour",   setColour,          getColour,          xmlElement, mode).defaultValues(ColourValue(1.0, 1.0, 1.0, 1.0));
-        XMLPortParam(OverlayText, "caption",  setCaption,         getCaption,         xmlElement, mode).defaultValues("");
-        XMLPortParam(OverlayText, "textSize", setTextSize,        getTextSize,        xmlElement, mode).defaultValues(1.0f);
-        XMLPortParam(OverlayText, "align",    setAlignmentString, getAlignmentString, xmlElement, mode).defaultValues("left");
+        XMLPortParam(OverlayText, "font",     setFont,            getFont,            xmlElement, mode);
+        XMLPortParam(OverlayText, "colour",   setColour,          getColour,          xmlElement, mode);
+        XMLPortParam(OverlayText, "caption",  setCaption,         getCaption,         xmlElement, mode);
+        XMLPortParam(OverlayText, "textSize", setTextSize,        getTextSize,        xmlElement, mode);
+        XMLPortParam(OverlayText, "align",    setAlignmentString, getAlignmentString, xmlElement, mode);
     }
 
     void OverlayText::setFont(const std::string& font)
     {
-        if (this->text_ && font != "")
+        if (font != "")
             this->text_->setFontName(font);
-    }
-
-    const std::string& OverlayText::getFont() const
-    {
-        if (this->text_)
-            return this->text_->getFontName();
-        else
-            return BLANKSTRING;
-    }
-
-    void OverlayText::setColour(const ColourValue& colour)
-    {
-        if (this->text_)
-            this->text_->setColour(colour);
-    }
-
-    const ColourValue& OverlayText::getColour() const
-    {
-        if (this->text_)
-            return this->text_->getColour();
-        else
-            return ColourValue::White;
-    }
-
-    void OverlayText::setAlignment(Ogre::TextAreaOverlayElement::Alignment alignment)
-    {
-        if (this->text_)
-            this->text_->setAlignment(alignment);
-    }
-
-    Ogre::TextAreaOverlayElement::Alignment OverlayText::getAlignment() const
-    {
-        if (this->text_)
-            return this->text_->getAlignment();
-        else
-            return Ogre::TextAreaOverlayElement::Left;
     }
 
@@ -126,32 +94,21 @@
     std::string OverlayText::getAlignmentString() const
     {
-        if (this->text_)
+        Ogre::TextAreaOverlayElement::Alignment alignment = this->text_->getAlignment();
+
+        switch (alignment)
         {
-            Ogre::TextAreaOverlayElement::Alignment alignment = this->text_->getAlignment();
-
-            switch (alignment)
-            {
-                case Ogre::TextAreaOverlayElement::Right:
-                    return "right";
-                case Ogre::TextAreaOverlayElement::Center:
-                    return "center";
-                case Ogre::TextAreaOverlayElement::Left:
-                default:;
-            }
+            case Ogre::TextAreaOverlayElement::Right:
+                return "right";
+            case Ogre::TextAreaOverlayElement::Center:
+                return "center";
+            case Ogre::TextAreaOverlayElement::Left:
+                return "left";
+            default:
+                assert(false); return "";
         }
-        return "left";
-    }
-
-    void OverlayText::setCaption(const std::string& caption)
-    {
-        this->caption_ = caption;
-        this->text_->setCaption(caption);
     }
 
     void OverlayText::sizeChanged()
     {
-        if (!this->overlay_)
-            return;
-
         if (this->rotState_ == Horizontal)
             this->overlay_->setScale(size_.y * sizeCorrection_.y, size_.y * sizeCorrection_.y);
Index: /code/branches/objecthierarchy/src/orxonox/overlays/OverlayText.h
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/overlays/OverlayText.h	(revision 2045)
+++ /code/branches/objecthierarchy/src/orxonox/overlays/OverlayText.h	(revision 2046)
@@ -47,15 +47,15 @@
         virtual void XMLPort(Element& xmlElement, XMLPort::Mode mode);
 
-        void setCaption(const std::string& caption);
-        const std::string& getCaption() const       { return this->caption_; }
+        void setCaption(const std::string& caption) { this->text_->setCaption(caption); }
+        std::string getCaption() const              { return this->text_->getCaption(); }
 
         void setFont(const std::string& font);
-        const std::string& getFont() const;
+        const std::string& getFont() const { return this->text_->getFontName(); }
 
-        void setColour(const ColourValue& colour);
-        const ColourValue& getColour() const;
+        void setColour(const ColourValue& colour) { this->text_->setColour(colour); }
+        const ColourValue& getColour() const      { return this->text_->getColour(); }
 
-        void setAlignment(Ogre::TextAreaOverlayElement::Alignment alignment);
-        Ogre::TextAreaOverlayElement::Alignment getAlignment() const;
+        void setAlignment(Ogre::TextAreaOverlayElement::Alignment alignment) { this->text_->setAlignment(alignment); }
+        Ogre::TextAreaOverlayElement::Alignment getAlignment() const         { return this->text_->getAlignment(); }
 
     protected:
@@ -69,7 +69,4 @@
 
         Ogre::TextAreaOverlayElement* text_;
-
-    private:
-        std::string caption_;
     };
 }
Index: /code/branches/objecthierarchy/src/orxonox/overlays/debug/DebugFPSText.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/overlays/debug/DebugFPSText.cc	(revision 2045)
+++ /code/branches/objecthierarchy/src/orxonox/overlays/debug/DebugFPSText.cc	(revision 2046)
@@ -50,5 +50,5 @@
     {
         float fps = GraphicsEngine::getInstance().getAverageFramesPerSecond();
-        this->text_->setCaption(this->getCaption() + convertToString(fps));
+        this->setCaption(convertToString(fps));
     }
 }
Index: /code/branches/objecthierarchy/src/orxonox/overlays/debug/DebugRTRText.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/overlays/debug/DebugRTRText.cc	(revision 2045)
+++ /code/branches/objecthierarchy/src/orxonox/overlays/debug/DebugRTRText.cc	(revision 2046)
@@ -50,5 +50,5 @@
     {
         float rtr = GraphicsEngine::getInstance().getAverageTickTime();
-        this->text_->setCaption(this->getCaption() + convertToString(rtr));
+        this->setCaption(convertToString(rtr));
     }
 }
Index: /code/branches/objecthierarchy/src/orxonox/overlays/hud/ChatOverlay.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/overlays/hud/ChatOverlay.cc	(revision 2045)
+++ /code/branches/objecthierarchy/src/orxonox/overlays/hud/ChatOverlay.cc	(revision 2046)
@@ -49,9 +49,10 @@
     CreateFactory(ChatOverlay);
 
-    ChatOverlay::ChatOverlay(BaseObject* creator) : OverlayText(creator)
+    ChatOverlay::ChatOverlay(BaseObject* creator)
+        : OverlayText(creator)
     {
         RegisterObject(ChatOverlay);
 
-        this->displayTime_ = 0;
+        this->displayTime_ = 0.0;
 
         this->setConfigValues();
Index: /code/branches/objecthierarchy/src/orxonox/overlays/hud/HUDBar.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/overlays/hud/HUDBar.cc	(revision 2045)
+++ /code/branches/objecthierarchy/src/orxonox/overlays/hud/HUDBar.cc	(revision 2046)
@@ -46,7 +46,11 @@
     CreateFactory(BarColour);
 
-    BarColour::BarColour(BaseObject* creator) : BaseObject(creator), position_(0.0)
+    BarColour::BarColour(BaseObject* creator)
+        : BaseObject(creator)
     {
         RegisterObject(BarColour);
+
+        setColour(ColourValue(1.0, 1.0, 1.0, 1.0));
+        setPosition(0.0);
     }
 
@@ -55,7 +59,6 @@
         SUPER(BarColour, XMLPort, xmlElement, mode);
 
-        XMLPortParam(BarColour, "colour", setColour, getColour, xmlElement, mode)
-            .defaultValues(ColourValue(1.0, 1.0, 1.0, 1.0));
-        XMLPortParam(BarColour, "position", setPosition, getPosition, xmlElement, mode).defaultValues(0.0f);
+        XMLPortParam(BarColour, "colour", setColour, getColour, xmlElement, mode);
+        XMLPortParam(BarColour, "position", setPosition, getPosition, xmlElement, mode);
     }
 
@@ -63,12 +66,32 @@
     unsigned int HUDBar::materialcount_s = 0;
 
-    HUDBar::HUDBar(BaseObject* creator) : OrxonoxOverlay(creator), bar_(0), textureUnitState_(0)
+    HUDBar::HUDBar(BaseObject* creator)
+        : OrxonoxOverlay(creator)
     {
         RegisterObject(HUDBar);
+
+        // create new material
+        std::string materialname = "barmaterial" + getConvertedValue<unsigned int, std::string>(materialcount_s++);
+        Ogre::MaterialPtr material = (Ogre::MaterialPtr)Ogre::MaterialManager::getSingleton().create(materialname, "General");
+        material->getTechnique(0)->getPass(0)->setSceneBlending(Ogre::SBT_TRANSPARENT_ALPHA);
+        this->textureUnitState_ = material->getTechnique(0)->getPass(0)->createTextureUnitState();
+        this->textureUnitState_->setTextureName("bar2.tga");
+        // use the default colour
+        this->textureUnitState_->setColourOperationEx(Ogre::LBX_MODULATE, Ogre::LBS_MANUAL, Ogre::LBS_CURRENT, ColourValue(0.2, 0.7, 0.2));
+
+        this->bar_ = static_cast<Ogre::PanelOverlayElement*>(Ogre::OverlayManager::getSingleton()
+            .createOverlayElement("Panel", "HUDBar_bar_" + getUniqueNumberString()));
+        this->bar_->setMaterialName(materialname);
+
+        setValue(0.4567654f);
+        setRightToLeft(false);
+        setAutoColour(true);
+
+        this->background_->addChild(bar_);
     }
 
     HUDBar::~HUDBar()
     {
-        if (this->bar_)
+        if (this->isInitialized())
             Ogre::OverlayManager::getSingleton().destroyOverlayElement(this->bar_);
     }
@@ -78,24 +101,7 @@
         SUPER(HUDBar, XMLPort, xmlElement, mode);
 
-        if (mode == XMLPort::LoadObject)
-        {
-            // create new material
-            std::string materialname = "barmaterial" + getConvertedValue<unsigned int, std::string>(materialcount_s++);
-            Ogre::MaterialPtr material = (Ogre::MaterialPtr)Ogre::MaterialManager::getSingleton().create(materialname, "General");
-            material->getTechnique(0)->getPass(0)->setSceneBlending(Ogre::SBT_TRANSPARENT_ALPHA);
-            this->textureUnitState_ = material->getTechnique(0)->getPass(0)->createTextureUnitState();
-            this->textureUnitState_->setTextureName("bar2.tga");
-            // use the default colour
-            this->textureUnitState_->setColourOperationEx(Ogre::LBX_MODULATE, Ogre::LBS_MANUAL, Ogre::LBS_CURRENT, ColourValue(0.2, 0.7, 0.2));
-
-            this->bar_ = static_cast<Ogre::PanelOverlayElement*>(Ogre::OverlayManager::getSingleton()
-                .createOverlayElement("Panel", "HUDBar_bar_" + getUniqueNumberString()));
-            this->bar_->setMaterialName(materialname);
-            this->background_->addChild(bar_);
-        }
-
-        XMLPortParam(HUDBar, "initialValue", setValue,       getValue,       xmlElement, mode).defaultValues(0.4567654f);
-        XMLPortParam(HUDBar, "rightToLeft",  setRightToLeft, getRightToLeft, xmlElement, mode).defaultValues(false);
-        XMLPortParam(HUDBar, "autoColour",   setAutoColour,  getAutoColour,  xmlElement, mode).defaultValues(true);
+        XMLPortParam(HUDBar, "initialValue", setValue,       getValue,       xmlElement, mode);
+        XMLPortParam(HUDBar, "rightToLeft",  setRightToLeft, getRightToLeft, xmlElement, mode);
+        XMLPortParam(HUDBar, "autoColour",   setAutoColour,  getAutoColour,  xmlElement, mode);
         XMLPortObject(HUDBar, BarColour, "", addColour, getColour, xmlElement, mode);
     }
Index: /code/branches/objecthierarchy/src/orxonox/overlays/hud/HUDNavigation.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/overlays/hud/HUDNavigation.cc	(revision 2045)
+++ /code/branches/objecthierarchy/src/orxonox/overlays/hud/HUDNavigation.cc	(revision 2046)
@@ -48,19 +48,43 @@
     HUDNavigation::HUDNavigation(BaseObject* creator)
         : OrxonoxOverlay(creator)
-        , navMarker_(0)
-        , aimMarker_(0)
-        , navText_(0)
     {
         RegisterObject(HUDNavigation);
+
+        // create nav text
+        navText_ = static_cast<Ogre::TextAreaOverlayElement*>(Ogre::OverlayManager::getSingleton()
+            .createOverlayElement("TextArea", "HUDNavigation_navText_" + getUniqueNumberString()));
+
+        // create nav marker
+        navMarker_ = static_cast<Ogre::PanelOverlayElement*>(Ogre::OverlayManager::getSingleton()
+            .createOverlayElement("Panel", "HUDNavigation_navMarker_" + getUniqueNumberString()));
+        navMarker_->setMaterialName("Orxonox/NavArrows");
+
+        // create aim marker
+        aimMarker_ = static_cast<Ogre::PanelOverlayElement*>(Ogre::OverlayManager::getSingleton()
+            .createOverlayElement("Panel", "HUDNavigation_aimMarker_" + getUniqueNumberString()));
+        aimMarker_->setMaterialName("Orxonox/NavCrosshair");
+        this->wasOutOfView_ = true; // Ensure the material is changed right the first time..
+
+        setFont("Monofur");
+        setTextSize(0.05f);
+        setNavMarkerSize(0.05f);
+        setAimMarkerSize(0.04f);
+
+        background_->addChild(navMarker_);
+        background_->addChild(aimMarker_);
+        background_->addChild(navText_);
+
+        // hide at first
+        this->setVisible(false);
     }
 
     HUDNavigation::~HUDNavigation()
     {
-        if (this->navMarker_)
+        if (this->isInitialized())
+        {
             Ogre::OverlayManager::getSingleton().destroyOverlayElement(this->navMarker_);
-        if (this->navText_)
             Ogre::OverlayManager::getSingleton().destroyOverlayElement(this->navText_);
-        if (this->aimMarker_)
             Ogre::OverlayManager::getSingleton().destroyOverlayElement(this->aimMarker_);
+        }
     }
 
@@ -69,35 +93,8 @@
         SUPER(HUDNavigation, XMLPort, xmlElement, mode);
 
-        if (mode == XMLPort::LoadObject)
-        {
-            // create nav text
-            navText_ = static_cast<Ogre::TextAreaOverlayElement*>(Ogre::OverlayManager::getSingleton()
-                .createOverlayElement("TextArea", "HUDNavigation_navText_" + getUniqueNumberString()));
-
-            // create nav marker
-            navMarker_ = static_cast<Ogre::PanelOverlayElement*>(Ogre::OverlayManager::getSingleton()
-                .createOverlayElement("Panel", "HUDNavigation_navMarker_" + getUniqueNumberString()));
-            navMarker_->setMaterialName("Orxonox/NavArrows");
-            wasOutOfView_ = true; // just to ensure the material is changed right the first time..
-
-            // create aim marker
-            aimMarker_ = static_cast<Ogre::PanelOverlayElement*>(Ogre::OverlayManager::getSingleton()
-                .createOverlayElement("Panel", "HUDNavigation_aimMarker_" + getUniqueNumberString()));
-            aimMarker_->setMaterialName("Orxonox/NavCrosshair");
-
-            background_->addChild(navMarker_);
-            background_->addChild(aimMarker_);
-            background_->addChild(navText_);
-
-            // hide at first
-            this->setVisible(false);
-        }
-
-        XMLPortParam(HUDNavigation, "font",     setFont,     getFont,     xmlElement, mode).defaultValues("Monofur");
-        XMLPortParam(HUDNavigation, "textSize", setTextSize, getTextSize, xmlElement, mode).defaultValues(0.05f);
-        XMLPortParam(HUDNavigation, "navMarkerSize", setNavMarkerSize, getNavMarkerSize, xmlElement, mode)
-            .defaultValues(0.05f);
-        XMLPortParam(HUDNavigation, "aimMarkerSize", setAimMarkerSize, getAimMarkerSize, xmlElement, mode)
-            .defaultValues(0.04f);
+        XMLPortParam(HUDNavigation, "font",     setFont,     getFont,     xmlElement, mode);
+        XMLPortParam(HUDNavigation, "textSize", setTextSize, getTextSize, xmlElement, mode);
+        XMLPortParam(HUDNavigation, "navMarkerSize", setNavMarkerSize, getNavMarkerSize, xmlElement, mode);
+        XMLPortParam(HUDNavigation, "aimMarkerSize", setAimMarkerSize, getAimMarkerSize, xmlElement, mode);
     }
 
Index: /code/branches/objecthierarchy/src/orxonox/overlays/hud/HUDRadar.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/overlays/hud/HUDRadar.cc	(revision 2045)
+++ /code/branches/objecthierarchy/src/orxonox/overlays/hud/HUDRadar.cc	(revision 2046)
@@ -46,17 +46,34 @@
     CreateFactory(HUDRadar);
 
-    HUDRadar::HUDRadar(BaseObject* creator) : OrxonoxOverlay(creator), marker_(0)
+    HUDRadar::HUDRadar(BaseObject* creator)
+        : OrxonoxOverlay(creator)
     {
         RegisterObject(HUDRadar);
+
+        marker_ = static_cast<Ogre::PanelOverlayElement*>(Ogre::OverlayManager::getSingleton()
+            .createOverlayElement("Panel", "HUDRadar_marker_" + getUniqueNumberString()));
+        marker_->setMaterialName("Orxonox/RadarMarker");
+        overlay_->add2D(marker_);
+        marker_->hide();
+
+        setRadarSensitivity(1.0f);
+        setHalfDotSizeDistance(3000.0f);
+        setMaximumDotSize(0.1f);
+
+        shapeMaterials_[RadarViewable::Dot]      = "RadarSquare.tga";
+        shapeMaterials_[RadarViewable::Triangle] = "RadarSquare.tga";
+        shapeMaterials_[RadarViewable::Square]   = "RadarSquare.tga";
     }
 
     HUDRadar::~HUDRadar()
     {
-        if (this->marker_)
+        if (this->isInitialized())
+        {
             Ogre::OverlayManager::getSingleton().destroyOverlayElement(this->marker_);
-        for (std::vector<Ogre::PanelOverlayElement*>::iterator it = this->radarDots_.begin();
-            it != this->radarDots_.end(); ++it)
-        {
-            Ogre::OverlayManager::getSingleton().destroyOverlayElement(*it);
+            for (std::vector<Ogre::PanelOverlayElement*>::iterator it = this->radarDots_.begin();
+                it != this->radarDots_.end(); ++it)
+            {
+                Ogre::OverlayManager::getSingleton().destroyOverlayElement(*it);
+            }
         }
     }
@@ -66,23 +83,7 @@
         SUPER(HUDRadar, XMLPort, xmlElement, mode);
 
-        if (mode == XMLPort::LoadObject)
-        {
-            marker_ = static_cast<Ogre::PanelOverlayElement*>(Ogre::OverlayManager::getSingleton()
-                .createOverlayElement("Panel", "HUDRadar_marker_" + getUniqueNumberString()));
-            marker_->setMaterialName("Orxonox/RadarMarker");
-            overlay_->add2D(marker_);
-            marker_->hide();
-        }
-
-        XMLPortParam(HUDRadar, "sensitivity", setRadarSensitivity, getRadarSensitivity, xmlElement, mode)
-            .defaultValues(1.0f);
-        XMLPortParam(HUDRadar, "halfDotSizeDistance", setHalfDotSizeDistance, getHalfDotSizeDistance,
-            xmlElement, mode).defaultValues(3000.0f);
-        XMLPortParam(HUDRadar, "maximumDotSize", setMaximumDotSize, getMaximumDotSize, xmlElement, mode)
-            .defaultValues(0.1f);
-
-        shapeMaterials_[RadarViewable::Dot]      = "RadarSquare.tga";
-        shapeMaterials_[RadarViewable::Triangle] = "RadarSquare.tga";
-        shapeMaterials_[RadarViewable::Square]   = "RadarSquare.tga";
+        XMLPortParam(HUDRadar, "sensitivity", setRadarSensitivity, getRadarSensitivity, xmlElement, mode);
+        XMLPortParam(HUDRadar, "halfDotSizeDistance", setHalfDotSizeDistance, getHalfDotSizeDistance, xmlElement, mode);
+        XMLPortParam(HUDRadar, "maximumDotSize", setMaximumDotSize, getMaximumDotSize, xmlElement, mode);
     }
 
Index: /code/branches/objecthierarchy/src/orxonox/overlays/hud/HUDSpeedBar.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/overlays/hud/HUDSpeedBar.cc	(revision 2045)
+++ /code/branches/objecthierarchy/src/orxonox/overlays/hud/HUDSpeedBar.cc	(revision 2046)
@@ -36,5 +36,6 @@
     CreateFactory(HUDSpeedBar);
 
-    HUDSpeedBar::HUDSpeedBar(BaseObject* creator) : HUDBar(creator)
+    HUDSpeedBar::HUDSpeedBar(BaseObject* creator)
+        : HUDBar(creator)
     {
         RegisterObject(HUDSpeedBar);
