diff --git a/HTTP.cabal b/HTTP.cabal
--- a/HTTP.cabal
+++ b/HTTP.cabal
@@ -1,5 +1,5 @@
 Name: HTTP
-Version: 4000.3.13
+Version: 4000.3.14
 Cabal-Version: >= 1.8
 Build-type: Simple
 License: BSD3
@@ -109,7 +109,7 @@
 
   -- note the test harness constraints should be kept in sync with these
   -- where dependencies are shared
-  Build-depends: base >= 4.3.0.0 && < 4.13, parsec >= 2.0 && < 3.2
+  Build-depends: base >= 4.3.0.0 && < 4.14, parsec >= 2.0 && < 3.2
   Build-depends: array >= 0.3.0.2 && < 0.6, bytestring >= 0.9.1.5 && < 0.11
   Build-depends: time >= 1.1.2.3 && < 1.10
 
@@ -122,7 +122,7 @@
     Build-depends: mtl >= 2.0 && < 2.3
 
   if flag(network-uri)
-    Build-depends: network-uri == 2.6.*, network >= 2.6 && < 3.1
+    Build-depends: network-uri == 2.6.*, network >= 2.6 && < 3.2
   else
     Build-depends: network >= 2.4 && < 2.6
 
@@ -151,13 +151,13 @@
                      bytestring >= 0.9.1.5 && < 0.11,
                      deepseq >= 1.3.0.0 && < 1.5,
                      pureMD5 >= 0.2.4 && < 2.2,
-                     base >= 4.3.0.0 && < 4.13,
+                     base >= 4.3.0.0 && < 4.14,
                      split >= 0.1.3 && < 0.3,
                      test-framework >= 0.2.0 && < 0.9,
                      test-framework-hunit >= 0.3.0 && <0.4
 
   if flag(network-uri)
-    Build-depends: network-uri == 2.6.*, network >= 2.6 && < 3.1
+    Build-depends: network-uri == 2.6.*, network >= 2.6 && < 3.2
   else
     Build-depends: network >= 2.3 && < 2.6
 
@@ -176,5 +176,3 @@
       build-depends:
                          conduit >= 1.1 && < 1.4,
                          conduit-extra >= 1.1 && < 1.4
-
-
diff --git a/Network/Browser.hs b/Network/Browser.hs
--- a/Network/Browser.hs
+++ b/Network/Browser.hs
@@ -133,6 +133,9 @@
 
 import Network.Stream ( ConnError(..), Result )
 import Network.BufferType
+#if (MIN_VERSION_base(4,9,0)) && !(MIN_VERSION_base(4,13,0))
+import Control.Monad.Fail
+#endif
 
 import Data.Char (toLower)
 import Data.List (isPrefixOf)
@@ -422,8 +425,13 @@
   pure  = return
   (<*>) = ap
 #else
- deriving (Functor, Applicative, Monad, MonadIO, MonadState (BrowserState conn))
+ deriving
+ ( Functor, Applicative, Monad, MonadIO, MonadState (BrowserState conn)
+#if MIN_VERSION_base(4,9,0)
+ , MonadFail
 #endif
+ )
+#endif
 
 runBA :: BrowserState conn -> BrowserAction conn a -> IO a
 runBA bs = flip evalStateT bs . unBA
@@ -720,7 +728,7 @@
     Left e  -> do
      let errStr = ("Network.Browser.request: Error raised " ++ show e)
      err errStr
-     fail errStr
+     Prelude.fail errStr
  where
   initialState = nullRequestState
   nullVal      = buf_empty bufferOps
diff --git a/Network/HTTP/Base.hs b/Network/HTTP/Base.hs
--- a/Network/HTTP/Base.hs
+++ b/Network/HTTP/Base.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE CPP, ScopedTypeVariables #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Network.HTTP.Base
@@ -209,7 +209,11 @@
   default_http  = 80
   default_https = 443
 
+#if MIN_VERSION_base(4,13,0)
+failHTTPS :: MonadFail m => URI -> m ()
+#else
 failHTTPS :: Monad m => URI -> m ()
+#endif
 failHTTPS uri
   | map toLower (uriScheme uri) == "https:" = fail "https not supported"
   | otherwise = return ()
@@ -713,7 +717,11 @@
 
 -- | @getAuth req@ fishes out the authority portion of the URL in a request's @Host@
 -- header.
+#if MIN_VERSION_base(4,13,0)
+getAuth :: MonadFail m => Request ty -> m URIAuthority
+#else
 getAuth :: Monad m => Request ty -> m URIAuthority
+#endif
 getAuth r = 
    -- ToDo: verify that Network.URI functionality doesn't take care of this (now.)
   case parseURIAuthority auth of
