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
@@ -1,11 +1,14 @@
 {-# LANGUAGE
     FlexibleContexts
+  , FlexibleInstances
   , StandaloneDeriving
   , ScopedTypeVariables
   , MultiParamTypeClasses
   , UndecidableInstances
   , GeneralizedNewtypeDeriving
   , DeriveGeneric
+  , TypeFamilies
+  , Rank2Types
   , TypeSynonymInstances
   #-}
 
@@ -62,6 +65,7 @@
 import           Data.Hashable (Hashable)
 import           Data.Maybe (fromMaybe)
 import qualified Data.ByteString.Lazy as LBS
+import           Data.Functor.Compose (Compose)
 import           Control.Applicative (Alternative)
 import           Control.Monad (MonadPlus)
 import           Control.Monad.Fix (MonadFix)
@@ -73,6 +77,8 @@
 import           Control.Monad.Cont (MonadCont)
 import           Control.Monad.Base (MonadBase)
 import           Control.Monad.Catch (MonadCatch, MonadThrow, MonadMask)
+import           Control.Monad.Trans.Control (MonadBaseControl (..), MonadTransControl (..), ComposeSt, defaultLiftBaseWith, defaultRestoreM, defaultLiftWith, defaultRestoreT)
+import qualified Control.Monad.Trans.Control.Aligned as Aligned
 import           Control.Monad.Trans.Resource (MonadResource)
 import           Control.Monad.Except (MonadError)
 import           Control.Monad.Logger (MonadLogger)
@@ -126,6 +132,32 @@
              , MonadError e', MonadCont, MonadBase b, MonadThrow, MonadCatch
              , MonadMask, MonadLogger
              ) -- TODO: MonadControl
+
+instance MonadTransControl (VerbListenerT r) where
+  type StT (VerbListenerT r) a = StT (StateT (VerbMap r)) a
+  liftWith = defaultLiftWith VerbListenerT runVerbListenerT
+  restoreT = defaultRestoreT VerbListenerT
+
+instance MonadBaseControl b m => MonadBaseControl b (VerbListenerT r m) where
+  type StM (VerbListenerT r m) a = ComposeSt (VerbListenerT r) m a
+  liftBaseWith = defaultLiftBaseWith
+  restoreM = defaultRestoreM
+
+instance Aligned.MonadTransControl (VerbListenerT r) ((,) (VerbMap r)) where
+  liftWith client = VerbListenerT $ StateT $ \s ->
+    let run :: forall m a. Monad m => VerbListenerT r m a -> m (VerbMap r, a)
+        run (VerbListenerT (StateT g)) = do
+          (x,s') <- g s
+          pure (s',x)
+    in  do x <- client run
+           pure (x, s)
+  restoreT x = VerbListenerT $ StateT $ \_ -> do
+    (s,x') <- x
+    pure (x',s)
+
+instance Aligned.MonadBaseControl b m stM => Aligned.MonadBaseControl b (VerbListenerT r m) (Compose stM ((,) (VerbMap r))) where
+  liftBaseWith = Aligned.defaultLiftBaseWith
+  restoreM = Aligned.defaultRestoreM
 
 deriving instance (MonadResource m, MonadBase IO m) => MonadResource (VerbListenerT r m)
 
diff --git a/wai-middleware-verbs.cabal b/wai-middleware-verbs.cabal
--- a/wai-middleware-verbs.cabal
+++ b/wai-middleware-verbs.cabal
@@ -2,10 +2,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: c44481a358f46e101abf15c73f7e9876073a1bd3f4cc3ad6bac1db9e7ce8cb25
+-- hash: f14c8019769f9489e79ba3b8049d8713701d5409040452e0d132e0fabce07cad
 
 name:           wai-middleware-verbs
-version:        0.4.0
+version:        0.4.0.1
 synopsis:       Route Wai middlewares based on HTTP verbs
 description:    Please see the README on Github at <https://git.localcooking.com/tooling/wai-middleware-verbs#readme>
 category:       Web
@@ -41,6 +41,8 @@
     , hashable
     , http-types
     , mmorph
+    , monad-control
+    , monad-control-aligned
     , monad-logger
     , mtl
     , resourcet
