diff --git a/sox.cabal b/sox.cabal
--- a/sox.cabal
+++ b/sox.cabal
@@ -1,5 +1,5 @@
 Name:             sox
-Version:          0.2.2.7
+Version:          0.2.3
 License:          GPL
 License-File:     LICENSE
 Author:           Henning Thielemann <haskell@henning-thielemann.de>
@@ -18,10 +18,6 @@
    and in the path to the executables must be set.
    .
    In the past this was part of the synthesizer package.
-   .
-   There is some ancient code,
-   which allows interactive playback using the shell-pipe package on GHC-6.2,
-   where no runInteractiveProcess was available.
 Tested-With:       GHC==6.8.2, GHC==6.10.4, GHC==6.12.1
 Tested-With:       GHC==7.0.4, GHC==7.2.1, GHC==7.4.2, GHC==7.6.1
 Cabal-Version:     >=1.6
@@ -34,14 +30,8 @@
 Flag splitBase
   description: Choose the new smaller, split-up base package.
 
-Flag executeShell
-  description:
-    Use ShellPipe package instead of process, preserved for historical reasons.
-    Files are available in the darcs repository but currently not in the cabal package.
-  default:     False
-
 Source-Repository this
-  Tag:         0.2.2.7
+  Tag:         0.2.3
   Type:        darcs
   Location:    http://hub.darcs.net/thielema/sox/
 
@@ -56,6 +46,7 @@
     -- that's the way to get compatibility between GHC 6.10 and 6.12
     extensible-exceptions >=0.1.1 && <0.2,
     transformers >=0.2 && <0.6,
+    semigroups >=0.1 && <1.0,
     utility-ht >=0.0.5 && <0.1
   If flag(splitBase)
     Build-Depends:
diff --git a/src/Sound/Sox/Private/Arguments.hs b/src/Sound/Sox/Private/Arguments.hs
--- a/src/Sound/Sox/Private/Arguments.hs
+++ b/src/Sound/Sox/Private/Arguments.hs
@@ -1,12 +1,16 @@
 module Sound.Sox.Private.Arguments where
 
-import Data.Monoid (Monoid(..), )
+import Data.Monoid (Monoid(mempty, mappend), )
+import Data.Semigroup (Semigroup((<>)), )
 
 newtype T = Cons {decons :: [String]}
 
+instance Semigroup T where
+   Cons x <> Cons y = Cons (x++y)
+
 instance Monoid T where
    mempty = Cons mempty
-   mappend (Cons x) (Cons y) = Cons (mappend x y)
+   mappend = (<>)
 
 single :: String -> T
 single x = Cons [x]
diff --git a/src/Sound/Sox/Private/Option.hs b/src/Sound/Sox/Private/Option.hs
--- a/src/Sound/Sox/Private/Option.hs
+++ b/src/Sound/Sox/Private/Option.hs
@@ -2,7 +2,8 @@
 
 import qualified Sound.Sox.Private.Arguments as Args
 import qualified Data.Map as Map
-import Data.Monoid (Monoid(..), )
+import Data.Monoid (Monoid(mappend, mempty), )
+import Data.Semigroup (Semigroup((<>)), )
 
 {- |
 You can combine options using the 'Monoid' functions 'mappend' and 'mconcat'.
@@ -11,9 +12,12 @@
 -}
 newtype T = Cons {decons :: Map.Map String [String]}
 
+instance Semigroup T where
+   Cons x <> Cons y = Cons (Map.union x y)
+
 instance Monoid T where
    mempty = Cons mempty
-   mappend (Cons x) (Cons y) = Cons (Map.union x y)
+   mappend = (<>)
 
 toArguments :: T -> Args.T
 toArguments =
