diff --git a/Network/Wai/Session.hs b/Network/Wai/Session.hs
--- a/Network/Wai/Session.hs
+++ b/Network/Wai/Session.hs
@@ -5,9 +5,14 @@
 import Data.Ratio (numerator, denominator)
 import Data.Time.Clock.POSIX (getPOSIXTime)
 import Data.String (fromString)
-import Control.Monad.Trans.Class (lift)
+import Control.Monad.IO.Class (liftIO)
 import Network.HTTP.Types (ResponseHeaders)
-import Network.Wai (Middleware, Request(..), Response(..))
+import Network.Wai (Middleware, Request(..))
+#if MIN_VERSION_wai(2,0,0)
+import Network.Wai.Internal (Response(ResponseBuilder,ResponseFile,ResponseSource))
+#else
+import Network.Wai (Response(ResponseBuilder,ResponseFile,ResponseSource))
+#endif
 import Web.Cookie (parseCookies, renderSetCookie, SetCookie(..))
 
 #if MIN_VERSION_vault(0,3,0)
@@ -39,9 +44,9 @@
 	-- ^ 'Data.Vault.Vault' key to use when passing the session through
 	-> Middleware
 withSession sessions cookieName cookieDefaults vkey app req = do
-	(session, getNewCookie) <- lift $ sessions $ lookup cookieName =<< cookies
+	(session, getNewCookie) <- liftIO $ sessions $ lookup cookieName =<< cookies
 	resp <- app (req {vault = Vault.insert vkey session (vault req)})
-	newCookieVal <- lift getNewCookie
+	newCookieVal <- liftIO getNewCookie
 	return $ mapHeader (\hs -> (setCookie, newCookie newCookieVal):hs) resp
 	where
 	newCookie v = Builder.toByteString $ renderSetCookie $ cookieDefaults {
diff --git a/wai-session.cabal b/wai-session.cabal
--- a/wai-session.cabal
+++ b/wai-session.cabal
@@ -1,5 +1,5 @@
 name:            wai-session
-version:         0.1.1
+version:         0.2
 cabal-version:   >= 1.8
 license:         OtherLicense
 license-file:    COPYING
