diff --git a/Data/Fin/Permutation.hs b/Data/Fin/Permutation.hs
--- a/Data/Fin/Permutation.hs
+++ b/Data/Fin/Permutation.hs
@@ -2,16 +2,18 @@
 
 module Data.Fin.Permutation (Permutation, apply, unapply, swap, orbit, cycles) where
 
-import Prelude (Functor (..), Eq (..), Show (..), Bool (..), ($), (<$>), otherwise, snd, flip, curry, uncurry)
+import Prelude (Functor (..), Applicative (..), Eq (..), Show (..), Bool (..), ($), (<$>), otherwise, snd, flip, curry, uncurry)
 import Algebra
 import Control.Category (Category (..))
 import Data.Fin
 import Data.Fin.List hiding (swap)
 import qualified Data.Fin.List as L
 import Data.Foldable (elem, minimum, toList)
+import Data.Functor.Compose (Compose (..))
 import Data.List.NonEmpty (NonEmpty (..))
 import Data.Natural.Class (Natural (..))
 import qualified Data.Peano as P
+import Data.Universe.Class
 
 data Permutation n where
     PZ :: Permutation P.Zero
@@ -19,6 +21,11 @@
 
 deriving instance Eq (Permutation n)
 deriving instance Show (Permutation n)
+
+instance Natural n => Universe (Permutation n) where
+    universe = getCompose $ natural (Compose [PZ]) (Compose $ PS <$> toList enum <*> universe)
+
+instance Natural n => Finite (Permutation n)
 
 apply :: Permutation n -> List n a -> List n a
 apply PZ Nil = Nil
diff --git a/Data/Fin/Private.hs b/Data/Fin/Private.hs
--- a/Data/Fin/Private.hs
+++ b/Data/Fin/Private.hs
@@ -17,7 +17,7 @@
 import qualified Data.List as L
 import Data.List.NonEmpty (NonEmpty (..))
 import Data.Maybe
-import Data.Monoid (Monoid (..))
+import Data.Monoid hiding ((<>))
 import Data.Natural.Class
 import Data.Ord
 import Data.Peano (Peano)
diff --git a/Fin.cabal b/Fin.cabal
--- a/Fin.cabal
+++ b/Fin.cabal
@@ -1,5 +1,5 @@
 name:                Fin
-version:             0.2.5.1
+version:             0.2.6.0
 synopsis:            Finite totally-ordered sets
 -- description:         
 license:             BSD3
@@ -22,6 +22,7 @@
                      , base >=4.7 && <5
                      , foldable1 >=0.1 && <0.2
                      , natural-induction >=0.2 && <0.3
+                     , universe-base >=1.0 && <1.1
   default-language:    Haskell2010
   default-extensions:  UnicodeSyntax
                      , LambdaCase
