diff --git a/MediaWiki/API.hs b/MediaWiki/API.hs
--- a/MediaWiki/API.hs
+++ b/MediaWiki/API.hs
@@ -1,4 +1,4 @@
-{-# OPTIONS_GHC -XExistentialQuantification -XDeriveDataTypeable #-}
+{-# OPTIONS_GHC -cpp -XExistentialQuantification -XDeriveDataTypeable #-}
 --------------------------------------------------------------------
 -- |
 -- Module      : MediaWiki.API
@@ -102,7 +102,10 @@
     QMeta s -> Query q{quMetas=(MetaKind s):quMetas q} (toReq qr)
     QGen  s -> Query q{quGenerator=(Just (GeneratorKind s))} (toReq qr)
 
--- | @loginWiki u usr pass
+-- | @loginWiki u usr pass@ logs in to MediaWiki install at @url@ as 
+-- user @usr@ with password credentials @pass@. Notice that we don't
+-- presently allow HTTP Auth to happen in conjunction with the Wiki
+-- login.
 loginWiki :: URLString -> String -> String -> IO (Maybe LoginResponse)
 loginWiki url usr pwd = webPostXml Login.stringXml Nothing url "login" req
   where
@@ -151,6 +154,7 @@
 mwError :: MediaWikiError
 mwError = MediaWikiError{mwErrorCode="",mwErrorInfo=""}
 
+#if defined(EXTENSIBLE_EXCEPTIONS)
 data SomeMWException = forall e . Exception e => SomeMWException e 
     deriving Typeable 
 
@@ -171,12 +175,6 @@
   toException = mwToException
   fromException = mwFromException
 
-handleMW :: (MediaWikiError -> IO a) -> IO a -> IO a
-handleMW h e = catchMW e h
-
-tryMW :: IO a -> IO (Either MediaWikiError a)
-tryMW f = handleMW (\ x -> return (Left x)) (f >>= return.Right)
-
 throwMWError :: MediaWikiError -> IO a
 throwMWError e = throwIO e
 
@@ -184,6 +182,22 @@
 catchMW f hdlr = 
   CE.catch f
            (\ e1 -> hdlr e1)
+#else
+throwMWError :: MediaWikiError -> IO a
+throwMWError mw = throwDyn mw
+
+catchMW :: IO a -> (MediaWikiError -> IO a) -> IO a
+catchMW f hdlr =
+  CE.catchDyn f
+           (\ e1 -> hdlr e1)
+#endif
+
+handleMW :: (MediaWikiError -> IO a) -> IO a -> IO a
+handleMW h e = catchMW e h
+
+tryMW :: IO a -> IO (Either MediaWikiError a)
+tryMW f = handleMW (\ x -> return (Left x)) (f >>= return.Right)
+
 
 instance Show MediaWikiError where
   show x = unlines (
diff --git a/MediaWiki/API/Action/Login/Import.hs b/MediaWiki/API/Action/Login/Import.hs
--- a/MediaWiki/API/Action/Login/Import.hs
+++ b/MediaWiki/API/Action/Login/Import.hs
@@ -19,7 +19,6 @@
 import MediaWiki.API.Action.Login
 
 import Text.XML.Light.Types
-import Text.XML.Light.Proc   ( strContent )
 
 import Control.Monad
 import Data.Maybe
@@ -39,6 +38,7 @@
   let coo = pAttr "cookieprefix" p
   let ses = pAttr "sessionid" p
   case res of
+    Nothing -> fail "missing 'result' api attribute"
     Just "Success" -> 
        return LoginResponse{ lgSuccess=True
                            , lgSession=UserSession
diff --git a/mediawiki.cabal b/mediawiki.cabal
--- a/mediawiki.cabal
+++ b/mediawiki.cabal
@@ -1,5 +1,5 @@
 Name:               mediawiki
-Version:            0.2.1
+Version:            0.2.2
 License:            BSD3
 License-file:       LICENSE
 Category:           Web
@@ -111,16 +111,22 @@
                      MediaWiki.Util.Codec.Percent,
                      MediaWiki.Util.Codec.URLEncoder
     Ghc-Options:     -Wall -O2 
-    Build-Depends:   base, xml, HTTP, network, mime, utf8-string
+    Build-Depends:   base, xml, HTTP >= 3001, network, mime, utf8-string
+  if impl(ghc >= 6.10)
+    cpp-options:     -DEXTENSIBLE_EXCEPTIONS
 
 executable main {
   build-depends:        base
   main-is:              Main.hs
   ghc-options:          -Wall -fglasgow-exts
+  if impl(ghc >= 6.10)
+    cpp-options:     -DEXTENSIBLE_EXCEPTIONS
 }
 
 executable listCat {
   build-depends:        base, pretty
   main-is:              examples/ListCat.hs
   ghc-options:          -Wall -fglasgow-exts -iexamples
+  if impl(ghc >= 6.10)
+    CPP-options:     -DEXTENSIBLE_EXCEPTIONS
 }
