diff --git a/Data/Universe/Instances/Extended.hs b/Data/Universe/Instances/Extended.hs
deleted file mode 100644
--- a/Data/Universe/Instances/Extended.hs
+++ /dev/null
@@ -1,38 +0,0 @@
-{-# LANGUAGE FlexibleContexts #-}
-module Data.Universe.Instances.Extended (
-	-- | Instances for 'Universe' and 'Finite' for function-like functors and the empty type.
-	Universe(..), Finite(..)
-	) where
-
-import Data.Void
-import Control.Comonad.Trans.Traced
-import Data.Functor.Rep
-import Data.Universe.Instances.Base
-
-instance Universe Void where universe = []
-
--- We could do this:
---
--- instance Universe (f a) => Universe (Co f a) where universe = map Rep universe
---
--- However, since you probably only apply Rep to functors when you want to
--- think of them as being representable, I think it makes sense to use an
--- instance based on the representable-ness rather than the inherent
--- universe-ness.
---
--- Please complain if you disagree!
-instance (Representable f, Finite (Rep f), Ord (Rep f), Universe a)
-	=> Universe (Co f a)
-	where universe = map tabulate universe
-instance (Representable f, Finite s, Ord s, Finite (Rep f), Ord (Rep f), Universe a)
-	=> Universe (TracedT s f a)
-	where universe = map tabulate universe
-
-instance Finite Void
-
-instance (Representable f, Finite (Rep f), Ord (Rep f), Finite a)
-	=> Finite (Co f a)
-	where universeF = map tabulate universeF
-instance (Representable f, Finite s, Ord s, Finite (Rep f), Ord (Rep f), Finite a)
-	=> Finite (TracedT s f a)
-	where universeF = map tabulate universeF
diff --git a/src/Data/Universe/Instances/Extended.hs b/src/Data/Universe/Instances/Extended.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Universe/Instances/Extended.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE UndecidableInstances #-}
+module Data.Universe.Instances.Extended (
+  -- | Instances for 'Universe' and 'Finite' for function-like functors and the empty type.
+  Universe(..), Finite(..)
+  ) where
+
+import Control.Comonad.Trans.Traced (TracedT (..))
+import Data.Functor.Rep (Representable (..), Co(..))
+import Data.Universe.Class (Universe (..), Finite (..))
+import Data.Universe.Helpers (retag, Tagged, Natural)
+
+-- | We could do this:
+--
+-- instance Universe (f a) => Universe (Co f a) where universe = map Rep universe
+--
+-- However, since you probably only apply Rep to functors when you want to
+-- think of them as being representable, I think it makes sense to use an
+-- instance based on the representable-ness rather than the inherent
+-- universe-ness.
+--
+-- Please complain if you disagree!
+--
+instance (Representable f, Finite (Rep f), Ord (Rep f), Universe a)
+  => Universe (Co f a)
+  where universe = map tabulate universe
+instance (Representable f, Finite s, Ord s, Finite (Rep f), Ord (Rep f), Universe a)
+  => Universe (TracedT s f a)
+  where universe = map tabulate universe
+
+instance (Representable f, Finite (Rep f), Ord (Rep f), Finite a)
+  => Finite (Co f a)
+  where universeF = map tabulate universeF; cardinality = retag (cardinality :: Tagged (Rep (Co        f) -> a) Natural)
+instance (Representable f, Finite s, Ord s, Finite (Rep f), Ord (Rep f), Finite a)
+  => Finite (TracedT s f a)
+  where universeF = map tabulate universeF; cardinality = retag (cardinality :: Tagged (Rep (TracedT s f)) Natural)
diff --git a/universe-instances-extended.cabal b/universe-instances-extended.cabal
--- a/universe-instances-extended.cabal
+++ b/universe-instances-extended.cabal
@@ -1,28 +1,42 @@
-name:                universe-instances-extended
-version:             1.0.0.1
-synopsis:            Universe instances for types from select extra packages
-homepage:            https://github.com/dmwit/universe
-license:             BSD3
-license-file:        LICENSE
-author:              Daniel Wagner
-maintainer:          me@dmwit.com
-copyright:           Daniel Wagner 2014
-category:            Data
-build-type:          Simple
-cabal-version:       >=1.10
+name:          universe-instances-extended
+version:       1.1
+synopsis:      Universe instances for types from selected extra packages
+description:
+  A class for finite and recursively enumerable types and some helper functions for enumerating them
+  defined in @universe-base@ package:
+  .
+  @
+  class Universe a where universe :: [a]
+  class Universe a => Finite a where universeF :: [a]; universeF = universe
+  @
+
+homepage:      https://github.com/dmwit/universe
+license:       BSD3
+license-file:  LICENSE
+author:        Daniel Wagner
+maintainer:    me@dmwit.com
+copyright:     Daniel Wagner 2014
+category:      Data
+build-type:    Simple
+cabal-version: >=1.10
+tested-with:
+  GHC ==8.8.1 || ==8.6.4 || ==8.4.4 || ==8.2.2 || ==8.0.2 || ==7.10.3 || ==7.8.4 || ==7.6.3 || ==7.4.2 || ==7.0.4
+
 source-repository head
-    type:            git
-    location:        https://github.com/dmwit/universe
+  type:     git
+  location: https://github.com/dmwit/universe
+
 source-repository this
-    type:            git
-    location:        https://github.com/dmwit/universe
-    tag:             instances-extended-1.0.0.1
+  type:     git
+  location: https://github.com/dmwit/universe
+  tag:      instances-extended-1.1
 
 library
-  exposed-modules:     Data.Universe.Instances.Extended
-  build-depends:       adjunctions             >=4   && <4.3,
-                       base                    >=4   && <5  ,
-                       comonad                 >=4   && <4.3,
-                       universe-instances-base >=1.0 && <1.1,
-                       void                    >=0.1 && <0.8
-  default-language:    Haskell2010
+  default-language: Haskell2010
+  hs-source-dirs:   src
+  exposed-modules:  Data.Universe.Instances.Extended
+  build-depends:
+      adjunctions    >=4.3 && <4.5
+    , base           >=4.3 && <4.13
+    , comonad        >=4.2 && <5.1
+    , universe-base  >=1.1 && <1.1.1
