diff --git a/simple-session.cabal b/simple-session.cabal
--- a/simple-session.cabal
+++ b/simple-session.cabal
@@ -1,5 +1,5 @@
 name:                simple-session
-version:             0.6.0
+version:             0.7.0
 synopsis:            Cookie-based session management for the Simple web framework
 description:
 
@@ -23,7 +23,7 @@
   >   case muserIf of
   >     Nothing -> respond $ redirectTo "/login"
   >     Just userId -> [handle request]
-      
+
 homepage:            http://simple.cx
 license:             LGPL-3
 license-file:        LICENSE
@@ -48,9 +48,9 @@
     , bytestring
     , containers
     , http-types
-    , simple >= 0.6
+    , simple >= 0.7.0 && < 0.8
     , transformers
-    , wai
+    , wai >= 2.0
   default-language:    Haskell2010
 
 source-repository head
diff --git a/src/Web/Simple/Session.hs b/src/Web/Simple/Session.hs
--- a/src/Web/Simple/Session.hs
+++ b/src/Web/Simple/Session.hs
@@ -35,6 +35,7 @@
 import qualified Data.Map as M
 import Network.HTTP.Types.Header
 import Network.HTTP.Types.URI
+import Network.Wai.Internal
 import Web.Cookie
 import Web.Simple
 import System.Environment
@@ -113,7 +114,7 @@
 -- domain, and no expiration is set.
 addCookie :: (S.ByteString, S.ByteString) -> Response -> Response
 addCookie (key, value) resp =
-  let (stat, hdrs, src) = responseSource resp
+  let (stat, hdrs, src) = responseToSource resp
   in ResponseSource stat (("Set-Cookie", cookie):hdrs) src
   where cookie = toByteString . renderSetCookie $
                   def { setCookieName = key
@@ -129,7 +130,7 @@
     Just sess -> return sess
     Nothing -> do
       sess <- sessionFromCookie
-      setSession =<< sessionFromCookie
+      setSession sess
       return sess
 
 -- | Get and parse a 'Session' from the current 'Request'.
