diff --git a/Data/Type/Ordinal.hs b/Data/Type/Ordinal.hs
--- a/Data/Type/Ordinal.hs
+++ b/Data/Type/Ordinal.hs
@@ -135,10 +135,7 @@
 
 -- | Enumerate all @'Ordinal'@s less than @n@.
 enumOrdinal :: (PeanoOrder nat) => Sing (n :: nat) -> [Ordinal n]
-enumOrdinal (Succ n) = withSingI n $
-  withWitness (lneqZero n) $
-      OLt sZero : map succOrd (enumOrdinal n)
-enumOrdinal _ = []
+enumOrdinal sn = withSingI sn $ map (reallyUnsafeNaturalToOrd Proxy) [0..toNatural sn - 1]
 
 succOrd :: forall (n :: nat). (PeanoOrder nat, SingI n) => Ordinal n -> Ordinal (Succ n)
 succOrd (OLt n) =
diff --git a/type-natural.cabal b/type-natural.cabal
--- a/type-natural.cabal
+++ b/type-natural.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                type-natural
-version:             0.8.0.0
+version:             0.8.0.1
 synopsis:            Type-level natural and proofs of their properties.
 description:         Type-level natural numbers and proofs of their properties.
                      .
@@ -47,7 +47,7 @@
                      , constraints               >= 0.3
                      , ghc-typelits-natnormalise >= 0.4
                      , ghc-typelits-presburger   >= 0.2.0.0
-                     , singletons               >= 2.2 && < 2.5
+                     , singletons                >= 2.2 && < 2.5
 
   default-language:    Haskell2010
   default-extensions:  DataKinds
