Index: code/branches/questsystem5/src/orxonox/overlays/OrxonoxOverlay.cc
===================================================================
--- code/branches/questsystem5/src/orxonox/overlays/OrxonoxOverlay.cc	(revision 2907)
+++ code/branches/questsystem5/src/orxonox/overlays/OrxonoxOverlay.cc	(revision 2908)
@@ -39,14 +39,11 @@
 #include <OgreOverlayManager.h>
 #include <OgrePanelOverlayElement.h>
-#include <OgreRenderWindow.h>
-
 #include "util/Convert.h"
 #include "util/Exception.h"
 #include "util/String.h"
-#include "core/GameMode.h"
+#include "core/Core.h"
 #include "core/CoreIncludes.h"
 #include "core/XMLPort.h"
 #include "core/ConsoleCommand.h"
-#include "GraphicsManager.h"
 
 namespace orxonox
@@ -67,5 +64,5 @@
         this->group_ = 0;
 
-        if (!GameMode::showsGraphics())
+        if (!Core::showsGraphics())
             ThrowException(NoGraphics, "Can't create OrxonoxOverlay, graphics engine not initialized");
 
@@ -80,7 +77,7 @@
         this->overlay_->add2D(this->background_);
 
-        // Get aspect ratio from the render window. Later on, we get informed automatically
-        Ogre::RenderWindow* defaultWindow = GraphicsManager::getInstance().getRenderWindow();
-        this->windowAspectRatio_ = (float)defaultWindow->getWidth() / defaultWindow->getHeight();
+        // We'll have to set the aspect ratio to a default value first.
+        // GSGraphics gets informed about our construction here and can update us in the next tick.
+        this->windowAspectRatio_ = 1.0;
         this->sizeCorrectionChanged();
 
@@ -178,8 +175,8 @@
     /**
     @brief
-        Called by the GraphicsManager whenever the window size changes.
+        Called by the GraphicsEngine whenever the window size changes.
         Calculates the aspect ratio only.
     */
-    void OrxonoxOverlay::windowResized(unsigned int newWidth, unsigned int newHeight)
+    void OrxonoxOverlay::windowResized(int newWidth, int newHeight)
     {
         this->windowAspectRatio_ = newWidth/(float)newHeight;
Index: code/branches/questsystem5/src/orxonox/overlays/OrxonoxOverlay.h
===================================================================
--- code/branches/questsystem5/src/orxonox/overlays/OrxonoxOverlay.h	(revision 2907)
+++ code/branches/questsystem5/src/orxonox/overlays/OrxonoxOverlay.h	(revision 2908)
@@ -154,5 +154,5 @@
         virtual void changedVisibility();
 
-        inline void setOwner(BaseObject* owner)
+        inline void setOwner(ControllableEntity* owner)
         {
             if (this->owner_ != owner)
@@ -162,5 +162,5 @@
             }
         }
-        inline BaseObject* getOwner() const
+        inline ControllableEntity* getOwner() const
             { return this->owner_; }
         virtual void changedOwner() {}
@@ -200,5 +200,5 @@
 
     private:
-        void windowResized(unsigned int newWidth, unsigned int newHeight);
+        void windowResized(int newWidth, int newHeight);
 
         static unsigned int hudOverlayCounter_s;   //!< Static counter for hud elements
@@ -206,5 +206,5 @@
             We could also use the ObjectList, but that doesn't guarantee XMLPort(.) was called and is slower. */
         static std::map<std::string, OrxonoxOverlay*> overlays_s;
-        BaseObject* owner_;
+        ControllableEntity* owner_;
         OverlayGroup* group_;
   };
Index: code/branches/questsystem5/src/orxonox/overlays/OverlayGroup.cc
===================================================================
--- code/branches/questsystem5/src/orxonox/overlays/OverlayGroup.cc	(revision 2907)
+++ code/branches/questsystem5/src/orxonox/overlays/OverlayGroup.cc	(revision 2908)
@@ -63,6 +63,6 @@
     OverlayGroup::~OverlayGroup()
     {
-        for (std::set<OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)
-            delete (*it);
+        for (std::map<std::string, OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)
+            delete it->second;
     }
 
@@ -83,17 +83,17 @@
     }
 
-    //! Scales every element in the set.
+    //! Scales every element in the map.
     void OverlayGroup::setScale(const Vector2& scale)
     {
-        for (std::set<OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)
-            (*it)->scale(scale / this->scale_);
+        for (std::map<std::string, OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)
+            (*it).second->scale(scale / this->scale_);
         this->scale_ = scale;
     }
 
