diff --git a/example/IDP/Auth0.hs b/example/IDP/Auth0.hs
--- a/example/IDP/Auth0.hs
+++ b/example/IDP/Auth0.hs
@@ -17,7 +17,7 @@
 import Utils
 
 data Auth0 = Auth0
-  deriving (Show, Generic)
+  deriving (Show, Generic, Eq)
 
 instance Hashable Auth0
 
diff --git a/example/IDP/AzureAD.hs b/example/IDP/AzureAD.hs
--- a/example/IDP/AzureAD.hs
+++ b/example/IDP/AzureAD.hs
@@ -15,7 +15,7 @@
 import           URI.ByteString.QQ
 import           Utils
 
-data AzureAD = AzureAD deriving (Show, Generic)
+data AzureAD = AzureAD deriving (Show, Generic, Eq)
 
 instance Hashable AzureAD
 
diff --git a/example/IDP/Douban.hs b/example/IDP/Douban.hs
--- a/example/IDP/Douban.hs
+++ b/example/IDP/Douban.hs
@@ -15,7 +15,7 @@
 import           URI.ByteString.QQ
 import           Utils
 
-data Douban = Douban deriving (Show, Generic)
+data Douban = Douban deriving (Show, Generic, Eq)
 
 instance Hashable Douban
 
diff --git a/example/IDP/Dropbox.hs b/example/IDP/Dropbox.hs
--- a/example/IDP/Dropbox.hs
+++ b/example/IDP/Dropbox.hs
@@ -16,7 +16,7 @@
 import           URI.ByteString.QQ
 import           Utils
 
-data Dropbox = Dropbox deriving (Show, Generic)
+data Dropbox = Dropbox deriving (Show, Generic, Eq)
 
 instance Hashable Dropbox
 
diff --git a/example/IDP/Facebook.hs b/example/IDP/Facebook.hs
--- a/example/IDP/Facebook.hs
+++ b/example/IDP/Facebook.hs
@@ -15,7 +15,7 @@
 import           URI.ByteString.QQ
 import           Utils
 
-data Facebook = Facebook deriving (Show, Generic)
+data Facebook = Facebook deriving (Show, Generic, Eq)
 
 instance Hashable Facebook
 
diff --git a/example/IDP/Fitbit.hs b/example/IDP/Fitbit.hs
--- a/example/IDP/Fitbit.hs
+++ b/example/IDP/Fitbit.hs
@@ -17,7 +17,7 @@
 import           Utils
 
 
-data Fitbit = Fitbit deriving (Show, Generic)
+data Fitbit = Fitbit deriving (Show, Generic, Eq)
 
 instance Hashable Fitbit
 
diff --git a/example/IDP/Github.hs b/example/IDP/Github.hs
--- a/example/IDP/Github.hs
+++ b/example/IDP/Github.hs
@@ -15,7 +15,7 @@
 import           URI.ByteString.QQ
 import           Utils
 
-data Github = Github deriving (Show, Generic)
+data Github = Github deriving (Show, Generic, Eq)
 
 instance Hashable Github
 
diff --git a/example/IDP/Google.hs b/example/IDP/Google.hs
--- a/example/IDP/Google.hs
+++ b/example/IDP/Google.hs
@@ -15,7 +15,7 @@
 import           URI.ByteString.QQ
 import           Utils
 
-data Google = Google deriving (Show, Generic)
+data Google = Google deriving (Show, Generic, Eq)
 
 instance Hashable Google
 
diff --git a/example/IDP/Linkedin.hs b/example/IDP/Linkedin.hs
--- a/example/IDP/Linkedin.hs
+++ b/example/IDP/Linkedin.hs
@@ -19,7 +19,7 @@
 
 data LinkedinUser = LinkedinUser { firstName :: Text
                                  , lastName  :: Text
-                                 } deriving (Show, Generic)
+                                 } deriving (Show, Generic, Eq)
 
 instance FromJSON LinkedinUser where
     parseJSON = genericParseJSON defaultOptions
diff --git a/example/IDP/Okta.hs b/example/IDP/Okta.hs
--- a/example/IDP/Okta.hs
+++ b/example/IDP/Okta.hs
@@ -17,7 +17,7 @@
 import Utils
 
 data Okta = Okta
-  deriving (Show, Generic)
+  deriving (Show, Generic, Eq)
 
 instance Hashable Okta
 
diff --git a/example/IDP/Slack.hs b/example/IDP/Slack.hs
--- a/example/IDP/Slack.hs
+++ b/example/IDP/Slack.hs
@@ -17,7 +17,7 @@
 import Utils
 
 data Slack = Slack
-  deriving (Show, Generic)
+  deriving (Show, Generic, Eq)
 
 instance Hashable Slack
 
