diff --git a/cantor-pairing.cabal b/cantor-pairing.cabal
--- a/cantor-pairing.cabal
+++ b/cantor-pairing.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.4
 name:                cantor-pairing
-version:             0.2.0.1
+version:             0.2.0.2
 synopsis:            Convert data to and from a natural number representation
 description:         Convert data to and from a natural number representation conveniently using GHC Generics.
 homepage:            https://github.com/identicalsnowflake/cantor-pairing
@@ -24,7 +24,7 @@
       Cantor.Huge
   build-depends:       base >= 4.12.0.0 && < 5
                      , containers >= 0.6.0.1 && < 0.7
-                     , integer-gmp ^>= 1.0.2.0
+                     , integer-gmp >= 1.0.2.0 && < 1.2
                      , integer-logarithms >= 1.0.2.2 && < 2.0
                      , integer-roots >= 1.0 && < 1.1
   hs-source-dirs:      src
@@ -40,7 +40,6 @@
                 , cantor-pairing
                 , containers
                 , hspec >= 2 && < 3
-                , mtl >= 2.2.2
   build-tool-depends: hspec-discover:hspec-discover
   default-language:    Haskell2010
 
diff --git a/src/Cantor.hs b/src/Cantor.hs
--- a/src/Cantor.hs
+++ b/src/Cantor.hs
@@ -14,19 +14,25 @@
 {-# LANGUAGE UnboxedTuples #-}
 {-# LANGUAGE ViewPatterns #-}
 
--- | Cantor pairing gives us an isomorphism between a single natural number and pairs of natural numbers. This package provides a modern API to this functionality using GHC generics, allowing the encoding of arbitrary combinations of finite or countably infinite types in natural number form.
---
--- As a user, all you need to do is derive generic and get the instances for free.
+-- | This package implements a beefed-up version of `Enum` via GHC generics called `Cantor` which works for both finite and countably-infinite types.
 --
 -- = Example
 -- @
 -- import GHC.Generics
 -- import Cantor
---
+-- 
 -- data MyType = MyType {
 --     value1 :: [ Maybe Bool ]
 --   , value2 :: Integer
---   } deriving (Generic,Cantor)
+--   } deriving (Generic,Cantor,Show)
+-- 
+-- example :: IO ()
+-- example = do
+--   putStrLn "The first 5 elements of the enumeration are:"
+--   print $ take 5 xs
+--   where
+--     xs :: [ MyType ]
+--     xs = cantorEnumeration
 -- @
 --
 -- = Recursive example
@@ -58,7 +64,8 @@
 --   cardinality = Countable
 -- instance Cantor Bar
 -- @
-
+--
+-- Once you have a valid instance of @Cantor a@, you may lazily inspect all values of the type using @cantorEnumeration :: [ a ]@ and convert a point to and from its integer encoding using @toCantor :: Integer -> a@ and @fromCantor :: a -> Integer@.
 
 module Cantor
        ( cantorEnumeration
@@ -372,7 +379,6 @@
 instance Cantor a => Cantor (First a)
 instance Cantor a => Cantor (Identity a)
 instance Cantor a => Cantor (Data.Functor.Const.Const a b)
-instance Cantor a => Cantor (Option a)
 instance Cantor a => Cantor (Min a)
 instance Cantor a => Cantor (Max a)
 instance Cantor (Proxy a)
@@ -394,7 +400,6 @@
 instance Finite a => Finite (First a)
 instance Finite a => Finite (Identity a)
 instance Finite a => Finite (Data.Functor.Const.Const a b)
-instance Finite a => Finite (Option a)
 instance Finite a => Finite (Min a)
 instance Finite a => Finite (Max a)
 instance Finite (Proxy a)
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -41,7 +41,7 @@
     it "returns 6 for the cardinality of Bool x C" $
       (fCardinality @(Bool , C)) `shouldBe` 6
 
-    it "returns 9 for the cardinality of C x Bool" $
+    it "returns 6 for the cardinality of C x Bool" $
       (fCardinality @(C , Bool)) `shouldBe` 6
 
     it "returns 0 for the cardinality of Void x Bool" $
