diff --git a/Main.hs b/Main.hs
--- a/Main.hs
+++ b/Main.hs
@@ -38,8 +38,7 @@
 
 import Control.Monad
 import Control.Concurrent
-import Control.Exception
-import qualified Control.Exception as C
+import qualified Control.OldException as C
 
 import Data.List
 import Data.Maybe
@@ -62,7 +61,7 @@
 
 main :: IO ()
 main =
- bracket
+ C.bracket
    -- We do all our work in a temp directory
   (do cwd  <- getCurrentDirectory
       etmp <- myReadProcess "mktemp" ["-d"] []
@@ -370,6 +369,8 @@
 
         ,("pthread",     "")
         ,("m",          "")
+        ,("gl",          "")
+        ,("glu",          "")
         ,("db_cxx",          "")
 
         ,("icui18n",          "icu")
@@ -409,6 +410,9 @@
     ,"gtk2hs"
     ,"darcs"
     ,"greencard"
+    ,"pandoc"
+    ,"pugs-drift"
+    ,"wol"
     ]
 
 -- translate some library dependencies to gtk names
@@ -499,7 +503,9 @@
     , arch_pkgver  = vers
     , arch_url     = "http://hackage.haskell.org/cgi-bin/hackage-scripts/package/"++display name
  --       else homepage cabal
-    , arch_pkgdesc = synopsis cabal
+    , arch_pkgdesc = case synopsis cabal of
+                          [] -> take 80 (description cabal)
+                          s  -> s
     , arch_license =
         ArchList . return $
             case license cabal of
@@ -535,26 +541,31 @@
        ++ (display name </> display vers </> display name <-> display vers <.> "tar.gz")
 
     , arch_build =
-        [ "cd $startdir/src/" </> display name <-> display vers
-        , "runhaskell Setup configure --prefix=/usr || return 1"
+        [ "cd ${srcdir}/" </> display name <-> display vers
+        , "runhaskell Setup configure --prefix=/usr --docdir=/usr/share/doc/${pkgname} || return 1"
         , "runhaskell Setup build                   || return 1"
         ] ++
 
     -- Only needed for libraries:
         (if hasLibrary
            then
-            ["runhaskell Setup register   --gen-script || return 1"
-            ,"runhaskell Setup unregister --gen-script || return 1"
-            ,"install -D -m744 register.sh   $startdir/pkg/usr/share/haskell/$pkgname/register.sh"
-            , "install    -m744 unregister.sh $startdir/pkg/usr/share/haskell/$pkgname/unregister.sh"
+            [ "runhaskell Setup haddock || return 1"
+            , "runhaskell Setup register   --gen-script || return 1"
+            , "runhaskell Setup unregister --gen-script || return 1"
+            , "install -D -m744 register.sh   ${pkgdir}/usr/share/haskell/$pkgname/register.sh"
+            , "install    -m744 unregister.sh ${pkgdir}/usr/share/haskell/$pkgname/unregister.sh"
+            , "install -d -m755 $pkgdir/usr/share/doc/ghc/libraries"
+            , "ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/libraries/" ++ (display name)
             ]
            else [])
          ++
-         ["runhaskell Setup copy --destdir=$startdir/pkg || return 1"]
+         ["runhaskell Setup copy --destdir=${pkgdir} || return 1"]
          ++
          (if not (null (licenseFile cabal)) && license cabal `notElem` [GPL,LGPL]
-          then ["install -D -m644 " ++ licenseFile cabal ++
-                    " $startdir/pkg/usr/share/licenses/$pkgname/LICENSE || return 1" ]
+          then
+              [ "install -D -m644 " ++ licenseFile cabal ++ " ${pkgdir}/usr/share/licenses/$pkgname/LICENSE || return 1"
+              , "rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE"
+              ]
           else [])
 
     -- if its a library:
@@ -608,16 +619,21 @@
     [ "HS_DIR=/usr/share/haskell/" ++ pkgname
     , "post_install() {"
     , "  ${HS_DIR}/register.sh"
+    , "  (cd /usr/share/doc/ghc/libraries; ./gen_contents_index)"
     , "}"
     , "pre_upgrade() {"
     , "  ${HS_DIR}/unregister.sh"
     , "}"
     , "post_upgrade() {"
     , "  ${HS_DIR}/register.sh"
+    , "  (cd /usr/share/doc/ghc/libraries; ./gen_contents_index)"
     , "}"
     , "pre_remove() {"
     , "  ${HS_DIR}/unregister.sh"
     , "}"
+    , "post_remove() {"
+    , "  (cd /usr/share/doc/ghc/libraries; ./gen_contents_index)"
+    , "}"
     , "op=$1"
     , "shift"
     , "$op $*" ]
@@ -879,7 +895,7 @@
 
 -- Safe wrapper for getEnv
 getEnvMaybe :: String -> IO (Maybe String)
-getEnvMaybe name = handle (const $ return Nothing) (Just `fmap` getEnv name)
+getEnvMaybe name = C.handle (const $ return Nothing) (Just `fmap` getEnv name)
 
 ------------------------------------------------------------------------
 
diff --git a/cabal2arch.cabal b/cabal2arch.cabal
--- a/cabal2arch.cabal
+++ b/cabal2arch.cabal
@@ -1,5 +1,5 @@
 name:               cabal2arch
-version:            0.5.3
+version:            0.6
 homepage:           http://code.haskell.org/~dons/code/cabal2arch
 synopsis:           Create Arch Linux packages from Cabal packages
 description:        Create Arch Linux packages from Cabal packages
@@ -11,27 +11,18 @@
 cabal-version:      >= 1.2
 build-type:         Simple
 
-flag small_base
-    description: Choose the new smaller, split-up base package.
-
 executable cabal2arch
     main-is:            Main.hs
     ghc-options:        -Wall
 
-    if flag(small_base)
-        build-depends:      
-            base < 4,
-            pretty,
-            process,
-            directory,
-            containers,
-            bytestring
-    else
-        build-depends:      
-            base < 3
-
-    build-depends:
-            Cabal   > 1.6,
-            pureMD5 >= 0.2.1,
-            filepath
+    build-depends:      
+        base >= 4 && <= 6,
+        pretty,
+        process,
+        directory,
+        containers,
+        bytestring,
+        Cabal   > 1.6,
+        pureMD5 >= 0.2.1,
+        filepath
 
