diff --git a/src/Makefile.am b/src/Makefile.am
index 096c3d9b5..0e1586712 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -161,9 +161,6 @@ supertuxkart_SOURCES = \
  loader.hpp \
  race_manager.cpp \
  race_manager.hpp \
- callback.hpp \
- callback_manager.cpp \
- callback_manager.hpp \
  main_loop.cpp \
  main_loop.hpp \
  user_pointer.hpp \
diff --git a/src/callback.hpp b/src/callback.hpp
deleted file mode 100644
index bad4567cf..000000000
--- a/src/callback.hpp
+++ /dev/null
@@ -1,37 +0,0 @@
-//  $Id: callback.hpp 796 2006-09-27 07:06:34Z hiker $
-//
-//  SuperTuxKart - a fun racing game with go-kart
-//  Copyright (C) 2006 Joerg Henrichs
-//
-//  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 3
-//  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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-
-#ifndef CALLBACK_H
-#define CALLBACK_H
-
-#include "btBulletDynamicsCommon.h"
-
-class Callback
-{
-public:
-    virtual     ~Callback()     {};
-    virtual void update         (float dt) = 0;
-    virtual void init           ()         = 0;
-    virtual void reset          ()           {};
-    virtual void handleExplosion(const btVector3& pos, bool directHit) {};
-}
-;   // Callback
-
-#endif
-
diff --git a/src/callback_manager.cpp b/src/callback_manager.cpp
deleted file mode 100644
index 1a5a3e5fc..000000000
--- a/src/callback_manager.cpp
+++ /dev/null
@@ -1,142 +0,0 @@
-//  $Id: callback_manager.cpp 796 2006-09-27 07:06:34Z hiker $
-//
-//  SuperTuxKart - a fun racing game with go-kart
-//  Copyright (C) 2006 Joerg Henrichs
-//
-//  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 3
-//  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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-
-#include "callback_manager.hpp"
-#include "physics/moving_physics.hpp"
-
-CallbackManager *callback_manager=NULL;
-
-CallbackManager::CallbackManager()
-{
-    for(int i=0; i<CB_MAX; i++)
-    {
-        m_allCallbacks[i].clear();
-    }
-}   // CallbackManager
-
-//-----------------------------------------------------------------------------
-CallbackManager::~CallbackManager()
-{
-    for(int i=0; i<CB_MAX; i++)
-    {
-        for(std::vector<Callback*>::const_iterator c = m_allCallbacks[i].begin();
-            c != m_allCallbacks[i].end(); c++)
-        {
-            MovingPhysics *mp = dynamic_cast<MovingPhysics*>(*c);
-            if(mp)
-            {
-#ifndef HAVE_IRRLICHT
-                ssgDeRefDelete(mp);
-#endif
-            }
-            else
-            {
-                delete *c;
-            }
-        }   // for c in m_allCallbacks[i]
-        m_allCallbacks[i].clear();
-    }   // for i <CB_MAX
-}   // ~CallbackManager
-
-//-----------------------------------------------------------------------------
-void CallbackManager::addCallback(Callback *c, CallbackType t) 
-{
-    m_allCallbacks[t].push_back(c);
-    MovingPhysics *mp = dynamic_cast<MovingPhysics*>(c);
-    if(mp)
-    {
-#ifndef HAVE_IRRLICHT
-        mp->ref();
-#endif
-    }
-}   // addCallback
-
-//-----------------------------------------------------------------------------
-
-
-void CallbackManager::clear(CallbackType cbType)
-{
-    for(std::vector<Callback*>::const_iterator c = m_allCallbacks[cbType].begin();
-        c != m_allCallbacks[cbType].end(); c++)
-    {
-        MovingPhysics *mp = dynamic_cast<MovingPhysics*>(*c);
-        if(mp)
-        {
-#ifndef HAVE_IRRLICHT
-            ssgDeRefDelete(mp);
-#endif
-        }
-        else
-        {
-            delete *c;
-        }
-    }
-
-    m_allCallbacks[cbType].clear();
-}  // clear
-
-//-----------------------------------------------------------------------------
-void CallbackManager::update(float dt) const
-{
-    for(int i=0; i<CB_MAX; i++)
-    {
-        for(std::vector<Callback*>::const_iterator c = m_allCallbacks[i].begin();
-            c != m_allCallbacks[i].end(); c++)
-            (*c)->update(dt);
-    }   // for i
-
-}   // update
-//-----------------------------------------------------------------------------
-void CallbackManager::initAll() const
-{
-    for(int i=0; i<CB_MAX; i++)
-    {
-        for(std::vector<Callback*>::const_iterator c = m_allCallbacks[i].begin();
-            c != m_allCallbacks[i].end(); c++)
-            (*c)->init();
-    }   // for i
-
-}   // initAll
-
-//-----------------------------------------------------------------------------
-// Called when restarting a race
-void CallbackManager::reset() const
-{
-    for(int i=0; i<CB_MAX; i++)
-    {
-        for(std::vector<Callback*>::const_iterator c = m_allCallbacks[i].begin();
-            c != m_allCallbacks[i].end(); c++)
-            (*c)->reset();
-    }   // for i
-
-}   // initAll
-
-//-----------------------------------------------------------------------------
-void CallbackManager::handleExplosion(const btVector3& pos, 
-                                      const MovingPhysics* mp) const
-{
-    for(int i=0; i<CB_MAX; i++)
-    {
-        for(std::vector<Callback*>::const_iterator c = m_allCallbacks[i].begin();
-            c != m_allCallbacks[i].end(); c++)
-            (*c)->handleExplosion(pos, mp==(*c));
-    }   // for i
-
-}   // handleExplosion
-
diff --git a/src/callback_manager.hpp b/src/callback_manager.hpp
deleted file mode 100644
index 41842e307..000000000
--- a/src/callback_manager.hpp
+++ /dev/null
@@ -1,57 +0,0 @@
-//  $Id: callback_manager.hpp 796 2006-09-27 07:06:34Z hiker $
-//
-//  SuperTuxKart - a fun racing game with go-kart
-//  Copyright (C) 2006 Joerg Henrichs
-//
-//  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 3
-//  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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-
-#ifndef CALLBACK_MANAGER_HPP
-#define CALLBACK_MANAGER_HPP
-
-#include <vector>
-#include "btBulletDynamicsCommon.h"
-#include "callback.hpp"
-
-class MovingPhysics;
-
-// It might actually be enough to have only two different values: track (which
-// get deleted and loaded more than one), and everything else, which only
-// gets loaded once, and deleted at the end (and when switching windows /
-// fullscreen). Sinace it's not much overhead, a separate class is provided
-// for every model that might contain a callback.
-enum CallbackType { CB_COLLECTABLE, CB_ATTACHMENT, CB_EXPLOSION, CB_ITEM,
-                    CB_KART,        CB_TRACK,      CB_MAX                    };
-
-class CallbackManager
-{
-    std::vector<Callback*> m_allCallbacks[CB_MAX];
-
-public:
-         CallbackManager();
-        ~CallbackManager();
-    void update         (float dt) const;
-    void initAll        () const;
-    void reset          () const;
-    void clear          (CallbackType cbType);
-    void addCallback    (Callback *c, CallbackType t);
-    void handleExplosion(const btVector3& pos, const MovingPhysics* mo) const;
-}
-;   // CallbackManager
-
-extern CallbackManager *callback_manager;
-
-#endif
-/* EOF */
-
diff --git a/src/graphics/moving_texture.hpp b/src/graphics/moving_texture.hpp
index 38dafe341..ffbb1974e 100644
--- a/src/graphics/moving_texture.hpp
+++ b/src/graphics/moving_texture.hpp
@@ -24,11 +24,9 @@
 #include "irrlicht.h"
 using namespace irr;
 
