diff --git a/Data/Neither/Base.hs b/Data/Neither/Base.hs
--- a/Data/Neither/Base.hs
+++ b/Data/Neither/Base.hs
@@ -1,8 +1,11 @@
 {-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
 module Data.Neither.Base where
 
 import Control.Applicative
 import Control.Monad
+import Control.Failure
 import Data.Typeable
 import Data.Data
 import Data.Monoid
@@ -18,6 +21,8 @@
 instance Applicative (MEither a) where
     pure = return
     (<*>) = ap
+instance Failure e (MEither e) where
+    failure = MLeft
 meither :: (a -> c) -> (b -> c) -> MEither a b -> c
 meither f _ (MLeft a) = f a
 meither _ f (MRight b) = f b
@@ -57,3 +62,5 @@
     return = MEitherT . return . return
     (MEitherT x) >>= f = MEitherT $
         x >>= meither (return . MLeft) (runMEitherT . f)
+instance Monad m => Failure e (MEitherT e m) where
+    failure = MEitherT . return . MLeft
diff --git a/neither.cabal b/neither.cabal
--- a/neither.cabal
+++ b/neither.cabal
@@ -1,5 +1,5 @@
 name:            neither
-version:         0.0.1
+version:         0.0.2
 license:         BSD3
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
@@ -22,7 +22,8 @@
                      transformers >= 0.2.1 && < 0.3,
                      MonadCatchIO-transformers >= 0.2.2 && < 0.3,
                      mtl >= 1.1.0.2 && < 1.2,
-                     MonadCatchIO-mtl >= 0.3.0.1 && < 0.4
+                     MonadCatchIO-mtl >= 0.3.0.1 && < 0.4,
+                     failure >= 0.1.0 && < 0.2
     exposed-modules: Data.Neither
     other-modules:   Data.Neither.Base
                      Data.Neither.Class
