diff --git a/heist.cabal b/heist.cabal
--- a/heist.cabal
+++ b/heist.cabal
@@ -1,5 +1,5 @@
 name:           heist
-version:        0.14.1
+version:        0.14.1.1
 synopsis:       An Haskell template system supporting both HTML5 and XML.
 description:
     Heist is a powerful template system that supports both HTML5 and XML.
@@ -141,17 +141,17 @@
   build-depends:
     MonadCatchIO-transformers  >= 0.2.1   && < 0.4,
     aeson                      >= 0.6     && < 0.9,
-    attoparsec                 >= 0.10    && < 0.13,
-    base                       >= 4       && < 5,
-    blaze-builder              >= 0.2     && < 0.4,
-    blaze-html                 >= 0.4     && < 0.8,
+    attoparsec                 >= 0.10    && < 0.14,
+    base                       >= 4.5     && < 5,
+    blaze-builder              >= 0.2     && < 0.5,
+    blaze-html                 >= 0.4     && < 0.9,
     bytestring                 >= 0.9     && < 0.11,
     containers                 >= 0.2     && < 0.6,
     directory                  >= 1.1     && < 1.3,
     directory-tree             >= 0.10    && < 0.13,
     dlist                      >= 0.5     && < 0.8,
-    errors                     >= 1.4     && < 1.5,
-    filepath                   >= 1.3     && < 1.4,
+    either                     >= 3.1     && < 4.5,
+    filepath                   >= 1.3     && < 1.5,
     hashable                   >= 1.1     && < 1.3,
     map-syntax                 >= 0.2     && < 0.3,
     mtl                        >= 2.0     && < 2.3,
diff --git a/src/Heist.hs b/src/Heist.hs
--- a/src/Heist.hs
+++ b/src/Heist.hs
@@ -82,12 +82,13 @@
 
 
 ------------------------------------------------------------------------------
-import           Control.Error
 import           Control.Exception (SomeException)
 import           Control.Monad.CatchIO
 import           Control.Monad.State
+import           Control.Monad.Trans.Either
 import           Data.ByteString               (ByteString)
 import qualified Data.ByteString               as B
+import           Data.Either
 import qualified Data.Foldable                 as F
 import           Data.HashMap.Strict           (HashMap)
 import qualified Data.HashMap.Strict           as Map
diff --git a/src/Heist/Common.hs b/src/Heist/Common.hs
--- a/src/Heist/Common.hs
+++ b/src/Heist/Common.hs
@@ -6,10 +6,10 @@
 
 ------------------------------------------------------------------------------
 import           Control.Applicative      (Alternative (..), Applicative (..), (<$>))
-import           Control.Error
 import           Control.Exception        (SomeException)
 import qualified Control.Monad.CatchIO    as C
 import           Control.Monad            (liftM, mplus)
+import           Control.Monad.Trans.Either
 import qualified Data.Attoparsec.Text     as AP
 import           Data.ByteString          (ByteString)
 import qualified Data.ByteString          as B
@@ -19,6 +19,7 @@
 import qualified Data.HashMap.Strict      as Map
 import           Data.List                (isSuffixOf)
 import           Data.Map.Syntax
+import           Data.Maybe               (isJust)
 import           Data.Monoid              (Monoid (..), (<>))
 import           Data.Text                (Text)
 import qualified Data.Text                as T
diff --git a/src/Heist/Internal/Types.hs b/src/Heist/Internal/Types.hs
--- a/src/Heist/Internal/Types.hs
+++ b/src/Heist/Internal/Types.hs
@@ -22,7 +22,7 @@
 
 ------------------------------------------------------------------------------
 import           Control.Applicative
-import           Control.Error
+import           Control.Monad.Trans.Either
 import           Data.HashMap.Strict (HashMap)
 import           Data.Monoid
 import           Data.Text (Text)
