diff --git a/Test/GenCheck/Base/LabelledPartition.lhs b/Test/GenCheck/Base/LabelledPartition.lhs
--- a/Test/GenCheck/Base/LabelledPartition.lhs
+++ b/Test/GenCheck/Base/LabelledPartition.lhs
@@ -22,7 +22,6 @@
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE TypeFamilies #-}
 
 module Test.GenCheck.Base.LabelledPartition 
 ( LabelledPartition(..)
@@ -36,8 +35,6 @@
 import Data.Monoid
 import qualified Data.Foldable as Fold
 
-import Test.GenCheck.Base.Verdict(Verdict())
-
 \end{code}
 
 The LabelledPartition class is parameterized over:
@@ -67,28 +64,24 @@
 
 \begin{code}
 
-class Verdict v => Labelled v where
-  type Label v
-  label :: v -> Label v
-
-class (Fold.Foldable c, Verdict v, Labelled v) => LabelledPartition c v where
-  empty   :: c v
-  new     :: [v] -> c v
-  size    :: c v -> Int
-  insert  :: (Ord k) => k -> v -> c v -> c v
-  lookup  :: (Ord k) => k -> c v -> Maybe v  
-  merge   :: (Monoid v) => c v -> c v -> c v
-  -- map     :: (Ord k) => (k -> v -> r) -> c (v a) -> c (v r)
-  -- map f   = fold (\k x lys -> insert k (f k x) lys) empty
-  fold    :: (k -> v -> b -> b) -> b -> c v -> b
-  toList  :: c v -> [(k, v)]
+class (Fold.Foldable (c k), Functor v) => LabelledPartition c k v where
+  empty   :: c k (v a)
+  new     :: (Ord k) => k -> [a] -> c k (v a)
+  size    :: c k (v a) -> Int
+  insert  :: (Ord k) => k -> a -> c k (v a) -> c k (v a)
+  lookup  :: (Ord k) => k -> c k (v a) -> Maybe (v a)  
+  merge   :: (Ord k, Monoid (v a)) => c k (v a) -> c k (v a) -> c k (v a)
+  map     :: (Ord k) => (k -> a -> r) -> c k (v a) -> c k (v r)
+  map f   = fold (\k x lys -> insert k (f k x) lys) empty
+  fold    :: (k -> a -> b -> b) -> b -> c k (v a) -> b
+  toList  :: c k (v a) -> [(k, v a)]
 
-instance (Fold.Foldable c, Monoid v) => Monoid (c v) where
+instance (LabelledPartition c k v, Ord k, Monoid (v r)) => Monoid (c k (v r)) where
   mempty  = empty
   mappend = merge
 
-fromList :: (Ord k, LabelledPartition c v, Monoid v) => 
-    [(k,[v])] -> c v
+fromList :: (LabelledPartition c k v, Ord k, Monoid (v a)) => 
+    [(k,[a])] -> c k (v a)
 fromList = Fold.foldr (\(k,ys) -> merge (new k ys)) empty
 
 \end{code}
@@ -102,11 +95,12 @@
 \end{description}
 
 \begin{code}
-relabel :: (Ord k', LabelledPartition c v) => (k -> v -> k') -> c v-> c v
+relabel :: (LabelledPartition c k v, LabelledPartition c k' v, Ord k') => 
+    (k -> a -> k') -> c k (v a)-> c k' (v a)
 relabel f cxs = fold (\k x -> insert (f k x) x) empty cxs
 
-filter :: (LabelledPartition c v, Ord k) =>
-    (k -> v -> Bool) -> c v -> c v
+filter :: (LabelledPartition c k v, Ord k) => 
+    (k -> a -> Bool) -> c k (v a) -> c k (v a)
 filter p cxs = fold cp empty cxs where
   cp k x ys = if (p k x) then insert k x ys else ys
 
@@ -121,9 +115,9 @@
 
 \begin{code}
 
-instance Ord k => LabelledPartition (Map k) a where
+instance (Ord k) => LabelledPartition Map k [] where
   empty      = Map.empty
-  new k xs   = Map.fromList xs
+  new k xs   = Map.fromList [(k,xs)]
   size       = Map.fold (\xs s -> (length xs) + s) 0
   insert k x = Map.insertWith mappend k [x]
   lookup     = Map.lookup
diff --git a/gencheck.cabal b/gencheck.cabal
--- a/gencheck.cabal
+++ b/gencheck.cabal
@@ -1,5 +1,5 @@
 name:           gencheck
-version:        0.1
+version:        0.1.1
 cabal-version:  >= 1.6
 license:        BSD3
 license-file:   License.txt
