diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,11 @@
 # Changelog for barbies
 
+## 0.1.2.0
+  - Use 'Monoid' and not 'Semigroup' as constraints for the 'Monoid' instance
+
+## 0.1.1.0
+  - Add `instance Semigroup (Barbie b)` to go along the `Monoid` instance
+
 ## 0.1.0.1
   - Works under GHC 8.0.2, but notice one needs to use empty instance
     declarations, because ghc chokes on `deriving` clauses.
diff --git a/barbies.cabal b/barbies.cabal
--- a/barbies.cabal
+++ b/barbies.cabal
@@ -1,5 +1,5 @@
 name:           barbies
-version:        0.1.0.1
+version:        0.1.2.0
 synopsis:       Classes for working with types that can change clothes.
 description:    Types that are parametric on a functor are like Barbies that have an outfit for each role. This package provides the basic abstractions to work with them comfortably.
 category:       Data-structures
diff --git a/src/Data/Barbie/Internal/Instances.hs b/src/Data/Barbie/Internal/Instances.hs
--- a/src/Data/Barbie/Internal/Instances.hs
+++ b/src/Data/Barbie/Internal/Instances.hs
@@ -14,6 +14,8 @@
 import Data.Barbie.Internal.Product
 import Data.Barbie.Internal.ProofB
 
+import Data.Semigroup
+
 -- | A wrapper for Barbie-types, providing useful instances.
 newtype Barbie b (f :: * -> *)
   = Barbie { getBarbie :: b f }
@@ -27,6 +29,12 @@
 instance TraversableB b => TraversableB (Barbie b) where
   btraverse f = fmap Barbie . btraverse f . getBarbie
 
+
+instance (ProofB b, ConstraintsOf Semigroup f b) => Semigroup (Barbie b f) where
+  (<>) = bzipWith3 mk bproof
+    where
+      mk :: DictOf Semigroup f a -> f a -> f a -> f a
+      mk = requiringDict (<>)
 
 instance (ProofB b, ConstraintsOf Monoid f b) => Monoid (Barbie b f) where
   mempty = bmap mk bproof
diff --git a/test/Spec/Wrapper.hs b/test/Spec/Wrapper.hs
--- a/test/Spec/Wrapper.hs
+++ b/test/Spec/Wrapper.hs
@@ -9,7 +9,7 @@
 
 import Data.Barbie (Barbie(..), ConstraintsOf, ProofB)
 
-import Data.Monoid
+import Data.Semigroup
 
 import Test.Tasty(testGroup, TestTree)
 import Test.Tasty.QuickCheck(Arbitrary(..), testProperty)
@@ -18,6 +18,7 @@
   :: forall b
   .  ( Arbitrary (b []), Eq (b []), Show (b [])
      , ProofB b
+     , ConstraintsOf Semigroup [] b
      , ConstraintsOf Monoid [] b
      )
   => TestTree
