Index: /code/branches/core7/src/libraries/core/CorePrereqs.h
===================================================================
--- /code/branches/core7/src/libraries/core/CorePrereqs.h	(revision 10418)
+++ /code/branches/core7/src/libraries/core/CorePrereqs.h	(revision 10419)
@@ -157,4 +157,5 @@
     class Core;
     class Destroyable;
+    class DestroyLaterManager;
     class DestructionListener;
     class DynLib;
Index: /code/branches/core7/src/libraries/core/object/CMakeLists.txt
===================================================================
--- /code/branches/core7/src/libraries/core/object/CMakeLists.txt	(revision 10418)
+++ /code/branches/core7/src/libraries/core/object/CMakeLists.txt	(revision 10419)
@@ -2,4 +2,5 @@
   Context.cc
   Destroyable.cc
+  DestroyLaterManager.cc
   Listable.cc
   ObjectListBase.cc
Index: /code/branches/core7/src/libraries/core/object/DestroyLaterManager.cc
===================================================================
--- /code/branches/core7/src/libraries/core/object/DestroyLaterManager.cc	(revision 10419)
+++ /code/branches/core7/src/libraries/core/object/DestroyLaterManager.cc	(revision 10419)
@@ -0,0 +1,56 @@
+/*
+ *   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 "DestroyLaterManager.h"
+
+#include "core/CoreIncludes.h"
+#include "core/singleton/ScopedSingletonManager.h"
+
+namespace orxonox
+{
+    ManageScopedSingleton(DestroyLaterManager, ScopeID::Root, false);
+
+    RegisterAbstractClass(DestroyLaterManager).inheritsFrom<UpdateListener>();
+
+    DestroyLaterManager::DestroyLaterManager()
+    {
+        RegisterObject(DestroyLaterManager);
+    }
+
+    DestroyLaterManager::~DestroyLaterManager()
+    {
+        // Be sure to release all instances
+        this->retainedInstances_.clear();
+    }
+
+    void DestroyLaterManager::postUpdate(const Clock& time)
+    {
+        // clearing the list will destroy all smartpointers and thus all retained instances (as long as there are no other smart pointers pointing to them).
+        this->retainedInstances_.clear();
+    }
+}
Index: /code/branches/core7/src/libraries/core/object/DestroyLaterManager.h
===================================================================
--- /code/branches/core7/src/libraries/core/object/DestroyLaterManager.h	(revision 10419)
+++ /code/branches/core7/src/libraries/core/object/DestroyLaterManager.h	(revision 10419)
@@ -0,0 +1,60 @@
+/*
+ *   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 _DestroyLaterManager_H__
+#define _DestroyLaterManager_H__
+
+#include "core/CorePrereqs.h"
+
+#include "util/Singleton.h"
+#include "core/UpdateListener.h"
+#include "SmartPtr.h"
+
+namespace orxonox
+{
+    class _CoreExport DestroyLaterManager : public Singleton<DestroyLaterManager>, public UpdateListener
+    {
+            friend class Singleton<DestroyLaterManager>;
+        public:
+            DestroyLaterManager();
+            virtual ~DestroyLaterManager();
+
+            virtual void preUpdate(const Clock& time) { /*no action*/ }
+            virtual void postUpdate(const Clock& time);
+
+            void retain(Destroyable* instance)
+                { this->retainedInstances_.push_back(instance); }
+
+        private:
+            std::vector<SmartPtr<Destroyable> > retainedInstances_;
+
+            static DestroyLaterManager* singletonPtr_s;
+    };
+}
+
+#endif /* _DestroyLaterManager_H__ */
Index: /code/branches/core7/src/libraries/core/object/Destroyable.cc
===================================================================
--- /code/branches/core7/src/libraries/core/object/Destroyable.cc	(revision 10418)
+++ /code/branches/core7/src/libraries/core/object/Destroyable.cc	(revision 10419)
@@ -33,4 +33,5 @@
 
 #include "Destroyable.h"
+#include "DestroyLaterManager.h"
 
 #include <cassert>
@@ -74,3 +75,15 @@
         }
     }
+
+    /**
+     * Works like @ref destroy() but doesn't destroy the object until the current tick has ended.
+     */
+    void Destroyable::destroyLater()
+    {
+        // register in DestroyLaterManager - this ensures that a smartPtr points to this object and keeps it alive for a while
+        DestroyLaterManager::getInstance().retain(this);
+
+        // request destruction -> object will be deleted after all smartPtrs (including the one in DestroyLaterManager) were destroyed.
+        this->destroy();
+    }
 }
Index: /code/branches/core7/src/libraries/core/object/Destroyable.h
===================================================================
--- /code/branches/core7/src/libraries/core/object/Destroyable.h	(revision 10418)
+++ /code/branches/core7/src/libraries/core/object/Destroyable.h	(revision 10419)
@@ -57,4 +57,5 @@
 
             void destroy();
+            void destroyLater();
 
             /// Returns the number of @ref orxonox::SmartPtr "smart pointers" that point to this object.
