diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+0.10
+----
+
+There are no changes. Released as a part of `servant` suite.
+
 0.7.1
 -----
 
diff --git a/servant-docs.cabal b/servant-docs.cabal
--- a/servant-docs.cabal
+++ b/servant-docs.cabal
@@ -1,5 +1,5 @@
 name:                servant-docs
-version:             0.9.1.1
+version:             0.10
 synopsis:            generate API docs for your servant webservice
 description:
   Library for generating API docs from a servant API definition.
@@ -12,7 +12,7 @@
 author:              Servant Contributors
 maintainer:          haskell-servant-maintainers@googlegroups.com
 copyright:           2014-2016 Zalora South East Asia Pte Ltd, Servant Contributors
-category:            Web
+category:            Servant Web
 build-type:          Simple
 cabal-version:       >=1.10
 tested-with:         GHC >= 7.8
@@ -33,6 +33,7 @@
     , Servant.Docs.Internal.Pretty
   build-depends:
       base >=4.7 && <5
+    , base-compat >= 0.9.1 && <0.10
     , aeson
     , aeson-pretty
     , bytestring
@@ -41,11 +42,14 @@
     , http-media >= 0.6
     , http-types >= 0.7
     , lens
-    , servant == 0.9.*
+    , servant == 0.10.*
     , string-conversions
     , text
     , unordered-containers
     , control-monad-omega == 0.3.*
+  if !impl(ghc >= 8.0)
+    build-depends:
+      semigroups          >=0.16.2.2 && <0.19
   hs-source-dirs: src
   default-language: Haskell2010
   ghc-options: -Wall
diff --git a/src/Servant/Docs/Internal.hs b/src/Servant/Docs/Internal.hs
--- a/src/Servant/Docs/Internal.hs
+++ b/src/Servant/Docs/Internal.hs
@@ -20,6 +20,8 @@
 #include "overlapping-compat.h"
 module Servant.Docs.Internal where
 
+import           Prelude ()
+import           Prelude.Compat
 import           Control.Applicative
 import           Control.Arrow              (second)
 import           Control.Lens               (makeLenses, mapped, over, traversed, view, (%~),
@@ -30,19 +32,19 @@
 import qualified Data.CaseInsensitive       as CI
 import           Data.Hashable              (Hashable)
 import           Data.HashMap.Strict        (HashMap)
-import           Data.List
+import           Data.List.Compat           (intercalate, intersperse, sort)
 import           Data.Maybe
-import           Data.Monoid
+import           Data.Monoid                (All (..), Any (..), Sum (..), Product (..), First (..), Last (..), Dual (..))
+import           Data.Semigroup             (Semigroup (..))
 import           Data.Ord                   (comparing)
 import           Data.Proxy                 (Proxy(Proxy))
 import           Data.String.Conversions    (cs)
 import           Data.Text                  (Text, unpack)
-import           GHC.Exts                   (Constraint)
 import           GHC.Generics
 import           GHC.TypeLits
 import           Servant.API
 import           Servant.API.ContentTypes
-import           Servant.Utils.Links
+import           Servant.API.TypeLevel
 
 import qualified Data.HashMap.Strict        as HM
 import qualified Data.Text                  as T
@@ -103,8 +105,11 @@
   , _apiEndpoints :: HashMap Endpoint Action
   } deriving (Eq, Show)
 
+instance Semigroup API where
+    (<>) = mappend
+
 instance Monoid API where
-    API a1 b1 `mappend` API a2 b2 = API (a1 <> a2) (b1 <> b2)
+    API a1 b1 `mappend` API a2 b2 = API (a1 `mappend` a2) (b1 `mappend` b2)
     mempty = API mempty mempty
 
 -- | An empty 'API'
@@ -163,6 +168,8 @@
 -- These are intended to be built using extraInfo.
 -- Multiple ExtraInfo may be combined with the monoid instance.
 newtype ExtraInfo api = ExtraInfo (HashMap Endpoint Action)
+instance Semigroup (ExtraInfo a) where
+    (<>) = mappend
 instance Monoid (ExtraInfo a) where
     mempty = ExtraInfo mempty
     ExtraInfo a `mappend` ExtraInfo b =
@@ -305,15 +312,6 @@
 -- | Generate the docs for a given API that implements 'HasDocs'.
 docsWithOptions :: HasDocs api => Proxy api -> DocOptions -> API
 docsWithOptions p = docsFor p (defEndpoint, defAction)
-
--- | Closed type family, check if endpoint is exactly within API.
-
--- We aren't sure what affects how an Endpoint is built up, so we require an
--- exact match.
-type family IsIn (endpoint :: *) (api :: *) :: Constraint where
-    IsIn e (sa :<|> sb)                = Or (IsIn e sa) (IsIn e sb)
-    IsIn (e :> sa) (e :> sb)           = IsIn sa sb
-    IsIn e e                           = ()
 
 -- | Create an 'ExtraInfo' that is guaranteed to be within the given API layout.
 --