-#include "callback.hpp"
-
 class XMLNode;
 
-class MovingTexture : public Callback
+class MovingTexture
 {
 private:
     /** Translation increment per second. */
diff --git a/src/ide/vc9/supertuxkart.vcproj b/src/ide/vc9/supertuxkart.vcproj
index 8d68d05a6..fb7f7a096 100644
--- a/src/ide/vc9/supertuxkart.vcproj
+++ b/src/ide/vc9/supertuxkart.vcproj
@@ -193,10 +193,6 @@
 			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
 			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
 			>
-			<File
-				RelativePath="../../../src\callback_manager.cpp"
-				>
-			</File>
 			<File
 				RelativePath="../../../src\explosion.cpp"
 				>
@@ -687,14 +683,6 @@
 			Filter="h;hpp;hxx;hm;inl;inc;xsd"
 			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
 			>
-			<File
-				RelativePath="../../../src\callback.hpp"
-				>
-			</File>
-			<File
-				RelativePath="../../../src\callback_manager.hpp"
-				>
-			</File>
 			<File
 				RelativePath="../../../src\constants.hpp"
 				>
diff --git a/src/input/input_manager.cpp b/src/input/input_manager.cpp
index fed9c964a..a3e6e6f12 100644
--- a/src/input/input_manager.cpp
+++ b/src/input/input_manager.cpp
@@ -226,7 +226,7 @@ void InputManager::handleStaticAction(int key, int value)
 			if (race_manager->getNumPlayers() ==1 )
 			{
 				Kart* kart = RaceManager::getWorld()->getLocalPlayerKart(0);
-                //				kart->setPowerup(POWERUP_BUBBLEGUM, 10000);
+                kart->setPowerup(POWERUP_BOWLING, 10000);
                 kart->attach(ATTACH_ANVIL, 5);
 			}
 			break;
diff --git a/src/items/attachment_manager.cpp b/src/items/attachment_manager.cpp
index 0202888f4..5aa9e1cda 100644
--- a/src/items/attachment_manager.cpp
+++ b/src/items/attachment_manager.cpp
@@ -19,7 +19,6 @@
 
 #include "items/attachment_manager.hpp"
 
-#include "callback_manager.hpp"
 #include "graphics/irr_driver.hpp"
 #include "io/file_manager.hpp"
 
@@ -60,7 +59,6 @@ void AttachmentManager::removeTextures()
     {
         // FIXME: free attachment textures
     }   // for
-    callback_manager->clear(CB_ATTACHMENT);
 }   // removeTextures
 
 //-----------------------------------------------------------------------------
