diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-Wai Routes (wai-routes-0.3.4)
+Wai Routes (wai-routes-0.4.0)
 ==============================
 
 [![Build Status](https://travis-ci.org/ajnsit/wai-routes.png)](https://travis-ci.org/ajnsit/wai-routes)
@@ -80,4 +80,6 @@
 * 0.3.2 : Added HandlerM Monad which makes it easier to build Handlers
 * 0.3.3 : Better exports from the Network.Wai.Middleware.Routes module
 * 0.3.4 : Added 'liftResourceT' to lift a ResourceT into HandlerM
+* 0.4.0 : Wai 2 compatibility. Replaced 'liftResourceT' with 'lift'
+
 
diff --git a/examples/Example.hs b/examples/Example.hs
--- a/examples/Example.hs
+++ b/examples/Example.hs
@@ -13,6 +13,7 @@
 import Data.IORef
 import qualified Data.Map as M
 import Control.Monad.Trans
+import Network.Wai.Middleware.RequestLogger
 
 -- The database of users
 data User = User
@@ -144,6 +145,7 @@
 application :: RouteM ()
 application = do
   db <- liftIO $ newIORef initdb
+  middleware logStdoutDev
   route (MyRoute db)
   route MySkippedRoute
   defaultAction $ staticApp $ defaultFileServerSettings "static"
diff --git a/src/Network/Wai/Middleware/Routes.hs b/src/Network/Wai/Middleware/Routes.hs
--- a/src/Network/Wai/Middleware/Routes.hs
+++ b/src/Network/Wai/Middleware/Routes.hs
@@ -51,7 +51,6 @@
     -- * HandlerM Monad makes it easy to build a handler
     , HandlerM()
     , runHandlerM            -- | Run a HandlerM to get a Handler
-    , liftResourceT          -- | Lift a ResourceT into HandlerM
     , request                -- | Access the request data
     , master                 -- | Access the master datatype
     , next                   -- | Run the next application in the stack
diff --git a/src/Network/Wai/Middleware/Routes/Handler.hs b/src/Network/Wai/Middleware/Routes/Handler.hs
--- a/src/Network/Wai/Middleware/Routes/Handler.hs
+++ b/src/Network/Wai/Middleware/Routes/Handler.hs
@@ -13,26 +13,23 @@
 module Network.Wai.Middleware.Routes.Handler
     ( HandlerM()             -- | A Monad that makes it easier to build a Handler
     , runHandlerM            -- | Run a HandlerM to get a Handler
-    , liftResourceT          -- | Lift a ResourceT into HandlerM
     , request                -- | Access the request data
     , master                 -- | Access the master datatype
     , next                   -- | Run the next application in the stack
     )
     where
 
-import Data.Conduit (ResourceT)
 import Network.Wai (Request, Response)
-import Control.Monad.Reader (ReaderT, ask, runReaderT, MonadReader, MonadIO, lift)
+import Control.Monad.Reader (ReaderT, ask, runReaderT, MonadReader, MonadIO, lift, MonadTrans)
 
 import Network.Wai.Middleware.Routes.Routes (RequestData, Handler, waiReq, runNext)
 
--- | The HandlerM Monad
-newtype HandlerM master a = H { extractH :: ReaderT (HandlerState master) (ResourceT IO) a }
-    deriving (Monad, MonadIO, Functor, MonadReader (HandlerState master))
+-- | The internal implementation of the HandlerM monad
+newtype HandlerMI master m a = H { extractH :: ReaderT (HandlerState master) m a }
+    deriving (Monad, MonadIO, Functor, MonadTrans, MonadReader (HandlerState master))
 
--- | Lift a ResourceT into HandlerM
-liftResourceT :: ResourceT IO a -> HandlerM master a
-liftResourceT = H . lift
+-- | The HandlerM Monad
+type HandlerM master a = HandlerMI master IO a
 
 -- | The state kept in a HandlerM Monad
 data HandlerState master = HandlerState
diff --git a/src/Network/Wai/Middleware/Routes/Routes.hs b/src/Network/Wai/Middleware/Routes/Routes.hs
--- a/src/Network/Wai/Middleware/Routes/Routes.hs
+++ b/src/Network/Wai/Middleware/Routes/Routes.hs
@@ -48,11 +48,8 @@
     )
     where
 
--- Conduit
-import Data.Conduit (ResourceT)
-
 -- Wai
-import Network.Wai (Middleware, Application, pathInfo, requestMethod, requestMethod, Response(ResponseBuilder), Request(..))
+import Network.Wai (Middleware, Application, pathInfo, requestMethod, requestMethod, Response, Request(..), responseBuilder)
 import Network.HTTP.Types (decodePath, encodePath, queryTextToQuery, queryToQueryText, status405)
 
 -- Yesod Routes
@@ -82,20 +79,20 @@
   }
 
 -- | Run the next application in the stack
