diff --git a/Main.hs b/Main.hs
--- a/Main.hs
+++ b/Main.hs
@@ -19,7 +19,9 @@
 -- C libraries are dynamicall linked, should be listed in depends,
 -- rather than makedepends
 
+import Distribution.Package
 import Distribution.PackageDescription
+import Distribution.PackageDescription.Parse
 import Distribution.PackageDescription.Configuration
 import Distribution.Simple.Utils hiding (die)
 import Distribution.Verbosity
@@ -63,7 +65,7 @@
  bracket
    -- We do all our work in a temp directory
   (do cwd  <- getCurrentDirectory
-      etmp <- readProcess "mktemp" ["-d"] []
+      etmp <- myReadProcess "mktemp" ["-d"] []
       case etmp of
         Left _  -> die "Unable to create temp directory"
         Right d -> do
@@ -87,7 +89,7 @@
    email     <- do
        r <- getEnvMaybe "ARCH_HASKELL" 
        case r of
-            Nothing -> do hPutStrLn stderr "Warning: ARCH_HASKELL environment variable not set. Set this to the maintainer contat you wish to use. \n E.g. 'Arch Haskell Team <arch-haskell@haskell.org>'"
+            Nothing -> do hPutStrLn stderr "Warning: ARCH_HASKELL environment variable not set. Set this to the maintainer contact you wish to use. \n E.g. 'Arch Haskell Team <arch-haskell@haskell.org>'"
                           return []
             Just s  -> return s
 
@@ -133,7 +135,7 @@
 
    setCurrentDirectory cwd
 
-   tarred <- readProcess "tar" ["-zcvvf",(dir <.> "tar.gz"), dir] []
+   tarred <- myReadProcess "tar" ["-zcvvf",(dir <.> "tar.gz"), dir] []
    case tarred of
         Left (_,s,_)  -> do
             hPutStrLn stderr s
@@ -143,6 +145,7 @@
    -- RSS generation help
    writeFile "title" (arch_pkgname pkgbuild ++ "-" ++ (render . disp $ arch_pkgver pkgbuild))
    writeFile "desc"  (show $ arch_pkgdesc pkgbuild)
+   writeFile "link"  (show $ arch_url pkgbuild)
 
 ------------------------------------------------------------------------
 
@@ -156,7 +159,7 @@
 getMD5 pkg@(PkgBuild { arch_source = ArchList [url] }) = do
    hPutStrLn stderr $ "Fetching " ++ url
    hFlush stderr
-   eres <- readProcess "wget" [url] []
+   eres <- myReadProcess "wget" [url] []
    case eres of
        Left (_,s,_) -> do
             hPutStrLn stderr s
@@ -189,44 +192,45 @@
 --
 corePackages :: [Dependency]
 corePackages =
-    [Dependency "ALUT"             (ThisVersion (Version  [2,1,0,0] []))
-    ,Dependency "Cabal"            (ThisVersion (Version  [1,2,3,0] []))
-    ,Dependency "GLUT"             (ThisVersion (Version  [2,1,1,1] []))
-    ,Dependency "HUnit"            (ThisVersion (Version  [1,2,0,0] []))
-    ,Dependency "OpenAL"           (ThisVersion (Version  [1,3,1,1] []))
-    ,Dependency "QuickCheck"       (ThisVersion (Version  [1,1,0,0] []))
-    ,Dependency "array"            (ThisVersion (Version  [0,1,0,0] []))
-    ,Dependency "base"             (ThisVersion (Version  [3,0,1,0] []))
-    ,Dependency "bytestring"       (ThisVersion (Version  [0,9,0,1] []))
-    ,Dependency "cgi"              (ThisVersion (Version  [3001,1,5,1] []))
-    ,Dependency "ghc"              (AnyVersion)
-    ,Dependency "containers"       (ThisVersion (Version  [0,1,0,1] []))
-    ,Dependency "directory"        (ThisVersion (Version  [1,0,0,0] []))
-    ,Dependency "fgl"              (ThisVersion (Version  [5,4,1,1] []))
-    ,Dependency "filepath"         (ThisVersion (Version  [1,1,0,0] []))
-    ,Dependency "haskell-src"      (ThisVersion (Version  [1,0,1,1] []))
-    ,Dependency "haskell98"        (ThisVersion (Version  [1,0,1,0] []))
-    ,Dependency "hpc"              (ThisVersion (Version  [0,5,0,0] []))
-    ,Dependency "html"             (ThisVersion (Version  [1,0,1,1] []))
-    ,Dependency "mtl"              (ThisVersion (Version  [1,1,0,1] []))
-    ,Dependency "network"          (ThisVersion (Version  [2,1,0,0] []))
-    ,Dependency "old-locale"       (ThisVersion (Version  [1,0,0,0] []))
-    ,Dependency "old-time"         (ThisVersion (Version  [1,0,0,0] []))
-    ,Dependency "packedstring"     (ThisVersion (Version  [0,1,0,0] []))
-    ,Dependency "parallel"         (ThisVersion (Version  [1,0,0,0] []))
-    ,Dependency "parsec"           (ThisVersion (Version  [2,1,0,0] []))
-    ,Dependency "pretty"           (ThisVersion (Version  [1,0,0,0] []))
-    ,Dependency "process"          (ThisVersion (Version  [1,0,0,0] []))
-    ,Dependency "random"           (ThisVersion (Version  [1,0,0,0] []))
-    ,Dependency "readline"         (ThisVersion (Version  [1,0,1,0] []))
-    ,Dependency "regex-base"       (ThisVersion (Version  [0,72,0,1] []))
-    ,Dependency "regex-compat"     (ThisVersion (Version  [0,71,0,1] []))
-    ,Dependency "regex-posix"      (ThisVersion (Version  [0,72,0,2] []))
-    ,Dependency "stm"              (ThisVersion (Version  [2,1,1,0] []))
-    ,Dependency "template-haskell" (ThisVersion (Version  [2,2,0,0] []))
-    ,Dependency "time"             (ThisVersion (Version  [1,1,2,0] []))
-    ,Dependency "unix"             (ThisVersion (Version  [2,3,0,0] []))
-    ,Dependency "xhtml"            (ThisVersion (Version  [3000,0,2,1] []))
+    [Dependency (PackageName "ALUT")             (ThisVersion (Version  [2,1,0,0] []))
+    ,Dependency (PackageName "Cabal")            (ThisVersion (Version  [1,2,3,0] []))
+    ,Dependency (PackageName "GLUT")             (ThisVersion (Version  [2,1,1,1] []))
+    ,Dependency (PackageName "HUnit")            (ThisVersion (Version  [1,2,0,0] []))
+    ,Dependency (PackageName "OpenAL")           (ThisVersion (Version  [1,3,1,1] []))
+    ,Dependency (PackageName "QuickCheck")       (ThisVersion (Version  [1,1,0,0] []))
+    ,Dependency (PackageName "array")            (ThisVersion (Version  [0,1,0,0] []))
+    ,Dependency (PackageName "base")             (ThisVersion (Version  [3,0,1,0] []))
+    ,Dependency (PackageName "bytestring")       (ThisVersion (Version  [0,9,0,1] []))
+    ,Dependency (PackageName "cgi")              (ThisVersion (Version  [3001,1,5,1] []))
+    ,Dependency (PackageName "ghc")              (AnyVersion)
+    ,Dependency (PackageName "ghc-prim")         (AnyVersion)
+    ,Dependency (PackageName "containers")       (ThisVersion (Version  [0,1,0,1] []))
+    ,Dependency (PackageName "directory")        (ThisVersion (Version  [1,0,0,0] []))
+    ,Dependency (PackageName "fgl")              (ThisVersion (Version  [5,4,1,1] []))
+    ,Dependency (PackageName "filepath")         (ThisVersion (Version  [1,1,0,0] []))
+    ,Dependency (PackageName "haskell-src")      (ThisVersion (Version  [1,0,1,1] []))
+    ,Dependency (PackageName "haskell98")        (ThisVersion (Version  [1,0,1,0] []))
+    ,Dependency (PackageName "hpc")              (ThisVersion (Version  [0,5,0,0] []))
+    ,Dependency (PackageName "html")             (ThisVersion (Version  [1,0,1,1] []))
+    ,Dependency (PackageName "mtl")              (ThisVersion (Version  [1,1,0,1] []))
+    ,Dependency (PackageName "network")          (ThisVersion (Version  [2,1,0,0] []))
+    ,Dependency (PackageName "old-locale")       (ThisVersion (Version  [1,0,0,0] []))
+    ,Dependency (PackageName "old-time")         (ThisVersion (Version  [1,0,0,0] []))
+    ,Dependency (PackageName "packedstring")     (ThisVersion (Version  [0,1,0,0] []))
+    ,Dependency (PackageName "parallel")         (ThisVersion (Version  [1,0,0,0] []))
+    ,Dependency (PackageName "parsec")           (ThisVersion (Version  [2,1,0,0] []))
+    ,Dependency (PackageName "pretty")           (ThisVersion (Version  [1,0,0,0] []))
+    ,Dependency (PackageName "process")          (ThisVersion (Version  [1,0,0,0] []))
+    ,Dependency (PackageName "random")           (ThisVersion (Version  [1,0,0,0] []))
+    ,Dependency (PackageName "readline")         (ThisVersion (Version  [1,0,1,0] []))
+    ,Dependency (PackageName "regex-base")       (ThisVersion (Version  [0,72,0,1] []))
+    ,Dependency (PackageName "regex-compat")     (ThisVersion (Version  [0,71,0,1] []))
+    ,Dependency (PackageName "regex-posix")      (ThisVersion (Version  [0,72,0,2] []))
+    ,Dependency (PackageName "stm")              (ThisVersion (Version  [2,1,1,0] []))
+    ,Dependency (PackageName "template-haskell") (ThisVersion (Version  [2,2,0,0] []))
+    ,Dependency (PackageName "time")             (ThisVersion (Version  [1,1,2,0] []))
+    ,Dependency (PackageName "unix")             (ThisVersion (Version  [2,3,0,0] []))
+    ,Dependency (PackageName "xhtml")            (ThisVersion (Version  [3000,0,2,1] []))
 
 {-
 ALUT-2.1.0.0        cgi-3001.1.5.1       network-2.1.0.0       regex-base-0.72.0.1
@@ -265,7 +269,7 @@
    -- download url to .cabal
    case epath of
        Left url -> do
-        eres <- readProcess "wget" [url] []
+        eres <- myReadProcess "wget" [url] []
         case eres of
            Left (_,s,_) -> do
                 hPutStrLn stderr s
@@ -340,6 +344,7 @@
         ,("csound64",   "csound5")
         ,("uuid",       "e2fsprogs")
         ,("doublefann", "fann")
+        ,("ev",         "libev")
 
         ,("pthread",     "")
         ,("m",          "")
@@ -367,7 +372,7 @@
 --
 gtk2hsIfy :: [Dependency] -> [Dependency]
 gtk2hsIfy [] = []
-gtk2hsIfy xs | foundSome = Dependency "gtk2hs" AnyVersion :
+gtk2hsIfy xs | foundSome = Dependency (PackageName "gtk2hs") AnyVersion :
                            [ v | v@(Dependency n _) <- xs
                            , n `notElem` gtkLibs ]
              | otherwise = xs
@@ -377,12 +382,13 @@
         unDep (Dependency n _) = n
 
 
-gtkLibs :: [String]
-gtkLibs =
+gtkLibs :: [PackageName]
+gtkLibs = map PackageName
     ["glade" -- guihaskell
     ,"cairo"
     ,"glib"
     ,"gtk"
+    ,"gtkglext"
     ,"mozembed"
     ,"svgcairo"
     ]
@@ -446,7 +452,7 @@
   (emptyPkgBuild
     { arch_pkgname = archName
     , arch_pkgver  = vers
-    , arch_url     = "http://hackage.haskell.org/cgi-bin/hackage-scripts/package/"++name
+    , arch_url     = "http://hackage.haskell.org/cgi-bin/hackage-scripts/package/"++display name
  --       else homepage cabal
     , arch_pkgdesc = synopsis cabal
     , arch_license =
@@ -463,7 +469,7 @@
     , arch_depends =
         (if not (isLibrary)
             then
-                ArchList [ArchDep (Dependency "gmp" AnyVersion)]
+                ArchList [ArchDep (Dependency (PackageName "gmp") AnyVersion)]
                                 `mappend`
                                 anyClibraries
             else ArchList [])
@@ -479,10 +485,10 @@
     -- Hackage programs only need their own source to build
     , arch_source  = ArchList . return $
           "http://hackage.haskell.org/packages/archive/"
-       ++ (name </> display vers </> name <-> display vers <.> "tar.gz")
+       ++ (display name </> display vers </> display name <-> display vers <.> "tar.gz")
 
     , arch_build =
-        [ "cd $startdir/src/" </> name <-> display vers
+        [ "cd $startdir/src/" </> display name <-> display vers
         , "runhaskell Setup configure --prefix=/usr || return 1"
         , "runhaskell Setup build                   || return 1"
         ] ++
@@ -514,7 +520,7 @@
     )
 
   where
-    archName = map toLower (if isLibrary then "haskell-" ++ name else name)
+    archName = map toLower (if isLibrary then "haskell-" ++ display name else display name)
     name     = pkgName (package cabal)
     vers     = pkgVersion (package cabal)
 
@@ -526,21 +532,21 @@
      -- TODO: use a real package spec to compute these names
      -- based on what is in Arch.
      ArchList
-         [ ArchDep (Dependency (
+         [ ArchDep (Dependency (PackageName $
                if d `notElem` shouldNotBeLibraries
-                    then "haskell" <-> map toLower d else d) v)
-         | Dependency d v <- gtk2hsIfy (buildDepends cabal) ]
+                    then "haskell" <-> map toLower (display d) else display d) v)
+         | Dependency (PackageName d) v <- gtk2hsIfy (buildDepends cabal) ]
         `mappend`
      anyClibraries
 
     hasLibrary = isJust (library cabal)
     isLibrary  = isJust (library cabal) -- && null (executables cabal)
-                    && map toLower name `notElem` shouldNotBeLibraries
+                    && map toLower (display name) `notElem` shouldNotBeLibraries
 
     anyClibraries | null libs = ArchList []
                   | otherwise = ArchList libs
        where
-         libs = [ ArchDep (Dependency s AnyVersion) | s <- nub (findCLibs cabal) ]
+         libs = [ ArchDep (Dependency (PackageName s) AnyVersion) | s <- nub (findCLibs cabal) ]
 
 --
 -- post install, and pre-remove hooks to run, to sync up ghc-pkg
@@ -676,7 +682,7 @@
 emptyPkgBuild :: PkgBuild
 emptyPkgBuild =
   PkgBuild
-    { arch_pkgname     = pkgName (package e)
+    { arch_pkgname     = display $ pkgName (package e)
     , arch_pkgver      = pkgVersion (package e)
     , arch_pkgrel      = 1
     , arch_pkgdesc     = synopsis e
@@ -686,8 +692,8 @@
 
     -- everything depends on ghc and Cabal 1.4.x
     , arch_makedepends = ArchList
-        [(ArchDep (Dependency "ghc"    AnyVersion))
-        ,(ArchDep (Dependency "haskell-cabal" AnyVersion))
+        [(ArchDep (Dependency (PackageName "ghc")    AnyVersion))
+        ,(ArchDep (Dependency (PackageName "haskell-cabal") AnyVersion))
 --        ,(ArchDep (Dependency "haskell-cabal" (LaterVersion (Version  [1,4,0,0] []))))
         ]
 
@@ -718,7 +724,7 @@
 
 instance Text ArchDep where
   disp (ArchDep (Dependency name ver)) =
-    text name <> mydisp ver
+    text (display name) <> mydisp ver
    where
      --  >= (greater than or equal to), <= (less than or
      --  equal to), = (equal to), > (greater than), or <
@@ -831,12 +837,12 @@
 --
 -- Strict process reading 
 --
-readProcess :: FilePath                              -- ^ command to run
+myReadProcess :: FilePath                              -- ^ command to run
             -> [String]                              -- ^ any arguments
             -> String                                -- ^ standard input
             -> IO (Either (ExitCode,String,String) String)  -- ^ either the stdout, or an exitcode and any output
 
-readProcess cmd args input = C.handle (return . handler) $ do
+myReadProcess cmd args input = C.handle (return . handler) $ do
     (inh,outh,errh,pid) <- runInteractiveProcess cmd args Nothing Nothing
 
     output  <- hGetContents outh
diff --git a/cabal2arch.cabal b/cabal2arch.cabal
--- a/cabal2arch.cabal
+++ b/cabal2arch.cabal
@@ -1,5 +1,5 @@
 name:               cabal2arch
-version:            0.4
+version:            0.4.2
 homepage:           http://code.haskell.org/~dons/code/cabal2arch
 synopsis:           Create Arch Linux packages from Cabal packages
 description:        Create Arch Linux packages from Cabal packages
@@ -20,7 +20,7 @@
 
     if flag(small_base)
         build-depends:      
-            base >= 3,
+            base == 3.*,
             pretty,
             process,
             directory,
@@ -31,7 +31,7 @@
             base < 3
 
     build-depends:
-            Cabal,
+            Cabal   == 1.6.*,
             pureMD5 >= 0.2.1,
             filepath
 
