diff --git a/dynamic-state.cabal b/dynamic-state.cabal
--- a/dynamic-state.cabal
+++ b/dynamic-state.cabal
@@ -1,5 +1,5 @@
 name:                dynamic-state
-version:             0.3.1
+version:             0.3.2
 synopsis:            Optionally serializable dynamic state keyed by type
 description:         Optionally serializable dynamic state keyed by type
 license:             GPL-2
diff --git a/src/Data/DynamicState.hs b/src/Data/DynamicState.hs
--- a/src/Data/DynamicState.hs
+++ b/src/Data/DynamicState.hs
@@ -29,11 +29,13 @@
 
 #if __GLASGOW_HASKELL__ >= 804
 instance Semigroup DynamicState where
-  (<>) = mappend
+  DynamicState a <> DynamicState b = DynamicState (a <> b)
 #endif
 
 instance Monoid DynamicState where
+#if !MIN_VERSION_base(4,11,0)
   mappend (DynamicState a) (DynamicState b) = DynamicState (mappend a b)
+#endif
   mempty = DynamicState mempty
 
 getDyn :: forall a. Typeable a => DynamicState -> Maybe a
diff --git a/src/Data/DynamicState/Serializable.hs b/src/Data/DynamicState/Serializable.hs
--- a/src/Data/DynamicState/Serializable.hs
+++ b/src/Data/DynamicState/Serializable.hs
@@ -56,11 +56,13 @@
 
 #if __GLASGOW_HASKELL__ >= 804
 instance Semigroup DynamicState where
-  (<>) = mappend
+  DynamicState a <> DynamicState b = DynamicState (a <> b)
 #endif
 
 instance Monoid DynamicState where
+#if !MIN_VERSION_base(4,11,0)
   mappend (DynamicState a) (DynamicState b) = DynamicState (mappend a b)
+#endif
   mempty = DynamicState mempty
 
 -- | Get a value, inside a State-like monad specified by the first two functions
