diff --git a/heist.cabal b/heist.cabal
--- a/heist.cabal
+++ b/heist.cabal
@@ -1,5 +1,5 @@
 name:           heist
-version:        1.1
+version:        1.1.0.1
 synopsis:       An Haskell template system supporting both HTML5 and XML.
 description:
     Heist is a powerful template system that supports both HTML5 and XML.
@@ -38,7 +38,8 @@
   GHC == 7.10.3,
   GHC == 8.0.1,
   GHC == 8.2.2,
-  GHC == 8.4.1
+  GHC == 8.4.3,
+  GHC == 8.6.1
 
 extra-source-files:
   .ghci,
@@ -159,13 +160,13 @@
     Heist.Interpreted.Internal
 
   build-depends:
-    aeson                      >= 0.6     && < 1.4,
+    aeson                      >= 0.6     && < 1.5,
     attoparsec                 >= 0.10    && < 0.14,
-    base                       >= 4.5     && < 4.12,
+    base                       >= 4.5     && < 4.13,
     blaze-builder              >= 0.2     && < 0.5,
     blaze-html                 >= 0.4     && < 0.10,
     bytestring                 >= 0.9     && < 0.11,
-    containers                 >= 0.2     && < 0.6,
+    containers                 >= 0.2     && < 0.7,
     directory                  >= 1.1     && < 1.4,
     directory-tree             >= 0.10    && < 0.13,
     dlist                      >= 0.5     && < 0.9,
@@ -218,8 +219,8 @@
 
   build-depends:
     HUnit                      >= 1.2      && < 2,
-    QuickCheck                 >= 2        && < 2.12,
-    lens                       >= 4.3      && < 4.17,
+    QuickCheck                 >= 2        && < 2.13,
+    lens                       >= 4.3      && < 4.18,
     test-framework             >= 0.4      && < 0.9,
     test-framework-hunit       >= 0.2.7    && < 0.4,
     test-framework-quickcheck2 >= 0.2.12.1 && < 0.4,
@@ -253,6 +254,9 @@
   if !impl(ghc >= 8.0)
     build-depends: semigroups >= 0.16 && < 0.19
 
+  if impl(ghc >= 7.8) && impl(ghc < 7.10)
+    build-depends: transformers-compat >= 0.3 && < 0.7
+
   ghc-options: -Wall -fwarn-tabs -funbox-strict-fields -threaded
   Extensions: OverloadedStrings
 
@@ -263,7 +267,8 @@
 
   build-depends:
     HUnit,
-    criterion                 >= 1.0     && < 1.5,
+    criterion                 >= 1.0     && < 1.6,
+    criterion-measurement     >= 0.1     && < 0.2,
     test-framework,
     test-framework-hunit,
 
@@ -287,7 +292,7 @@
     mtl,
     process,
     random,
-    statistics                 >= 0.11    && < 0.15,
+    statistics                 >= 0.11    && < 0.16,
     text,
     time,
     transformers,
@@ -298,6 +303,9 @@
 
   if !impl(ghc >= 8.0)
     build-depends: semigroups >= 0.16 && < 0.19
+
+  if impl(ghc >= 7.8) && impl(ghc < 7.10)
+    build-depends: transformers-compat
 
   ghc-options: -Wall -fwarn-tabs -funbox-strict-fields -threaded
                -fno-warn-unused-do-bind -rtsopts
diff --git a/src/Heist/Internal/Types/HeistState.hs b/src/Heist/Internal/Types/HeistState.hs
--- a/src/Heist/Internal/Types/HeistState.hs
+++ b/src/Heist/Internal/Types/HeistState.hs
@@ -33,6 +33,9 @@
 #else
 import           Control.Monad.Error           (MonadError (..))
 #endif
+#if MIN_VERSION_base(4,9,0)
+import qualified Control.Monad.Fail as Fail
+#endif
 import           Control.Monad.Fix             (MonadFix (..))
 import           Control.Monad.Reader          (MonadReader (..))
 import           Control.Monad.State.Strict    (MonadState (..), StateT)
@@ -396,6 +399,14 @@
         (a, s') <- m r s
         runHeistT (k a) r s'
     {-# INLINE (>>=) #-}
+
+
+#if MIN_VERSION_base(4,9,0)
+------------------------------------------------------------------------------
+-- | MonadFail instance
+instance Fail.MonadFail m => Fail.MonadFail (HeistT n m) where
+    fail = lift . Fail.fail
+#endif
 
 
 ------------------------------------------------------------------------------
