diff --git a/changeset-reflex.cabal b/changeset-reflex.cabal
--- a/changeset-reflex.cabal
+++ b/changeset-reflex.cabal
@@ -1,6 +1,6 @@
 cabal-version: 2.4
 name: changeset-reflex
-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.
@@ -36,6 +36,9 @@
   default-extensions:
     BangPatterns
     DeriveFunctor
+    DeriveGeneric
+    DeriveTraversable
+    DerivingStrategies
     FlexibleInstances
     FunctionalDependencies
     GADTs
@@ -44,6 +47,7 @@
     NamedFieldPuns
     RankNTypes
     ScopedTypeVariables
+    StrictData
     TupleSections
     TypeOperators
 
@@ -54,10 +58,10 @@
 
   build-depends:
     base >=4.12 && <4.22,
-    changeset ==0.1.0.3,
+    changeset ==0.1.1,
     containers >=0.6 && <0.8,
     dependent-map ^>=0.4,
-    monoid-extras ^>=0.6,
+    monoid-extras ^>=0.7,
     reflex >=0.8.2.1 && <0.10,
     some ^>=1.0.1,
 
diff --git a/src/Control/Monad/Changeset/Reflex.hs b/src/Control/Monad/Changeset/Reflex.hs
--- a/src/Control/Monad/Changeset/Reflex.hs
+++ b/src/Control/Monad/Changeset/Reflex.hs
@@ -2,13 +2,25 @@
 
 -- base
 import Data.Bifunctor (Bifunctor (second))
+import Data.Function ((&))
 import Data.Functor ((<&>))
 import Data.Functor.Compose
 import Data.Functor.Identity (Identity (Identity))
+import Data.List.NonEmpty (NonEmpty, fromList)
+import GHC.Generics (Generic)
 
 -- monoid-extras
 import Data.Monoid.Action
 
+-- containers
+
+import Data.IntMap (IntMap)
+import qualified Data.IntMap as IM
+import Data.Map (Map)
+
+-- some
+import Data.GADT.Compare (GCompare)
+
 -- reflex
 import Reflex.Class
 
@@ -19,21 +31,16 @@
   insert,
   traverseWithKey,
  )
+import Data.Functor.Misc (dmapToIntMap, dmapToMap, intMapWithFunctorToDMap, mapWithFunctorToDMap)
 
 -- changeset
 import Control.Monad.Trans.Changeset (ChangesetT (..))
-import Data.Function ((&))
-import Data.Functor.Misc (dmapToIntMap, dmapToMap, intMapWithFunctorToDMap, mapWithFunctorToDMap)
-import Data.GADT.Compare (GCompare)
-import Data.IntMap (IntMap)
-import qualified Data.IntMap as IM
-import Data.List.NonEmpty (NonEmpty, fromList)
-import Data.Map (Map)
 
 -- | A change to a dependent map 'DMap'.
 data DMapChange k f v
   = Insert (k v) (f v)
   | Delete (k v)
+  deriving stock (Functor, Foldable, Traversable, Generic)
 
 instance (GCompare k) => Action (DMapChange k f v) (DMap k f) where
   act (Insert k v) = insert k v
