diff --git a/Setup.hs b/Setup.hs
deleted file mode 100644
--- a/Setup.hs
+++ /dev/null
@@ -1,2 +0,0 @@
-import Distribution.Simple
-main = defaultMain
diff --git a/hdocs.cabal b/hdocs.cabal
--- a/hdocs.cabal
+++ b/hdocs.cabal
@@ -1,5 +1,5 @@
 name:                hdocs
-version:             0.5.2.1
+version:             0.5.3.0
 synopsis:            Haskell docs tool
 description:
   Tool and library to get docs for installed packages and source files.
@@ -37,10 +37,15 @@
     HDocs.Module
   other-modules:
     HDocs.Ghc.Compat
+  if impl(ghc >= 8.3)
+    build-depends:
+      ghc >= 8.3,
+      haddock-api >= 2.20.0 && < 2.21.0,
+      haddock-library == 1.6.*
   if impl(ghc >= 8.2) && impl(ghc < 8.3)
     build-depends:
       ghc >= 8.2 && < 8.3,
-      haddock-api >= 2.18.0 && < 2.19.0,
+      haddock-api >= 2.18.0 && < 2.20.0,
       haddock-library == 1.4.*
   if impl(ghc >= 8.0) && impl(ghc < 8.2)
     build-depends:
diff --git a/src/HDocs/Ghc/Compat.hs b/src/HDocs/Ghc/Compat.hs
--- a/src/HDocs/Ghc/Compat.hs
+++ b/src/HDocs/Ghc/Compat.hs
@@ -34,7 +34,7 @@
 #endif
 
 unitId :: GHC.PackageConfig -> UnitId
-#if __GLASGOW_HASKELL__ == 802
+#if __GLASGOW_HASKELL__ >= 802
 unitId = GHC.packageConfigId
 #elif __GLASGOW_HASKELL__ == 800
 unitId = GHC.unitId
diff --git a/tools/hdocs.hs b/tools/hdocs.hs
--- a/tools/hdocs.hs
+++ b/tools/hdocs.hs
@@ -8,6 +8,7 @@
 import Data.ByteString.Lazy (toStrict)
 import qualified Data.Map as M
 import Data.Monoid (Monoid(..))
+import Data.Semigroup (Semigroup(..))
 import qualified Data.Text as T (unpack, pack)
 import qualified Data.Text.Encoding as T (decodeUtf8)
 import Documentation.Haddock (Flag(Flag_OptGhc))
@@ -23,6 +24,9 @@
 data HDocsOptions = HDocsOptions {
 	optionPretty :: Bool,
 	optionGHC :: [String] }
+
+instance Semigroup HDocsOptions where
+	l <> r = HDocsOptions (optionPretty l || optionPretty r) (optionGHC l ++ optionGHC r)
 
 instance Monoid HDocsOptions where
 	mempty = HDocsOptions False []
