diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,11 @@
+0.7.1
+-------
+
+Call 'Snap.Core.pass' when routing an empty URI path. This allows an entire
+served API to fall through, which is more in line with the rest of snap routing,
+and allows multiple servant API's to be served under the same path context
+from 'Snap.Core.route'.
+
 0.7.0.5
 -------
 
diff --git a/servant-snap.cabal b/servant-snap.cabal
--- a/servant-snap.cabal
+++ b/servant-snap.cabal
@@ -1,5 +1,5 @@
 name:                servant-snap
-version:             0.7.0.5
+version:             0.7.3
 synopsis:            A family of combinators for defining webservices APIs and serving them
 description:
   Interpret a Servant API as a Snap server, using any Snaplets you like.
@@ -21,7 +21,7 @@
 category:            Web
 build-type:          Simple
 cabal-version:       >=1.10
-tested-with:         GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.1
+tested-with:         GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.1
 extra-source-files:
   CHANGELOG.md
   README.md
@@ -42,8 +42,8 @@
     Servant.Server.Internal.SnapShims
     Servant.Utils.StaticFiles
   build-depends:
-        base               >= 4.7  && < 4.10
-      , aeson              >= 0.7  && < 1.1
+        base               >= 4.7  && < 4.11
+      , aeson              >= 0.7  && < 1.3
       , attoparsec         >= 0.12 && < 0.14
       , bytestring         >= 0.10 && < 0.11
       , case-insensitive   >= 1.2  && < 1.3
@@ -55,8 +55,8 @@
       , io-streams         >= 1.3  && < 1.4
       , network-uri        >= 2.6  && < 2.7
       , mtl                >= 2.0  && < 2.3
-      , mmorph             >= 1    && < 1.1
-      , servant            >= 0.8  && < 0.10
+      , mmorph             >= 1    && < 1.2
+      , servant            >= 0.8  && < 0.12
       , string-conversions >= 0.3  && < 0.5
       , text               >= 1.2  && < 1.3
       , snap               >= 1.0  && < 1.1
@@ -80,7 +80,7 @@
     , errors
     , heist
     , lens
-    , servant             >= 0.6
+    , servant
     , servant-snap
     , map-syntax
     , snap
@@ -97,7 +97,7 @@
   hs-source-dirs: test
   main-is: Spec.hs
   build-depends:
-      base == 4.*
+      base               == 4.*
     , aeson
     , base64-bytestring
     , bytestring
@@ -106,16 +106,16 @@
     , directory
     , either
     , exceptions
-    , hspec >= 2.2.3 && < 2.4
+    , hspec              >= 2.4.3   && < 2.5
     , process
     , digestive-functors >= 0.8.1.0 && < 0.9
     , time
-    , hspec-snap >= 1.0 && < 1.1
-    , hspec-core >= 2.2.3 && < 2.3
+    , hspec-snap         >= 1.0.0.2 && < 1.1
+    , hspec-core         >= 2.4.3   && < 2.5
     , http-types
-    , HUnit
+    , HUnit              >= 1.4
     , mtl
-    , network >= 2.6
+    , network            >= 2.6
     , QuickCheck
     , parsec
     , servant
diff --git a/src/Servant/Server/Internal/Router.hs b/src/Servant/Server/Internal/Router.hs
--- a/src/Servant/Server/Internal/Router.hs
+++ b/src/Servant/Server/Internal/Router.hs
@@ -136,9 +136,9 @@
     _ -> respond $ Fail err404
   CaptureRouter router' ->
     case processedPathInfo request of
-      []   -> respond $ Fail err404
+      []   -> respond $ Fail err404 -- pass
       -- This case is to handle trailing slashes.
-      [""] -> respond $ Fail err404
+      [""] -> respond $ Fail err404 -- pass
       first : _
         -> let request' = reqSafeTail request
            in  runRouterEnv router' (first,env)  request' respond
diff --git a/src/Servant/Server/Internal/RoutingApplication.hs b/src/Servant/Server/Internal/RoutingApplication.hs
--- a/src/Servant/Server/Internal/RoutingApplication.hs
+++ b/src/Servant/Server/Internal/RoutingApplication.hs
@@ -51,7 +51,9 @@
   r <- ra request routingRespond
   respond r
    where
-     routingRespond (Fail err) = respond $ responseServantErr err
+     routingRespond (Fail err) = case errHTTPCode err of
+       404 -> pass
+       _   -> respond $ responseServantErr err
      routingRespond (FailFatal err) = respond $ responseServantErr err
      routingRespond (Route v) = respond v
 
@@ -118,7 +120,7 @@
 instance MonadIO m => MonadIO (DelayedM m) where
   liftIO m = DelayedM (const . liftIO $ Route <$> m)
 
-instance Monad m => Alternative (DelayedM m) where
+instance (Monad m, MonadSnap m) => Alternative (DelayedM m) where
   empty   = DelayedM $ \_ -> return (Fail err404)
   a <|> b = DelayedM $ \req -> do
     respA <- runDelayedM a req
