diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,3 +1,5 @@
+# 0.3.0
+* Add missing MonadFail instance.
 # 0.2.4
 * Loosen all deps
 # 0.2.3
diff --git a/drifter.cabal b/drifter.cabal
--- a/drifter.cabal
+++ b/drifter.cabal
@@ -1,5 +1,5 @@
 name:                drifter
-version:             0.2.4
+version:             0.3.0
 synopsis:            Simple schema management for arbitrary databases.
 description:         Simple support for migrating database schemas, which allows
                      haskell functions to be run as a part of the migration. Note
@@ -33,7 +33,7 @@
     hs-source-dirs:     src
     default-language:   Haskell2010
 
-    build-depends:      base                >=4.5   && <5
+    build-depends:      base                >=4.9   && <5
                     ,   fgl                 >=5.5
                     ,   containers          >=0.5
                     ,   text                >=0.11
diff --git a/src/Drifter/Graph.hs b/src/Drifter/Graph.hs
--- a/src/Drifter/Graph.hs
+++ b/src/Drifter/Graph.hs
@@ -7,6 +7,7 @@
 -------------------------------------------------------------------------------
 import           Control.Applicative  as A
 import           Control.Monad
+import           Control.Monad.Fail   as Fail
 import           Data.Graph.Inductive (Edge, Gr, UEdge, mkGraph, topsort')
 import qualified Data.Map.Strict      as Map
 import           Data.Maybe
@@ -75,5 +76,7 @@
       Left  l -> return (Left l)
       Right r -> runEitherT (k r)
   {-# INLINE (>>=) #-}
-  fail = EitherT . fail
+
+instance MonadFail m => MonadFail (EitherT e m) where
+  fail = EitherT . Fail.fail
   {-# INLINE fail #-}