-    //! Scrolls every element in the set.
+    //! Scrolls every element in the map.
     void OverlayGroup::setScroll(const Vector2& scroll)
     {
-        for (std::set<OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)
-            (*it)->scroll(scroll - this->scroll_);
+        for (std::map<std::string, OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)
+            (*it).second->scroll(scroll - this->scroll_);
         this->scroll_ = scroll;
     }
@@ -101,5 +101,5 @@
     /**
     @brief
-        Adds an element to the set (used when loading with XMLPort).
+        Adds an element to the map (used when loading with XMLPort).
     @remarks
         The names of the OrxonoxOverlays have to be unique!
@@ -107,21 +107,44 @@
     void OverlayGroup::addElement(OrxonoxOverlay* element)
     {
-        hudElements_.insert(element);
-        element->setVisible(this->isVisible());
-        if (this->owner_)
-            element->setOwner(this->owner_);
-    }
-
-    /**
+        this->insertElement(element, element->getName());
+    }
+
+	/**
+    @brief
+        Adds an element to the map.
+    @param element
+        The element to be added.
+    @param name
+        The name of the element.
+    @remarks
+        The names of the OrxonoxOverlays have to be unique!
+    */
+    void OverlayGroup::insertElement(OrxonoxOverlay* element, const std::string & name)
+    {
+        element->setName(name);
+        if (hudElements_.find(name) != hudElements_.end())
+        {
+            COUT(1) << "Ambiguous names encountered while load the HUD overlays" << std::endl;
+        }
+        else
+        {
+            hudElements_[name] = element;
+            element->setVisible(this->isVisible());
+			if (this->owner_)
+                element->setOwner(this->owner_);
+        }
+    }
+
+	/**
     @brief
         Removes an element from the map.
-    @param element
-        The element that is to be removed.
+    @param name
+        The name of the element that is removed.
     @return
         Returns true if there was such an element to remove, false if not.
     */
-    bool OverlayGroup::removeElement(OrxonoxOverlay* element)
-    {
-        if(this->hudElements_.erase(element) == 0)
+    bool OverlayGroup::removeElement(const std::string & name)
+    {
+        if(this->hudElements_.erase(name) == 0)
             return false;
         return true;
@@ -133,8 +156,8 @@
         if (index < this->hudElements_.size())
         {
-            std::set<OrxonoxOverlay*>::const_iterator it = hudElements_.begin();
+            std::map<std::string, OrxonoxOverlay*>::const_iterator it = hudElements_.begin();
             for (unsigned int i = 0; i != index; ++it, ++i)
                 ;
-            return (*it);
+            return (*it).second;
         }
         else
@@ -145,14 +168,14 @@
     void OverlayGroup::changedVisibility()
     {
-        for (std::set<OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)
-            (*it)->setVisible(this->isVisible());
-    }
-
-    void OverlayGroup::setOwner(BaseObject* owner)
+        for (std::map<std::string, OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)
+            (*it).second->setVisible(this->isVisible());
+    }
+
+    void OverlayGroup::setOwner(ControllableEntity* owner)
     {
         this->owner_ = owner;
 
-        for (std::set<OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)
-            (*it)->setOwner(owner);
+        for (std::map<std::string, OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)
+            (*it).second->setOwner(owner);
     }
 
Index: code/branches/questsystem5/src/orxonox/overlays/OverlayGroup.h
===================================================================
--- code/branches/questsystem5/src/orxonox/overlays/OverlayGroup.h	(revision 2907)
+++ code/branches/questsystem5/src/orxonox/overlays/OverlayGroup.h	(revision 2908)
@@ -37,6 +37,5 @@
 #include "OrxonoxPrereqs.h"
 
-#include <set>
-#include <string>
+#include <map>
 #include <OgrePrerequisites.h>
 #include "core/BaseObject.h"
@@ -65,11 +64,11 @@
         static void scrollGroup(const std::string& name, const Vector2& scroll);
 
-        inline const std::set<OrxonoxOverlay*>& getOverlays() const
+        inline const std::map<std::string, OrxonoxOverlay*>& getOverlays() const
             { return this->hudElements_; }
 
         void changedVisibility();
 
-        void setOwner(BaseObject* owner);
-        inline BaseObject* getOwner() const
+        void setOwner(ControllableEntity* owner);
+        inline ControllableEntity* getOwner() const
             { return this->owner_; }
 
@@ -87,12 +86,13 @@
 
         void addElement(OrxonoxOverlay* element);
-        bool removeElement(OrxonoxOverlay* element);
+		void insertElement(OrxonoxOverlay* element, const std::string & name);
+        bool removeElement(const std::string & name);
         OrxonoxOverlay* getElement(unsigned int index);
 
     private:
-        std::set<OrxonoxOverlay*> hudElements_;    //!< Contains all the OrxonoxOverlays of the this group.
-        Vector2 scale_;                            //!< Current scale (independent of the elements).
-        Vector2 scroll_;                           //!< Current scrolling offset.
-        BaseObject* owner_;                        //!< The owner of this OverlayGroup
+        std::map<std::string, OrxonoxOverlay*> hudElements_;    //!< Contains all the OrxonoxOverlays of the this group.
+        Vector2 scale_;                                         //!< Current scale (independent of the elements).
+        Vector2 scroll_;                                        //!< Current scrolling offset.
+        ControllableEntity* owner_;                             //!< The owner of this OverlayGroup
     };
 }
