diff --git a/HGE2D.cabal b/HGE2D.cabal
--- a/HGE2D.cabal
+++ b/HGE2D.cabal
@@ -2,7 +2,7 @@
 --  see http://haskell.org/cabal/users-guide/
 
 name:                HGE2D
-version:             0.1.7.2
+version:             0.1.7.4
 synopsis:            2D game engine written in Haskell
 description:         See README and examples/ for further information
 license:             MIT
@@ -40,7 +40,7 @@
   -- other-modules:
   -- other-extensions:
   build-depends:
-      base >= 4.9.0.0 && < 5.0,
+      base >= 4.8.2.0 && < 5.0,
       OpenGL >=3.0 && < 3.1,
       GLUT >= 2.7 && < 2.8,
       time >= 1.5.0.1 && < 1.7,
@@ -52,27 +52,27 @@
 executable example1
   default-language:    Haskell2010
   main-is:             Example1.hs
-  build-depends:       base >= 4.9.0.0 && < 5.0, HGE2D
+  build-depends:       base >= 4.8.2.0 && < 5.0, HGE2D
   hs-source-dirs:      src/examples
   ghc-options:         -O2 -W -fwarn-incomplete-patterns
 
 executable example2
   default-language:    Haskell2010
   main-is:             Example2.hs
-  build-depends:       base >= 4.9.0.0 && < 5.0, HGE2D
+  build-depends:       base >= 4.8.2.0 && < 5.0, HGE2D
   hs-source-dirs:      src/examples
   ghc-options:         -O2 -W -fwarn-incomplete-patterns
 
 executable example3
   default-language:    Haskell2010
   main-is:             Example3.hs
-  build-depends:       base >= 4.9.0.0 && < 5.0, HGE2D
+  build-depends:       base >= 4.8.2.0 && < 5.0, HGE2D
   hs-source-dirs:      src/examples
   ghc-options:         -O2 -W -fwarn-incomplete-patterns
 
 executable example4
   default-language:    Haskell2010
   main-is:             Example4.hs
-  build-depends:       base >= 4.9.0.0 && < 5.0, HGE2D
+  build-depends:       base >= 4.8.2.0 && < 5.0, HGE2D
   hs-source-dirs:      src/examples
   ghc-options:         -O2 -W -fwarn-incomplete-patterns
diff --git a/src/HGE2D/Datas.hs b/src/HGE2D/Datas.hs
--- a/src/HGE2D/Datas.hs
+++ b/src/HGE2D/Datas.hs
@@ -23,20 +23,20 @@
     , physicalMass              :: Mass
     , physicalDrag              :: Drag
     , physicalRotDrag           :: Drag ---TODO RotDrag?
-    } deriving (Show, Read)
+    } deriving (Show, Read, Eq)
 
 -- | A rigidbody defined by position, size and velocity
 data RigidBody = RigidBody
     { rigidPos  :: RealPosition -- current position
     , rigidVel  :: Velocity     -- current velocity
     , rigidBB   :: BoundingBox  -- bounding box
-    } deriving (Show, Read)
+    } deriving (Show, Read, Eq)
 
 -- | A bounding box defined by two positions in space
 data BoundingBox = BoundingBox
     { bbMin     :: RealPosition -- lower left corner of bb
     , bbMax     :: RealPosition -- upper right corner of bb
-    } deriving (Show, Read)
+    } deriving (Show, Read, Eq)
 
 -- | A position defined in number of tiles in x and y direction
 data TilePosition = TilePosition
diff --git a/src/HGE2D/Geometry.hs b/src/HGE2D/Geometry.hs
--- a/src/HGE2D/Geometry.hs
+++ b/src/HGE2D/Geometry.hs
@@ -123,6 +123,16 @@
     newY = (snd $ bbMin bb) + (height / 2)
     (width, height) = sizeBB bb
 
+-- | Calculates the bounding box of multiple positions
+bbFromList :: (Positioned a) => [a] -> BoundingBox
+bbFromList []  = nullBB
+bbFromList [x] = nullBB
+bbFromList xs  = BoundingBox (minX, minY) (maxX, maxY)
+  where
+    minX = minimum $ map getX xs
+    minY = minimum $ map getY xs
+    maxX = maximum $ map getX xs
+    maxY = maximum $ map getY xs
 
 -- | Testing whether a BoundingBox has the same min and max values
 isNullBB :: BoundingBox -> Bool