diff --git a/example/IDP/StackExchange.hs b/example/IDP/StackExchange.hs
--- a/example/IDP/StackExchange.hs
+++ b/example/IDP/StackExchange.hs
@@ -23,7 +23,7 @@
 import           URI.ByteString.QQ
 import           Utils
 
-data StackExchange = StackExchange deriving (Show, Generic)
+data StackExchange = StackExchange deriving (Show, Generic, Eq)
 
 instance Hashable StackExchange
 
diff --git a/example/IDP/Weibo.hs b/example/IDP/Weibo.hs
--- a/example/IDP/Weibo.hs
+++ b/example/IDP/Weibo.hs
@@ -18,7 +18,7 @@
 import URI.ByteString.QQ
 import Utils
 
-data Weibo = Weibo deriving (Show, Generic)
+data Weibo = Weibo deriving (Show, Generic, Eq)
 
 instance Hashable Weibo
 
diff --git a/example/IDP/ZOHO.hs b/example/IDP/ZOHO.hs
--- a/example/IDP/ZOHO.hs
+++ b/example/IDP/ZOHO.hs
@@ -15,7 +15,7 @@
 import           URI.ByteString.QQ
 import           Utils
 
-data ZOHO = ZOHO deriving (Show, Generic)
+data ZOHO = ZOHO deriving (Show, Generic, Eq)
 
 instance Hashable ZOHO
 
diff --git a/hoauth2.cabal b/hoauth2.cabal
--- a/hoauth2.cabal
+++ b/hoauth2.cabal
@@ -1,7 +1,7 @@
 Cabal-version: 2.4
 Name:                hoauth2
 -- http://wiki.haskell.org/Package_versioning_policy
-Version:             2.0.0
+Version:             2.1.0
 
 Synopsis:            Haskell OAuth2 authentication client
 
@@ -34,7 +34,7 @@
 Category:            Network
 Build-type:          Simple
 Stability:           Beta
-Tested-With:         GHC <= 8.6.5
+Tested-With:         GHC <= 8.10.7
 
 Extra-source-files: README.md
                     example/Keys.hs.sample
@@ -82,7 +82,7 @@
                  bytestring           >= 0.9   && < 0.11,
                  http-conduit         >= 2.1   && < 2.4,
                  http-types           >= 0.11   && < 0.13,
-                 aeson                >= 1.3.0.0 && < 1.6,
+                 aeson                >= 2.0 && < 2.1,
                  unordered-containers >= 0.2.5,
                  uri-bytestring       >= 0.2.3.1 && < 0.4,
                  uri-bytestring-aeson >= 0.1   && < 0.2,
@@ -131,11 +131,11 @@
                        http-types        >= 0.11    && < 0.13,
                        wai               >= 3.2    && < 3.3,
                        warp              >= 3.2    && < 3.4,
-                       aeson             >= 1.3.0.0 && < 1.6,
+                       aeson             >= 2.0 && < 2.1,
                        microlens            >= 0.4.0 && < 0.5,
                        unordered-containers >= 0.2.5,
                        wai-middleware-static >= 0.8.1 && < 0.10.0,
-                       mustache >= 2.2.3 && < 2.4.0,
+                       mustache >= 2.2.3 && < 2.5.0,
                        scotty >= 0.10.0 && < 0.13,
                        binary >= 0.8.3.0 && < 0.8.9,
                        parsec >= 3.1.11 && < 3.2.0 ,
diff --git a/src/Network/OAuth/OAuth2/HttpClient.hs b/src/Network/OAuth/OAuth2/HttpClient.hs
--- a/src/Network/OAuth/OAuth2/HttpClient.hs
+++ b/src/Network/OAuth/OAuth2/HttpClient.hs
@@ -22,11 +22,12 @@
   authRequest
 ) where
 
+import qualified Data.Aeson.KeyMap as KeyMap
+import           qualified Data.Aeson.Key as Key
 import           Data.Aeson
 import           Data.Bifunctor                    (first)
 import qualified Data.ByteString.Char8             as BS
 import qualified Data.ByteString.Lazy.Char8        as BSL
-import qualified Data.HashMap.Strict               as HM (fromList)
 import           Data.Maybe
 import qualified Data.Text.Encoding                as T
 import           Network.HTTP.Conduit
@@ -153,8 +154,8 @@
                                     Error _   -> Left errorMessage
                                     Success x -> Right x
   where
-    queryToValue = Object . HM.fromList . map paramToPair
-    paramToPair (k, mv) = (T.decodeUtf8 k, maybe Null (String . T.decodeUtf8) mv)
+    queryToValue = Object . KeyMap.fromList . map paramToPair
+    paramToPair (k, mv) = (Key.fromText $T.decodeUtf8 k, maybe Null (String . T.decodeUtf8) mv)
     errorMessage = parseOAuth2Error b
 
 --------------------------------------------------
