diff --git a/Web/Authenticate/OpenId.hs b/Web/Authenticate/OpenId.hs
--- a/Web/Authenticate/OpenId.hs
+++ b/Web/Authenticate/OpenId.hs
@@ -26,12 +26,19 @@
 import Control.Monad.Trans
 import qualified Safe.Failure as A
 import Data.Generics
-import Control.Failure
+import Control.Failure hiding (Error)
 import Control.Exception
 
 -- | An openid identifier (ie, a URL).
 newtype Identifier = Identifier { identifier :: String }
     deriving (Eq, Show)
+
+data Error v = Error String | Ok v
+instance Monad Error where
+    return = Ok
+    Error s >>= _ = Error s
+    Ok v >>= f = f v
+    fail s = Error s
 
 -- | Returns a URL to forward the user to in order to login.
 getForwardUrl :: (MonadIO m, MonadFailure WgetException m)
diff --git a/authenticate.cabal b/authenticate.cabal
--- a/authenticate.cabal
+++ b/authenticate.cabal
@@ -1,5 +1,5 @@
 name:            authenticate
-version:         0.4.0
+version:         0.4.0.1
 license:         BSD3
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
@@ -17,7 +17,7 @@
     build-depends:   base >= 4 && < 5,
                      json >= 0.4.3 && < 0.5,
                      http-wget >= 0.4.0 && < 0.5,
-                     tagsoup >= 0.6 && < 0.7,
+                     tagsoup >= 0.6 && < 0.9,
                      failure >= 0.0.0 && < 0.1,
                      safe-failure >= 0.4 && < 0.5,
                      transformers >= 0.1.4.0 && < 0.2,
