diff --git a/hoauth2-tutorial.cabal b/hoauth2-tutorial.cabal
--- a/hoauth2-tutorial.cabal
+++ b/hoauth2-tutorial.cabal
@@ -1,6 +1,6 @@
 cabal-version: 2.4
 name:          hoauth2-tutorial
-version:       0.1.2
+version:       0.2
 synopsis:      Tutorial for using hoauth2
 description:
   Tutorial to demostrate how to use hoauth2 to implement OAuth2 flow in an web Application.
@@ -31,7 +31,7 @@
     , aeson           >=2.0    && <2.2
     , base            >=4.5    && <5
     , bytestring      >=0.9    && <0.12
-    , hoauth2         >=2.5
+    , hoauth2         >=2.7
     , http-conduit    >=2.1    && <2.4
     , http-types      >=0.11   && <0.13
     , scotty          >=0.10.0 && <0.13
diff --git a/src/HOAuth2Tutorial.hs b/src/HOAuth2Tutorial.hs
--- a/src/HOAuth2Tutorial.hs
+++ b/src/HOAuth2Tutorial.hs
@@ -118,19 +118,16 @@
 import GHC.Generics (Generic)
 import Network.HTTP.Conduit (newManager, tlsManagerSettings)
 import Network.HTTP.Types (status302)
-import Network.OAuth.OAuth2.AuthorizationRequest
-  ( authorizationUrl,
-  )
-import Network.OAuth.OAuth2.HttpClient (authGetJSON)
-import Network.OAuth.OAuth2.Internal
-  ( ExchangeToken (ExchangeToken),
-    OAuth2 (..),
-    OAuth2Error,
-    OAuth2Token (accessToken),
-    appendQueryParams,
-  )
-import Network.OAuth.OAuth2.TokenRequest (fetchAccessToken)
-import Network.OAuth.OAuth2.TokenRequest qualified as TR
+import Network.OAuth.OAuth2 (
+  ExchangeToken (ExchangeToken),
+  OAuth2 (..),
+  OAuth2Token (accessToken),
+  TokenRequestError,
+  appendQueryParams,
+  authGetJSON,
+  authorizationUrl,
+  fetchAccessToken,
+ )
 import URI.ByteString (URI, serializeURIRef')
 import URI.ByteString.QQ (uri)
 import Web.Scotty (ActionM, scotty)
@@ -145,18 +142,18 @@
 auth0 :: OAuth2
 auth0 =
   OAuth2
-    { oauth2ClientId = "TZlmNRtLY9duT8M4ztgFBLsFA66aEoGs",
-      oauth2ClientSecret = "",
-      oauth2AuthorizeEndpoint = [uri|https://freizl.auth0.com/authorize|],
-      oauth2TokenEndpoint = [uri|https://freizl.auth0.com/oauth/token|],
-      oauth2RedirectUri = [uri|http://localhost:9988/oauth2/callback|]
+    { oauth2ClientId = "TZlmNRtLY9duT8M4ztgFBLsFA66aEoGs"
+    , oauth2ClientSecret = ""
+    , oauth2AuthorizeEndpoint = [uri|https://freizl.auth0.com/authorize|]
+    , oauth2TokenEndpoint = [uri|https://freizl.auth0.com/oauth/token|]
+    , oauth2RedirectUri = [uri|http://localhost:9988/oauth2/callback|]
     }
 
 authorizeUrl :: URI
 authorizeUrl =
   appendQueryParams
-    [ ("scope", "openid profile email"),
-      ("state", randomStateValue)
+    [ ("scope", "openid profile email")
+    , ("state", randomStateValue)
     ]
     $ authorizationUrl auth0
 
@@ -172,9 +169,9 @@
 -- | Auth0 user
 -- https://auth0.com/docs/api/authentication#get-user-info
 data Auth0User = Auth0User
-  { name :: TL.Text,
-    email :: TL.Text,
-    sub :: TL.Text
+  { name :: TL.Text
+  , email :: TL.Text
+  , sub :: TL.Text
   }
   deriving (Show, Generic)
 
@@ -204,8 +201,8 @@
 
   let info = case muser of
         Just user ->
-          [ "<p>Hello, " `TL.append` name user `TL.append` "</p>",
-            "<a href='/logout'>Logout</a>"
+          [ "<p>Hello, " `TL.append` name user `TL.append` "</p>"
+          , "<a href='/logout'>Logout</a>"
           ]
         Nothing -> ["<a href='/login'>Login</a>"]
 
@@ -286,5 +283,5 @@
   result <- liftIO $ runExceptT e
   either Scotty.raise pure result
 
-oauth2ErrorToText :: OAuth2Error TR.Errors -> TL.Text
+oauth2ErrorToText :: TokenRequestError -> TL.Text
 oauth2ErrorToText e = TL.pack $ "Unable fetch access token. error detail: " ++ show e
