diff --git a/example/Douban/test.hs b/example/Douban/test.hs
--- a/example/Douban/test.hs
+++ b/example/Douban/test.hs
@@ -1,7 +1,7 @@
-{-# LANGUAGE FlexibleContexts  #-}
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE QuasiQuotes       #-}
-{-# LANGUAGE DeriveGeneric     #-}
+{-# LANGUAGE DeriveGeneric       #-}
+{-# LANGUAGE FlexibleContexts    #-}
+{-# LANGUAGE OverloadedStrings   #-}
+{-# LANGUAGE QuasiQuotes         #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 
 {-
@@ -14,21 +14,21 @@
 
 module Main where
 
-import qualified Data.ByteString.Char8      as BS
-import qualified Data.Text                  as T
-import qualified Data.Text.Encoding         as T
-import qualified Data.Text.Lazy.Encoding    as TL
+import qualified Data.ByteString.Char8   as BS
+import qualified Data.Text               as T
+import qualified Data.Text.Encoding      as T
+import qualified Data.Text.Lazy.Encoding as TL
 import           Network.HTTP.Conduit
 import           URI.ByteString
 import           URI.ByteString.QQ
 
 import           Network.OAuth.OAuth2
 
-import           Keys                       (doubanKey)
+import           Keys                    (doubanKey)
 
-import           GHC.Generics
 import           Data.Aeson
 import           Data.Aeson.Types
+import           GHC.Generics
 
 data Errors =
   SomeRandomError
diff --git a/example/Dropbox/test.hs b/example/Dropbox/test.hs
--- a/example/Dropbox/test.hs
+++ b/example/Dropbox/test.hs
@@ -1,18 +1,18 @@
+{-# LANGUAGE DeriveGeneric     #-}
 {-# LANGUAGE FlexibleContexts  #-}
 {-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE DeriveGeneric     #-}
 
 module Main where
 
+import           Data.Aeson
+import           Data.Aeson.Types
 import qualified Data.ByteString.Char8      as BS
 import qualified Data.ByteString.Lazy.Char8 as BSL
 import qualified Data.Text                  as T
-import           Data.Aeson
-import           Data.Aeson.Types
+import           GHC.Generics
 import           Network.HTTP.Conduit
 import qualified Network.HTTP.Types         as HT
 import           URI.ByteString
-import           GHC.Generics
 
 import           Network.OAuth.OAuth2
 
diff --git a/example/Facebook/test.hs b/example/Facebook/test.hs
--- a/example/Facebook/test.hs
+++ b/example/Facebook/test.hs
@@ -1,8 +1,8 @@
+{-# LANGUAGE DeriveGeneric     #-}
 {-# LANGUAGE FlexibleContexts  #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE QuasiQuotes       #-}
 {-# LANGUAGE TemplateHaskell   #-}
-{-# LANGUAGE DeriveGeneric     #-}
 
 {- Facebook example -}
 
@@ -17,13 +17,12 @@
 import qualified Data.Text                  as T
 import qualified Data.Text.Encoding         as T
 import           Network.HTTP.Conduit
-import           Prelude                    hiding (id)
 import           URI.ByteString
 import           URI.ByteString.QQ
 
-import           GHC.Generics
 import           Data.Aeson
 import           Data.Aeson.Types
+import           GHC.Generics
 
 data Errors =
   SomeRandomError
diff --git a/example/Fitbit/test.hs b/example/Fitbit/test.hs
--- a/example/Fitbit/test.hs
+++ b/example/Fitbit/test.hs
@@ -1,7 +1,7 @@
-{-# LANGUAGE FlexibleContexts  #-}
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE QuasiQuotes       #-}
-{-# LANGUAGE DeriveGeneric     #-}
+{-# LANGUAGE DeriveGeneric       #-}
+{-# LANGUAGE FlexibleContexts    #-}
+{-# LANGUAGE OverloadedStrings   #-}
+{-# LANGUAGE QuasiQuotes         #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 
 module Main where
@@ -24,9 +24,9 @@
 import           Keys                     (fitbitKey)
 import           Network.OAuth.OAuth2
 
-import           GHC.Generics
 import           Data.Aeson
 import           Data.Aeson.Types
+import           GHC.Generics
 
 data Errors =
   SomeRandomError
@@ -99,7 +99,7 @@
 getApiToken mgr code = do
     result <- doJSONPostRequest mgr fitbitKey url $ body ++ [("state", state)]
     case result of
-        Right token -> return token
+        Right token                    -> return token
         Left (e :: OAuth2Error Errors) -> Prelude.error $ show e
   where
     (url, body) = accessTokenUrl fitbitKey code
@@ -108,7 +108,7 @@
 getApiUser mgr token = do
     result <- authGetJSON mgr token [uri|https://api.fitbit.com/1/user/-/profile.json|]
     case result of
-        Right user -> return user
+        Right user                     -> return user
         Left (e :: OAuth2Error Errors) -> Prelude.error $ show e
 
 convertQueryToMap :: Query -> M.Map B.ByteString B.ByteString
diff --git a/example/Github/test.hs b/example/Github/test.hs
--- a/example/Github/test.hs
+++ b/example/Github/test.hs
@@ -1,17 +1,17 @@
+{-# LANGUAGE DeriveGeneric     #-}
 {-# LANGUAGE FlexibleContexts  #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE QuasiQuotes       #-}
-{-# LANGUAGE DeriveGeneric     #-}
 
 -- | Github API: http://developer.github.com/v3/oauth/
 
 module Main where
 
-import           Control.Monad        (mzero)
-import qualified Data.ByteString      as BS
-import           Data.Text            (Text)
-import qualified Data.Text            as T
-import qualified Data.Text.Encoding   as T
+import           Control.Monad                             (mzero)
+import qualified Data.ByteString                           as BS
+import           Data.Text                                 (Text)
+import qualified Data.Text                                 as T
+import qualified Data.Text.Encoding                        as T
 import           Network.HTTP.Conduit
 import           URI.ByteString
 import           URI.ByteString.QQ
@@ -21,9 +21,9 @@
 
 import           Keys
 
-import           GHC.Generics
 import           Data.Aeson
 import           Data.Aeson.Types
+import           GHC.Generics
 
 data Errors =
   SomeRandomError
diff --git a/example/Google/test.hs b/example/Google/test.hs
--- a/example/Google/test.hs
+++ b/example/Google/test.hs
@@ -22,7 +22,6 @@
 import qualified Data.Text                     as T
 import           GHC.Generics
 import           Network.HTTP.Conduit
-import           Prelude                       hiding (id)
 import           System.Environment            (getArgs)
 import           URI.ByteString
 import           URI.ByteString.QQ
diff --git a/example/Keys.hs b/example/Keys.hs
new file mode 100644
--- /dev/null
+++ b/example/Keys.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE QuasiQuotes       #-}
+
+module Keys where
+
+import           Network.OAuth.OAuth2
+import           URI.ByteString.QQ
+
+weiboKey :: OAuth2
+weiboKey = OAuth2 { oauthClientId = "1962132691"
+                  , oauthClientSecret = "a2ad30383bdff9bcb12be6a3d30deeb1"
+                  , oauthCallback = Just [uri|http://127.0.0.1:9988/oauthCallback|]
+                  , oauthOAuthorizeEndpoint = [uri|https://api.weibo.com/oauth2/authorize|]
+                  , oauthAccessTokenEndpoint = [uri|https://api.weibo.com/oauth2/access_token|]
+                  }
+
+-- | http://developer.github.com/v3/oauth/
+githubKey :: OAuth2
+githubKey = OAuth2 { oauthClientId = "bf86d338485a96a93c88"
+                   , oauthClientSecret = "a1c00dada665dc00aa6fafe0495c7c885f82d1ce"
+                   , oauthCallback = Just [uri|http://127.0.0.1:9988/githubCallback|]
+                   , oauthOAuthorizeEndpoint = [uri|https://github.com/login/oauth/authorize|]
+                   , oauthAccessTokenEndpoint = [uri|https://github.com/login/oauth/access_token|]
+                   }
+
+-- | oauthCallback = Just "https://developers.google.com/oauthplayground"
+googleKey :: OAuth2
+googleKey = OAuth2 { oauthClientId = "886894027376.apps.googleusercontent.com"
+                   , oauthClientSecret = "27w98gwGB1h8N5a6JQ2bT_nm"
+                   , oauthCallback = Just [uri|http://127.0.0.1:9988/googleCallback|]
+                   , oauthOAuthorizeEndpoint = [uri|https://accounts.google.com/o/oauth2/auth|]
+                   , oauthAccessTokenEndpoint = [uri|https://www.googleapis.com/oauth2/v3/token|]
+                   }
+
+{-
+googleServiceAccount :: GoogleServiceAccount
+googleServiceAccount = GoogleServiceAccount
+  { saPrivateKey = "-----BEGIN PRIVATE KEY-----\nMIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDfu/z7ASRGrQus\ngWABWNX/EKgE8NlEUoHUeDWCTpXVj6PmiEDGyRaBNqR+6fQmwBMD/ItpISTGT31/\nfdqhKAdJOaYGNvWNYxx1uWYm0HP1YU7OkfFt8YgROu8gGz7+mdseXs/3bMhjlbk9\nPKmBiU46VRFWn7QaAp9YiVGghZp/LcawC+urmWdYnpkl+P4C4u+YtszmCMql842M\nT4nK8jlraxvUT/XM+97UXKwiGL8sPiPKGEthAFiXHNRVgnDibnJ2Etw7zPbZ6FB+\nvHL1SkuSnE7C358RTkuz56Tvf6ETgOGDIJ9HpZlgT6hrsWcAOh8UZ34Q5QzinhtP\n5BdgQxnjAgMBAAECggEBAJqfxFYA0v5ZZ+D/xMcJi1PtQgGwJqf2Ua3yqiB1iU4A\nKKkRb5syrG/+wK7Jp6gEROATcJHmixDXLQeohimsjWSJB/nxj8D4R1oBGN0oYYur\nhZhz+qQeMgieb1cEHYQ99tbFdfss3k0c09nDi+5vY3YjBomUdBcpytCYjqZez4im\nYoZjA6ijb5BduCQO2YOJpjiHbSrTV05Zr/xfHgafkbRx04jHA7OdJM6x5giRcMBn\n5BYNGPUkM6mGpeTeCZjTsOqvXcckuyR8P4wzoG3J8grnXgGR17d829t0bi5X/Jym\nwj5707lvIqu+WcfUfXDDYkZNhe5S9PWpT1uqaOGWElECgYEA738wclTGRNboYLsx\noT6HCOEKNFiY/4DMV65nugSnHBIl4amLwm4+0v669F8F28U2xhihp+RfPC4Fjd62\nfJ9hlYg6NiEqReJfXhs5OcvMBjmBFUR046/kOGyEj6D2yn3LTXoiWI8tHaS0Ucmu\nwF4Lp0/Rk/ofQrFB7q1a0OBeTakCgYEA7ya+IMo0t4lRYl+x8A7ouuJwnK1VjkkC\nkloCAEsnVznb2BsHJCsF0fPPU3f+kqhYqD0qQCfbwhYGragt603a/BqXnnQyE9T/\nnLqSGgctY/Xr06HbOr+aZ4QLKsTfD6IkTC82WAJD3J8hptLaqqDMORluI6xchKEL\nNUV8uvX7qqsCgYEAtKo/w5+LyZZMydusfrSKbPpGFmLXV7azb1lTShIEdbqC9Q5P\nLaa4obYjFgEwjC7jOOCP4fT2mpElA3aENtKMbJ7NOtQd7YXs5zKmIqFIEVIDvCVd\n//xJrv69qROF2A649IMzsZagNAJxPFlmCBtpsxcVRAmk10ycLg57uaHnwbECgYEA\nrtqn1rehVbQ74e5P3lI4TTP03ElLra2qCLFwlyBb0kXGfLo+PW6LYdeedcvdQQN/\nVvrpomDCJ6UNGvlFIa8Z9ovG4Z7ZYnCwt7odypQG1vhehazo6ope7WK4+3tYEEkf\nuugmFrEJRwy+gQfXwzuwNetnAQQr3PkWhcuZh+UELeMCgYAPoQK1LETBLFsUBWhh\nHc5VrnQBykn9GMRPXKR4pq5MK8p8o2QwfL5hNlZNeTKPWdP0QtMuIH9gxRuqvbrF\nXEO8RmZmoNtznh/Ax7+S62g72iLzF1/C8j3g8hWJUeGlU8LAJsZVTSma3t/vEQZM\nQqydJfwXJMTkh4nslALJZ9S4bw==\n-----END PRIVATE KEY-----\n"
+  , saEmail = "testoauth2sa@api-project-886894027376.iam.gserviceaccount.com"
+  , saScope = [ "https://www.googleapis.com/auth/prediction"
+              , "https://www.googleapis.com/auth/drive"
+              ]
+  , saAuthEndpoint = "https://www.googleapis.com/oauth2/v4/token"
+  , saExpireTime = Nothing
+  , saDelegateEmail = Nothing
+  }
+-}
+
+facebookKey :: OAuth2
+facebookKey = OAuth2 { oauthClientId = "414630782030965"
+                     , oauthClientSecret = "0e648eae100da4d03f16594f231fc1d0"
+                     , oauthCallback = Just [uri|http://t.haskellcn.org/cb|]
+                     , oauthOAuthorizeEndpoint = [uri|https://www.facebook.com/dialog/oauth|]
+                     , oauthAccessTokenEndpoint = [uri|https://graph.facebook.com/v2.3/oauth/access_token|]
+                     }
+
+doubanKey :: OAuth2
+doubanKey = OAuth2 { oauthClientId = "02a914cf299ca31607fb3e6d7cd5e942"
+                   , oauthClientSecret = "3c0fdef13b0dd271"
+                   , oauthCallback = Just [uri|http://localhost:9999/oauthCallback|]
+                   , oauthOAuthorizeEndpoint = [uri|https://www.douban.com/service/auth2/auth|]
+                   , oauthAccessTokenEndpoint = [uri|https://www.douban.com/service/auth2/token|]
+                   }
+
+fitbitKey :: OAuth2
+fitbitKey = OAuth2 { oauthClientId = "229LN9"
+                   , oauthClientSecret = "2f4aa9a275c2d4bb9eb616efbd2c1311"
+                   , oauthCallback = Just [uri|http://localhost:9988/oauth2/callback|]
+                   , oauthOAuthorizeEndpoint = [uri|https://www.fitbit.com/oauth2/authorize|]
+                   , oauthAccessTokenEndpoint = [uri|https://api.fitbit.com/oauth2/token|]
+                   }
+
+stackexchangeKey :: OAuth2
+stackexchangeKey = OAuth2 { oauthClientId = "7185"
+                          , oauthClientSecret = "K5hK)ET*dbFGFmNFVtqIyA(("
+                          , oauthCallback = Just [uri|http://c.haskellcn.org/cb|]
+                          , oauthOAuthorizeEndpoint = [uri|https://stackexchange.com/oauth|]
+                          , oauthAccessTokenEndpoint = [uri|https://stackexchange.com/oauth/access_token|]
+                          }
+
+dropboxKey :: OAuth2
+dropboxKey = OAuth2 { oauthClientId = "zbyxxox19gz6dgg"
+                    , oauthClientSecret = "ihhui0ysp85oi8s"
+                    , oauthCallback = Just [uri|http://localhost:9988/oauth2/callback|]
+                    , oauthOAuthorizeEndpoint = [uri|https://www.dropbox.com/1/oauth2/authorize|]
+                    , oauthAccessTokenEndpoint = [uri|https://api.dropboxapi.com/oauth2/token|]
+                    }
+
+oktaKey :: OAuth2
+oktaKey = OAuth2 { oauthClientId = "0oad3popatwUIhWV40h7"
+                 , oauthClientSecret = "YFqXRjtsy7IYRbueiG2tcgHzhaawLccxqq5ruPfN"
+                 , oauthCallback = Just [uri|http://localhost:9988/oauth2/callback|]
+                 , oauthOAuthorizeEndpoint = [uri|https://dev-148986.oktapreview.com/oauth2/v1/authorize|]
+                 , oauthAccessTokenEndpoint = [uri|https://dev-148986.oktapreview.com/oauth2/v1/token|]
+                 }
diff --git a/example/Okta/test.hs b/example/Okta/test.hs
--- a/example/Okta/test.hs
+++ b/example/Okta/test.hs
@@ -1,19 +1,19 @@
+{-# LANGUAGE DeriveGeneric     #-}
 {-# LANGUAGE FlexibleContexts  #-}
 {-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE DeriveGeneric     #-}
 {-# LANGUAGE QuasiQuotes       #-}
 
 module Main where
 
+import           Data.Aeson
+import           Data.Aeson.Types
 import qualified Data.ByteString.Char8      as BS
 import qualified Data.ByteString.Lazy.Char8 as BSL
 import qualified Data.Text                  as T
-import           Data.Aeson
-import           Data.Aeson.Types
+import           GHC.Generics
 import           Network.HTTP.Conduit
 import qualified Network.HTTP.Types         as HT
 import           URI.ByteString
-import           GHC.Generics
 import           URI.ByteString.QQ
 
 import           Network.OAuth.OAuth2
diff --git a/example/StackExchange/test.hs b/example/StackExchange/test.hs
--- a/example/StackExchange/test.hs
+++ b/example/StackExchange/test.hs
@@ -1,7 +1,7 @@
-{-# LANGUAGE DeriveGeneric     #-}
-{-# LANGUAGE FlexibleContexts  #-}
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE QuasiQuotes       #-}
+{-# LANGUAGE DeriveGeneric       #-}
+{-# LANGUAGE FlexibleContexts    #-}
+{-# LANGUAGE OverloadedStrings   #-}
+{-# LANGUAGE QuasiQuotes         #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 
 -- | https://api.stackexchange.com/docs/authentication
diff --git a/example/Weibo/test.hs b/example/Weibo/test.hs
--- a/example/Weibo/test.hs
+++ b/example/Weibo/test.hs
@@ -1,7 +1,7 @@
+{-# LANGUAGE DeriveGeneric     #-}
 {-# LANGUAGE FlexibleContexts  #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE QuasiQuotes       #-}
-{-# LANGUAGE DeriveGeneric     #-}
 
 {-
 
@@ -22,10 +22,10 @@
 
 module Main where
 
-import qualified Data.ByteString            as BS
-import qualified Data.ByteString.Lazy       as BSL
-import qualified Data.Text                  as T
-import qualified Data.Text.Encoding         as T
+import qualified Data.ByteString      as BS
+import qualified Data.ByteString.Lazy as BSL
+import qualified Data.Text            as T
+import qualified Data.Text.Encoding   as T
 import           Network.HTTP.Conduit
 import           Network.OAuth.OAuth2
 import           URI.ByteString
@@ -33,9 +33,9 @@
 
 import           Keys
 
-import           GHC.Generics
 import           Data.Aeson
 import           Data.Aeson.Types
+import           GHC.Generics
 
 data Errors =
   SomeRandomError
diff --git a/hoauth2.cabal b/hoauth2.cabal
--- a/hoauth2.cabal
+++ b/hoauth2.cabal
@@ -1,6 +1,6 @@
 Name:                hoauth2
 -- http://wiki.haskell.org/Package_versioning_policy
-Version:             1.6.1
+Version:             1.6.2
 
 Synopsis:            Haskell OAuth2 authentication client
 
@@ -64,7 +64,7 @@
   Build-Depends: base                 >= 4     && < 5,
                  text                 >= 0.11  && < 1.3,
                  bytestring           >= 0.9   && < 0.11,
-                 http-conduit         >= 2.1   && < 2.3,
+                 http-conduit         >= 2.1   && < 2.4,
                  http-types           >= 0.11   && < 0.12,
                  aeson                >= 0.11  && < 1.3,
                  unordered-containers >= 0.2.5,
@@ -86,11 +86,12 @@
     Buildable: False
 
   main-is:             Weibo/test.hs
+  other-modules:       Keys
   hs-source-dirs:      example
   default-language:    Haskell2010
   build-depends:       base              >= 4.5    && < 5,
                        http-types        >= 0.11    && < 0.12,
-                       http-conduit      >= 2.1    && < 2.3,
+                       http-conduit      >= 2.1    && < 2.4,
                        text              >= 0.11   && < 1.3,
                        bytestring        >= 0.9    && < 0.11,
                        uri-bytestring    >= 0.2.3.1 && < 0.4,
@@ -111,11 +112,12 @@
     Buildable: False
 
   main-is:             Google/test.hs
+  other-modules:       Keys
   hs-source-dirs:      example
   default-language:    Haskell2010
   build-depends:       base              >= 4.5    && < 5,
                        http-types        >= 0.11    && < 0.12,
-                       http-conduit      >= 2.1    && < 2.3,
+                       http-conduit      >= 2.1    && < 2.4,
                        text              >= 0.11   && < 1.3,
                        bytestring        >= 0.9    && < 0.11,
                        uri-bytestring    >= 0.2.3.1 && < 0.4,
@@ -136,11 +138,12 @@
     Buildable: False
 
   main-is:             Github/test.hs
+  other-modules:       Keys
   hs-source-dirs:      example
   default-language:    Haskell2010
   build-depends:       base              >= 4.5    && < 5,
                        http-types        >= 0.11    && < 0.12,
-                       http-conduit      >= 2.1    && < 2.3,
+                       http-conduit      >= 2.1    && < 2.4,
                        text              >= 0.11   && < 1.3,
                        bytestring        >= 0.9    && < 0.11,
                        uri-bytestring    >= 0.2.3.1 && < 0.4,
@@ -160,11 +163,12 @@
     Buildable: False
 
   main-is:             Douban/test.hs
+  other-modules:       Keys
   hs-source-dirs:      example
   default-language:    Haskell2010
   build-depends:       base              >= 4.5    && < 5,
                        http-types        >= 0.11    && < 0.12,
-                       http-conduit      >= 2.1    && < 2.3,
+                       http-conduit      >= 2.1    && < 2.4,
                        text              >= 0.11   && < 1.3,
                        bytestring        >= 0.9    && < 0.11,
                        uri-bytestring    >= 0.2.3.1 && < 0.4,
@@ -184,11 +188,12 @@
     Buildable: False
 
   main-is:             Facebook/test.hs
+  other-modules:       Keys
   hs-source-dirs:      example
   default-language:    Haskell2010
   build-depends:       base              >= 4.5    && < 5,
                        http-types        >= 0.11    && < 0.12,
-                       http-conduit      >= 2.1    && < 2.3,
+                       http-conduit      >= 2.1    && < 2.4,
                        text              >= 0.11   && < 1.3,
                        bytestring        >= 0.9    && < 0.11,
                        uri-bytestring    >= 0.2.3.1 && < 0.4,
@@ -208,13 +213,14 @@
     Buildable: False
 
   main-is:             Fitbit/test.hs
+  other-modules:       Keys
   hs-source-dirs:      example
   default-language:    Haskell2010
   build-depends:       base              >= 4.5    && < 5,
                        text              >= 0.11   && < 1.3,
                        bytestring        >= 0.9    && < 0.11,
                        uri-bytestring    >= 0.2.3.1 && < 0.4,
-                       http-conduit      >= 2.1    && < 2.3,
+                       http-conduit      >= 2.1    && < 2.4,
                        http-types        >= 0.11    && < 0.12,
                        wai               >= 3.2    && < 3.3,
                        warp              >= 3.2    && < 3.3,
@@ -236,11 +242,12 @@
     Buildable: False
 
   main-is:             StackExchange/test.hs
+  other-modules:       Keys
   hs-source-dirs:      example
   default-language:    Haskell2010
   build-depends:       base              >= 4.5    && < 5,
                        http-types        >= 0.11    && < 0.12,
-                       http-conduit      >= 2.1    && < 2.3,
+                       http-conduit      >= 2.1    && < 2.4,
                        text              >= 0.11   && < 1.3,
                        bytestring        >= 0.9    && < 0.11,
                        uri-bytestring    >= 0.2.3.1 && < 0.4,
@@ -260,11 +267,12 @@
     Buildable: False
 
   main-is:             Dropbox/test.hs
+  other-modules:       Keys
   hs-source-dirs:      example
   default-language:    Haskell2010
   build-depends:       base              >= 4.5    && < 5,
                        http-types        >= 0.11    && < 0.12,
-                       http-conduit      >= 2.1    && < 2.3,
+                       http-conduit      >= 2.1    && < 2.4,
                        text              >= 0.11   && < 1.3,
                        bytestring        >= 0.9    && < 0.11,
                        uri-bytestring    >= 0.2.3.1 && < 0.4,
@@ -284,11 +292,12 @@
     Buildable: False
 
   main-is:             Okta/test.hs
+  other-modules:       Keys
   hs-source-dirs:      example
   default-language:    Haskell2010
   build-depends:       base              >= 4.5    && < 5,
                        http-types        >= 0.11    && < 0.12,
-                       http-conduit      >= 2.1    && < 2.3,
+                       http-conduit      >= 2.1    && < 2.4,
                        text              >= 0.11   && < 1.3,
                        bytestring        >= 0.9    && < 0.11,
                        uri-bytestring    >= 0.2.3.1 && < 0.4,
diff --git a/src/Network/OAuth/OAuth2/AuthorizationRequest.hs b/src/Network/OAuth/OAuth2/AuthorizationRequest.hs
--- a/src/Network/OAuth/OAuth2/AuthorizationRequest.hs
+++ b/src/Network/OAuth/OAuth2/AuthorizationRequest.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE DeriveGeneric              #-}
+{-# LANGUAGE DeriveGeneric #-}
 
 module Network.OAuth.OAuth2.AuthorizationRequest where
 
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
@@ -1,3 +1,4 @@
+{-# LANGUAGE ExplicitForAll    #-}
 {-# LANGUAGE FlexibleContexts  #-}
 {-# LANGUAGE OverloadedStrings #-}
 
@@ -27,17 +28,17 @@
 ) where
 
 import           Data.Aeson
-import qualified Data.ByteString.Char8         as BS
-import qualified Data.ByteString.Lazy.Char8    as BSL
-import qualified Data.HashMap.Strict           as HM (fromList)
+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          hiding (withManager)
-import qualified Network.HTTP.Types            as HT
-import           Network.HTTP.Types.URI        (parseQuery)
+import qualified Data.Text.Encoding                as T
+import           Network.HTTP.Conduit
+import qualified Network.HTTP.Types                as HT
+import           Network.HTTP.Types.URI            (parseQuery)
 import           Network.OAuth.OAuth2.Internal
-import           URI.ByteString
 import qualified Network.OAuth.OAuth2.TokenRequest as TR
+import           URI.ByteString
 
 --------------------------------------------------
 -- * Token management
@@ -186,7 +187,7 @@
               -> OAuth2Result err a
 parseResponseJSON (Left b) = Left b
 parseResponseJSON (Right b) = case eitherDecode b of
-                            Left e -> Left $ mkDecodeOAuth2Error b e
+                            Left e  -> Left $ mkDecodeOAuth2Error b e
                             Right x -> Right x
 
 -- | Parses a @OAuth2Result BSL.ByteString@ that contains not JSON but a Query String
diff --git a/src/Network/OAuth/OAuth2/Internal.hs b/src/Network/OAuth/OAuth2/Internal.hs
--- a/src/Network/OAuth/OAuth2/Internal.hs
+++ b/src/Network/OAuth/OAuth2/Internal.hs
@@ -10,9 +10,8 @@
 
 module Network.OAuth.OAuth2.Internal where
 
-import           Prelude              hiding (error)
-import           Control.Arrow        (second)
 import           Control.Applicative
+import           Control.Arrow        (second)
 import           Control.Monad.Catch
 import           Data.Aeson
 import           Data.Aeson.Types
@@ -23,12 +22,12 @@
 import           Data.Text            (Text, pack)
 import           Data.Text.Encoding
 import           GHC.Generics
-import           URI.ByteString
-import           URI.ByteString.Aeson ()
 import           Lens.Micro
 import           Lens.Micro.Extras
 import           Network.HTTP.Conduit as C
 import qualified Network.HTTP.Types   as H
+import           URI.ByteString
+import           URI.ByteString.Aeson ()
 
 --------------------------------------------------
 -- * Data Types
@@ -69,9 +68,9 @@
 
 data OAuth2Error a =
   OAuth2Error
-    { error :: Either Text a
+    { error            :: Either Text a
     , errorDescription :: Maybe Text
-    , errorUri :: Maybe (URIRef Absolute) }
+    , errorUri         :: Maybe (URIRef Absolute) }
   deriving (Show, Eq, Generic)
 
 instance FromJSON err => FromJSON (OAuth2Error err) where
diff --git a/src/Network/OAuth/OAuth2/TokenRequest.hs b/src/Network/OAuth/OAuth2/TokenRequest.hs
--- a/src/Network/OAuth/OAuth2/TokenRequest.hs
+++ b/src/Network/OAuth/OAuth2/TokenRequest.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE DeriveGeneric              #-}
+{-# LANGUAGE DeriveGeneric #-}
 
 module Network.OAuth.OAuth2.TokenRequest where
 
