diff --git a/Control/Applicative/Monoid.hs b/Control/Applicative/Monoid.hs
--- a/Control/Applicative/Monoid.hs
+++ b/Control/Applicative/Monoid.hs
@@ -1,5 +1,5 @@
 {-
-    Copyright 2011-2015 Mario Blazevic
+    Copyright 2011-2018 Mario Blazevic
 
     This file is part of the Streaming Component Combinators (SCC) project.
 
@@ -25,6 +25,7 @@
 
 import Control.Applicative (Applicative (pure, (<*>)), Alternative ((<|>), some, many), (<$>))
 import Data.Monoid (Monoid, mempty, mappend, mconcat)
+import Data.Semigroup (Semigroup, (<>))
 
 
 class Applicative f => MonoidApplicative f where
@@ -35,8 +36,8 @@
 
    -- | Lifted and potentially optimized monoid `mappend` operation from the parameter type.
    infixl 5 ><
-   (><) :: Monoid a => f a -> f a -> f a
-   a >< b = mappend <$> a +<*> b
+   (><) :: Semigroup a => f a -> f a -> f a
+   a >< b = (<>) <$> a +<*> b
 
 class (Alternative f, MonoidApplicative f) => MonoidAlternative f where
    -- | Like 'optional', but restricted to 'Monoid' results.
diff --git a/Test/TestIncrementalParser.hs b/Test/TestIncrementalParser.hs
--- a/Test/TestIncrementalParser.hs
+++ b/Test/TestIncrementalParser.hs
@@ -1,5 +1,5 @@
 {- 
-    Copyright 2011-2015 Mario Blazevic
+    Copyright 2011-2018 Mario Blazevic
 
     This file is part of the Streaming Component Combinators (SCC) project.
 
@@ -24,6 +24,7 @@
 import Control.Monad (MonadPlus, liftM, liftM2, mzero, mplus)
 import Data.List (find, minimumBy, nub, sort)
 import Data.Monoid (Monoid(..))
+import Data.Semigroup (Semigroup(..))
 import System.Environment (getArgs)
 
 import Test.Tasty.QuickCheck (Arbitrary(..), Gen, Property, property, (==>), (.&&.), forAll, oneof, resize, sized, whenFail)
@@ -57,13 +58,19 @@
 instance (Arbitrary r, Monoid r, Show r) => Arbitrary (TestParser a r) where
    arbitrary = fmap TestParser arbitrary
 
+instance Semigroup a => Semigroup (Described a) where
+   Described d1 p1 <> Described d2 p2 = Described (d1 ++ " <> " ++ d2) (p1 <> p2)
+
 instance Monoid a => Monoid (Described a) where
    mempty = Described "mempty" mempty
-   Described d1 p1 `mappend` Described d2 p2 = Described (d1 ++ " `mappend` " ++ d2) (mappend p1 p2)
+   mappend = (<>)
 
+instance Semigroup r => Semigroup (TestParser a r) where
+   TestParser d1 <> TestParser d2 = TestParser (d1 <> d2)
+
 instance Monoid r => Monoid (TestParser a r) where
    mempty = TestParser mempty
-   TestParser d1 `mappend` TestParser d2 = TestParser (d1 `mappend` d2)
+   mappend = (<>)
 
 instance EqProp a => EqProp (Described a) where
    Described _ x =-= Described _ y = x =-= y
@@ -271,6 +278,9 @@
 
 instance (Monoid r, Show r) => Show (Parser a [Bool] r) where
    show p = showWith (showBoolFun show) show p
+
+instance Semigroup Bool where
+   (<>) = (||)
 
 instance Monoid Bool where
    mempty = False
diff --git a/Text/ParserCombinators/Incremental.hs b/Text/ParserCombinators/Incremental.hs
--- a/Text/ParserCombinators/Incremental.hs
+++ b/Text/ParserCombinators/Incremental.hs
@@ -1,5 +1,5 @@
 {-
-    Copyright 2010-2015 Mario Blazevic
+    Copyright 2010-2018 Mario Blazevic
 
     This file is part of the Streaming Component Combinators (SCC) project.
 
@@ -50,7 +50,8 @@
 import Control.Applicative.Monoid(MonoidApplicative(..), MonoidAlternative(..))
 import Control.Monad (ap)
 import Data.Maybe (fromMaybe)
-import Data.Monoid (Monoid, mempty, mappend, (<>))
+import Data.Semigroup (Semigroup(..))
+import Data.Monoid (Monoid, mempty, mappend)
 import Data.Monoid.Cancellative (LeftReductiveMonoid (stripPrefix))
 import Data.Monoid.Factorial (FactorialMonoid (splitPrimePrefix), span)
 import Data.Monoid.Null (MonoidNull(null))
@@ -164,16 +165,19 @@
    p1 >< p2 | isInfallible p2 = appendIncremental p1 p2
             | otherwise       = append p1 p2
 
-appendIncremental :: (Monoid s, Monoid r) => Parser t s r -> Parser t s r -> Parser t s r
-appendIncremental (Result s r) p = resultPart (mappend r) (feed s p)
+appendIncremental :: (Monoid s, Semigroup r) => Parser t s r -> Parser t s r -> Parser t s r
+appendIncremental (Result s r) p = resultPart (<> r) (feed s p)
 appendIncremental (ResultPart r e f) p2 = ResultPart r (appendIncremental e p2) (flip appendIncremental p2 . f)
 appendIncremental p1 p2 = apply (`appendIncremental` p2) p1
 
-append :: (Monoid s, Monoid r) => Parser t s r -> Parser t s r -> Parser t s r
-append (Result s r) p2 = prepend (mappend r) (feed s p2)
+append :: (Monoid s, Semigroup r) => Parser t s r -> Parser t s r -> Parser t s r
+append (Result s r) p2 = prepend (<> r) (feed s p2)
 append p1 p2 = apply (`append` p2) p1
 
 -- | Two parsers can be sequentially joined.
+instance (Monoid s, Semigroup r) => Semigroup (Parser t s r) where
+   (<>) = (><)
+
 instance (Monoid s, Monoid r) => Monoid (Parser t s r) where
    mempty = return mempty
    mappend = (><)
diff --git a/incremental-parser.cabal b/incremental-parser.cabal
--- a/incremental-parser.cabal
+++ b/incremental-parser.cabal
@@ -1,5 +1,5 @@
 Name:                incremental-parser
-Version:             0.2.5.4
+Version:             0.3
 Cabal-Version:       >= 1.10
 Build-Type:          Simple
 Synopsis:            Generic parser library capable of providing partial results from partial input.
@@ -28,7 +28,7 @@
   Exposed-Modules:   Text.ParserCombinators.Incremental,
                      Text.ParserCombinators.Incremental.LeftBiasedLocal, Text.ParserCombinators.Incremental.Symmetric,
                      Control.Applicative.Monoid
-  Build-Depends:     base < 4.11, monoid-subclasses < 0.5
+  Build-Depends:     base < 5, monoid-subclasses < 0.5
   if impl(ghc >= 7.0.0)
      default-language: Haskell2010
 
@@ -36,7 +36,7 @@
   Type:              exitcode-stdio-1.0
   x-uses-tf:         true
   Default-Language:  Haskell2010
-  Build-Depends:     base < 4.11, monoid-subclasses < 0.5,
+  Build-Depends:     base < 5, monoid-subclasses < 0.5,
                      QuickCheck >= 2 && < 3, checkers >= 0.3.2 && < 0.5,
                      tasty >= 0.7 && < 1.1, tasty-quickcheck >= 0.7 && < 1.0
   Main-is:           Test/TestIncrementalParser.hs
@@ -50,5 +50,5 @@
   hs-source-dirs:    Benchmarks
   ghc-options:       -O2 -Wall -rtsopts
   main-is:           CSV.hs
-  Build-Depends:     base < 4.11, monoid-subclasses < 0.5, incremental-parser,
+  Build-Depends:     base < 5, monoid-subclasses < 0.5, incremental-parser,
                      bytestring >= 0.10.4.0, criterion >= 1.0, deepseq >= 1.1, text >= 1.1.1.0
