diff --git a/Math/KMeans.hs b/Math/KMeans.hs
--- a/Math/KMeans.hs
+++ b/Math/KMeans.hs
@@ -2,7 +2,7 @@
 
 {- |
 Module      :  Math.KMeans
-Copyright   :  (c) Alp Mestanogullari, Ville Tirronen, 2011-2014
+Copyright   :  (c) Alp Mestanogullari, Ville Tirronen, 2011-2015
 License     :  BSD3
 Maintainer  :  Alp Mestanogullari <alpmestan@gmail.com>
 Stability   :  experimental
@@ -152,13 +152,14 @@
 
     -- centroidsOf :: Clusters a -> Centroids
     centroidsOf cs = G.map centroidOf cs
-      where 
-        n = fromIntegral $ G.length cs
+      where
 
         centroidOf (Cluster elts) = 
             V.map (/n) 
           . L.foldl1' addCentroids
           $ map extract elts
+
+          where n = fromIntegral (length elts)
 
     -- pairToClosestCentroid :: Centroids -> a -> (Int, a)
     pairToClosestCentroid cs a = (minDistIndex, a)
diff --git a/examples/example.hs b/examples/example.hs
new file mode 100644
--- /dev/null
+++ b/examples/example.hs
@@ -0,0 +1,30 @@
+import Control.Applicative
+import Control.Monad
+import Math.KMeans
+import Math.Probable
+
+import qualified Data.Vector.Unboxed as V
+import qualified Data.Vector         as G
+
+runKMeans :: [V.Vector Double] -> Clusters (V.Vector Double)
+runKMeans = kmeans id euclidSq 2
+
+oneVecOf :: RandT IO Double -> RandT IO (V.Vector Double)
+oneVecOf doubleGen = vectorOf 10 doubleGen
+
+doubleGen1 :: RandT IO Double
+doubleGen1 = normal (-1500) 0.1
+
+doubleGen2 :: RandT IO Double
+doubleGen2 = normal 1500 0.1
+
+main :: IO ()
+main = do
+    v1s <- mwc $ listOf 500 (oneVecOf doubleGen1)
+    v2s <- mwc $ listOf 500 (oneVecOf doubleGen2)
+    let input = v1s ++ v2s
+
+    let clusters = runKMeans input
+    G.mapM_ print clusters
+    putStrLn $ show (G.length clusters)
+            ++ " cluster(s) found."
diff --git a/examples/persons.hs b/examples/persons.hs
deleted file mode 100644
--- a/examples/persons.hs
+++ /dev/null
@@ -1,53 +0,0 @@
-import Control.Applicative
-import Control.Monad
-import Math.KMeans
-import Test.QuickCheck
-
-import qualified Data.Vector.Unboxed as V
-import qualified Data.Vector         as G
-
-data Person = Person 
-    { age    :: Int
-    , weight :: Double
-    , name   :: String
-    , salary :: Int
-    } deriving (Eq)
-
-instance Show Person where
-    show p = "<" ++ name p ++ ", " 
-          ++ show (weight p) ++ "kg, " 
-          ++ show (salary p) ++ "€/month, "
-          ++ show (age p) ++ "y.o>"
-
-instance Arbitrary Person where
-    arbitrary = do
-        Person <$> choose (2, 100)
-               <*> choose (5, 150)
-               <*> pure "francis"
-               <*> choose (500, 100000)
-
-persons :: Gen [Person]
-persons = vector 5
-
-d :: Distance
-d v1 v2 = V.sum $ V.zipWith (\x1 x2 -> abs (x1 - x2)) v1 v2
-
-personToVec :: Person -> V.Vector Double
-personToVec p = V.fromList 
-    [ fromIntegral $ age p 
-    , weight p 
-    , fromIntegral $ salary p
-    ]
-
-runKMeans :: [Person] -> Clusters Person
-runKMeans = kmeans personToVec d 2
-
-main :: IO ()
-main = do
-    ps <- generate persons
-    print ps
-
-    let clusters = runKMeans ps
-    putStrLn $ show (G.length clusters)
-            ++ " cluster(s) found."
-    G.mapM_ print clusters
diff --git a/kmeans-vector.cabal b/kmeans-vector.cabal
--- a/kmeans-vector.cabal
+++ b/kmeans-vector.cabal
@@ -1,5 +1,5 @@
 Name:                kmeans-vector
-Version:             0.3
+Version:             0.3.1
 Synopsis:            An implementation of the kmeans clustering algorithm based on the vector package
 Description:         Provides a simple (but efficient) implementation of the k-means clustering algorithm. The goal of this algorithm is to, given a set of n-dimensional points, regroup them in k groups, such that each point gets to be in the group to which it is the closest to (using the 'center' of the group).
                      .
@@ -14,7 +14,7 @@
 License-file:        LICENSE
 Author:              Alp Mestanogullari <alpmestan@gmail.com>, Ville Tirronen
 Maintainer:          Alp Mestanogullari <alpmestan@gmail.com>
-Copyright:           2011-2014 Alp Mestanogullari
+Copyright:           2011-2015 Alp Mestanogullari
 Stability:	         Experimental
 Category:            Math
 Build-type:          Simple
@@ -26,11 +26,11 @@
   ghc-prof-options:  -prof -auto-all
   ghc-options: 	     -O2 -funbox-strict-fields -Wall
 
-executable kmeans-persons
-  main-is:           persons.hs
+executable kmeans-example
+  main-is:           example.hs
   hs-source-dirs:    examples
   ghc-options:       -O2 -funbox-strict-fields
-  build-depends:     base >= 4 && < 5, vector >= 0.7, kmeans-vector, QuickCheck
+  build-depends:     base >= 4 && < 5, vector >= 0.7, kmeans-vector, probable
 
 benchmark bench
   main-is:           bench.hs
