diff --git a/Data/Enumerator/Instances/TF.hs b/Data/Enumerator/Instances/TF.hs
deleted file mode 100644
--- a/Data/Enumerator/Instances/TF.hs
+++ /dev/null
@@ -1,69 +0,0 @@
-{-# LANGUAGE TypeFamilies #-}
------------------------------------------------------------------------------
--- |
--- Module: Data.Enumerator.Instances.TF
--- Copyright: 2010 John Millikin
--- License: MIT
---
--- Maintainer: jmillikin@gmail.com
--- Portability: portable
---
--- Enumerator instances for monads-tf classes
---
------------------------------------------------------------------------------
-module Data.Enumerator.Instances.TF () where
-
-import qualified Control.Exception as Exc
-
-import Control.Monad.Trans (lift)
-import qualified Control.Monad.Cont.Class as M_C
-import qualified Control.Monad.Error.Class as M_E
-import qualified Control.Monad.RWS.Class as M_RWS
-import qualified Control.Monad.Reader.Class as M_R
-import qualified Control.Monad.State.Class as M_S
-import qualified Control.Monad.Writer.Class as M_W
-
-import qualified Data.Enumerator as E
-import Data.Monoid (mempty, mappend)
-
-instance M_C.MonadCont m => M_C.MonadCont (E.Iteratee a m) where
-	callCC f = E.Iteratee $ M_C.callCC $ \c -> let
-		emptyYield x = E.Yield x (E.Chunks [])
-		in E.runIteratee (f (E.Iteratee . c . emptyYield))
-
-instance Monad m => M_E.MonadError (E.Iteratee a m) where
-	type M_E.ErrorType (E.Iteratee a m) = Exc.SomeException
-	throwError = E.throwError
-	catchError = E.catchError
-
-instance M_RWS.MonadRWS m => M_RWS.MonadRWS (E.Iteratee a m)
-
-instance M_R.MonadReader m => M_R.MonadReader (E.Iteratee a m) where
-	type M_R.EnvType (E.Iteratee a m) = M_R.EnvType m
-	ask = lift M_R.ask
-	local f m = E.Iteratee (M_R.local f (E.runIteratee m))
-
-instance M_S.MonadState m =>  M_S.MonadState (E.Iteratee a m) where
-	type  M_S.StateType (E.Iteratee a m) =  M_S.StateType m
-	get = lift  M_S.get
-	put = lift .  M_S.put
-
-instance M_W.MonadWriter m => M_W.MonadWriter (E.Iteratee a m) where
-	type M_W.WriterType (E.Iteratee a m) = M_W.WriterType m
-	tell = lift . M_W.tell
-	
-	listen = loop mempty where
-		loop w0 m = E.Iteratee $ do
-			~(step, w1) <- M_W.listen (E.runIteratee m)
-			let w = mappend w0 w1
-			return $ case step of
-				E.Yield x cs -> E.Yield (x, w) cs
-				E.Error err -> E.Error err
-				E.Continue k -> E.Continue (loop w . k)
-	
-	pass m = E.Iteratee $ M_W.pass $ do
-		step <- E.runIteratee m
-		case step of
-			E.Yield (x, wf) cs -> return (E.Yield x cs, wf)
-			E.Error err -> return (E.Error err, id)
-			E.Continue k -> return (E.Continue (M_W.pass . k), id)
diff --git a/enumerator-tf.cabal b/enumerator-tf.cabal
--- a/enumerator-tf.cabal
+++ b/enumerator-tf.cabal
@@ -1,37 +1,36 @@
 name: enumerator-tf
-version: 0.1
-synopsis: Enumerator instances for monads-tf classes
+version: 0.1.1
 license: MIT
 license-file: license.txt
 author: John Millikin <jmillikin@gmail.com>
-maintainer: jmillikin@gmail.com
-copyright: Copyright (c) John Millikin 2010
+maintainer: John Millikin <jmillikin@gmail.com>
 build-type: Simple
-cabal-version: >=1.6
+cabal-version: >= 1.6
 category: Enumerator
 stability: experimental
-homepage: http://john-millikin.com/software/enumerator/
+homepage: https://john-millikin.com/software/enumerator/
 bug-reports: mailto:jmillikin@gmail.com
-tested-with: GHC==6.12.1
 
+synopsis: Enumerator instances for monads-tf classes
+description:
+
 source-repository head
   type: bazaar
-  location: http://john-millikin.com/software/enumerator/
+  location: https://john-millikin.com/branches/enumerator-tf/0.1/
 
+source-repository this
+  type: bazaar
+  location: https://john-millikin.com/branches/enumerator-tf/0.1/
+  tag: enumerator-tf_0.1.1
+
 library
-  ghc-options: -Wall -fno-warn-orphans
+  hs-source-dirs: lib
+  ghc-options: -Wall -O2
 
   build-depends:
-      monads-tf >= 0.1 && < 0.2
+      base >= 4.0 && < 5.0
+    , monads-tf >= 0.1 && < 0.2
     , enumerator >= 0.4 && < 0.5
-
-  if impl(ghc >= 6.10)
-    build-depends:
-        base >= 4 && < 5
-  else
-    build-depends:
-        base >= 3 && < 4
-      , extensible-exceptions >= 0.1 && < 0.2
 
   exposed-modules:
     Data.Enumerator.Instances.TF
diff --git a/lib/Data/Enumerator/Instances/TF.hs b/lib/Data/Enumerator/Instances/TF.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Enumerator/Instances/TF.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE TypeFamilies #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+
+-----------------------------------------------------------------------------
+-- |
+-- Module: Data.Enumerator.Instances.TF
+-- Copyright: 2010 John Millikin
+-- License: MIT
+--
+-- Maintainer: jmillikin@gmail.com
+-- Portability: portable
+--
+-- Enumerator instances for monads-tf classes
+--
+-----------------------------------------------------------------------------
+module Data.Enumerator.Instances.TF () where
+
+import qualified Control.Exception as Exc
+import           Data.Monoid (mempty, mappend)
+
+import           Control.Monad.Trans (lift)
+import qualified Control.Monad.Cont.Class as M_C
+import qualified Control.Monad.Error.Class as M_E
+import           Control.Monad.Error.Class (ErrorType)
+import qualified Control.Monad.RWS.Class as M_RWS
+import qualified Control.Monad.Reader.Class as M_R
+import           Control.Monad.Reader.Class (EnvType)
+import qualified Control.Monad.State.Class as M_S
+import           Control.Monad.State.Class (StateType)
+import qualified Control.Monad.Writer.Class as M_W
+import           Control.Monad.Writer.Class (WriterType)
+
+import qualified Data.Enumerator as E
+
+instance M_C.MonadCont m => M_C.MonadCont (E.Iteratee a m) where
+	callCC f = E.Iteratee $ M_C.callCC $ \c -> let
+		emptyYield x = E.Yield x (E.Chunks [])
+		in E.runIteratee (f (E.Iteratee . c . emptyYield))
+
+instance Monad m => M_E.MonadError (E.Iteratee a m) where
+	type ErrorType (E.Iteratee a m) = Exc.SomeException
+	throwError = E.throwError
+	catchError = E.catchError
+
+instance M_RWS.MonadRWS m => M_RWS.MonadRWS (E.Iteratee a m)
+
+instance M_R.MonadReader m => M_R.MonadReader (E.Iteratee a m) where
+	type EnvType (E.Iteratee a m) = M_R.EnvType m
+	ask = lift M_R.ask
+	local f m = E.Iteratee (M_R.local f (E.runIteratee m))
+
+instance M_S.MonadState m =>  M_S.MonadState (E.Iteratee a m) where
+	type StateType (E.Iteratee a m) =  M_S.StateType m
+	get = lift  M_S.get
+	put = lift .  M_S.put
+
+instance M_W.MonadWriter m => M_W.MonadWriter (E.Iteratee a m) where
+	type WriterType (E.Iteratee a m) = M_W.WriterType m
+	tell = lift . M_W.tell
+	
+	listen = loop mempty where
+		loop w0 m = E.Iteratee $ do
+			~(step, w1) <- M_W.listen (E.runIteratee m)
+			let w = mappend w0 w1
+			return $ case step of
+				E.Yield x cs -> E.Yield (x, w) cs
+				E.Error err -> E.Error err
+				E.Continue k -> E.Continue (loop w . k)
+	
+	pass m = E.Iteratee $ M_W.pass $ do
+		step <- E.runIteratee m
+		case step of
+			E.Yield (x, wf) cs -> return (E.Yield x cs, wf)
+			E.Error err -> return (E.Error err, id)
+			E.Continue k -> return (E.Continue (M_W.pass . k), id)
