diff --git a/Data/EnumMap.hs b/Data/EnumMap.hs
--- a/Data/EnumMap.hs
+++ b/Data/EnumMap.hs
@@ -34,7 +34,7 @@
 insertWithKey' f k x =
   EnumMap . I.insertWithKey' (f . toEnum) (fromEnum k) x . unWrap
 
-fold :: (Enum k) => (a -> b -> b) -> b -> EnumMap k a -> b
+fold :: (a -> b -> b) -> b -> EnumMap k a -> b
 fold f a = I.fold f a . unWrap
 
 foldWithKey :: (Enum k) => (k -> a -> b -> b) -> b -> EnumMap k a -> b
diff --git a/Data/EnumMap/Base.hs b/Data/EnumMap/Base.hs
--- a/Data/EnumMap/Base.hs
+++ b/Data/EnumMap/Base.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE DeriveDataTypeable         #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DeriveTraversable          #-}
 
 -- |
 -- Module      :  $Header$
@@ -542,11 +543,11 @@
     wrap (im1, ma, im2) = (EnumMap im1, ma, EnumMap im2)
 {-# INLINE splitLookup #-}
 
-foldr :: (Enum k) => (a -> b -> b) -> b -> EnumMap k a -> b
+foldr :: (a -> b -> b) -> b -> EnumMap k a -> b
 foldr f a = I.foldr f a . unWrap
 {-# INLINE foldr #-}
 
-foldl :: (Enum k) => (a -> b -> a) -> a -> EnumMap k b -> a
+foldl :: (a -> b -> a) -> a -> EnumMap k b -> a
 foldl f a = I.foldl f a . unWrap
 {-# INLINE foldl #-}
 
@@ -558,11 +559,11 @@
 foldlWithKey f a = I.foldlWithKey (\a' -> f a' . toEnum) a . unWrap
 {-# INLINE foldlWithKey #-}
 
-foldr' :: (Enum k) => (a -> b -> b) -> b -> EnumMap k a -> b
+foldr' :: (a -> b -> b) -> b -> EnumMap k a -> b
 foldr' f a = I.foldr' f a . unWrap
 {-# INLINE foldr' #-}
 
-foldl' :: (Enum k) => (a -> b -> a) -> a -> EnumMap k b -> a
+foldl' :: (a -> b -> a) -> a -> EnumMap k b -> a
 foldl' f a = I.foldl' f a . unWrap
 {-# INLINE foldl' #-}
 
diff --git a/enummapset.cabal b/enummapset.cabal
--- a/enummapset.cabal
+++ b/enummapset.cabal
@@ -1,5 +1,5 @@
 name:           enummapset
-version:        0.5.2.0
+version:        0.5.2.1
 synopsis:       IntMap and IntSet with Enum keys/elements.
 description:    This package contains simple wrappers around 'Data.IntMap' and
                 'Data.IntSet' with 'Enum' keys and elements respectively.
