diff --git a/src/TypeUnary/Nat.hs b/src/TypeUnary/Nat.hs
--- a/src/TypeUnary/Nat.hs
+++ b/src/TypeUnary/Nat.hs
@@ -1,8 +1,9 @@
 {-# LANGUAGE TypeOperators, GADTs, KindSignatures, RankNTypes #-}
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE UndecidableInstances #-}
 
--- Experiment
+-- PlusZero Experiment
 {-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, ConstraintKinds, CPP #-}
 
 {-# OPTIONS_GHC -Wall #-}
@@ -88,9 +89,10 @@
 -}
 
 -- | Interpret a 'Nat' as a plain number
-natToZ :: (Enum a, Num a) => Nat n -> a
+natToZ :: Num a => Nat n -> a
 natToZ Zero     = 0
-natToZ (Succ n) = (succ . natToZ) n
+natToZ (Succ n) = ((1+) . natToZ) n
+{-# INLINE natToZ #-}
 
 -- | Equality test
 natEq :: Nat m -> Nat n -> Maybe (m :=: n)
@@ -137,6 +139,7 @@
    go Zero     = Dict
    go (Succ m) = s (go m)
 
+-- Needs UndecidableInstances in GHC 7.6.3, though not in 7.8.2
 class    (n :+: Z) ~ n => PlusZero n
 instance (n :+: Z) ~ n => PlusZero n
 
diff --git a/type-unary.cabal b/type-unary.cabal
--- a/type-unary.cabal
+++ b/type-unary.cabal
@@ -1,5 +1,5 @@
 Name:                type-unary
-Version:             0.2.19
+Version:             0.2.21
 Cabal-Version:       >= 1.6
 Synopsis:            
   Type-level and typed unary natural numbers, inequality proofs, vectors
