diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
 # Changelog
 
+- 0.7.2.0 (2018-05-08)
+    * GHC 8.4 compatibility
+
+- 0.7.1.0 (2018-05-08)
+    * GHC 8.4 compatibility
+
 - 0.7.0.0 (2018-05-04)
     * Support HTML-style comments
 
diff --git a/patat.cabal b/patat.cabal
--- a/patat.cabal
+++ b/patat.cabal
@@ -1,5 +1,5 @@
 Name:                patat
-Version:             0.7.0.0
+Version:             0.7.2.0
 Synopsis:            Terminal-based presentations using Pandoc
 Description:         Terminal-based presentations using Pandoc
 License:             GPL-2
@@ -35,7 +35,7 @@
     aeson                >= 0.9   && < 1.4,
     ansi-terminal        >= 0.6   && < 0.9,
     ansi-wl-pprint       >= 0.6   && < 0.7,
-    base                 >= 4.6   && < 4.11,
+    base                 >= 4.6   && < 5,
     bytestring           >= 0.10  && < 0.11,
     containers           >= 0.5   && < 0.6,
     directory            >= 1.2   && < 1.4,
@@ -54,6 +54,10 @@
     network-uri >= 2.6,
     network     >= 2.6
 
+  If impl(ghc < 8.0)
+    Build-depends:
+      semigroups >= 0.16 && < 0.19
+
   Other-modules:
     Data.Aeson.Extended
     Data.Aeson.TH.Extended
@@ -84,7 +88,7 @@
     Buildable: False
 
   Build-depends:
-    base   >= 4.6  && < 4.11,
+    base   >= 4.6  && < 5,
     mtl    >= 2.2  && < 2.3,
     pandoc >= 2.0  && < 2.3,
     text   >= 1.2  && < 1.3,
diff --git a/src/Patat/Presentation/Internal.hs b/src/Patat/Presentation/Internal.hs
--- a/src/Patat/Presentation/Internal.hs
+++ b/src/Patat/Presentation/Internal.hs
@@ -29,7 +29,8 @@
 import qualified Data.Foldable          as Foldable
 import           Data.List              (intercalate)
 import           Data.Maybe             (listToMaybe)
-import           Data.Monoid            (Monoid (..), (<>))
+import           Data.Monoid            (Monoid (..))
+import           Data.Semigroup         (Semigroup (..))
 import qualified Data.Text              as T
 import qualified Patat.Theme            as Theme
 import           Prelude
@@ -64,11 +65,8 @@
 
 
 --------------------------------------------------------------------------------
-instance Monoid PresentationSettings where
-    mempty      = PresentationSettings
-                    Nothing Nothing Nothing Nothing Nothing Nothing Nothing
-                    Nothing
-    mappend l r = PresentationSettings
+instance Semigroup PresentationSettings where
+    l <> r = PresentationSettings
         { psRows             = psRows             l `mplus` psRows             r
         , psColumns          = psColumns          l `mplus` psColumns          r
         , psWrap             = psWrap             l `mplus` psWrap             r
@@ -79,7 +77,14 @@
         , psPandocExtensions = psPandocExtensions l `mplus` psPandocExtensions r
         }
 
+--------------------------------------------------------------------------------
+instance Monoid PresentationSettings where
+    mappend = (<>)
+    mempty  = PresentationSettings
+                    Nothing Nothing Nothing Nothing Nothing Nothing Nothing
+                    Nothing
 
+
 --------------------------------------------------------------------------------
 defaultPresentationSettings :: PresentationSettings
 defaultPresentationSettings = PresentationSettings
@@ -123,7 +128,7 @@
 --------------------------------------------------------------------------------
 defaultExtensionList :: ExtensionList
 defaultExtensionList = ExtensionList $