diff --git a/src/Heist/Splices/Apply.hs b/src/Heist/Splices/Apply.hs
--- a/src/Heist/Splices/Apply.hs
+++ b/src/Heist/Splices/Apply.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE BangPatterns #-}
 {-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE FlexibleContexts #-}
 module Heist.Splices.Apply where
 
 ------------------------------------------------------------------------------
diff --git a/src/Heist/TemplateDirectory.hs b/src/Heist/TemplateDirectory.hs
--- a/src/Heist/TemplateDirectory.hs
+++ b/src/Heist/TemplateDirectory.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE FlexibleContexts #-}
 {-|
 
 This module defines a TemplateDirectory data structure for convenient
@@ -17,9 +18,9 @@
 
 ------------------------------------------------------------------------------
 import           Control.Concurrent
-import           Control.Error
 import           Control.Monad
 import           Control.Monad.Trans
+import           Control.Monad.Trans.Either
 import           Heist
 import           Heist.Internal.Types
 import           Heist.Splices.Cache
diff --git a/test/heist-testsuite.cabal b/test/heist-testsuite.cabal
--- a/test/heist-testsuite.cabal
+++ b/test/heist-testsuite.cabal
@@ -15,24 +15,25 @@
     test-framework-hunit       >= 0.2.7    && < 0.4,
     test-framework-quickcheck2 >= 0.2.12.1 && < 0.4,
     aeson                      >= 0.6      && < 0.9,
-    attoparsec                 >= 0.10     && < 0.13,
-    base                       >= 4        && < 5,
-    blaze-builder              >= 0.2      && < 0.4,
-    blaze-html                 >= 0.4      && < 0.8,
+    attoparsec                 >= 0.10     && < 0.14,
+    base                       >= 4.5      && < 5,
+    blaze-builder              >= 0.2      && < 0.5,
+    blaze-html                 >= 0.4      && < 0.9,
     bytestring                 >= 0.9      && < 0.11,
     containers                 >= 0.2      && < 0.6,
     directory                  >= 1.1      && < 1.3,
     directory-tree             >= 0.10     && < 0.13,
     dlist                      >= 0.5      && < 0.8,
+    either                     >= 3.1      && < 4.5,
     errors                     >= 1.4      && < 1.5,
-    filepath                   >= 1.3      && < 1.4,
+    filepath                   >= 1.3      && < 1.5,
     hashable                   >= 1.1      && < 1.3,
-    lens                       >= 4.3      && < 4.5,
+    lens                       >= 4.3      && < 4.12,
     mtl                        >= 2.0      && < 2.3,
     process                    >= 1.1      && < 1.3,
-    random                     >= 1.0.1.0  && < 1.1,
+    random                     >= 1.0.1.0  && < 1.2,
     text                       >= 0.10     && < 1.3,
-    time                       >= 1.1      && < 1.5,
+    time                       >= 1.1      && < 1.6,
     transformers               >= 0.2      && < 0.5,
     unordered-containers       >= 0.1.4    && < 0.3,
     vector                     >= 0.9      && < 0.11,
@@ -56,25 +57,26 @@
     -- Copied from regular dependencies:
 
     aeson                      >= 0.6     && < 0.9,
-    attoparsec                 >= 0.10    && < 0.13,
-    base                       >= 4       && < 5,
-    blaze-builder              >= 0.2     && < 0.4,
-    blaze-html                 >= 0.4     && < 0.8,
+    attoparsec                 >= 0.10    && < 0.14,
+    base                       >= 4.5     && < 5,
+    blaze-builder              >= 0.2     && < 0.5,
+    blaze-html                 >= 0.4     && < 0.9,
     bytestring                 >= 0.9     && < 0.11,
     containers                 >= 0.2     && < 0.6,
     directory                  >= 1.1     && < 1.3,
     directory-tree             >= 0.10    && < 0.13,
     dlist                      >= 0.5     && < 0.8,
+    either                     >= 3.1     && < 4.5,
     errors                     >= 1.4     && < 1.5,
-    filepath                   >= 1.3     && < 1.4,
+    filepath                   >= 1.3     && < 1.5,
     hashable                   >= 1.1     && < 1.3,
     map-syntax                 >= 0.1     && < 0.3,
     mtl                        >= 2.0     && < 2.3,
     process                    >= 1.1     && < 1.3,
-    random                     >= 1.0.1.0 && < 1.1,
+    random                     >= 1.0.1.0 && < 1.2,
     statistics                 >= 0.11    && < 0.14,
     text                       >= 0.10    && < 1.3,
-    time                       >= 1.1     && < 1.5,
+    time                       >= 1.1     && < 1.6,
     transformers               >= 0.2     && < 0.5,
     unordered-containers       >= 0.1.4   && < 0.3,
     vector                     >= 0.9     && < 0.11,
