diff --git a/Text/Pandoc/Builder.hs b/Text/Pandoc/Builder.hs
--- a/Text/Pandoc/Builder.hs
+++ b/Text/Pandoc/Builder.hs
@@ -213,12 +213,9 @@
 type Inlines = Many Inline
 type Blocks  = Many Block
 
-#if MIN_VERSION_base(4,9,0)
 deriving instance Semigroup Blocks
-#endif
 deriving instance Monoid Blocks
 
-#if MIN_VERSION_base(4,9,0)
 instance Semigroup Inlines where
   (Many xs) <> (Many ys) =
     case (viewr xs, viewl ys) of
@@ -244,31 +241,6 @@
 instance Monoid Inlines where
   mempty = Many mempty
   mappend = (<>)
-#else
-instance Monoid Inlines where
-  mempty = Many mempty
-  (Many xs) `mappend` (Many ys) =
-    case (viewr xs, viewl ys) of
-      (EmptyR, _) -> Many ys
-      (_, EmptyL) -> Many xs
-      (xs' :> x, y :< ys') -> Many (meld `mappend` ys')
-        where meld = case (x, y) of
-                          (Space, Space)     -> xs' |> Space
-                          (Space, SoftBreak) -> xs' |> SoftBreak
-                          (SoftBreak, Space) -> xs' |> SoftBreak
-                          (Str t1, Str t2)   -> xs' |> Str (t1 <> t2)
-                          (Emph i1, Emph i2) -> xs' |> Emph (i1 <> i2)
-                          (Strong i1, Strong i2) -> xs' |> Strong (i1 <> i2)
-                          (Subscript i1, Subscript i2) -> xs' |> Subscript (i1 <> i2)
-                          (Superscript i1, Superscript i2) -> xs' |> Superscript (i1 <> i2)
-                          (Strikeout i1, Strikeout i2) -> xs' |> Strikeout (i1 <> i2)
-                          (Space, LineBreak) -> xs' |> LineBreak
-                          (LineBreak, Space) -> xs' |> LineBreak
-                          (SoftBreak, LineBreak) -> xs' |> LineBreak
-                          (LineBreak, SoftBreak) -> xs' |> LineBreak
-                          (SoftBreak, SoftBreak) -> xs' |> SoftBreak
-                          _                  -> xs' |> x |> y
-#endif
 
 instance IsString Inlines where
    fromString = text
diff --git a/Text/Pandoc/Definition.hs b/Text/Pandoc/Definition.hs
--- a/Text/Pandoc/Definition.hs
+++ b/Text/Pandoc/Definition.hs
@@ -90,32 +90,22 @@
 #endif
 import Paths_pandoc_types (version)
 import Data.Version (Version, versionBranch)
-#if MIN_VERSION_base(4,9,0)
 import Data.Semigroup
-#endif
 
 data Pandoc = Pandoc Meta [Block]
               deriving (Eq, Ord, Read, Show, Typeable, Data, Generic)
 
-#if MIN_VERSION_base(4,9,0)
 instance Semigroup Pandoc where
   (Pandoc m1 bs1) <> (Pandoc m2 bs2) =
     Pandoc (m1 <> m2) (bs1 <> bs2)
 instance Monoid Pandoc where
   mempty = Pandoc mempty mempty
   mappend = (<>)
-#else
-instance Monoid Pandoc where
-  mempty = Pandoc mempty mempty
-  (Pandoc m1 bs1) `mappend` (Pandoc m2 bs2) =
-    Pandoc (m1 `mappend` m2) (bs1 `mappend` bs2)
-#endif
 
 -- | Metadata for the document:  title, authors, date.
 newtype Meta = Meta { unMeta :: M.Map String MetaValue }
                deriving (Eq, Ord, Show, Read, Typeable, Data, Generic)
 
-#if MIN_VERSION_base(4,9,0)
 instance Semigroup Meta where
   (Meta m1) <> (Meta m2) = Meta (M.union m1 m2)
   -- note: M.union is left-biased, so if there are fields in both m1
@@ -123,11 +113,6 @@
 instance Monoid Meta where
   mempty = Meta (M.empty)
   mappend = (<>)
-#else
-instance Monoid Meta where
-  mempty = Meta (M.empty)
-  (Meta m1) `mappend` (Meta m2) = Meta (M.union m1 m2)
-#endif
 
 data MetaValue = MetaMap (M.Map String MetaValue)
                | MetaList [MetaValue]
diff --git a/pandoc-types.cabal b/pandoc-types.cabal
--- a/pandoc-types.cabal
+++ b/pandoc-types.cabal
@@ -1,5 +1,5 @@
 Name:                pandoc-types
-Version:             1.17.4
+Version:             1.17.4.1
 Synopsis:            Types for representing a structured document
 Description:         @Text.Pandoc.Definition@ defines the 'Pandoc' data
                      structure, which is used by pandoc to represent
@@ -54,6 +54,8 @@
                      aeson >= 0.6.2 && < 1.4,
                      transformers >= 0.2 && < 0.6,
                      QuickCheck >= 2
+  if !impl(ghc >= 8.0)
+    Build-depends:   semigroups == 0.18.*
   if impl(ghc < 7.10)
     Build-depends:   deepseq-generics >= 0.1 && < 0.2
   else
