diff --git a/Hipmunk.cabal b/Hipmunk.cabal
--- a/Hipmunk.cabal
+++ b/Hipmunk.cabal
@@ -3,8 +3,8 @@
 Tested-With:   GHC
 Category:      Physics, Game
 Name:          Hipmunk
-Version:       0.1
-Stability:     beta
+Version:       0.2
+Stability:     provisional
 License:       OtherLicense
 License-File:  LICENSE
 Copyright:     (c) 2008 Felipe A. Lessa
@@ -21,6 +21,7 @@
       .
       Licensed under the MIT license (like Chipmunk itself).
 Extra-Source-Files:
+      NEWS,
       chipmunk/chipmunk.h,
       chipmunk/cpArbiter.h,
       chipmunk/cpArray.h,
diff --git a/NEWS b/NEWS
new file mode 100644
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,9 @@
+Version 0.2
+===========
+ - Fix a subtle bug within Space that would keep some ForeignPtr's
+   alive longer than needed, thus leaking memory.
+
+
+Version 0.1
+===========
+ - Initial public release.
diff --git a/Physics/Hipmunk.hs b/Physics/Hipmunk.hs
--- a/Physics/Hipmunk.hs
+++ b/Physics/Hipmunk.hs
@@ -5,7 +5,7 @@
 -- License     :  MIT (see LICENSE)
 --
 -- Maintainer  :  felipe.lessa@gmail.com
--- Stability   :  beta
+-- Stability   :  provisional
 -- Portability :  portable (needs FFI)
 --
 -- This module re-exports all other Hipmunk modules. It is
diff --git a/Physics/Hipmunk/Body.hsc b/Physics/Hipmunk/Body.hsc
--- a/Physics/Hipmunk/Body.hsc
+++ b/Physics/Hipmunk/Body.hsc
@@ -5,7 +5,7 @@
 -- License     :  MIT (see LICENSE)
 --
 -- Maintainer  :  felipe.lessa@gmail.com
--- Stability   :  beta
+-- Stability   :  provisional
 -- Portability :  portable (needs FFI)
 --
 -- Rigid bodies and their properties.
diff --git a/Physics/Hipmunk/Common.hsc b/Physics/Hipmunk/Common.hsc
--- a/Physics/Hipmunk/Common.hsc
+++ b/Physics/Hipmunk/Common.hsc
@@ -21,7 +21,7 @@
 -- License     :  MIT (see LICENSE)
 --
 -- Maintainer  :  felipe.lessa@gmail.com
--- Stability   :  beta
+-- Stability   :  provisional
 -- Portability :  portable (needs FFI)
 --
 -- Functionality used by various modules and routines for
diff --git a/Physics/Hipmunk/Internal.hsc b/Physics/Hipmunk/Internal.hsc
--- a/Physics/Hipmunk/Internal.hsc
+++ b/Physics/Hipmunk/Internal.hsc
@@ -5,7 +5,7 @@
 -- License     :  MIT (see LICENSE)
 --
 -- Maintainer  :  felipe.lessa@gmail.com
--- Stability   :  beta
+-- Stability   :  provisional
 -- Portability :  portable (needs FFI)
 --
 -----------------------------------------------------------------------------
diff --git a/Physics/Hipmunk/Joint.hsc b/Physics/Hipmunk/Joint.hsc
--- a/Physics/Hipmunk/Joint.hsc
+++ b/Physics/Hipmunk/Joint.hsc
@@ -5,7 +5,7 @@
 -- License     :  MIT (see LICENSE)
 --
 -- Maintainer  :  felipe.lessa@gmail.com
--- Stability   :  beta
+-- Stability   :  provisional
 -- Portability :  portable (needs FFI)
 --
 -- Joints that constrain bodies.
diff --git a/Physics/Hipmunk/Shape.hsc b/Physics/Hipmunk/Shape.hsc
--- a/Physics/Hipmunk/Shape.hsc
+++ b/Physics/Hipmunk/Shape.hsc
@@ -5,7 +5,7 @@
 -- License     :  MIT (see LICENSE)
 --
 -- Maintainer  :  felipe.lessa@gmail.com
--- Stability   :  beta
+-- Stability   :  provisional
 -- Portability :  portable (needs FFI)
 --
 -- Shapes used for collisions, their properties and some useful
diff --git a/Physics/Hipmunk/Space.hsc b/Physics/Hipmunk/Space.hsc
--- a/Physics/Hipmunk/Space.hsc
+++ b/Physics/Hipmunk/Space.hsc
@@ -5,7 +5,7 @@
 -- License     :  MIT (see LICENSE)
 --
 -- Maintainer  :  felipe.lessa@gmail.com
--- Stability   :  beta
+-- Stability   :  provisional
 -- Portability :  portable (needs FFI)
 --
 -- The space, where the simulation happens and the various entities
@@ -178,7 +178,7 @@
         in withForeignPtr sp $ \sp_ptr ->
            withForeignPtr new $ \new_ptr -> do
              add sp_ptr new_ptr
-             modifyIORef entities (M.insert key val)
+             modifyIORef' entities (M.insert key val)
 
 spaceRemoveHelper :: (a -> ForeignPtr b)
                   -> (SpacePtr -> Ptr b -> IO ())
@@ -187,10 +187,18 @@
     \(P sp entities _) old_c -> do
       let old  = get old_c
           key  = unsafeForeignPtrToPtr $ castForeignPtr old
-      modifyIORef entities (M.delete key)
+      modifyIORef' entities (M.delete key)
       withForeignPtr sp $ \sp_ptr ->
         withForeignPtr old $ \old_ptr ->
           remove sp_ptr old_ptr
+
+-- | Strict version of modifyIORef (otherwise the thunks
+--   will keep referencing removed entities).
+modifyIORef' :: IORef a -> (a -> a) -> IO ()
+modifyIORef' var f = do
+  old <- readIORef var
+  let new = f old
+  new `seq` writeIORef var new
 
 instance Entity Body where
     spaceAdd    = spaceAddHelper    unB cpSpaceAddBody (const Nothing)
diff --git a/Setup.lhs b/Setup.lhs
--- a/Setup.lhs
+++ b/Setup.lhs
@@ -1,3 +1,3 @@
-#!runhaskell
+#!/usr/bin/runhaskell
 > import Distribution.Simple
 > main = defaultMain