diff --git a/src/items/flyable.cpp b/src/items/flyable.cpp
index e96e8472c..dc160872d 100644
--- a/src/items/flyable.cpp
+++ b/src/items/flyable.cpp
@@ -21,7 +21,6 @@
 
 #include <math.h>
 
-#include "callback_manager.hpp"
 #include "race_manager.hpp"
 #include "graphics/irr_driver.hpp"
 #include "graphics/mesh_tools.hpp"
@@ -285,7 +284,7 @@ void Flyable::hit(Kart *kart_hit, MovingPhysics* moving_physics)
             }
         }
     }
-    callback_manager->handleExplosion(pos_explosion, moving_physics);
+    RaceManager::getTrack()->handleExplosion(pos_explosion, moving_physics);
 }   // hit
 
 /* EOF */
diff --git a/src/items/item_manager.cpp b/src/items/item_manager.cpp
index 05124f986..091880c5a 100644
--- a/src/items/item_manager.cpp
+++ b/src/items/item_manager.cpp
@@ -21,7 +21,6 @@
 #include <string>
 #include <sstream>
 
-#include "callback_manager.hpp"
 #include "user_config.hpp"
 #include "material_manager.hpp"
 #include "material.hpp"
@@ -106,7 +105,6 @@ void ItemManager::removeTextures()
         i->second->drop();
     }
     m_all_meshes.clear();
-    callback_manager->clear(CB_ITEM);
 }   // removeTextures
 
 //-----------------------------------------------------------------------------
