diff --git a/Happstack/Authenticate/OpenId/Core.hs b/Happstack/Authenticate/OpenId/Core.hs
--- a/Happstack/Authenticate/OpenId/Core.hs
+++ b/Happstack/Authenticate/OpenId/Core.hs
@@ -149,7 +149,7 @@
                       mRealm <- query' openIdState GetOpenIdRealm
                       ok $ toJSONSuccess mRealm
                  , do method POST
-                      (Just (Body body)) <- takeRequestBody =<< askRq
+                      ~(Just (Body body)) <- takeRequestBody =<< askRq
                       case Aeson.decode body of
                         Nothing   -> badRequest $ toJSONError (CoreError JSONDecodeFailed)
                         (Just (SetRealmData mRealm)) ->
diff --git a/Happstack/Authenticate/Password/Core.hs b/Happstack/Authenticate/Password/Core.hs
--- a/Happstack/Authenticate/Password/Core.hs
+++ b/Happstack/Authenticate/Password/Core.hs
@@ -198,7 +198,7 @@
       -> m Response
 token authenticateState authenticateConfig passwordState =
   do method POST
-     (Just (Body body)) <- takeRequestBody =<< askRq
+     ~(Just (Body body)) <- takeRequestBody =<< askRq
      case Aeson.decode body of
        Nothing   -> badRequest $ toJSONError (CoreError JSONDecodeFailed)
        (Just (UserPass username password)) ->
@@ -250,7 +250,7 @@
 -- FIXME: check that password and password confirmation match
 account authenticateState passwordState authenticateConfig passwordConfig Nothing =
   do method POST
-     (Just (Body body)) <- takeRequestBody =<< askRq
+     ~(Just (Body body)) <- takeRequestBody =<< askRq
      case Aeson.decode body of
        Nothing               -> badRequest (Left $ CoreError JSONDecodeFailed)
        (Just newAccount) ->
@@ -296,7 +296,7 @@
               else do mBody <- takeRequestBody =<< askRq
                       case mBody of
                         Nothing     -> badRequest (Left $ CoreError JSONDecodeFailed)
-                        (Just (Body body)) ->
+                        ~(Just (Body body)) ->
                           case Aeson.decode body of
                             Nothing -> do -- liftIO $ print body
                                           badRequest (Left $ CoreError JSONDecodeFailed)
@@ -334,7 +334,7 @@
                      -> m (Either PasswordError Text)
 passwordRequestReset passwordConfig authenticateState passwordState =
   do method POST
-     (Just (Body body)) <- takeRequestBody =<< askRq
+     ~(Just (Body body)) <- takeRequestBody =<< askRq
      case Aeson.decode body of
        Nothing   -> badRequest $ Left $ CoreError JSONDecodeFailed
        (Just (RequestResetPasswordData username)) ->
@@ -401,7 +401,7 @@
               -> m (Either PasswordError Text)
 passwordReset authenticateState passwordState passwordConfig =
   do method POST
-     (Just (Body body)) <- takeRequestBody =<< askRq
+     ~(Just (Body body)) <- takeRequestBody =<< askRq
      case Aeson.decode body of
        Nothing -> badRequest $ Left $ CoreError JSONDecodeFailed
        (Just (ResetPasswordData password passwordConfirm resetToken)) ->
diff --git a/happstack-authenticate.cabal b/happstack-authenticate.cabal
--- a/happstack-authenticate.cabal
+++ b/happstack-authenticate.cabal
@@ -1,5 +1,5 @@
 Name:                happstack-authenticate
-Version:             2.3.4.14
+Version:             2.3.4.15
 Synopsis:            Happstack Authentication Library
 Description:         A themeable authentication library with support for username+password and OpenId.
 Homepage:            http://www.happstack.com/
@@ -11,7 +11,7 @@
 Category:            Web
 Build-type:          Simple
 Cabal-version:       >=1.8
-tested-with:         GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.1, GHC == 8.2.2, GHC == 8.4.1
+tested-with:         GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.1, GHC == 8.2.2, GHC == 8.4.1, GHC == 8.6.3
 data-files:
   messages/core/en.msg
   messages/openid/error/en.msg
