diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,13 @@
+# 0.6 [2022.07.03]
+* Loosen the `Monad` constraint in the `Invariant(2)` instances for
+  `Kleisli` to an `Invariant` constraint.
+* Loosen the `Comonad` constraint in the `Invariant2` instance for `Cokleisli`
+  to an `Invariant` constraint.
+* Add `Invariant` instances for `PastroSum`, `CopastroSum`, `Environment`,
+  `FreeMapping`, `Pastro`, and `FreeTraversing` from the `profunctors` library.
+* Add `Invariant(2)` instances for `Copastro` and `Coyoneda` from the
+  `profunctors` library.
+
 # 0.5.6 [2022.05.07]
 * Add `InvariantProfunctor` and `InvariantArrow` newtypes that admit
   implementations of `invmap` that only require `Profunctor` or `Arrow`
diff --git a/invariant.cabal b/invariant.cabal
--- a/invariant.cabal
+++ b/invariant.cabal
@@ -1,5 +1,5 @@
 name:                invariant
-version:             0.5.6
+version:             0.6
 synopsis:            Haskell98 invariant functors
 description:         Haskell98 invariant functors (also known as exponential functors).
                      .
diff --git a/src/Data/Functor/Invariant.hs b/src/Data/Functor/Invariant.hs
--- a/src/Data/Functor/Invariant.hs
+++ b/src/Data/Functor/Invariant.hs
@@ -112,7 +112,7 @@
 import           Data.Bifunctor.Wrapped
 
 -- comonad
-import           Control.Comonad (Comonad(..), Cokleisli(..), liftW)
+import           Control.Comonad (Cokleisli(..))
 
 -- containers
 import           Data.IntMap (IntMap)
@@ -247,8 +247,8 @@
   => Invariant (ArrowMonad a) where
   invmap f _ (ArrowMonad m) = ArrowMonad (m >>> arr f)
 -- | from "Control.Arrow"
-instance Monad m => Invariant (Kleisli m a) where
-  invmap = invmap2 id id
+instance Invariant m => Invariant (Kleisli m a) where
+  invmap f g (Kleisli m) = Kleisli (invmap f g . m)
 
 -- | from "Control.Exception"
 instance Invariant Handler where
@@ -436,6 +436,9 @@
 instance Invariant2 p => Invariant (Closure p a) where
   invmap = invmap2 id id
 -- | from the @profunctors@ package
+instance Invariant (Environment p a) where
+  invmap = invmap2 id id
+-- | from the @profunctors@ package
 instance Invariant2 p => Invariant (Codensity p a) where
   invmap = invmap2 id id
 -- | from the @profunctors@ package
@@ -457,9 +460,27 @@
 instance Invariant2 p => Invariant (Tambara p a) where
   invmap = invmap2 id id
 -- | from the @profunctors@ package
+instance Invariant (PastroSum p a) where
+  invmap = invmap2 id id
+-- | from the @profunctors@ package
+instance Invariant (FreeMapping p a) where
+  invmap = invmap2 id id
+-- | from the @profunctors@ package
+instance Invariant (FreeTraversing p a) where
+  invmap = invmap2 id id
+-- | from the @profunctors@ package
+instance Invariant (Pastro p a) where
+  invmap = invmap2 id id
+-- | from the @profunctors@ package
 instance Invariant (Cotambara p a) where
   invmap = invmapFunctor
 -- | from the @profunctors@ package
+instance Invariant (Copastro p a) where
+  invmap = invmap2 id id
+-- | from the @profunctors@ package
+instance Invariant (CopastroSum p a) where
+  invmap = invmap2 id id
+-- | from the @profunctors@ package
 instance Invariant (CotambaraSum p a) where
   invmap = invmapFunctor
 -- | from the @profunctors@ package
@@ -468,6 +489,9 @@
 -- | from the @profunctors@ package
 instance Invariant (Yoneda p a) where
   invmap = invmapFunctor
+-- | from the @profunctors@ package
+instance Invariant (Coyoneda p a) where
+  invmap = invmap2 id id
 
 -- | from the @StateVar@ package
 instance Invariant StateVar where
@@ -702,8 +726,8 @@
   invmap2 _ f' g _ (App.WrapArrow x) = App.WrapArrow $ arr g Cat.. x Cat.. arr f'
 
 -- | from "Control.Arrow"
-instance Monad m => Invariant2 (Kleisli m) where
-  invmap2 _ f' g _ (Kleisli m) = Kleisli $ liftM g . m . f'
+instance Invariant m => Invariant2 (Kleisli m) where
+  invmap2 _ f' g g' (Kleisli m) = Kleisli $ invmap g g' . m . f'
 
 -- | from "Data.Semigroup"
 instance Invariant2 Arg where
@@ -739,9 +763,8 @@
   invmap2 = invmap2Bifunctor
 
 -- | from the @comonad@ package
-instance Comonad w => Invariant2 (Cokleisli w) where
-   invmap2 _ f' g _ (Cokleisli w) = Cokleisli $ g . w . liftW f'
-
+instance Invariant w => Invariant2 (Cokleisli w) where
+   invmap2 f f' g _ (Cokleisli w) = Cokleisli $ g . w . invmap f' f
 -- | from the @contravariant@ package
 instance Invariant2 Op where
   invmap2 f f' g g' (Op x) = Op $ invmap2 g g' f f' x
@@ -810,6 +833,9 @@
 instance Invariant2 (Cotambara p) where
   invmap2 = invmap2Profunctor
 -- | from the @profunctors@ package
+instance Invariant2 (Copastro p) where
+  invmap2 = invmap2Profunctor
+-- | from the @profunctors@ package
 instance Invariant2 (CopastroSum p) where
   invmap2 = invmap2Profunctor
 -- | from the @profunctors@ package
@@ -821,6 +847,9 @@
     TambaraSum (invmap2 (first f) (first f') (first g) (first g') p)
 -- | from the @profunctors@ package
 instance Invariant2 (Yoneda p) where
+  invmap2 = invmap2Profunctor
+-- | from the @profunctors@ package
+instance Invariant2 (Coyoneda p) where
   invmap2 = invmap2Profunctor
 
 -- | from the @tagged@ package
