diff --git a/Numeric/NumType.lhs b/Numeric/NumType.lhs
--- a/Numeric/NumType.lhs
+++ b/Numeric/NumType.lhs
@@ -46,6 +46,7 @@
 >            , FunctionalDependencies
 >            , MultiParamTypeClasses
 >            , FlexibleInstances
+>            , DeriveDataTypeable
 > #-}
 
 > {- |
@@ -67,7 +68,7 @@
 >   , Succ, Negate, Sum, Div, Mul
 >   -- Functions.
 >   , toNum, incr, decr, negate, (+), (-), (*), (/)
->   -- Data types.
+>   -- D)ata types.
 >   , Zero, Pos, Neg
 >   -- Type synonyms for convenience.
 >   , Pos1, Pos2, Pos3, Pos4, Pos5, Neg1, Neg2, Neg3, Neg4, Neg5
@@ -77,6 +78,7 @@
 
 > import Prelude hiding ((*), (/), (+), (-), negate)
 > import qualified Prelude ((+), (-))
+> import Data.Typeable (Typeable)
 
 Use the same fixity for operators as the Prelude.
 
@@ -144,7 +146,7 @@
 negative number in the sense of the previously defined type classes.
 'Zero' corresponds to HList's 'HZero'.
 
-> data Zero
+> data Zero deriving Typeable
 > instance NumTypeI Zero where toNum _ = 0
 > instance PosTypeI Zero
 > instance NegTypeI Zero
@@ -152,7 +154,7 @@
 Next we define the "successor" type, here called 'Pos' (corresponding
 to HList's 'HSucc').
 
-> data Pos n
+> data Pos n deriving Typeable
 > instance (PosTypeI n) => NumTypeI (Pos n) where
 >   toNum _ = toNum (undefined :: n) Prelude.+ 1
 > instance (PosTypeI n) => PosTypeI (Pos n)
@@ -165,7 +167,7 @@
 Finally we define the "predecessor" type used to represent negative
 numbers.
 
-> data Neg n
+> data Neg n deriving Typeable
 > instance (NegTypeI n) => NumTypeI (Neg n) where
 >   toNum _ = toNum (undefined :: n) Prelude.- 1
 > instance (NegTypeI n) => NegTypeI (Neg n)
diff --git a/Numeric/NumTypeTests.hs b/Numeric/NumTypeTests.hs
--- a/Numeric/NumTypeTests.hs
+++ b/Numeric/NumTypeTests.hs
@@ -11,7 +11,7 @@
 -- Compares a type level unary function with a value level unary function
 -- by converting 'NumType' to 'Integral'. This assumes that the 'toIntegral'
 -- function is solid.
-unaryTest :: (NumType n, NumType n', Num a)
+unaryTest :: (NumType n, NumType n', Num a, Eq a, Show a)
           => (n -> n') -> (a -> a) -> n -> Test
 unaryTest f f' x = TestCase $ assertEqual
     "Unary function Integral equivalence"
@@ -20,7 +20,7 @@
 -- Compares a type level binary function with a value level binary function
 -- by converting 'NumType' to 'Integral'. This assumes that the 'toIntegral'
 -- function is solid.
-binaryTest :: (NumType n, NumType n', NumType n'', Num a)
+binaryTest :: (NumType n, NumType n', NumType n'', Num a, Eq a, Show a)
            => (n -> n' -> n'') -> (a -> a -> a) -> n -> n' -> Test
 binaryTest f f' x y = TestCase $ assertEqual
     "Binary function Integral equivalence"
diff --git a/numtype.cabal b/numtype.cabal
--- a/numtype.cabal
+++ b/numtype.cabal
@@ -1,5 +1,5 @@
 Name:                numtype
-Version:             1.0
+Version:             1.0.1
 License:             BSD3
 License-File:        LICENSE
 Copyright:           Bjorn Buckwalter 2009
