diff --git a/nested-routes.cabal b/nested-routes.cabal
--- a/nested-routes.cabal
+++ b/nested-routes.cabal
@@ -1,5 +1,5 @@
 Name:                   nested-routes
-Version:                8.0.0
+Version:                8.0.1
 Author:                 Athan Clark <athan.clark@gmail.com>
 Maintainer:             Athan Clark <athan.clark@gmail.com>
 License:                BSD3
@@ -42,8 +42,10 @@
                       , bytestring
                       , errors
                       , exceptions
+                      , extractable-singleton
                       , hashable
                       , hashtables
+                      , monad-control-aligned
                       , mtl
                       , poly-arity >= 0.0.7
                       , pred-set >= 0.0.1
diff --git a/src/Web/Routes/Nested/Types.hs b/src/Web/Routes/Nested/Types.hs
--- a/src/Web/Routes/Nested/Types.hs
+++ b/src/Web/Routes/Nested/Types.hs
@@ -38,8 +38,10 @@
 import           Data.Monoid
 import qualified Data.Text as T
 import           Data.Function.Poly
+import           Data.Singleton.Class (Extractable)
 import           Control.Monad.Trans
 import qualified Control.Monad.State                as S
+import           Control.Monad.Trans.Control.Aligned (MonadBaseControl)
 
 
 
@@ -92,7 +94,10 @@
 
 -- | Run the content builder into a middleware that responds when the content
 --   is satisfiable (i.e. @Accept@ headers are O.K., etc.)
-action :: Monad m => ActionT m () -> MiddlewareT m
+action :: Monad m
+       => MonadBaseControl IO m stM
+       => Extractable stM
+       => ActionT m () -> MiddlewareT m
 action xs app req respond = do
   vmap <- fmap fileExtsToMiddleware <$> execVerbListenerT xs
   case lookupVerb (getVerb req) vmap of
