diff --git a/Data/AttoLisp.hs b/Data/AttoLisp.hs
--- a/Data/AttoLisp.hs
+++ b/Data/AttoLisp.hs
@@ -1,7 +1,8 @@
 {-# LANGUAGE OverloadedStrings, Rank2Types, DeriveDataTypeable, BangPatterns #-}
 -- The following is for the ParseList stuff
 {-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies, FlexibleInstances,
-             UndecidableInstances, ScopedTypeVariables, OverlappingInstances, EmptyDataDecls #-}
+             UndecidableInstances, ScopedTypeVariables, OverlappingInstances,
+             CPP, EmptyDataDecls #-}
 -- | Efficient parsing and serialisation of S-Expressions (as used by Lisp).
 --
 -- This module is intended to be imported qualified, e.g.:
@@ -40,6 +41,7 @@
 import Data.List ( foldl' )
 import Data.Ratio ( Ratio )
 import Data.Monoid
+import Data.Semigroup (Semigroup(..))
 import Data.String
 import Data.Word ( Word, Word8, Word16, Word32, Word64 )
 import Numeric (showHex)
@@ -154,6 +156,12 @@
                                     in runParser a kf' ks
     {-# INLINE mplus #-}
 
+#if MIN_VERSION_base(4,9,0)
+instance Semigroup (Parser a) where
+    (<>) = mappend
+    {-# INLINE (<>) #-}
+#endif
+
 instance Monoid (Parser a) where
     mempty  = fail "mempty"
     {-# INLINE mempty #-}
@@ -206,6 +214,12 @@
     {-# INLINE empty #-}
     (<|>) = mplus
     {-# INLINE (<|>) #-}
+
+#if MIN_VERSION_base(4,9,0)
+instance Semigroup (Result a) where
+    (<>) = mappend
+    {-# INLINE (<>) #-}
+#endif
 
 instance Monoid (Result a) where
     mempty  = fail "mempty"
diff --git a/atto-lisp.cabal b/atto-lisp.cabal
--- a/atto-lisp.cabal
+++ b/atto-lisp.cabal
@@ -1,5 +1,5 @@
 name:                   atto-lisp
-version:                0.2.2.2
+version:                0.2.2.3
 license:                BSD3
 license-file:           LICENSE
 author:                 Thomas Schilling <nominolo@googlemail.com>
@@ -17,14 +17,14 @@
 
 library
   build-depends:
-    attoparsec    >= 0.10    && < 0.14,
-    base          >= 4.2     && < 5,
-    blaze-builder >= 0.3     && < 0.5,
-    blaze-textual >= 0.1     && < 0.3,
-    bytestring    >= 0.9     && < 0.11,
-    containers    >= 0.3     && < 0.6,
-    deepseq       >= 1.1     && < 1.5,
-    text          >= 0.10    && < 1.3
+    attoparsec,
+    base         >= 4.2     && < 5,
+    blaze-builder,
+    blaze-textual,
+    bytestring   ,
+    containers   ,
+    deepseq      ,
+    text          
 
   exposed-modules:
     Data.AttoLisp
