diff --git a/src/Control/Applicative/Interleaved.hs b/src/Control/Applicative/Interleaved.hs
--- a/src/Control/Applicative/Interleaved.hs
+++ b/src/Control/Applicative/Interleaved.hs
@@ -27,6 +27,7 @@
 
 -- import Text.ParserCombinators.UU.Core
 import Control.Applicative
+import Data.Semigroup as Sem
 #if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 710
 import Data.Monoid hiding (Alt)
 #else
@@ -54,10 +55,18 @@
   getPure       :: f a  -> Maybe     a
 
 -- * Grammars can be used as a monoid using the <||> combinator to combine them and (.) for composing  results
+-- Split up into Monoid + Semigroup for GHC 8.4, see
+-- <https://prime.haskell.org/wiki/Libraries/Proposals/SemigroupMonoid#Writingcompatiblecode>
+instance Functor f => Sem.Semigroup (Gram f (r -> r)) where
+  p <> q = (.) <$> p <||> q
 
 instance Functor f => Monoid (Gram f (r -> r)) where
-  mappend p q = (.) <$> p <||> q
   mempty      = empty
+#if !(MIN_VERSION_base(4,11,0))
+  -- this is redundant starting with base-4.11 / GHC 8.4
+  -- if you want to avoid CPP, you can define `mappend = (<>)` unconditionally
+  mappend = (<>)
+#endif
 
 instance (Show a) => Show (Gram f a) where
   show (Gram l ma) = "Gram " ++ show  (length l) ++ " " ++ show ma 
diff --git a/uu-interleaved.cabal b/uu-interleaved.cabal
--- a/uu-interleaved.cabal
+++ b/uu-interleaved.cabal
@@ -1,5 +1,5 @@
 Name:                uu-interleaved
-Version:             0.2.0.0
+Version:             0.2.0.1
 Build-Type:          Simple
 License:             MIT
 Copyright:           S Doaitse Swierstra 
@@ -7,16 +7,21 @@
 Author:              Doaitse Swierstra, Utrecht University
 Maintainer:          Doaitse Swierstra      
 Stability:           stable, but evolving
-Homepage:            http://www.cs.uu.nl/wiki/bin/view/HUT/ParserCombinators
+Homepage:            https://github.com/UU-ComputerScience/uu-interleaved
 Bug-reports:         mailto:doaitse@swierstra.net      
-Synopsis:            Providing an interleaving combinator for use with applicative/alternative style implementations.
-Description:         This module contains parser library independent code which can be used to describe inlerleaved execution of applicative style structures. 
-                     It is amongst other used in the uu-options package, which provides facilities for parsing command-line options or files containing preferences. 
-                     It generalises the permuting parsers and the list merging parsers as e.g. found in the uulib library. For  a more complete description see the Technical Report 
-                     describing its implementation and use see http://www.cs.uu.nl/research/techreps/UU-CS-2013-005.html
-Category:            Control, Applicative, Parsing, Text
+Synopsis:            Providing an interleaving combinator for use with applicative style implementations.
+Description:         This module contains parser library independent code which can be used to describe
+                     interleaved execution of applicative style structures. 
+                     It is amongst other used in the uu-options package, which provides facilities for
+                     parsing command-line options or files containing preferences. 
+                     It generalises the permuting parsers and the list merging parsers as e.g. found in
+                     the uulib library. For  a more complete description see the Technical Report 
+                     describing its implementation and use see
+                     http://www.cs.uu.nl/research/techreps/UU-CS-2013-005.html
 
 cabal-version:       >= 1.6
+
+Category:            Control, Applicative, Parsing, Text
 
 source-repository head
      type: svn
