diff --git a/changeset-lens.cabal b/changeset-lens.cabal
--- a/changeset-lens.cabal
+++ b/changeset-lens.cabal
@@ -1,6 +1,6 @@
 cabal-version: 2.4
 name: changeset-lens
-version: 0.1.0.3
+version: 0.1.1
 synopsis: Stateful monad transformer based on monoidal actions
 description:
   A general state monad transformer with separate types for the state and the possible changes.
@@ -37,6 +37,7 @@
   default-extensions:
     BangPatterns
     DeriveFunctor
+    DeriveGeneric
     DeriveTraversable
     DerivingStrategies
     FlexibleContexts
@@ -50,6 +51,7 @@
     RankNTypes
     ScopedTypeVariables
     StandaloneDeriving
+    StrictData
     TupleSections
     TypeOperators
 
@@ -63,11 +65,11 @@
 
   build-depends:
     base >=4.12 && <4.22,
-    changeset ==0.1.0.3,
+    changeset ==0.1.1,
     containers >=0.6 && <0.8,
     indexed-traversable ^>=0.1.1,
     lens >=4.19.2 && <5.4,
-    monoid-extras ^>=0.6,
+    monoid-extras ^>=0.7,
     monoidal-containers ^>=0.6.2,
     transformers >=0.5.6.2 && <0.7,
     witherable >=0.4 && <0.6,
diff --git a/src/Control/Monad/Changeset/Lens/Ixed.hs b/src/Control/Monad/Changeset/Lens/Ixed.hs
--- a/src/Control/Monad/Changeset/Lens/Ixed.hs
+++ b/src/Control/Monad/Changeset/Lens/Ixed.hs
@@ -6,6 +6,7 @@
 import Data.Foldable (Foldable)
 import Data.Function ((&))
 import Data.Monoid (First (..))
+import GHC.Generics (Generic)
 import Prelude hiding (Foldable (..))
 
 -- lens
@@ -44,6 +45,7 @@
 -}
 newtype IxedChangeset s w = IxedChangeset
   {getIxedChangeset :: MonoidalMap (Index s) w}
+  deriving stock (Generic)
 
 deriving instance (Ord (Index s), Semigroup w) => Semigroup (IxedChangeset s w)
 deriving instance (Ord (Index s), Monoid w) => Monoid (IxedChangeset s w)
diff --git a/src/Control/Monad/Changeset/Lens/Setter.hs b/src/Control/Monad/Changeset/Lens/Setter.hs
--- a/src/Control/Monad/Changeset/Lens/Setter.hs
+++ b/src/Control/Monad/Changeset/Lens/Setter.hs
@@ -1,9 +1,11 @@
 module Control.Monad.Changeset.Lens.Setter where
 
 -- base
+import Data.Foldable (Foldable)
 import Data.Function ((&))
 import Data.List (foldl')
 import Data.Monoid (First (..))
+import GHC.Generics (Generic)
 import Prelude hiding (Foldable (..))
 
 -- lens
@@ -34,12 +36,13 @@
   { setterChangeSetter :: Setter' s a
   , setterChangeChange :: w
   }
-  deriving (Functor)
+  deriving stock (Functor, Foldable, Traversable)
 
 -- | A collection of 'SetterChange's, which are applied consecutively.
 newtype SetterChangeset s a w = SetterChangeset
   {getSetterChangeset :: Seq (SetterChange s a w)}
   deriving newtype (Semigroup, Monoid)
+  deriving stock (Functor, Foldable, Traversable, Generic)
 
 instance (RightAction w a) => RightAction (SetterChangeset s a w) s where
   actRight s SetterChangeset {getSetterChangeset} = foldl' (\s' SetterChange {setterChangeSetter, setterChangeChange} -> s' & setterChangeSetter %~ flip actRight setterChangeChange) s getSetterChangeset
@@ -62,7 +65,7 @@
 (|>~) :: (MonadChangeset s (SetterChangeset s a w) m) => Setter' s a -> w -> m ()
 setter |>~ w = change $ setterChangeset setter w
 
-{- | Set a value through a setter..
+{- | Set a value through a setter.
 
 A shorthand for '|>~' in combination with 'First'.
 
