diff --git a/CONTRIBUTORS b/CONTRIBUTORS
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -8,11 +8,9 @@
 Ben M
 Echo Nolan
 Conrad Parker
-Akio Takano
 Paulo Tanimoto
 Magnus Therning
 Johan Tibell
 Bas van Dijk
 Valery Vorotyntsev
-Maciej Wos
 Edward Yang
diff --git a/iteratee.cabal b/iteratee.cabal
--- a/iteratee.cabal
+++ b/iteratee.cabal
@@ -1,5 +1,5 @@
 name:          iteratee
-version:       0.7.0.2
+version:       0.8.0.0
 synopsis:      Iteratee-based I/O
 description:
   The Iteratee monad provides strict, safe, and functional I/O. In addition
@@ -55,7 +55,7 @@
       unix >= 2 && < 3
 
   build-depends:
-    ListLike                  >= 1.0     && < 3,
+    ListLike                  >= 1.0     && < 4,
     MonadCatchIO-transformers >  0.2     && < 0.3,
     bytestring                >= 0.9     && < 0.10,
     containers                >= 0.2     && < 0.5,
diff --git a/src/Data/Iteratee/IO/Fd.hs b/src/Data/Iteratee/IO/Fd.hs
--- a/src/Data/Iteratee/IO/Fd.hs
+++ b/src/Data/Iteratee/IO/Fd.hs
@@ -62,34 +62,33 @@
 -- over the entire contents of a file, in order, unless stopped by
 -- the iteratee.  In particular, seeking is not supported.
 enumFd
-  :: forall s el m a.(NullPoint s, ReadableChunk s el, MonadCatchIO m) =>
+  :: forall s el m a.(NullPoint s, ReadableChunk s el, MonadIO m) =>
      Int
      -> Fd
      -> Enumerator s m a
-enumFd bs fd iter =
+enumFd bs fd iter = do
   let bufsize = bs * (sizeOf (undefined :: el))
-  in CIO.bracket (liftIO $ mallocBytes bufsize)
-                 (liftIO . free)
-                 (\p -> enumFromCallback (makefdCallback p (fromIntegral bufsize) fd) () iter)
+  p <- liftIO $ mallocBytes bufsize
+  enumFromCallback (makefdCallback p (fromIntegral bufsize) fd) () iter
 
 -- |A variant of enumFd that catches exceptions raised by the @Iteratee@.
 enumFdCatch
- :: forall e s el m a.(IException e, NullPoint s, ReadableChunk s el, MonadCatchIO m)
+ :: forall e s el m a.(IException e, NullPoint s, ReadableChunk s el, MonadIO m)
     => Int
     -> Fd
     -> (e -> m (Maybe EnumException))
     -> Enumerator s m a
-enumFdCatch bs fd handler iter =
+enumFdCatch bs fd handler iter = do
   let bufsize = bs * (sizeOf (undefined :: el))
-  in CIO.bracket (liftIO $ mallocBytes bufsize)
-                 (liftIO . free)
-                 (\p -> enumFromCallbackCatch (makefdCallback p (fromIntegral bufsize) fd) handler () iter)
+  p <- liftIO $ mallocBytes bufsize
+  enumFromCallbackCatch (makefdCallback p (fromIntegral bufsize) fd)
+    handler () iter
 
 
 -- |The enumerator of a POSIX File Descriptor: a variation of @enumFd@ that
 -- supports RandomIO (seek requests).
 enumFdRandom
- :: forall s el m a.(NullPoint s, ReadableChunk s el, MonadCatchIO m) =>
+ :: forall s el m a.(NullPoint s, ReadableChunk s el, MonadIO m) =>
     Int
     -> Fd
     -> Enumerator s m a
diff --git a/src/Data/Iteratee/IO/Handle.hs b/src/Data/Iteratee/IO/Handle.hs
--- a/src/Data/Iteratee/IO/Handle.hs
+++ b/src/Data/Iteratee/IO/Handle.hs
@@ -61,11 +61,10 @@
   Int -- ^Buffer size (number of elements per read)
   -> Handle
   -> Enumerator s m a
-enumHandle bs h i =
+enumHandle bs h i = do
   let bufsize = bs * sizeOf (undefined :: el)
-  in CIO.bracket (liftIO $ mallocBytes bufsize)
-                 (liftIO . free)
-                 (\p -> enumFromCallback (makeHandleCallback p bufsize h) () i)
+  p <- liftIO $ mallocBytes bufsize
+  enumFromCallback (makeHandleCallback p bufsize h) () i
 
 -- |An enumerator of a file handle that catches exceptions raised by
 -- the Iteratee.
@@ -79,11 +78,10 @@
   -> Handle
   -> (e -> m (Maybe EnumException))
   -> Enumerator s m a
-enumHandleCatch bs h handler i =
+enumHandleCatch bs h handler i = do
   let bufsize = bs * sizeOf (undefined :: el)
-  in CIO.bracket (liftIO $ mallocBytes bufsize)
-                 (liftIO . free)
-                 (\p -> enumFromCallbackCatch (makeHandleCallback p bufsize h) handler () i)
+  p <- liftIO $ mallocBytes bufsize
+  enumFromCallbackCatch (makeHandleCallback p bufsize h) handler () i
 
 
 -- |The enumerator of a Handle: a variation of enumHandle that