Index: code/branches/questsystem5/src/orxonox/overlays/console/InGameConsole.cc
===================================================================
--- code/branches/questsystem5/src/orxonox/overlays/console/InGameConsole.cc	(revision 2907)
+++ code/branches/questsystem5/src/orxonox/overlays/console/InGameConsole.cc	(revision 2908)
@@ -42,5 +42,4 @@
 #include "util/Convert.h"
 #include "util/Debug.h"
-#include "core/Clock.h"
 #include "core/CoreIncludes.h"
 #include "core/ConfigValueIncludes.h"
@@ -173,5 +172,5 @@
     {
         // create the corresponding input state
-        inputState_ = InputManager::getInstance().createInputState<SimpleInputState>("console", false, false, InputStatePriority::Console);
+        inputState_ = InputManager::getInstance().createInputState<SimpleInputState>("console", 40);
         inputState_->setKeyHandler(Shell::getInstance().getInputBuffer());
         bHidesAllInputChanged();
@@ -348,5 +347,5 @@
         @brief Used to control the actual scrolling and the cursor.
     */
-    void InGameConsole::update(const Clock& time)
+    void InGameConsole::tick(float dt)
     {
         if (this->scroll_ != 0)
@@ -359,5 +358,5 @@
                 // enlarge oldTop a little bit so that this exponential function
                 // reaches 0 before infinite time has passed...
-                float deltaScroll = (oldTop - 0.01) * time.getDeltaTime() * this->scrollSpeed_;
+                float deltaScroll = (oldTop - 0.01) * dt * this->scrollSpeed_;
                 if (oldTop - deltaScroll >= 0)
                 {
@@ -374,5 +373,5 @@
                 // scrolling up
                 // note: +0.01 for the same reason as when scrolling down
-                float deltaScroll = (1.2 * this->relativeHeight + 0.01 + oldTop) * time.getDeltaTime() * this->scrollSpeed_;
+                float deltaScroll = (1.2 * this->relativeHeight + 0.01 + oldTop) * dt * this->scrollSpeed_;
                 if (oldTop - deltaScroll <= -1.2 * this->relativeHeight)
                 {
@@ -389,5 +388,5 @@
         if (this->bActive_)
         {
-            this->cursor_ += time.getDeltaTime();
+            this->cursor_ += dt;
             if (this->cursor_ >= this->blinkTime)
             {
@@ -410,5 +409,5 @@
         @brief Resizes the console elements. Call if window size changes.
     */
-    void InGameConsole::windowResized(unsigned int newWidth, unsigned int newHeight)
+    void InGameConsole::windowResized(int newWidth, int newHeight)
     {
         this->windowW_ = newWidth;
Index: code/branches/questsystem5/src/orxonox/overlays/console/InGameConsole.h
===================================================================
--- code/branches/questsystem5/src/orxonox/overlays/console/InGameConsole.h	(revision 2907)
+++ code/branches/questsystem5/src/orxonox/overlays/console/InGameConsole.h	(revision 2908)
@@ -53,5 +53,5 @@
         void setConfigValues();
 
-        void update(const Clock& time);
+        virtual void tick(float dt);
 
         static InGameConsole& getInstance() { assert(singletonRef_s); return *singletonRef_s; }
@@ -81,5 +81,5 @@
         void print(const std::string& text, int index, bool alwaysShift = false);
 
-        void windowResized(unsigned int newWidth, unsigned int newHeight);
+        void windowResized(int newWidth, int newHeight);
 
         // config value related
Index: code/branches/questsystem5/src/orxonox/overlays/debug/DebugFPSText.cc
===================================================================
--- code/branches/questsystem5/src/orxonox/overlays/debug/DebugFPSText.cc	(revision 2907)
+++ code/branches/questsystem5/src/orxonox/overlays/debug/DebugFPSText.cc	(revision 2908)
@@ -30,7 +30,7 @@
 #include "DebugFPSText.h"
 #include <OgreTextAreaOverlayElement.h>
+#include "core/CoreIncludes.h"
+#include "GraphicsEngine.h"
 #include "util/Convert.h"
-#include "core/CoreIncludes.h"
-#include "core/Game.h"
 
 namespace orxonox
@@ -51,5 +51,5 @@
         SUPER(DebugFPSText, tick, dt);
 
-        float fps = Game::getInstance().getAvgFPS();
+        float fps = GraphicsEngine::getInstance().getAverageFramesPerSecond();
         this->setCaption(convertToString(fps));
     }
Index: code/branches/questsystem5/src/orxonox/overlays/debug/DebugRTRText.cc
===================================================================
--- code/branches/questsystem5/src/orxonox/overlays/debug/DebugRTRText.cc	(revision 2907)
+++ code/branches/questsystem5/src/orxonox/overlays/debug/DebugRTRText.cc	(revision 2908)
@@ -32,5 +32,5 @@
 #include "core/CoreIncludes.h"
 #include "util/Convert.h"
-#include "core/Game.h"
+#include "GraphicsEngine.h"
 
 namespace orxonox
@@ -51,5 +51,5 @@
         SUPER(DebugRTRText, tick, dt);
 
-        float rtr = Game::getInstance().getAvgTickTime();
+        float rtr = GraphicsEngine::getInstance().getAverageTickTime();
         this->setCaption(convertToString(rtr));
     }
Index: code/branches/questsystem5/src/orxonox/overlays/hud/CMakeLists.txt
===================================================================
--- code/branches/questsystem5/src/orxonox/overlays/hud/CMakeLists.txt	(revision 2907)
+++ code/branches/questsystem5/src/orxonox/overlays/hud/CMakeLists.txt	(revision 2908)
@@ -7,4 +7,3 @@
   ChatOverlay.cc
   GametypeStatus.cc
-  PongScore.cc
 )
Index: code/branches/questsystem5/src/orxonox/overlays/hud/HUDRadar.cc
===================================================================
--- code/branches/questsystem5/src/orxonox/overlays/hud/HUDRadar.cc	(revision 2907)
+++ code/branches/questsystem5/src/orxonox/overlays/hud/HUDRadar.cc	(revision 2908)
@@ -94,5 +94,5 @@
     void HUDRadar::displayObject(RadarViewable* object, bool bIsMarked)
     {
-        if (object == static_cast<RadarViewable*>(this->owner_))
+        if (object == (RadarViewable*)this->owner_)
             return;
 
Index: code/branches/questsystem5/src/orxonox/overlays/hud/PongScore.cc
===================================================================
--- code/branches/questsystem5/src/orxonox/overlays/hud/PongScore.cc	(revision 2907)
+++ 	(revision )
@@ -1,139 +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:
- *      Fabian 'x3n' Landau
- *   Co-authors:
- *      ...
- *
- */
-
-#include "OrxonoxStableHeaders.h"
-#include "PongScore.h"
-
-#include <OgreTextAreaOverlayElement.h>
-
-#include "core/CoreIncludes.h"
-#include "core/XMLPort.h"
-#include "util/Convert.h"
-#include "objects/gametypes/Pong.h"
-#include "objects/infos/PlayerInfo.h"
-
-namespace orxonox
-{
-    CreateFactory(PongScore);
-
-    PongScore::PongScore(BaseObject* creator) : OverlayText(creator)
-    {
-        RegisterObject(PongScore);
-
-        this->owner_ = 0;
-
-        this->bShowName_ = false;
-        this->bShowScore_ = false;
-        this->bShowLeftPlayer_ = false;
-        this->bShowRightPlayer_ = false;
-    }
-
-    PongScore::~PongScore()
-    {
-    }
-
-    void PongScore::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        SUPER(PongScore, XMLPort, xmlelement, mode);
-
-        XMLPortParam(PongScore, "showname",        setShowName,        getShowName,        xmlelement, mode).defaultValues(false);
-        XMLPortParam(PongScore, "showscore",       setShowScore,       getShowScore,       xmlelement, mode).defaultValues(false);
-        XMLPortParam(PongScore, "showleftplayer",  setShowLeftPlayer,  getShowLeftPlayer,  xmlelement, mode).defaultValues(false);
-        XMLPortParam(PongScore, "showrightplayer", setShowRightPlayer, getShowRightPlayer, xmlelement, mode).defaultValues(false);
-    }
-
-    void PongScore::tick(float dt)
-    {
-        SUPER(PongScore, tick, dt);
-
-        if (this->owner_)
-        {
-            PlayerInfo* player1 = this->owner_->getLeftPlayer();
-            PlayerInfo* player2 = this->owner_->getRightPlayer();
-
-            std::string name1;
-            std::string name2;
-
-            std::string score1 = "0";
-            std::string score2 = "0";
-
-            if (player1)
-            {
-                name1 = player1->getName();
-                score1 = convertToString(this->owner_->getScore(player1));
-            }
-
-            if (player2)
-            {
-                name2 = player2->getName();
-                score2 = convertToString(this->owner_->getScore(player2));
-            }
-
-            std::string output1;
-            if (this->bShowLeftPlayer_)
-            {
-                if (this->bShowName_ && this->bShowScore_ && player1)
-                    output1 = name1 + " - " + score1;
-                else if (this->bShowScore_)
-                    output1 = score1;
-                else if (this->bShowName_)
-                    output1 = name1;
-            }
-
-            std::string output2;
-            if (this->bShowRightPlayer_)
-            {
-                if (this->bShowName_ && this->bShowScore_ && player2)
-                    output2 = score2 + " - " + name2;
-                else if (this->bShowScore_)
-                    output2 = score2;
-                else if (this->bShowName_)
-                    output2 = name2;
-            }
-
-            std::string output = "PONG";
-            if (this->bShowName_ || this->bShowScore_)
-            {
-                if (this->bShowLeftPlayer_ && this->bShowRightPlayer_)
-                    output = output1 + ":" + output2;
-                else if (this->bShowLeftPlayer_ || this->bShowRightPlayer_)
-                    output = output1 + output2;
-            }
-
-            this->setCaption(output);
-        }
-    }
-
-
-    void PongScore::changedOwner()
-    {
-        SUPER(PongScore, changedOwner);
-
-        this->owner_ = dynamic_cast<Pong*>(this->getOwner());
-    }
-}
Index: code/branches/questsystem5/src/orxonox/overlays/hud/PongScore.h
===================================================================
--- code/branches/questsystem5/src/orxonox/overlays/hud/PongScore.h	(revision 2907)
+++ 	(revision )
@@ -1,77 +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:
- *      Fabian 'x3n' Landau
- *   Co-authors:
- *      ...
- *
- */
-
-#ifndef _PongScore_H__
-#define _PongScore_H__
-
-#include "OrxonoxPrereqs.h"
-
-#include "overlays/OverlayText.h"
-#include "objects/Tickable.h"
-
-namespace orxonox
-{
-    class _OrxonoxExport PongScore : public OverlayText, public Tickable
-    {
-        public:
-            PongScore(BaseObject* creator);
-            ~PongScore();
-
-            virtual void tick(float dt);
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-            virtual void changedOwner();
-
-            inline void setShowName(bool value)
-                { this->bShowName_ = value; }
-            inline bool getShowName() const
-                { return this->bShowName_; }
-
-            inline void setShowScore(bool value)
-                { this->bShowScore_ = value; }
-            inline bool getShowScore() const
-                { return this->bShowScore_; }
-
-            inline void setShowLeftPlayer(bool value)
-                { this->bShowLeftPlayer_ = value; }
-            inline bool getShowLeftPlayer() const
-                { return this->bShowLeftPlayer_; }
-
-            inline void setShowRightPlayer(bool value)
-                { this->bShowRightPlayer_ = value; }
-            inline bool getShowRightPlayer() const
-                { return this->bShowRightPlayer_; }
-
-        private:
-            Pong* owner_;
-            bool bShowName_;
-            bool bShowScore_;
-            bool bShowLeftPlayer_;
-            bool bShowRightPlayer_;
-    };
-}
-#endif /* _PongScore_H__ */
Index: code/branches/questsystem5/src/orxonox/overlays/notifications/NotificationQueue.cc
===================================================================
--- code/branches/questsystem5/src/orxonox/overlays/notifications/NotificationQueue.cc	(revision 2907)
+++ code/branches/questsystem5/src/orxonox/overlays/notifications/NotificationQueue.cc	(revision 2908)
@@ -410,5 +410,5 @@
         this->containers_.insert(container);
         this->overlays_[notification] = container;
-        this->addElement(container->overlay);
+        this->insertElement(container->overlay, container->name);
         this->size_= this->size_+1;
 
@@ -429,5 +429,5 @@
             return false;
         
-        this->removeElement(container->overlay);
+        this->removeElement(container->name);
         this->containers_.erase(container);
         this->overlays_.erase(container->notification);