-    Pandoc.readerExtensions Pandoc.def <> Pandoc.extensionsFromList
+    Pandoc.readerExtensions Pandoc.def `mappend` Pandoc.extensionsFromList
     [ Pandoc.Ext_yaml_metadata_block
     , Pandoc.Ext_table_captions
     , Pandoc.Ext_simple_tables
@@ -156,7 +161,7 @@
 
 --------------------------------------------------------------------------------
 newtype Fragment = Fragment {unFragment :: [Pandoc.Block]}
-    deriving (Monoid, Show)
+    deriving (Monoid, Semigroup, Show)
 
 
 --------------------------------------------------------------------------------
diff --git a/src/Patat/PrettyPrint.hs b/src/Patat/PrettyPrint.hs
--- a/src/Patat/PrettyPrint.hs
+++ b/src/Patat/PrettyPrint.hs
@@ -45,13 +45,14 @@
 import           Control.Monad.Writer (tell)
 import           Data.Foldable        (Foldable)
 import qualified Data.List            as L
-import           Data.Monoid          (Monoid, mconcat, mempty, (<>))
+import           Data.Monoid          (Monoid, mconcat, mempty)
+import           Data.Semigroup       (Semigroup (..))
 import           Data.String          (IsString (..))
 import qualified Data.Text            as T
 import           Data.Traversable     (Traversable, traverse)
+import           Prelude              hiding (null)
 import qualified System.Console.ANSI  as Ansi
 import qualified System.IO            as IO
-import           Prelude              hiding (null)
 
 
 --------------------------------------------------------------------------------
@@ -130,7 +131,7 @@
 
 --------------------------------------------------------------------------------
 newtype Doc = Doc {unDoc :: [DocE]}
-    deriving (Monoid)
+    deriving (Monoid, Semigroup)
 
 
 --------------------------------------------------------------------------------
diff --git a/src/Patat/Theme.hs b/src/Patat/Theme.hs
--- a/src/Patat/Theme.hs
+++ b/src/Patat/Theme.hs
@@ -22,7 +22,8 @@
 import           Data.List              (intercalate, isSuffixOf)
 import qualified Data.Map               as M
 import           Data.Maybe             (mapMaybe, maybeToList)
-import           Data.Monoid            (Monoid (..), (<>))
+import           Data.Monoid            (Monoid (..))
+import           Data.Semigroup         (Semigroup (..))
 import qualified Data.Text              as T
 import           Prelude
 import qualified Skylighting            as Skylighting
@@ -59,13 +60,8 @@
 
 
 --------------------------------------------------------------------------------
-instance Monoid Theme where
-    mempty = Theme
-        Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing
-        Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing
-        Nothing Nothing Nothing Nothing Nothing
-
-    mappend l r = Theme
+instance Semigroup Theme where
+    l <> r = Theme
         { themeBorders            = mplusOn   themeBorders
         , themeHeader             = mplusOn   themeHeader
         , themeCodeBlock          = mplusOn   themeCodeBlock
@@ -96,11 +92,19 @@
 
 
 --------------------------------------------------------------------------------
+instance Monoid Theme where
+    mappend = (<>)
+    mempty  = Theme
+        Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing
+        Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing
+        Nothing Nothing Nothing Nothing Nothing
+
+--------------------------------------------------------------------------------
 defaultTheme :: Theme
 defaultTheme = Theme
     { themeBorders            = dull Ansi.Yellow
     , themeHeader             = dull Ansi.Blue
-    , themeCodeBlock          = dull Ansi.White <> ondull Ansi.Black
+    , themeCodeBlock          = dull Ansi.White `mappend` ondull Ansi.Black
     , themeBulletList         = dull Ansi.Magenta
     , themeBulletListMarkers  = Just "-*"
     , themeOrderedList        = dull Ansi.Magenta
@@ -111,15 +115,15 @@
     , themeTableSeparator     = dull Ansi.Magenta
     , themeLineBlock          = dull Ansi.Magenta
     , themeEmph               = dull Ansi.Green
-    , themeStrong             = dull Ansi.Red <> bold
-    , themeCode               = dull Ansi.White <> ondull Ansi.Black
+    , themeStrong             = dull Ansi.Red `mappend` bold
+    , themeCode               = dull Ansi.White `mappend` ondull Ansi.Black
     , themeLinkText           = dull Ansi.Green
-    , themeLinkTarget         = dull Ansi.Cyan <> underline
+    , themeLinkTarget         = dull Ansi.Cyan `mappend` underline
     , themeStrikeout          = ondull Ansi.Red
     , themeQuoted             = dull Ansi.Green
     , themeMath               = dull Ansi.Green
     , themeImageText          = dull Ansi.Green
-    , themeImageTarget        = dull Ansi.Cyan <> underline
+    , themeImageTarget        = dull Ansi.Cyan `mappend` underline
     , themeSyntaxHighlighting = Just defaultSyntaxHighlighting
     }
   where
@@ -131,7 +135,7 @@
 
 --------------------------------------------------------------------------------
 newtype Style = Style {unStyle :: [Ansi.SGR]}
-    deriving (Monoid, Show)
+    deriving (Monoid, Semigroup, Show)
 
 
 --------------------------------------------------------------------------------
@@ -202,7 +206,7 @@
 --------------------------------------------------------------------------------
 newtype SyntaxHighlighting = SyntaxHighlighting
     { unSyntaxHighlighting :: M.Map String Style
-    } deriving (Monoid, Show, A.ToJSON)
+    } deriving (Monoid, Semigroup, Show, A.ToJSON)
 
 
 --------------------------------------------------------------------------------
