diff --git a/equivalence.cabal b/equivalence.cabal
--- a/equivalence.cabal
+++ b/equivalence.cabal
@@ -1,5 +1,5 @@
 Name:            equivalence
-Version:         0.3.3
+Version:         0.3.4
 License:         BSD3
 License-File:    LICENSE
 Author:          Patrick Bahr
@@ -31,11 +31,11 @@
 Test-Suite test
   Type:                 exitcode-stdio-1.0
   Main-is:		Data_Test.hs
-  Other-Modules:	Data.Equivalence.Monad_Test
+  Other-Modules:	Data.Equivalence.Monad_Test,Data.Equivalence.Monad, Data.Equivalence.STT
   hs-source-dirs:	src testsuite/tests
   Build-Depends:        base >= 4, template-haskell, containers, mtl >= 2.0.1, QuickCheck >= 2,
                         test-framework, test-framework-quickcheck2, STMonadTrans >= 0.4.3,
-                        transformers >= 0.2, transformers-compat >= 0.3
+                        transformers >= 0.2, transformers-compat >= 0.3, fail
 
 Library
   Build-Depends:
@@ -45,3 +45,4 @@
     Data.Equivalence.STT,
     Data.Equivalence.Monad
   Hs-Source-Dirs: src
+  build-depends: fail
diff --git a/src/Data/Equivalence/Monad.hs b/src/Data/Equivalence/Monad.hs
--- a/src/Data/Equivalence/Monad.hs
+++ b/src/Data/Equivalence/Monad.hs
@@ -56,7 +56,9 @@
 import Control.Monad.Trans.Except (ExceptT)
 import Control.Applicative
 
+import qualified Control.Monad.Fail as Fail
 
+
 {-| This monad transformer encapsulates computations maintaining an
 equivalence relation. A monadic computation of type 'EquivT' @s c v m
 a@ maintains a state space indexed by type @s@, maintains an
@@ -99,6 +101,9 @@
 
 instance MonadTrans (EquivT s c v) where
     lift = EquivT . lift . lift
+
+instance Monad m => Fail.MonadFail (EquivT s c v m) where
+    fail = error
 
 instance (MonadReader r m) => MonadReader r (EquivT s c v m) where
     ask = EquivT $ lift ask
