diff --git a/examples/Example.hs b/examples/Example.hs
--- a/examples/Example.hs
+++ b/examples/Example.hs
@@ -16,8 +16,9 @@
 import Control.Monad.Catch
 
 
-theEmbeddedApp :: MonadIO m => LT.Text -> MiddlewareT m
-theEmbeddedApp v _ _ respond =
+theEmbeddedApp :: ( MonadIO m
+                  ) => LT.Text -> ApplicationT m
+theEmbeddedApp v _ respond =
   respond $ textOnly $ v <> " Verb accepted!"
 
 
@@ -28,7 +29,7 @@
 
 myListener :: ( MonadIO m
               , MonadThrow m
-              ) => VerbListenerT (MiddlewareT m) m ()
+              ) => VerbListenerT (ApplicationT m) m ()
 myListener = do
   get                $ theEmbeddedApp "GET"
   put  uploadFail    $ theEmbeddedApp "PUT" -- should never work
@@ -38,8 +39,9 @@
     uploadFail    _ = throwM UploadFailed
     uploadSucceed _ = return ()
 
-handleError :: UploadError -> MiddlewareT m
-handleError UploadFailed _ _ respond =
+handleError :: ( MonadIO m
+               ) => UploadError -> ApplicationT m
+handleError UploadFailed _ respond =
   respond $ textOnly "Upload Failed!"
 
 
@@ -47,8 +49,15 @@
          , MonadCatch m
          ) => MiddlewareT m
 myApp app req respond =
-          (verbsToMiddleware myListener app req respond)
-  `catch` (\e -> handleError e app req respond)
+  findResponse `catch` (\e -> handleError e req respond)
+  where
+    findResponse = do
+      let v = getVerb req
+      xs <- execVerbListenerT myListener
+      mr <- lookupVerb req v xs
+      case mr of
+        Nothing -> app req respond
+        Just r  -> r req respond
 
 
 main :: IO ()
diff --git a/src/Network/Wai/Middleware/Verbs.hs b/src/Network/Wai/Middleware/Verbs.hs
--- a/src/Network/Wai/Middleware/Verbs.hs
+++ b/src/Network/Wai/Middleware/Verbs.hs
@@ -44,18 +44,17 @@
   , -- * Types
     VerbMap
   , Verb
-  , getVerb
   , -- ** Monad Transformer
     VerbListenerT (..)
   , execVerbListenerT
-  , verbsToMiddleware
   , -- * Utilities
     lookupVerb
+  , getVerb
   , mapVerbs
   ) where
 
 
-import           Network.Wai.Trans
+import           Network.Wai (Request (..))
 import           Network.HTTP.Types
 
 import           Data.HashMap.Lazy (HashMap)
@@ -115,6 +114,7 @@
 
 {-# INLINEABLE lookupVerb #-}
 
+
 -- * Verb Writer
 
 -- | This is the monad for our DSL - where @r@ is the result type. We leave this
@@ -143,22 +143,10 @@
 
 {-# INLINEABLE execVerbListenerT #-}
 
+
 instance MonadTrans (VerbListenerT r) where
   lift = VerbListenerT . lift -- uses StateT
 
-
--- | Turn a map from HTTP verbs to middleware, into a middleware.
-verbsToMiddleware :: MonadIO m =>
-                     VerbListenerT (MiddlewareT m) m ()
-                  -> MiddlewareT m
-verbsToMiddleware vl app req respond = do
-  let v = getVerb req
-  vmap <- execVerbListenerT vl
-  mMiddleware <- lookupVerb req v vmap
-  fromMaybe (app req respond) $
-    (\mid -> mid app req respond) <$> mMiddleware
-
-{-# INLINEABLE verbsToMiddleware #-}
 
 -- * Combinators
 
diff --git a/wai-middleware-verbs.cabal b/wai-middleware-verbs.cabal
--- a/wai-middleware-verbs.cabal
+++ b/wai-middleware-verbs.cabal
@@ -1,5 +1,5 @@
 Name:                   wai-middleware-verbs
-Version:                0.1.1
+Version:                0.2.0
 Author:                 Athan Clark <athan.clark@gmail.com>
 Maintainer:             Athan Clark <athan.clark@gmail.com>
 License:                BSD3
@@ -32,7 +32,6 @@
                       , transformers-base
                       , unordered-containers
                       , wai
-                      , wai-transformers >= 0.0.3
 
 Executable example
   if flag(Example)
@@ -59,7 +58,7 @@
                       , transformers-base
                       , unordered-containers
                       , wai
-                      , wai-transformers >= 0.0.3
+                      , wai-transformers >= 0.0.4
                       , wai-middleware-content-type
                       , warp
   
