diff --git a/Data/Nat.hs b/Data/Nat.hs
--- a/Data/Nat.hs
+++ b/Data/Nat.hs
@@ -23,6 +23,7 @@
 module Data.Nat (Nat(..), nat, foldNat, unfoldNat, infinity, diff) where
 
 import Control.Arrow            (first)
+import Data.Function            (fix)
 import Data.Ix                  (Ix(..))
 import Numeric.Natural.Internal (Whole(..))
 
@@ -62,9 +63,10 @@
                                     (\x -> either ((if x == 0 then Right else Left) . div x) (Right . div x))
                                     -- maybe this could be done simpler?
 
+-- | maxBound = 'infinity'. Not sure if this is polite.
 instance Bounded Nat where
     minBound = 0
-    maxBound = infinity -- is this polite?
+    maxBound = infinity
 
 instance Num Nat where
     (+) n       = foldNat n succ
@@ -111,7 +113,7 @@
 
 -- | Very big!
 infinity :: Nat
-infinity = succ infinity
+infinity = fix Succ
 
 -- | > diff n m | n >= m    = Right (n - m)
 --   >          | otherwise = Left  (m - n)
diff --git a/data-nat.cabal b/data-nat.cabal
--- a/data-nat.cabal
+++ b/data-nat.cabal
@@ -1,6 +1,6 @@
 name:          data-nat
 category:      Data, Math
-version:       0.1
+version:       0.1.1
 author:        Gábor Lehel
 maintainer:    Gábor Lehel <illissius@gmail.com>
 homepage:      http://github.com/glehel/data-nat
@@ -30,18 +30,21 @@
     exposed-modules:
         Data.Nat
 
-    -- not sure how or if to constrain base...
     build-depends:
-        base       >= 4   && < 5,
+        base       >= 3   && < 5,
         semigroups >= 0.7 && < 0.9
 
-    -- here either
+    -- not sure what version constraints to use here
     if impl(ghc)
-        build-depends: ghc-prim == 0.2.*
-        cpp-options:   -DHAVE_TYPEABLE
+        cpp-options:      -DHAVE_TYPEABLE
+        other-extensions: DeriveDataTypeable
 
     if impl(ghc >= 7.2)
-        cpp-options: -DHAVE_GENERIC
+        cpp-options:      -DHAVE_GENERIC
+--        other-extensions: DeriveGeneric
+
+    if impl(ghc == 7.4)
+        build-depends:    ghc-prim == 0.2.*
 
     ghc-options:
         -Wall
