diff --git a/enumerator.cabal b/enumerator.cabal
--- a/enumerator.cabal
+++ b/enumerator.cabal
@@ -1,5 +1,5 @@
 name: enumerator
-version: 0.4.5
+version: 0.4.6
 synopsis: Reliable, high-performance processing with left-fold enumerators
 license: MIT
 license-file: license.txt
diff --git a/hs/Data/Enumerator.hs b/hs/Data/Enumerator.hs
--- a/hs/Data/Enumerator.hs
+++ b/hs/Data/Enumerator.hs
@@ -129,6 +129,10 @@
 import qualified Control.Applicative as A
 import qualified Control.Monad as CM
 
+import Data.Typeable ( Typeable, typeOf
+                     , Typeable1, typeOf1
+                     , mkTyConApp, mkTyCon)
+
 import Data.List (foldl')
 
 import Data.List (genericSplitAt)
@@ -157,6 +161,7 @@
 	fmap f (Chunks xs) = Chunks (fmap f xs)
 	fmap _ EOF = EOF
 
+-- | Since: 0.4.5
 instance A.Applicative Stream where
 	pure = return
 	(<*>) = CM.ap
@@ -335,6 +340,15 @@
 instance Monad m => A.Applicative (Iteratee a m) where
 	pure = return
 	(<*>) = CM.ap
+
+-- | Since: 0.4.6
+instance (Typeable a, Typeable1 m) => Typeable1 (Iteratee a m) where
+	typeOf1 i = mkTyConApp tyCon [typeOf a, typeOf1 m] where
+		tyCon = mkTyCon "Data.Enumerator.Iteratee"
+		(a, m) = peel i
+		
+		peel :: Iteratee a m b -> (a, m ())
+		peel = undefined
 
 
 -- | @throwError exc = 'returnI' ('Error' ('Exc.toException' exc))@
diff --git a/src/enumerator.anansi b/src/enumerator.anansi
--- a/src/enumerator.anansi
+++ b/src/enumerator.anansi
@@ -27,10 +27,10 @@
 
 \newcommand{\io}{{\sc i/o}}
 
-\title{enumerator\_0.4.5}
+\title{enumerator\_0.4.6}
 \author{John Millikin\\
         \href{mailto:"John Millikin" <jmillikin@gmail.com>}{\tt jmillikin@gmail.com}}
-\date{January 10, 2011}
+\date{February 03, 2011}
 
 \begin{document}
 
diff --git a/src/types.anansi b/src/types.anansi
--- a/src/types.anansi
+++ b/src/types.anansi
@@ -59,6 +59,7 @@
 	fmap f (Chunks xs) = Chunks (fmap f xs)
 	fmap _ EOF = EOF
 
+-- | Since: 0.4.5
 instance A.Applicative Stream where
 	pure = return
 	(<*>) = CM.ap
@@ -334,4 +335,21 @@
 instance Monad m => A.Applicative (Iteratee a m) where
 	pure = return
 	(<*>) = CM.ap
+:
+
+:d Data.Enumerator imports
+import Data.Typeable ( Typeable, typeOf
+                     , Typeable1, typeOf1
+                     , mkTyConApp, mkTyCon)
+:
+
+:f Data/Enumerator.hs
+-- | Since: 0.4.6
+instance (Typeable a, Typeable1 m) => Typeable1 (Iteratee a m) where
+	typeOf1 i = mkTyConApp tyCon [typeOf a, typeOf1 m] where
+		tyCon = mkTyCon "Data.Enumerator.Iteratee"
+		(a, m) = peel i
+		
+		peel :: Iteratee a m b -> (a, m ())
+		peel = undefined
 :
