diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,7 @@
+0.9.3.0
+-------
+- Semigroup instances.
+
 0.9.2.0
 -------
 - Bumped pipes-transduce dependency to 0.4.1.
diff --git a/process-streaming.cabal b/process-streaming.cabal
--- a/process-streaming.cabal
+++ b/process-streaming.cabal
@@ -1,5 +1,5 @@
 name:          process-streaming
-version:       0.9.2.1
+version:       0.9.3.0
 license:       BSD3
 license-file:  LICENSE
 data-files:    
@@ -125,7 +125,6 @@
       , tasty >= 0.9
       , tasty-hunit >= 0.9
       , process-streaming
-  default-language: Haskell2010
 
 Source-repository head
     type:     git
diff --git a/src/System/Process/Streaming.hs b/src/System/Process/Streaming.hs
--- a/src/System/Process/Streaming.hs
+++ b/src/System/Process/Streaming.hs
@@ -21,6 +21,7 @@
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE ViewPatterns #-}
 {-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE CPP #-}
 
 
 module System.Process.Streaming ( 
@@ -61,7 +62,7 @@
     ) where
 
 import qualified Data.ByteString.Lazy
-import Data.Monoid
+import qualified Data.Semigroup as S
 import Data.Foldable
 import Data.Bifunctor
 import Data.ByteString
@@ -295,9 +296,19 @@
                          runExceptT $ pure ()
                       )
 
+
+instance (S.Semigroup a) => S.Semigroup (Feed1 b e a) where
+     s1 <> s2 = (S.<>) <$> s1 <*> s2
+
+#if !(MIN_VERSION_base(4,11,0))
+instance (Monoid a,S.Semigroup a) => Monoid (Feed1 b e a) where
+#else
 instance (Monoid a) => Monoid (Feed1 b e a) where
+#endif
    mempty = pure mempty
-   mappend s1 s2 = (<>) <$> s1 <*> s2
+#if !(MIN_VERSION_base(4,11,0))
+   mappend = (S.<>)
+#endif
 
 feed1Fallibly :: Feed1 b e a -> Consumer b IO () -> IO (Either e a)
 feed1Fallibly (Feed1 (unLift -> s)) = runFeed1_ s
@@ -470,9 +481,18 @@
 
     Streams f <*> Streams x = Streams (f <*> x)
 
+instance (S.Semigroup a) => S.Semigroup (Streams e a) where
+   (<>) s1 s2 = (S.<>) <$> s1 <*> s2
+
+#if !(MIN_VERSION_base(4,11,0))
+instance (Monoid a,S.Semigroup a) => Monoid (Streams e a) where
+#else
 instance (Monoid a) => Monoid (Streams e a) where
+#endif
    mempty = pure mempty
-   mappend s1 s2 = (<>) <$> s1 <*> s2
+#if !(MIN_VERSION_base(4,11,0))
+   mappend = (S.<>)
+#endif
 
 {- $ghci
 