-runNext :: RequestData -> ResourceT IO Response
+runNext :: RequestData -> IO Response
 runNext req = nextApp req $ waiReq req
 
 -- | A `Handler` generates an App from the master datatype
-type Handler master = master -> RequestData -> ResourceT IO Response
+type Handler master = master -> RequestData -> IO Response
 
 -- Baked in applications that handle 404 and 405 errors
 -- TODO: Inspect the request to figure out acceptable output formats
 --   Currently we assume text/plain is acceptable
 app404 :: Handler master
-app404 _master req = nextApp req $ waiReq req
+app404 _master = runNext
 
 app405 :: Handler master
-app405 _master _req = return $ ResponseBuilder status405 [contentType typePlain] $ fromByteString "405 - Method Not Allowed"
+app405 _master _req = return $ responseBuilder status405 [contentType typePlain] $ fromByteString "405 - Method Not Allowed"
 
 -- | Generates all the things needed for efficient routing,
 -- including your application's `Route` datatype, and
@@ -132,7 +129,7 @@
     :: Handler master
     -> master
     -> Maybe (Route master)
-    -> RequestData -> ResourceT IO Response -- App
+    -> RequestData -> IO Response -- App
 runHandler h master _ = h master
 
 -- | A `Routable` instance can be used in dispatching.
diff --git a/wai-routes.cabal b/wai-routes.cabal
--- a/wai-routes.cabal
+++ b/wai-routes.cabal
@@ -1,5 +1,5 @@
 Name:                wai-routes
-Version:             0.3.4
+Version:             0.4.0
 Synopsis:            Typesafe URLs for Wai applications.
 Homepage:            https://github.com/ajnsit/wai-routes
 License:             MIT
@@ -63,21 +63,19 @@
 
 source-repository this
   type:     git
-  location: http://github.com/ajnsit/wai-routes/tree/v0.3.4
-  tag:      v0.3.4
+  location: http://github.com/ajnsit/wai-routes/tree/v0.4.0
+  tag:      v0.4.0
 
 Library
   hs-source-dirs:    src
   Build-Depends:     base >= 3 && < 5
-               ,     wai >= 1.3 && < 1.5
-               ,     conduit >= 0.5 && < 1.1
-               ,     path-pieces
-               ,     text
-               ,     bytestring
-               ,     http-types >= 0.7
-               ,     blaze-builder >= 0.2.1.4 && < 0.4
-               ,     template-haskell
-               ,     yesod-routes >= 1.2
+               ,     wai >= 2 && < 2.1
+               ,     text >= 0.11.3 && < 0.12
+               ,     bytestring >= 0.10.0 && < 0.10.1
+               ,     http-types >= 0.8.3 && < 0.8.4
+               ,     blaze-builder >= 0.3.3 && < 0.3.4
+               ,     template-haskell >= 2.8.0 && < 2.8.1
+               ,     yesod-routes >= 1.2.0 && < 1.2.1
                ,     mtl
   exposed-modules:   Network.Wai.Middleware.Routes
                ,     Network.Wai.Middleware.Routes.Routes
