diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+2.3.0.1
+-------
+
+- Support GHC-8.6
+
 2.3
 ---
 
diff --git a/swagger2.cabal b/swagger2.cabal
--- a/swagger2.cabal
+++ b/swagger2.cabal
@@ -1,8 +1,9 @@
 cabal-version:       >=1.10
 name:                swagger2
-version:             2.3
+version:             2.3.0.1
 
 synopsis:            Swagger 2.0 data model
+category:            Web, Swagger
 description:
   This library is inteded to be used for decoding and encoding Swagger 2.0 API
   specifications as well as manipulating them.
@@ -16,14 +17,19 @@
 author:              Nickolay Kudasov
 maintainer:          nickolay@getshoptv.com
 copyright:           (c) 2015-2016, GetShopTV
-category:            Web, Swagger
 build-type:          Custom
 extra-source-files:
     README.md
   , CHANGELOG.md
   , examples/*.hs
   , include/overlapping-compat.h
-tested-with:         GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.2, GHC==8.4.3
+tested-with:
+  GHC ==7.8.4
+   || ==7.10.3
+   || ==8.0.2
+   || ==8.2.2
+   || ==8.4.3
+   || ==8.6.1
 
 custom-setup
   setup-depends:
@@ -53,12 +59,12 @@
 
   -- GHC boot libraries
   build-depends:
-      base             >=4.7     && <4.12
-    , bytestring       >=0.10.4  && <0.11
-    , containers       >=0.5.5.1 && <0.6
-    , template-haskell >=2.9.0.0 && <2.14
-    , time             >=1.4.2   && <1.9
-    , transformers     >=0.3.0.0 && <0.6
+      base             >=4.7      && <4.13
+    , bytestring       >=0.10.4.0 && <0.11
+    , containers       >=0.5.5.1  && <0.7
+    , template-haskell >=2.9.0.0  && <2.15
+    , time             >=1.4.2    && <1.9
+    , transformers     >=0.3.0.0  && <0.6
 
   build-depends:
       mtl              >=2.1     && <2.3
@@ -66,18 +72,18 @@
 
   -- other dependencies
   build-depends:
-      base-compat-batteries     >=0.10.1   && <0.11
-    , aeson                     >=1.0.0.0  && <1.5
+      base-compat-batteries     >=0.10.4   && <0.11
+    , aeson                     >=1.3.1.1  && <1.5
     , generics-sop              >=0.3.2.0  && <0.4
     , hashable                  >=1.2.7.0  && <1.3
     , http-media                >=0.7.1.2  && <0.8
-    , insert-ordered-containers >=0.1.0.0  && <0.3
+    , insert-ordered-containers >=0.2.1.0  && <0.3
     , lens                      >=4.16.1   && <4.18
     , network                   >=2.6.3.5  && <2.8
-    , scientific                >=0.3.5.3  && <0.4
+    , scientific                >=0.3.6.2  && <0.4
     , transformers-compat       >=0.3      && <0.7
     , unordered-containers      >=0.2.9.0  && <0.3
-    , uuid-types                >=1.0.2    && <1.1
+    , uuid-types                >=1.0.3    && <1.1
     , vector                    >=0.12.0.1 && <0.13
 
   default-language:    Haskell2010
@@ -100,6 +106,7 @@
     , insert-ordered-containers
     , lens
     , mtl
+    , template-haskell
     , text
     , time
     , unordered-containers
@@ -107,15 +114,15 @@
 
   -- test-suite only dependencies
   build-depends:
-      aeson-qq             >=0.8.2   && <0.9
-    , hspec                >=2.4.8   && <2.6
+      hspec                >=2.5.5   && <2.6
     , HUnit                >=1.6.0.0 && <1.7
-    , QuickCheck           >=2.10.1  && <2.12
-    , quickcheck-instances >=0.3.18  && <0.14
+    , QuickCheck           >=2.11.3  && <2.12
+    , quickcheck-instances >=0.3.19  && <0.14
+    , utf8-string          >=1.0.1.1 && <1.1
 
   -- https://github.com/haskell/cabal/issues/3708
   build-tool-depends:
-    hspec-discover:hspec-discover >=2.4.8 && <2.6
+    hspec-discover:hspec-discover >=2.5.5 && <2.6
 
   other-modules:
     SpecCommon
@@ -124,6 +131,8 @@
     Data.Swagger.ParamSchemaSpec
     Data.Swagger.SchemaSpec
     Data.Swagger.Schema.ValidationSpec
+
+    Data.Aeson.QQ.Simple
   default-language: Haskell2010
 
 test-suite doctests
diff --git a/test/Data/Aeson/QQ/Simple.hs b/test/Data/Aeson/QQ/Simple.hs
new file mode 100644
--- /dev/null
+++ b/test/Data/Aeson/QQ/Simple.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE TemplateHaskell #-}
+-- | Like "Data.Aeson.QQ" but without interpolation.
+module Data.Aeson.QQ.Simple where
+
+import           Data.Aeson
+import           Data.ByteString.Lazy.UTF8  as UTF8
+import qualified Data.HashMap.Strict        as HM
+import qualified Data.Text                  as T
+import qualified Data.Vector                as V
+import           Language.Haskell.TH
+import           Language.Haskell.TH.Quote
+import           Language.Haskell.TH.Syntax (Lift (..))
+import           Prelude                    ()
+import           Prelude.Compat
+
+aesonQQ :: QuasiQuoter
+aesonQQ = QuasiQuoter
+    { quoteExp  = aesonExp
+    , quotePat  = const $ error "No quotePat defined for jsonQQ"
+    , quoteType = const $ error "No quoteType defined for jsonQQ"
+    , quoteDec  = const $ error "No quoteDec defined for jsonQQ"
+    }
+
+aesonExp :: String -> ExpQ
+aesonExp txt =
+  case eitherDecode $ UTF8.fromString txt of
+    Left err  -> error $ "Error in aesonExp: " ++ show err
+    Right val -> liftValue val
+
+liftValue :: Value -> ExpQ
+liftValue (String str) = [| String $(liftText str) |]
+liftValue Null         = [| Null |]
+liftValue (Number n)   = [| Number (fromRational $(return $ LitE $ RationalL (toRational n))) |]
+liftValue (Bool b)     = [| Bool b |]
+liftValue (Array arr)  = [| Array $ V.fromList $(ListE <$> traverse liftValue (V.toList arr)) |]
+liftValue (Object obj) = [| object $jsList |]
+    where
+      jsList :: ExpQ
+      jsList = ListE <$> traverse objs2list (HM.toList obj)
+
+      objs2list :: (T.Text, Value) -> ExpQ
+      objs2list (key, value) =  [| ($(liftText key), $(liftValue value)) |]
+
+liftText :: T.Text -> ExpQ
+liftText t = [| T.pack $(lift $ T.unpack t) |]
diff --git a/test/Data/Swagger/CommonTestTypes.hs b/test/Data/Swagger/CommonTestTypes.hs
--- a/test/Data/Swagger/CommonTestTypes.hs
+++ b/test/Data/Swagger/CommonTestTypes.hs
@@ -8,7 +8,7 @@
 import           Prelude.Compat
 
 import           Data.Aeson            (ToJSON (..), ToJSONKey (..), Value)
-import           Data.Aeson.QQ
+import           Data.Aeson.QQ.Simple
 import           Data.Aeson.Types      (toJSONKeyText)
 import           Data.Char
 import           Data.Map              (Map)
diff --git a/test/Data/Swagger/ParamSchemaSpec.hs b/test/Data/Swagger/ParamSchemaSpec.hs
--- a/test/Data/Swagger/ParamSchemaSpec.hs
+++ b/test/Data/Swagger/ParamSchemaSpec.hs
@@ -6,7 +6,7 @@
 module Data.Swagger.ParamSchemaSpec where
 
 import Data.Aeson (Value)
-import Data.Aeson.QQ
+import Data.Aeson.QQ.Simple
 import Data.Char
 import Data.Proxy
 import GHC.Generics
diff --git a/test/Data/Swagger/SchemaSpec.hs b/test/Data/Swagger/SchemaSpec.hs
--- a/test/Data/Swagger/SchemaSpec.hs
+++ b/test/Data/Swagger/SchemaSpec.hs
@@ -10,7 +10,7 @@
 import Control.Lens ((^.))
 import Data.Aeson (Value, ToJSON(..), ToJSONKey(..))
 import Data.Aeson.Types (toJSONKeyText)
-import Data.Aeson.QQ
+import Data.Aeson.QQ.Simple
 import Data.Char
 import qualified Data.HashMap.Strict.InsOrd as InsOrdHashMap
 import Data.Proxy
diff --git a/test/Data/SwaggerSpec.hs b/test/Data/SwaggerSpec.hs
--- a/test/Data/SwaggerSpec.hs
+++ b/test/Data/SwaggerSpec.hs
@@ -10,7 +10,7 @@
 import Control.Lens
 
 import Data.Aeson
-import Data.Aeson.QQ
+import Data.Aeson.QQ.Simple
 import Data.HashMap.Strict (HashMap)
 import qualified Data.Set as Set
 import Data.Text (Text)
