diff --git a/Spock.cabal b/Spock.cabal
--- a/Spock.cabal
+++ b/Spock.cabal
@@ -1,5 +1,5 @@
 name:                Spock
-version:             0.6.1.2
+version:             0.6.1.3
 synopsis:            Another Haskell web framework for rapid development
 description:         This toolbox provides everything you need to get a quick start into web hacking with haskell: routing, middleware, json, blaze, sessions, cookies, database helper, csrf-protection, global state
 Homepage:            https://github.com/agrafix/Spock
diff --git a/src/Web/Spock/Wire.hs b/src/Web/Spock/Wire.hs
--- a/src/Web/Spock/Wire.hs
+++ b/src/Web/Spock/Wire.hs
@@ -222,21 +222,22 @@
 -- >>> curl http://localhost:8080/api/user
 -- USER
 --
-subcomponent :: (MonadIO m) => T.Text -> SpockT m () -> SpockT m ()
+subcomponent :: (MonadIO m) => T.Text -> SpockT m a -> SpockT m a
 subcomponent baseRoute defs =
     do parentState <- get
        parentRoute <- ask
        let initState =
                parentState
                { ss_treeMap = HM.empty }
-       (finalState, ()) <-
+       (a, finalState, ()) <-
            liftIO $ (ss_spockLift parentState) $
-           execRWST (runSpockT defs) (parentRoute `combineRoute` baseRoute) initState
+           runRWST (runSpockT defs) (parentRoute `combineRoute` baseRoute) initState
        modify $ \st ->
            st
            { ss_treeMap = HM.unionWith HM.union (ss_treeMap st) (ss_treeMap finalState)
            , ss_middleware = (ss_middleware finalState) . (ss_middleware st)
            }
+       return a
 
 buildRoutingTree :: SpockRouteMap m -> SpockTreeMap m
 buildRoutingTree routeMap =
