diff --git a/Data/Universe.hs b/Data/Universe.hs
deleted file mode 100644
--- a/Data/Universe.hs
+++ /dev/null
@@ -1,11 +0,0 @@
-{-# LANGUAGE NoImplicitPrelude #-}
-module Data.Universe (
-	-- | A convenience module that imports the submodules @Instances.Base@,
-	-- @Instances.Extended@, and @Instances.Trans@ to provide instances of
-	-- 'Universe' and 'Finite' for a wide variety of types.
-	Universe(..), Finite(..)
-	) where
-
-import Data.Universe.Instances.Base
-import Data.Universe.Instances.Extended
-import Data.Universe.Instances.Trans
diff --git a/Data/Universe/Instances.hs b/Data/Universe/Instances.hs
deleted file mode 100644
--- a/Data/Universe/Instances.hs
+++ /dev/null
@@ -1,8 +0,0 @@
-{-# LANGUAGE NoImplicitPrelude #-}
-                                              -- the extra space is to make the error line up in a pretty way
-module Data.Universe.Instances {-# DEPRECATED " Use `Data.Universe.Instances.Reverse' instead." #-} (
-	-- | A deprecated convenience module. New applications should import
-	-- "Data.Universe.Instances.Reverse" instead.
-	) where
-
-import Data.Universe.Instances.Reverse ()
diff --git a/Data/Universe/Instances/Reverse.hs b/Data/Universe/Instances/Reverse.hs
deleted file mode 100644
--- a/Data/Universe/Instances/Reverse.hs
+++ /dev/null
@@ -1,13 +0,0 @@
-{-# LANGUAGE NoImplicitPrelude #-}
-module Data.Universe.Instances.Reverse (
-	-- | A convenience module that imports the sibling modules @Eq@, @Ord@,
-	-- @Show@, @Read@, and @Traversable@ to provide instances of these classes
-	-- for functions over finite inputs.
-	Eq(..), Ord(..), Show(..), Read(..), Foldable(..), Traversable(..)
-	) where
-
-import Data.Universe.Instances.Eq
-import Data.Universe.Instances.Ord
-import Data.Universe.Instances.Show
-import Data.Universe.Instances.Read
-import Data.Universe.Instances.Traversable
diff --git a/Setup.hs b/Setup.hs
deleted file mode 100644
--- a/Setup.hs
+++ /dev/null
@@ -1,2 +0,0 @@
-import Distribution.Simple
-main = defaultMain
diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,6 +1,28 @@
-0.6:
+1.2.3
+* Support GHC-9.6.5..9.10.1
+
+1.2.2
+* Add Solo instances
+
+1.2.1
+* Explicitly mark modules as Safe or Trustworthy
+
+1.2
+* Use universe-some-1.2, which uses a Some-type from the some-package.
+
+1.1.1
+* Add `Predicate` and `Op` instances
+
+1.1
+* Add `cardinality :: Tagged a Natural` to Finite
+* Re-arrange packages, ghc boot instances are in `universe-base`
+* Rearranged the elements in `universe :: [Rational]` to reduce allocation and increase speed.
+* Add `Data.Universe.Generic`
+* New package `universe-dependent-sum`
+
+1.0
 * split package into small pieces:
-    * six packages, all dependencies of a top-level "universe" package
-    * a base installation requires many fewer dependencies
+* six packages, all dependencies of a top-level "universe" package
+* a base installation requires many fewer dependencies
 * moved Data.Universe.Instances to D.U.I.Base for consistency
 * modules export the classes that they export instances of
diff --git a/src/Data/Universe.hs b/src/Data/Universe.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Universe.hs
@@ -0,0 +1,15 @@
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE Safe #-}
+-- | A convenience module that imports the submodules @Instances.Base@, @Instances.Containers@,
+-- @Instances.Extended@, and @Instances.Trans@ to provide instances of
+-- 'Universe' and 'Finite' for a wide variety of types.
+module Data.Universe (
+  Universe(..), Finite(..),
+  universeGeneric,
+  module Data.Universe.Instances.Extended,
+  ) where
+
+import Data.Universe.Class
+import Data.Universe.Instances.Extended
+import Data.Universe.Some ()
+import Data.Universe.Generic (universeGeneric)
diff --git a/src/Data/Universe/Instances/Reverse.hs b/src/Data/Universe/Instances/Reverse.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Universe/Instances/Reverse.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE Safe #-}
+-- | A convenience module that imports the sibling modules @Eq@, @Ord@,
+-- @Show@, @Read@, and @Traversable@ to provide instances of these classes
+-- for functions over finite inputs.
+module Data.Universe.Instances.Reverse (
+  module Data.Universe.Instances.Eq,
+  module Data.Universe.Instances.Ord,
+  module Data.Universe.Instances.Show,
+  module Data.Universe.Instances.Read,
+  module Data.Universe.Instances.Traversable,
+  ) where
+
+import Data.Universe.Instances.Eq
+import Data.Universe.Instances.Ord
+import Data.Universe.Instances.Show
+import Data.Universe.Instances.Read
+import Data.Universe.Instances.Traversable
diff --git a/universe.cabal b/universe.cabal
--- a/universe.cabal
+++ b/universe.cabal
@@ -1,31 +1,58 @@
-name:                universe
-version:             1.0
-synopsis:            Classes for types where we know all the values
-description:         Munge finite and recursively enumerable types
-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
-extra-source-files:  changelog
+cabal-version:      2.2
+name:               universe
+version:            1.2.3
+synopsis:           A class for finite and recursively enumerable types.
+description:
+  A class for finite and recursively enumerable types and some helper functions for enumerating them
+  .
+  @
+  class Universe a where universe :: [a]
+  class Universe a => Finite a where universeF :: [a]; universeF = universe
+  @
+  .
+  This also provides instances from @universe-instances-*" packages.
+
+homepage:           https://github.com/dmwit/universe
+license:            BSD-3-Clause
+license-file:       LICENSE
+author:             Daniel Wagner
+maintainer:         me@dmwit.com
+copyright:          Daniel Wagner 2014
+category:           Data
+build-type:         Simple
+extra-source-files: changelog
+tested-with:
+  GHC ==8.6.5
+   || ==8.8.4
+   || ==8.10.7
+   || ==9.0.2
+   || ==9.2.8
+   || ==9.4.8
+   || ==9.6.5
+   || ==9.8.2
+   || ==9.10.1
+
 source-repository head
-    type:            git
-    location:        https://github.com/dmwit/universe
-source-repository this
-    type:            git
-    location:        https://github.com/dmwit/universe
-    tag:             1.0
+  type:     git
+  location: https://github.com/dmwit/universe
+  subdir:   universe
 
 library
-  exposed-modules:     Data.Universe,
-                       Data.Universe.Instances,
-                       Data.Universe.Instances.Reverse
-  build-depends:       universe-instances-base       >=1.0 && <1.1,
-                       universe-instances-extended   >=1.0 && <1.1,
-                       universe-reverse-instances    >=1.0 && <1.1,
-                       universe-instances-trans      >=1.0 && <1.1
-  default-language:    Haskell2010
+  default-language:         Haskell2010
+  hs-source-dirs:           src
+  exposed-modules:
+    Data.Universe
+    Data.Universe.Instances.Reverse
+
+  build-depends:
+      universe-base                >=1.1.4 && <1.1.5
+    , universe-instances-extended  >=1.1.4 && <1.1.5
+    , universe-reverse-instances   >=1.1.2 && <1.1.3
+    , universe-some                >=1.2.2 && <1.2.3
+
+  if impl(ghc >=9.0)
+    -- these flags may abort compilation with GHC-8.10
+    -- https://gitlab.haskell.org/ghc/ghc/-/merge_requests/3295
+    ghc-options: -Winferred-safe-imports -Wmissing-safe-haskell-mode
+
+  x-docspec-extra-packages: base