diff --git a/src/items/powerup_manager.cpp b/src/items/powerup_manager.cpp
index 7fc97a5b0..65232a8de 100644
--- a/src/items/powerup_manager.cpp
+++ b/src/items/powerup_manager.cpp
@@ -23,7 +23,6 @@
 #include <stdexcept>
 #include <sstream>
 
-#include "callback_manager.hpp"
 #include "material_manager.hpp"
 #include "material.hpp"
 #include "graphics/irr_driver.hpp"
@@ -74,7 +73,7 @@ void PowerupManager::removeTextures()
         if(m_all_models[i]) ssgDeRefDelete(m_all_models[i]            );
     }   // for
 #endif
-    callback_manager->clear(CB_COLLECTABLE);
+
 }   // removeTextures
 
 //-----------------------------------------------------------------------------
diff --git a/src/items/projectile_manager.cpp b/src/items/projectile_manager.cpp
index a2f892522..b09a59e58 100644
--- a/src/items/projectile_manager.cpp
+++ b/src/items/projectile_manager.cpp
@@ -57,7 +57,7 @@ void ProjectileManager::removeTextures()
     //ssgDeRefDelete(m_explosion_model);
     // Only the explosion is here, all other models are actually managed
     // by powerup_manager.
-    callback_manager->clear(CB_EXPLOSION);
+    //callback_manager->clear(CB_EXPLOSION);
 }   // removeTextures
 
 //-----------------------------------------------------------------------------
diff --git a/src/karts/kart_properties_manager.cpp b/src/karts/kart_properties_manager.cpp
index b78bf4049..6ec7ec8f8 100644
--- a/src/karts/kart_properties_manager.cpp
+++ b/src/karts/kart_properties_manager.cpp
@@ -25,7 +25,6 @@
 
 #include "stk_config.hpp"
 #include "user_config.hpp"
-#include "callback_manager.hpp"
 #include "challenges/unlock_manager.hpp"
 #include "io/file_manager.hpp"
 #include "karts/kart_properties.hpp"
@@ -60,7 +59,6 @@ void KartPropertiesManager::removeTextures()
         delete *i;
     }
     m_karts_properties.clear();
-    callback_manager->clear(CB_KART);
 }   // removeTextures
 
 //-----------------------------------------------------------------------------
diff --git a/src/loader.cpp b/src/loader.cpp
index d6a1a9e5f..f364a60b4 100644
--- a/src/loader.cpp
+++ b/src/loader.cpp
@@ -43,7 +43,6 @@ Loader* loader = 0;
 
 Loader::Loader()
 {
-    m_current_callback_type = CB_COLLECTABLE;
 }  // Loader
 
 //-----------------------------------------------------------------------------
@@ -82,20 +81,12 @@ void Loader::makeModelPath(char* path, const char* FNAME) const
  *  \param optimise Default is true. If set to false, the model will not
  *                  be flattened.
  */
