diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-[Wai-Routes](https://ajnsit.github.io/wai-routes) [![Hackage](https://img.shields.io/badge/hackage-v0.10.3-brightgreen.svg)](https://hackage.haskell.org/package/wai-routes) [![Hackage-Deps](https://img.shields.io/hackage-deps/v/wai-routes.svg)](http://packdeps.haskellers.com/feed?needle=wai-routes) [![Build Status](https://img.shields.io/travis/ajnsit/wai-routes.svg)](https://travis-ci.org/ajnsit/wai-routes) [![Join the chat at https://gitter.im/ajnsit/wai-routes](https://img.shields.io/badge/gitter-join%20chat%20%E2%86%A3-blue.svg)](https://gitter.im/ajnsit/wai-routes)
+[Wai-Routes](https://ajnsit.github.io/wai-routes) [![Hackage](https://img.shields.io/badge/hackage-v0.10.4-brightgreen.svg)](https://hackage.haskell.org/package/wai-routes) [![Hackage-Deps](https://img.shields.io/hackage-deps/v/wai-routes.svg)](http://packdeps.haskellers.com/feed?needle=wai-routes) [![Build Status](https://img.shields.io/travis/ajnsit/wai-routes.svg)](https://travis-ci.org/ajnsit/wai-routes) [![Join the chat at https://gitter.im/ajnsit/wai-routes](https://img.shields.io/badge/gitter-join%20chat%20%E2%86%A3-blue.svg)](https://gitter.im/ajnsit/wai-routes)
 ====================================
 
 Wai-routes is a micro web framework for Haskell that focuses on typesafe URLs.
@@ -117,6 +117,7 @@
 Changelog
 =========
 
+* 0.10.4: Bump deps. Include base-4.12, aeson-1.4, hspec-2.6. Add MonadFail instance for HandlerMI. GHC 8.6 compatibility.
 * 0.10.3: Bump deps. Include base-4.11, aeson-1.3, hspec-2.5, template-haskell-2.13.
 * 0.10.2: http-types-0.12.1.
 * 0.10.1: Compatibility with template-haskell 2.12.
diff --git a/src/Routes/Handler.hs b/src/Routes/Handler.hs
--- a/src/Routes/Handler.hs
+++ b/src/Routes/Handler.hs
@@ -75,11 +75,13 @@
 import Routes.ContentTypes (acceptContentType, contentType, contentTypeFromFile, typeHtml, typeJson, typePlain, typeCss, typeJavascript, typeAll)
 
 import Control.Monad (liftM, when)
+import Control.Monad.Fail (MonadFail)
 import Control.Monad.State (StateT, get, put, modify, runStateT, MonadState, MonadIO, liftIO, MonadTrans)
 
 import Control.Arrow ((***))
 import Control.Applicative (Applicative, (<$>), (<*>))
 
+import qualified Control.Exception.Safe as EX
 import Data.Maybe (fromMaybe)
 import Data.ByteString (ByteString)
 import qualified Data.ByteString as B
@@ -114,7 +116,7 @@
 -- | The internal implementation of the HandlerM monad
 -- TODO: Should change this to StateT over ReaderT (but performance may suffer)
 newtype HandlerMI sub master m a = H { extractH :: StateT (HandlerState sub master) m a }
-    deriving (Applicative, Monad, MonadIO, Functor, MonadTrans, MonadState (HandlerState sub master))
+    deriving (Functor, Applicative, Monad, MonadFail, MonadIO, MonadTrans, MonadState (HandlerState sub master), EX.MonadThrow, EX.MonadCatch, EX.MonadMask)
 
 -- | The HandlerM Monad
 type HandlerM sub master a = HandlerMI sub master IO a
diff --git a/wai-routes.cabal b/wai-routes.cabal
--- a/wai-routes.cabal
+++ b/wai-routes.cabal
@@ -1,6 +1,6 @@
 name               : wai-routes
-version            : 0.10.3
-cabal-version      : >=1.18
+version            : 0.10.4
+cabal-version      : 1.18
 build-type         : Simple
 license            : MIT
 license-file       : LICENSE
@@ -20,18 +20,18 @@
 
 source-repository this
     type     : git
-    location : http://github.com/ajnsit/wai-routes/tree/v0.10.3
-    tag      : v0.10.3
+    location : http://github.com/ajnsit/wai-routes/tree/v0.10.4
+    tag      : v0.10.4
 
 library
-    build-depends      : base               >= 4.7  && < 4.12
+    build-depends      : base               >= 4.7  && < 5
                        , wai                >= 3.0  && < 3.3
                        , wai-extra          >= 3.0  && < 3.1
                        , text               >= 1.2  && < 1.3
-                       , template-haskell   >= 2.9  && < 2.14
+                       , template-haskell   >= 2.9  && < 2.15
                        , mtl                >= 2.1  && < 2.3
-                       , aeson              >= 0.8  && < 1.4
-                       , containers         >= 0.5  && < 0.6
+                       , aeson              >= 0.8  && < 1.5
+                       , containers         >= 0.5  && < 0.7
                        , random             >= 1.1  && < 1.2
                        , path-pieces        >= 0.2  && < 0.3
                        , bytestring         >= 0.10 && < 0.11
@@ -44,6 +44,7 @@
                        , cookie             >= 0.4  && < 0.5
                        , data-default-class >= 0.0  && < 0.2
                        , vault              >= 0.3  && < 0.4
+                       , safe-exceptions    >= 0.1.0.0 && < 0.2
     exposed-modules    : Wai.Routes, Network.Wai.Middleware.Routes
     other-modules      : Routes.Parse
                          Routes.Overlap
@@ -74,10 +75,10 @@
   hs-source-dirs   : test
   GHC-options      : -Wall -threaded -fno-warn-orphans
 
-  build-depends    : base           >= 4.7 && < 4.12
+  build-depends    : base           >= 4.7 && < 5
                    , wai            >= 3.0 && < 3.3
-                   , aeson          >= 0.8 && < 1.4
-                   , hspec          >= 2.1 && < 2.6
+                   , aeson          >= 0.8 && < 1.5
+                   , hspec          >= 2.1 && < 2.7
                    , hspec-wai      >= 0.6 && < 0.10
                    , hspec-wai-json >= 0.6 && < 0.10
                    , text           >= 1.2 && < 1.3
