diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,5 @@
+1.2.5: Fixed building on older GHC
+
 1.2.4: Added constraint (thanks schell!)
 
 1.2.3: Fixing exports
diff --git a/Data/HKeyPrivate.hs b/Data/HKeyPrivate.hs
--- a/Data/HKeyPrivate.hs
+++ b/Data/HKeyPrivate.hs
@@ -124,14 +124,14 @@
 type KeyM s a = KeyT s Identity a
 newtype KeyT s m a = KeyT { getKT :: TermM (GD s m) a }
 
-instance Functor (KeyT s m) where
+instance Monad m => Functor (KeyT s m) where
   fmap f m = m >>= return . f 
 
 instance Monad m => Applicative (KeyT s m) where
   pure = return
   f <*> x = do fv <- keyTSplit f; xv <- keyTSplit x; lift (ap fv xv)
 
-instance Monad (KeyT s m) where
+instance Monad m =>Monad (KeyT s m) where
   return   = KeyT . Return
   c >>= f  = KeyT $ getKT c >>= getKT . f
 
diff --git a/Data/HKeySet.hs b/Data/HKeySet.hs
--- a/Data/HKeySet.hs
+++ b/Data/HKeySet.hs
@@ -46,6 +46,7 @@
 import Data.HMap(HMap)
 import qualified Data.HMap as S
 import qualified Data.List as List
+import Data.Foldable hiding (empty,null)
 import Prelude hiding (null)
 -- | The type of hetrogenous key sets. 
 newtype HKeySet = HKeySet HMap 
@@ -72,6 +73,7 @@
 {-# INLINE union #-}
 
 -- | Construct a key set containing all elements from a list of key sets.
+unions :: [HKeySet] -> HKeySet
 unions = List.foldl' union empty
 {-# INLINE unions #-}
 
diff --git a/HMap.cabal b/HMap.cabal
--- a/HMap.cabal
+++ b/HMap.cabal
@@ -1,5 +1,5 @@
 Name:                HMap
-Version:             1.2.4
+Version:             1.2.5
 Synopsis:	     Fast heterogeneous maps and unconstrained typeable like functionality.
 Description:         Fast heterogeneous maps based on Hashmaps and type-able like functionality for type that are not typeable.
 License:             BSD3