-ssgEntity *Loader::load(const std::string& filename, CallbackType t,
+ssgEntity *Loader::load(const std::string& filename,
                         bool optimise, bool is_full_path)
 {
-    m_current_callback_type   = t;
     m_is_full_path            = is_full_path;
-#ifdef HAVE_IRRLICHT
     // FIXME: for now
     return NULL;
-#else
-    ssgEntity *obj            = optimise ? ssgLoad  (filename.c_str(), this) 
-                                         : ssgLoadAC(filename.c_str(), this);
-    preProcessObj(obj, false);
-    return obj;
-#endif
 }   // load
 
 //-----------------------------------------------------------------------------
diff --git a/src/loader.hpp b/src/loader.hpp
index 64ea9a21e..df82bc72a 100644
--- a/src/loader.hpp
+++ b/src/loader.hpp
@@ -25,7 +25,6 @@
 #include <string>
 #include <vector>
 #include <set>
-#include "callback_manager.hpp"
 
 class Loader : public ssgLoaderOptions
 {
@@ -43,20 +42,12 @@ public:
     ~Loader();
 
     virtual void makeModelPath  (char* path, const char* fname) const;
-
-    ssgEntity *load(const std::string& filename, CallbackType t, bool optimise=true,
+    ssgEntity *load(const std::string& filename, bool optimise=true,
                     bool is_full_path=false);
-    void         setCallbackType(CallbackType t)   {m_current_callback_type=t;}
 private:
-    CallbackType m_current_callback_type;
 
     void         makePath     (std::string& path, const std::string& dir, 
                                const std::string& fname) const;
-#ifndef HAVE_IRRLICHT
-    ssgBranch   *createBranch (char *data) const;
-    void         preProcessObj( ssgEntity *n, bool mirror );
-    ssgBranch   *animInit     (char *data) const;
-#endif
 };
 
 extern Loader* loader;
diff --git a/src/main.cpp b/src/main.cpp
index 0cedc3e64..dfe7916e3 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -50,7 +50,6 @@
 #include "main_loop.hpp"
 #include "material_manager.hpp"
 #include "input/input_manager.hpp"
-#include "callback_manager.hpp"
 #include "history.hpp"
 #include "stk_config.hpp"
 #include "highscore_manager.hpp"
@@ -448,9 +447,8 @@ void InitTuxkart()
     stk_config              = new STKConfig            ();
     kart_properties_manager = new KartPropertiesManager();
     projectile_manager      = new ProjectileManager    ();
-    powerup_manager         = new PowerupManager   ();
-    callback_manager        = new CallbackManager      ();
-    item_manager            = new ItemManager       ();
+    powerup_manager         = new PowerupManager       ();
+    item_manager            = new ItemManager          ();
     attachment_manager      = new AttachmentManager    ();
     highscore_manager       = new HighscoreManager     ();
     grand_prix_manager      = new GrandPrixManager     ();
@@ -489,7 +487,6 @@ void CleanTuxKart()
     if(highscore_manager)       delete highscore_manager;
     if(attachment_manager)      delete attachment_manager;
     if(item_manager)            delete item_manager;
-    if(callback_manager)        delete callback_manager;
     if(powerup_manager)         delete powerup_manager;   
     if(projectile_manager)      delete projectile_manager;
     if(kart_properties_manager) delete kart_properties_manager;
diff --git a/src/modes/world.cpp b/src/modes/world.cpp
index 491011031..7d03c9885 100644
--- a/src/modes/world.cpp
+++ b/src/modes/world.cpp
@@ -25,7 +25,6 @@
 
 #include "race_manager.hpp"
 #include "user_config.hpp"
-#include "callback_manager.hpp"
 #include "history.hpp"
 #include "highscore_manager.hpp"
 #include "audio/sound_manager.hpp"
@@ -157,7 +156,6 @@ void World::init()
     //ssgSetBackFaceCollisions ( !not defined! race_manager->mirror ) ;
 #endif
 
-    callback_manager->initAll();
     // TODO - race GUI
     //menu_manager->switchToRace();
 
@@ -175,8 +173,6 @@ World::~World()
     // In case that a race is aborted (e.g. track not found) m_track is 0.
     if(m_track)
         m_track->cleanup();
-    // Clear all callbacks
-    callback_manager->clear(CB_TRACK);
 
     for ( unsigned int i = 0 ; i < m_kart.size() ; i++ )
         delete m_kart[i];
@@ -293,9 +289,8 @@ void World::update(float dt)
     projectile_manager->update(dt);
     item_manager->update(dt);
 
-    /* Routine stuff we do even when paused */
-    callback_manager->update(dt);
-}
+}   // update
+
 // ----------------------------------------------------------------------------
 
 HighscoreEntry* World::getHighscores() const
@@ -513,7 +508,6 @@ void World::restartRace()
     item_manager->reset();
     projectile_manager->cleanup();
     race_manager->reset();
-    callback_manager->reset();
 
     // Resets the cameras in case that they are pointing too steep up or down
     stk_scene->reset();
