diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,7 +1,10 @@
 # Changelog for barbies
 
+## 0.1.3.0
+  - Use both `Monoid` and `Semigroup` as constraints for the `Monoid` instance, so that this works with ghc 8.0 to 8.4 (Fraser Murray)
+
 ## 0.1.2.0
-  - Use 'Monoid' and not 'Semigroup' as constraints for the 'Monoid' instance
+  - 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
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# barbie
+# barbies [![Build Status](https://travis-ci.org/jcpetruzza/barbies.svg?branch=master)](https://travis-ci.org/jcpetruzza/barbies)
 
 Types that are parametric on unary type-constructors that control
 their shapes are like Barbies that can wear different clothes
diff --git a/barbies.cabal b/barbies.cabal
--- a/barbies.cabal
+++ b/barbies.cabal
@@ -1,5 +1,5 @@
 name:           barbies
-version:        0.1.2.0
+version:        0.1.3.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
@@ -51,7 +51,7 @@
       base >=4.7 && <5
      ,bifunctors
 
-  ghc-options: -Wall
+  ghc-options: -Wall -Wnoncanonical-monoid-instances
 
   default-language: Haskell2010
 
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,7 +14,7 @@
 import Data.Barbie.Internal.Product
 import Data.Barbie.Internal.ProofB
 
-import Data.Semigroup
+import Data.Semigroup (Semigroup, (<>))
 
 -- | A wrapper for Barbie-types, providing useful instances.
 newtype Barbie b (f :: * -> *)
@@ -36,13 +36,10 @@
       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
+instance (ProofB b, ConstraintsOf Semigroup f b, ConstraintsOf Monoid f b) => Monoid (Barbie b f) where
   mempty = bmap mk bproof
     where
       mk :: DictOf Monoid f a -> f a
       mk = requiringDict mempty
 
-  mappend = bzipWith3 mk bproof
-    where
-      mk :: DictOf Monoid f a -> f a -> f a -> f a
-      mk = requiringDict mappend
+  mappend = (<>)
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.Semigroup
+import Data.Semigroup (Semigroup, (<>))
 
 import Test.Tasty(testGroup, TestTree)
 import Test.Tasty.QuickCheck(Arbitrary(..), testProperty)
