diff --git a/CHANGES b/CHANGES
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,7 @@
+* 0.3.3.5 03 Dec 2014
+
+  - allow semigroups-0.15
+
 * 0.3.3.4: 28 May 2014
 
   - allow semigroups-0.15
diff --git a/monoid-extras.cabal b/monoid-extras.cabal
--- a/monoid-extras.cabal
+++ b/monoid-extras.cabal
@@ -1,5 +1,5 @@
 name:                monoid-extras
-version:             0.3.3.4
+version:             0.3.3.5
 synopsis:            Various extra monoid-related definitions and utilities
 description:         Various extra monoid-related definitions and utilities,
                      such as monoid actions, monoid coproducts, \"deletable\"
@@ -33,7 +33,7 @@
 
   build-depends:     base >= 4.3 && < 4.8,
                      groups < 0.5,
-                     semigroups >= 0.8 && < 0.16,
+                     semigroups >= 0.8 && < 0.17,
                      semigroupoids >= 4.0 && < 5
 
   hs-source-dirs:    src
diff --git a/src/Data/Monoid/Coproduct.hs b/src/Data/Monoid/Coproduct.hs
--- a/src/Data/Monoid/Coproduct.hs
+++ b/src/Data/Monoid/Coproduct.hs
@@ -34,6 +34,7 @@
 --   concatenation, with appropriate combining of adjacent elements
 --   when possible.
 newtype m :+: n = MCo { unMCo :: [Either m n] }
+                  deriving Show
 
 -- For efficiency and simplicity, we implement it just as [Either m
 -- n]: of course, this does not preserve the invariant of strictly
diff --git a/src/Data/Monoid/Deletable.hs b/src/Data/Monoid/Deletable.hs
--- a/src/Data/Monoid/Deletable.hs
+++ b/src/Data/Monoid/Deletable.hs
@@ -52,7 +52,7 @@
 --   * The remaining case is symmetric with the second.
 
 data Deletable m = Deletable Int m Int
-  deriving Functor
+  deriving (Functor, Show)
 
 -- | Project the wrapped value out of a `Deletable` value.
 unDelete :: Deletable m -> m
diff --git a/src/Data/Monoid/Endomorphism.hs b/src/Data/Monoid/Endomorphism.hs
--- a/src/Data/Monoid/Endomorphism.hs
+++ b/src/Data/Monoid/Endomorphism.hs
@@ -1,3 +1,6 @@
+{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE UndecidableInstances #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Data.Monoid.Endomorphism
@@ -19,13 +22,15 @@
 import           Data.Groupoid
 import           Data.Semigroup
 import           Data.Semigroupoid
-import           Prelude           ()
+import           Prelude           (Show)
 
 -- | An 'Endomorphism' in a given 'Category' is a morphism from some
 --   object to itself.  The set of endomorphisms for a particular
 --   object form a monoid, with composition as the combining operation
 --   and the identity morphism as the identity element.
 newtype Endomorphism k a = Endomorphism {getEndomorphism :: k a a}
+
+deriving instance Show (k a a) =>  Show (Endomorphism k a)
 
 instance Semigroupoid k => Semigroup (Endomorphism k a) where
   Endomorphism a <> Endomorphism b = Endomorphism (a `o` b)
diff --git a/src/Data/Monoid/MList.hs b/src/Data/Monoid/MList.hs
--- a/src/Data/Monoid/MList.hs
+++ b/src/Data/Monoid/MList.hs
@@ -114,6 +114,7 @@
 --   guide instance selection when defining the action of
 --   heterogeneous monoidal lists on each other.
 newtype SM m = SM m
+               deriving Show
 
 instance (Action (SM a) l2, Action l1 l2) => Action (a, l1) l2 where
   act (a,l) = act (SM a) . act l
diff --git a/src/Data/Monoid/Recommend.hs b/src/Data/Monoid/Recommend.hs
--- a/src/Data/Monoid/Recommend.hs
+++ b/src/Data/Monoid/Recommend.hs
@@ -1,4 +1,3 @@
-
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Data.Monoid.Recommend
@@ -29,6 +28,7 @@
 --   overriding any @Recommend@ed values.
 data Recommend a = Recommend a
                  | Commit a
+                   deriving Show
 
 -- | Extract the value of type @a@ wrapped in @Recommend a@.
 getRecommend :: Recommend a -> a
