diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 1.3.4
+
+* Relaxed a bunch of type signatures
+
 ## 1.3.3.2
 
 * Support for http-conduit-2.2.0 [#47](https://github.com/yesodweb/authenticate/issues/47)
diff --git a/OpenId2/Discovery.hs b/OpenId2/Discovery.hs
--- a/OpenId2/Discovery.hs
+++ b/OpenId2/Discovery.hs
@@ -40,8 +40,6 @@
 import Control.Applicative ((<$>), (<*>))
 import Network.HTTP.Types (status200)
 import Control.Exception (throwIO)
-import Control.Monad.Trans.Control (MonadBaseControl)
-import Control.Monad.Trans.Resource (MonadResource)
 import Data.Conduit ((=$), ($$), yield)
 import Text.HTML.TagStream.Text (tokenStream, Token)
 import Text.HTML.TagStream.Types (Token' (TagOpen))
@@ -52,7 +50,7 @@
     deriving Show
 
 -- | Attempt to resolve an OpenID endpoint, and user identifier.
-discover :: (MonadBaseControl IO m, MonadIO m, MonadResource m) => Identifier -> Manager -> m Discovery
+discover :: MonadIO m => Identifier -> Manager -> m Discovery
 discover ident@(Identifier i) manager = do
     res1 <- discoverYADIS ident Nothing 10 manager
     case res1 of
@@ -67,7 +65,7 @@
 
 -- | Attempt a YADIS based discovery, given a valid identifier.  The result is
 --   an OpenID endpoint, and the actual identifier for the user.
-discoverYADIS :: (MonadResource m, MonadBaseControl IO m)
+discoverYADIS :: MonadIO m
               => Identifier
               -> Maybe String
               -> Int -- ^ remaining redirects
@@ -141,9 +139,9 @@
 
 -- | Attempt to discover an OpenID endpoint, from an HTML document.  The result
 -- will be an endpoint on success, and the actual identifier of the user.
-discoverHTML :: (MonadResource m, MonadBaseControl IO m) => Identifier -> Manager -> m (Maybe Discovery)
+discoverHTML :: MonadIO m => Identifier -> Manager -> m (Maybe Discovery)
 discoverHTML ident'@(Identifier ident) manager = do
-    req <- liftIO $ parseUrl $ unpack ident
+    req <- liftIO $ parseUrlThrow $ unpack ident
     lbs <- liftM responseBody $ httpLbs req manager
     return $ parseHTML ident' . toStrict . decodeUtf8With lenientDecode $ lbs
 
diff --git a/Web/Authenticate/BrowserId.hs b/Web/Authenticate/BrowserId.hs
--- a/Web/Authenticate/BrowserId.hs
+++ b/Web/Authenticate/BrowserId.hs
@@ -6,26 +6,24 @@
     ) where
 
 import Data.Text (Text)
-import Network.HTTP.Conduit (parseUrl, responseBody, httpLbs, Manager, method, urlEncodedBody)
+import Network.HTTP.Conduit (parseUrlThrow, responseBody, httpLbs, Manager, method, urlEncodedBody)
 import Data.Aeson (json, Value (Object, String))
 import Data.Attoparsec.Lazy (parse, maybeResult)
 import qualified Data.HashMap.Lazy as Map
 import Data.Text.Encoding (encodeUtf8)
-import Control.Monad.IO.Class (liftIO)
-import Control.Monad.Trans.Control (MonadBaseControl)
-import Control.Monad.Trans.Resource (MonadResource)
+import Control.Monad.IO.Class (MonadIO, liftIO)
 
 -- | Location of the Javascript file hosted by browserid.org
 browserIdJs :: Text
 browserIdJs = "https://login.persona.org/include.js"
 
-checkAssertion :: (MonadResource m, MonadBaseControl IO m)
+checkAssertion :: MonadIO m
                => Text -- ^ audience
                -> Text -- ^ assertion
                -> Manager
                -> m (Maybe Text)
 checkAssertion audience assertion manager = do
-    req' <- liftIO $ parseUrl "https://verifier.login.persona.org/verify"
+    req' <- liftIO $ parseUrlThrow "https://verifier.login.persona.org/verify"
     let req = urlEncodedBody
                 [ ("audience", encodeUtf8 audience)
                 , ("assertion", encodeUtf8 assertion)
diff --git a/Web/Authenticate/OpenId.hs b/Web/Authenticate/OpenId.hs
--- a/Web/Authenticate/OpenId.hs
+++ b/Web/Authenticate/OpenId.hs
@@ -25,7 +25,7 @@
 import Data.Text.Encoding.Error (lenientDecode)
 import Data.Text.Lazy (toStrict)
 import Network.HTTP.Conduit
-    ( parseUrl, urlEncodedBody, responseBody, httpLbs
+    ( parseUrlThrow, urlEncodedBody, responseBody, httpLbs
     , Manager
     )
 import Control.Arrow ((***), second)
@@ -36,11 +36,9 @@
 import Blaze.ByteString.Builder (toByteString)
 import Network.HTTP.Types (renderQueryText)
 import Control.Exception (throwIO)
-import Control.Monad.Trans.Control (MonadBaseControl)
-import Control.Monad.Trans.Resource (MonadResource)
 
 getForwardUrl
-    :: (MonadResource m, MonadBaseControl IO m)
+    :: MonadIO m
     => Text -- ^ The openid the user provided.
     -> Text -- ^ The URL for this application\'s complete page.
     -> Maybe Text -- ^ Optional realm
@@ -81,7 +79,7 @@
                 : params
 
 authenticate
-    :: (MonadBaseControl IO m, MonadResource m, MonadIO m)
+    :: MonadIO m
     => [(Text, Text)]
     -> Manager
     -> m (Identifier, [(Text, Text)])
@@ -97,7 +95,7 @@
     }
 
 authenticateClaimed
-    :: (MonadBaseControl IO m, MonadResource m, MonadIO m)
+    :: MonadIO m
     => [(Text, Text)]
     -> Manager
     -> m OpenIdResponse
@@ -124,7 +122,7 @@
     let params' = map (encodeUtf8 *** encodeUtf8)
                 $ ("openid.mode", "check_authentication")
                 : filter (\(k, _) -> k /= "openid.mode") params
-    req' <- liftIO $ parseUrl $ unpack $ endpoint discOP
+    req' <- liftIO $ parseUrlThrow $ unpack $ endpoint discOP
     let req = urlEncodedBody params' req'
     rsp <- httpLbs req manager
     let rps = parseDirectResponse $ toStrict $ decodeUtf8With lenientDecode $ responseBody rsp
diff --git a/Web/Authenticate/Rpxnow.hs b/Web/Authenticate/Rpxnow.hs
--- a/Web/Authenticate/Rpxnow.hs
+++ b/Web/Authenticate/Rpxnow.hs
@@ -38,8 +38,6 @@
 import qualified Data.HashMap.Lazy as Map
 import Control.Applicative ((<$>), (<*>))
 import Control.Exception (throwIO)
-import Control.Monad.Trans.Control (MonadBaseControl)
-import Control.Monad.Trans.Resource (MonadResource)
 
 -- | Information received from Rpxnow after a valid login.
 data Identifier = Identifier
@@ -49,7 +47,7 @@
     deriving (Eq, Ord, Read, Show, Data, Typeable)
 
 -- | Attempt to log a user in.
-authenticate :: (MonadResource m, MonadBaseControl IO m)
+authenticate :: MonadIO m
              => String -- ^ API key given by RPXNOW.
              -> String -- ^ Token passed by client.
              -> Manager
@@ -61,7 +59,7 @@
             , "&token="
             , S.pack token
             ]
-    req' <- liftIO $ parseUrl "https://rpxnow.com"
+    req' <- liftIO $ parseUrlThrow "https://rpxnow.com"
     let req =
             req'
                 { method = "POST"
diff --git a/authenticate.cabal b/authenticate.cabal
--- a/authenticate.cabal
+++ b/authenticate.cabal
@@ -1,5 +1,5 @@
 name:            authenticate
-version:         1.3.3.2
+version:         1.3.4
 license:         MIT
 license-file:    LICENSE
 author:          Michael Snoyman, Hiromi Ishii, Arash Rouhani
@@ -34,7 +34,6 @@
                    , conduit                       >= 0.5
                    , tagstream-conduit             >= 0.5.5
                    , resourcet
-                   , monad-control
     exposed-modules: Web.Authenticate.Rpxnow,
                      Web.Authenticate.OpenId,
                      Web.Authenticate.BrowserId,