diff --git a/src/physics/moving_physics.hpp b/src/physics/moving_physics.hpp
index c00e0f2dd..fc0a5ec76 100644
--- a/src/physics/moving_physics.hpp
+++ b/src/physics/moving_physics.hpp
@@ -24,14 +24,13 @@
 using namespace irr;
 
 #include "btBulletDynamicsCommon.h"
-#include "callback.hpp"
 #include "user_pointer.hpp"
 
 class Vec3;
 class scene::IAnimatedMesh;
 class XMLNode;
 
-class MovingPhysics : public Callback
+class MovingPhysics
 {
 public:
     enum bodyTypes {MP_NONE, MP_CONE, MP_BOX, MP_SPHERE};
diff --git a/src/tracks/track.cpp b/src/tracks/track.cpp
index 396c1da0a..6b40b5df9 100644
--- a/src/tracks/track.cpp
+++ b/src/tracks/track.cpp
@@ -28,7 +28,6 @@
 
 #include "stk_config.hpp"
 #include "material_manager.hpp"
-#include "callback_manager.hpp"
 #include "isect.hpp"
 #include "user_config.hpp"
 #include "audio/sound_manager.hpp"
@@ -1283,7 +1282,28 @@ void Track::update(float dt)
     {
         m_animated_textures[i]->update(dt);
     }
+    for(unsigned int i=0; i<m_physical_objects.size(); i++)
+    {
+        m_physical_objects[i]->update(dt);
+    }
 }   // update
+
+// ----------------------------------------------------------------------------
+/** Handles an explosion, i.e. it makes sure that all physical objects are
+ *  affected accordingly.
+ *  \param pos  Position of the explosion.
+ *  \param mp   If the hit was a physical object, this object will be affected
+ *              more. Otherwise this is NULL.
+ */
+void Track::handleExplosion(const Vec3 &pos, const MovingPhysics *mp) const
+{
+    for(std::vector<MovingPhysics*>::const_iterator i=m_physical_objects.begin();
+        i!=m_physical_objects.end(); i++)
+    {
+        (*i)->handleExplosion(pos, mp==(*i));
+    }
+}   // handleExplosion
+
 // ----------------------------------------------------------------------------
 /** Creates a water node.
  *  \param node The XML node containing the specifications for the water node.
@@ -1376,8 +1396,7 @@ void Track::loadTrackModel()
         if(name=="track") continue;
         if(name=="object")
         {
-            MovingPhysics *mp = new MovingPhysics(node);
-            callback_manager->addCallback(mp, CB_TRACK);
+            m_physical_objects.push_back(new MovingPhysics(node));
         }
         else if(name=="water")
         {
@@ -1429,6 +1448,13 @@ void Track::loadTrackModel()
 
     }
 
+    // Init all physical objects
+    for(std::vector<MovingPhysics*>::const_iterator i=m_physical_objects.begin();
+        i!=m_physical_objects.end(); i++)
+    {
+        (*i)->init();
+    }
+
 #else
     std::string path = file_manager->getTrackFile(getIdent()+".loc");
 
diff --git a/src/tracks/track.hpp b/src/tracks/track.hpp
index 05da27df3..86ca725c1 100644
--- a/src/tracks/track.hpp
+++ b/src/tracks/track.hpp
@@ -77,6 +77,10 @@ private:
 
     /** The list of all animated textures. */
     std::vector<MovingTexture*> m_animated_textures;
+
+    /** List of all physical objects. */
+    std::vector<MovingPhysics*> m_physical_objects;
+
     /** If a sky dome is used, the number of horizontal segments 
      *  the sphere should be divided in. */
     int                      m_sky_hori_segments;
@@ -217,6 +221,7 @@ public:
     float              getTerrainHeight(const Vec3 &pos) const;
     void               createPhysicsModel();
     void               update(float dt);
+    void               handleExplosion(const Vec3 &pos, const MovingPhysics *mp) const;
     void               glVtx             (sgVec2 v, float x_offset, float y_offset) const
     {
         glVertex2f(