diff --git a/BlogLiterately.cabal b/BlogLiterately.cabal
--- a/BlogLiterately.cabal
+++ b/BlogLiterately.cabal
@@ -1,5 +1,5 @@
 Name:           BlogLiterately
-Version:        0.8.6.2
+Version:        0.8.6.3
 Synopsis:       A tool for posting Haskelly articles to blogs
 Description:    Write blog posts in Markdown format, then use BlogLiterately
                 to do syntax highlighting, format ghci sessions, and upload
@@ -26,7 +26,7 @@
 Maintainer:     Brent Yorgey <byorgey@gmail.com>
 Stability:      experimental
 Build-Type:     Simple
-Tested-With:    GHC ==7.8.4, GHC ==7.10.3, GHC ==8.0.2, GHC ==8.2.2, GHC ==8.4.2
+Tested-With:    GHC ==8.0.2, GHC ==8.2.2, GHC ==8.4.4, GHC ==8.6.3
 Extra-Source-Files: CHANGES.md
                     README.markdown
                     doc/BlogLiteratelyDoc.lhs
@@ -39,7 +39,7 @@
   location: git://github.com/byorgey/BlogLiterately.git
 
 Library
-  Build-Depends:   base >= 4.0 && < 4.12,
+  Build-Depends:   base >= 4.0 && < 4.13,
                    process,
                    filepath,
                    directory,
@@ -48,7 +48,7 @@
                    bool-extras,
                    mtl,
                    text >= 1.2 && < 1.3,
-                   temporary >= 1.1 && < 1.3,
+                   temporary >= 1.1 && < 1.4,
                    strict >= 0.3 && < 0.4,
                    split >= 0.1.4 && < 0.3,
                    transformers >= 0.3 && < 0.6,
@@ -58,12 +58,12 @@
                    blaze-html >= 0.5 && < 0.10,
                    cmdargs >= 0.9.5 && < 0.11,
                    haxr >= 3000.11 && < 3000.12,
-                   pandoc >= 2.0 && < 2.3,
+                   pandoc >= 2.0 && < 2.8,
                    pandoc-types >= 1.16 && < 1.20,
-                   pandoc-citeproc >= 0.1.2 && < 0.15,
+                   pandoc-citeproc >= 0.1.2 && < 0.17,
                    highlighting-kate >= 0.5 && < 0.7,
                    data-default >= 0.5 && < 0.8,
-                   lens >= 3.8 && < 4.17,
+                   lens >= 3.8 && < 4.18,
                    tagsoup >= 0.13.4 && < 0.15,
                    HTTP >= 4000.3 && < 4000.4
   Exposed-modules: Text.BlogLiterately
diff --git a/CHANGES.md b/CHANGES.md
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,10 @@
+0.8.6.3 (4 March 2019)
+----------------------
+
+  - Support for GHC 8.6 (`base-4.12`)
+  - Allow `temporary-1.3`, `pandoc-citeproc-0.16`, `pandoc-2.7`, `lens-4.17`
+  - Drop support for GHC < 8
+
 0.8.6.2 (8 June 2018)
 ---------------------
 
diff --git a/src/Text/BlogLiterately/Options.hs b/src/Text/BlogLiterately/Options.hs
--- a/src/Text/BlogLiterately/Options.hs
+++ b/src/Text/BlogLiterately/Options.hs
@@ -79,7 +79,7 @@
 import           Control.Lens                  (makeLenses, view)
 import           Control.Monad                 (mplus)
 import           Data.Maybe                    (fromMaybe)
-import           Data.Monoid
+import qualified Data.Semigroup                as Semi
 import           Data.Version
 import           Paths_BlogLiterately          (version)
 
@@ -133,6 +133,38 @@
 
 makeLenses ''BlogLiterately
 
+instance Semi.Semigroup BlogLiterately where
+  bl1 <> bl2 =
+    BlogLiterately
+    { _style          = combine _style
+    , _hsHighlight    = combine _hsHighlight
+    , _otherHighlight = combine _otherHighlight
+    , _litHaskell     = combine _litHaskell
+    , _toc            = combine _toc
+    , _rawlatex       = combine _rawlatex
+    , _wplatex        = combine _wplatex
+    , _math           = combine _math
+    , _ghci           = combine _ghci
+    , _uploadImages   = combine _uploadImages
+    , _categories     = combine _categories
+    , _tags           = combine _tags
+    , _blogid         = combine _blogid
+    , _profile        = combine _profile
+    , _blog           = combine _blog
+    , _user           = combine _user
+    , _password       = combine _password
+    , _title          = combine _title
+    , _file           = combine _file
+    , _format         = combine _format
+    , _postid         = combine _postid
+    , _page           = combine _page
+    , _publish        = combine _publish
+    , _htmlOnly       = combine _htmlOnly
+    , _citations      = combine _citations
+    , _xtra           = combine _xtra
+    }
+    where combine f = f bl1 `mplus` f bl2
+
 instance Monoid BlogLiterately where
   mempty =
     BlogLiterately
@@ -164,36 +196,7 @@
     , _xtra           = []
     }
 
-  mappend bl1 bl2 =
-    BlogLiterately
-    { _style          = combine _style
-    , _hsHighlight    = combine _hsHighlight
-    , _otherHighlight = combine _otherHighlight
-    , _litHaskell     = combine _litHaskell
-    , _toc            = combine _toc
-    , _rawlatex       = combine _rawlatex
-    , _wplatex        = combine _wplatex
-    , _math           = combine _math
-    , _ghci           = combine _ghci
-    , _uploadImages   = combine _uploadImages
-    , _categories     = combine _categories
-    , _tags           = combine _tags
-    , _blogid         = combine _blogid
-    , _profile        = combine _profile
-    , _blog           = combine _blog
-    , _user           = combine _user
-    , _password       = combine _password
-    , _title          = combine _title
-    , _file           = combine _file
-    , _format         = combine _format
-    , _postid         = combine _postid
-    , _page           = combine _page
-    , _publish        = combine _publish
-    , _htmlOnly       = combine _htmlOnly
-    , _citations      = combine _citations
-    , _xtra           = combine _xtra
-    }
-    where combine f = f bl1 `mplus` f bl2
+  mappend = (Semi.<>)
 
 --------------------------------------------------
 -- Default accessors
