diff --git a/boolector.cabal b/boolector.cabal
--- a/boolector.cabal
+++ b/boolector.cabal
@@ -1,5 +1,5 @@
 name:                boolector
-version:             0.0.0.8
+version:             0.0.0.9
 synopsis:            Haskell bindings for the Boolector SMT solver
 description:
 
@@ -12,7 +12,7 @@
 
 license:             MIT
 license-file:        LICENSE
-author:              Dein Stefan, Johannes Waldmann, Armin Biere
+author:              Deian Stefan, Johannes Waldmann, Armin Biere
 maintainer:          Deian Stefan <deian@cs.ucsd.edu>
 category:            Math, SMT, Theorem Provers, Formal Methods, Bit vectors
 build-type:          Simple
@@ -37,6 +37,8 @@
         temporary,
         directory,
         time
+  if impl(ghc < 8.0)
+    build-depends: fail == 4.9.0.0
 
   ghc-options: -Wall -fno-warn-orphans
   build-tools:      c2hs
diff --git a/src/Boolector.hs b/src/Boolector.hs
--- a/src/Boolector.hs
+++ b/src/Boolector.hs
@@ -238,6 +238,7 @@
 import Boolector.Foreign (Option(..), Status(..))
 import qualified Boolector.Foreign as B
 
+import qualified Control.Monad.Fail as Fail
 import Data.Char (isDigit)
 import Data.Maybe (listToMaybe)
 import Data.Map (Map)
@@ -278,7 +279,7 @@
 
 -- | Bolector monad, keeping track of underlying solver state.
 newtype Boolector a = Boolector { unBoolector :: StateT BoolectorState IO a }
-    deriving (Functor, Applicative, Monad, MonadState BoolectorState, MonadIO)
+    deriving (Functor, Applicative, Monad, MonadState BoolectorState, MonadIO, Fail.MonadFail)
 
 -- | Evaluate a Boolector action with a given configurations.
 evalBoolector :: BoolectorState -> Boolector a -> IO a
