diff --git a/Network/CGI.hs b/Network/CGI.hs
--- a/Network/CGI.hs
+++ b/Network/CGI.hs
@@ -94,7 +94,12 @@
   , module Network.CGI.Compat
   ) where
 
-import Control.Exception.Extensible (Exception(..), SomeException, ErrorCall(..))
+#if MIN_VERSION_base(4,0,0)
+import Control.Exception
+#else
+import Control.Exception.Extensible
+#endif
+  (Exception(..), SomeException, ErrorCall(..))
 import Control.Monad (liftM)
 import Control.Monad.CatchIO (MonadCatchIO)
 import Control.Monad.Trans (MonadIO, liftIO)
diff --git a/Network/CGI/Compat.hs b/Network/CGI/Compat.hs
--- a/Network/CGI/Compat.hs
+++ b/Network/CGI/Compat.hs
@@ -20,7 +20,12 @@
   ) where
 
 import Control.Concurrent (forkIO)
-import Control.Exception.Extensible as Exception (SomeException,throw,catch,finally)
+#if MIN_VERSION_base(4,0,0)
+import Control.Exception
+#else
+import Control.Exception.Extensible
+#endif
+  as Exception (SomeException, throw, catch, finally)
 import Control.Monad (unless)
 import Control.Monad.Trans (MonadIO, liftIO)
 import qualified Data.Map as Map
diff --git a/Network/CGI/Monad.hs b/Network/CGI/Monad.hs
--- a/Network/CGI/Monad.hs
+++ b/Network/CGI/Monad.hs
@@ -28,7 +28,12 @@
  ) where
 
 import Prelude hiding (catch)
-import Control.Exception.Extensible as Exception (SomeException, throwIO)
+#if MIN_VERSION_base(4,0,0)
+import Control.Exception
+#else
+import Control.Exception.Extensible
+#endif
+  as Exception (SomeException, throwIO)
 import Control.Monad (liftM)
 import Control.Monad.CatchIO (MonadCatchIO, block, catch, try, unblock)
 import Control.Monad.Error (MonadError(..))
diff --git a/cgi.cabal b/cgi.cabal
--- a/cgi.cabal
+++ b/cgi.cabal
@@ -1,5 +1,5 @@
 Name: cgi
-Version: 3001.1.8.3
+Version: 3001.1.8.4
 Copyright: Bjorn Bringert, Andy Gill, Anders Kaseorg, Ian Lynagh, 
            Erik Meijer, Sven Panne, Jeremy Shaw
 Category: Network
@@ -16,6 +16,7 @@
 
 Flag split-base
 Flag bytestring-in-base
+Flag extensible-exceptions-in-base
 
 Library
   Exposed-Modules:
@@ -28,7 +29,9 @@
     Network.CGI.Accept,
     Network.CGI.Multipart,
     Network.CGI.Header
-  Extensions: MultiParamTypeClasses
+  Extensions:
+    CPP,
+    MultiParamTypeClasses
   ghc-options: -Wall
 
   Build-depends:
@@ -36,8 +39,7 @@
     parsec >= 2.0,
     mtl >= 1.0,
     MonadCatchIO-mtl,
-    xhtml >= 3000.0.0,
-    extensible-exceptions
+    xhtml >= 3000.0.0
   If flag(split-base)
     Build-depends: base >= 3 && < 5, old-time, old-locale, containers
   Else
@@ -46,6 +48,10 @@
     Build-depends: base >= 2 && < 3
   Else
     Build-depends: base < 2 || < 5, bytestring
+  If flag(extensible-exceptions-in-base)
+    Build-depends: base >= 4
+  Else
+    Build-depends: base < 4, extensible-exceptions
 
 --Executable:     printinput
 --Main-Is:        printinput.hs
