diff --git a/Data/Both.hs b/Data/Both.hs
--- a/Data/Both.hs
+++ b/Data/Both.hs
@@ -11,19 +11,27 @@
 import Data.Data
 import Data.Foldable
 import Data.Maybe
-import Data.Monoid
+import Data.Monoid hiding ((<>))
+import Data.Semigroup
 import Data.Traversable
+import Data.Zero
 import GHC.Generics
 
 newtype Both a = Both { getBoth :: Maybe a }
   deriving (Eq, Ord, Read, Show, Data, Typeable, Generic, Generic1, Functor, Applicative, Alternative, Monad, MonadPlus, Foldable, Traversable)
 
--- | The 'mappend' for 'Maybe' is 'Just' if /either/ of the operands
+-- | The '(<>)' for 'Maybe' is 'Just' if /either/ of the operands
 -- are, whereas here /both/ must be.
-instance Monoid a => Monoid (Both a) where
-  mempty = Both $ Just mempty
-  mappend (Both (Just x)) (Both (Just y)) = Both . Just $ x <> y
-  mappend _ _ = Both Nothing
+instance Semigroup a => Semigroup (Both a) where
+  Both (Just x) <> Both (Just y) = Both . Just $ x <> y
+  _ <> _ = Both Nothing
+
+instance (Monoid a, Semigroup a) => Monoid (Both a) where
+  mempty  = Both $ Just mempty
+  mappend = (<>)
+
+instance Semigroup a => Zero (Both a) where
+  zero = Both Nothing
 
 -- | The 'both' function takes a default value, a function, and a
 -- 'Both' value. If the inner 'Maybe' value is 'Nothing', the function
diff --git a/both.cabal b/both.cabal
--- a/both.cabal
+++ b/both.cabal
@@ -2,7 +2,7 @@
 -- see http://haskell.org/cabal/users-guide/
 
 name:                both
-version:             0.1.0.0
+version:             0.1.1.0
 synopsis:            Like Maybe, but with a different Monoid instance.
 description:
   The Monoid instance for Maybe behaves like so:
@@ -42,12 +42,14 @@
 source-repository this
   type:     git
   location: https://github.com/barrucadu/both.git
-  tag:      0.1.0.0
+  tag:      0.1.1.0
 
 library
   exposed-modules:     Data.Both
   -- other-modules:       
   -- other-extensions:    
-  build-depends:       base >=4.7 && <4.9
+  build-depends:       base >=4.7 && <5.0
+                     , semigroups >=0.16 && <0.19
+                     , zero >=0.1 && <0.2
   -- hs-source-dirs:      
   default-language:    Haskell2010
