diff --git a/Geom2d/Shape.hs b/Geom2d/Shape.hs
--- a/Geom2d/Shape.hs
+++ b/Geom2d/Shape.hs
@@ -20,6 +20,7 @@
     , circle
     , rectangle
     , convexHull
+    , centerPoint
     )
 
 where
@@ -39,3 +40,9 @@
 convexHull :: (Num (p a), Fractional a, Ord a, Scale p, Point p) =>
               [p a] -> Maybe (Shape p a)
 convexHull list = ShapePolygon <$> convexHull' list
+
+centerPoint :: (Fractional a, Scale p, Num (p a)) => Shape p a -> p a
+centerPoint (ShapeCircle (Circle m _)) = m
+centerPoint (ShapePolygon (Polygon m vs)) =
+  let n = length vs
+  in m + scale (1/fromIntegral n) (sum vs)
diff --git a/Test/Shape.hs b/Test/Shape.hs
--- a/Test/Shape.hs
+++ b/Test/Shape.hs
@@ -229,6 +229,14 @@
   where point :: Float -> Float -> Point' Float
         point = fromCoords
 
+prop_centerPoint_circle :: Point' Float -> Float -> Bool
+prop_centerPoint_circle m r =
+  centerPoint (circle m r) == m
+
+prop_centerPoint_rect :: Point' Float -> Float -> Float -> Bool
+prop_centerPoint_rect m a b =
+  fromMaybe True $ (== m).centerPoint <$> rectangle m a b
+
 return []
 runTests = $quickCheckAll
 
diff --git a/geom2d.cabal b/geom2d.cabal
--- a/geom2d.cabal
+++ b/geom2d.cabal
@@ -1,5 +1,5 @@
 name:                geom2d
-version:             0.2.1
+version:             0.2.2
 synopsis:            package for geometry in euklidean 2d space
 description:         This package provides tools for dealing with geometric
                      objects in 2D space.
