diff --git a/Error.hs b/Error.hs
--- a/Error.hs
+++ b/Error.hs
@@ -4,32 +4,29 @@
 
 import Data.Typeable
 import Control.Exception.Extensible as EE
-import Control.Monad.Error
 
 data HackPortError
-	= ArgumentError String
-	| ConnectionFailed String String
-	| PackageNotFound String
-	| InvalidTarballURL String String
-	| InvalidSignatureURL String String
-	| VerificationFailed String String
-	| DownloadFailed String String
-	| UnknownCompression String
-	| UnpackingFailed String Int
-	| NoCabalFound String
-	| ExtractionFailed String String Int
-	| CabalParseFailed String String
-	| BashNotFound
-	| BashError String
-	| NoOverlay
-	| MultipleOverlays [String]
-	| UnknownVerbosityLevel String
-	-- | WrongCacheVersion
-	-- | InvalidCache
-	| InvalidServer String
-	deriving (Typeable, Show)
-
-instance Error HackPortError where
+    = ArgumentError String
+    | ConnectionFailed String String
+    | PackageNotFound String
+    | InvalidTarballURL String String
+    | InvalidSignatureURL String String
+    | VerificationFailed String String
+    | DownloadFailed String String
+    | UnknownCompression String
+    | UnpackingFailed String Int
+    | NoCabalFound String
+    | ExtractionFailed String String Int
+    | CabalParseFailed String String
+    | BashNotFound
+    | BashError String
+    | NoOverlay
+    | MultipleOverlays [String]
+    | UnknownVerbosityLevel String
+    -- | WrongCacheVersion
+    -- | InvalidCache
+    | InvalidServer String
+    deriving (Typeable, Show)
 
 instance Exception HackPortError where
 
@@ -41,23 +38,23 @@
 
 hackPortShowError :: HackPortError -> String
 hackPortShowError err = case err of
-	ArgumentError str -> "Argument error: "++str
-	ConnectionFailed server reason -> "Connection to hackage server '"++server++"' failed: "++reason
-	PackageNotFound pkg -> "Package '"++ pkg ++"' not found on server. Try 'hackport update'?"
-	InvalidTarballURL url reason -> "Error while downloading tarball '"++url++"': "++reason
-	InvalidSignatureURL url reason -> "Error while downloading signature '"++url++"': "++reason
-	VerificationFailed file signature -> "Error while checking signature('"++signature++"') of '"++file++"'"
-	DownloadFailed url reason -> "Error while downloading '"++url++"': "++reason
-	UnknownCompression tarball -> "Couldn't guess compression type of '"++tarball++"'"
-	UnpackingFailed tarball code -> "Unpacking '"++tarball++"' failed with exit code '"++show code++"'"
-	NoCabalFound tarball -> "Tarball '"++tarball++"' doesn't contain a cabal file"
-	ExtractionFailed tarball file code -> "Extracting '"++file++"' from '"++tarball++"' failed with '"++show code++"'"
-	CabalParseFailed file reason -> "Error while parsing cabal file '"++file++"': "++reason
-	BashNotFound -> "The 'bash' executable was not found. It is required to figure out your portage-overlay. If you don't want to install bash, use '-p path-to-overlay'"
-	BashError str -> "Error while guessing your portage-overlay. Either set PORTDIR_OVERLAY in /etc/make.conf or use '-p path-to-overlay'.\nThe error was: \""++str++"\""
-	MultipleOverlays overlays -> "You have the following overlays available: '"++unwords overlays++"'. Please choose one by using 'hackport -p path-to-overlay' <command>"
-	NoOverlay -> "You don't have PORTDIR_OVERLAY set in '/etc/make.conf'. Please set it or use '-p path-to-overlay'"
-	UnknownVerbosityLevel str -> "The verbosity level '"++str++"' is invalid. Please use debug,normal or silent"
-        InvalidServer srv -> "Invalid server address, could not parse: " ++ srv
-	--WrongCacheVersion -> "The version of the cache is too old. Please update the cache using 'hackport update'"
-	--InvalidCache -> "Could not read the cache. Please ensure that it's up to date using 'hackport update'"
+    ArgumentError str -> "Argument error: "++str
+    ConnectionFailed server reason -> "Connection to hackage server '"++server++"' failed: "++reason
+    PackageNotFound pkg -> "Package '"++ pkg ++"' not found on server. Try 'hackport update'?"
+    InvalidTarballURL url reason -> "Error while downloading tarball '"++url++"': "++reason
+    InvalidSignatureURL url reason -> "Error while downloading signature '"++url++"': "++reason
+    VerificationFailed file signature -> "Error while checking signature('"++signature++"') of '"++file++"'"
+    DownloadFailed url reason -> "Error while downloading '"++url++"': "++reason
+    UnknownCompression tarball -> "Couldn't guess compression type of '"++tarball++"'"
+    UnpackingFailed tarball code -> "Unpacking '"++tarball++"' failed with exit code '"++show code++"'"
+    NoCabalFound tarball -> "Tarball '"++tarball++"' doesn't contain a cabal file"
+    ExtractionFailed tarball file code -> "Extracting '"++file++"' from '"++tarball++"' failed with '"++show code++"'"
+    CabalParseFailed file reason -> "Error while parsing cabal file '"++file++"': "++reason
+    BashNotFound -> "The 'bash' executable was not found. It is required to figure out your portage-overlay. If you don't want to install bash, use '-p path-to-overlay'"
+    BashError str -> "Error while guessing your portage-overlay. Either set PORTDIR_OVERLAY in /etc/make.conf or use '-p path-to-overlay'.\nThe error was: \""++str++"\""
+    MultipleOverlays overlays -> "You have the following overlays available: '"++unwords overlays++"'. Please choose one by using 'hackport -p path-to-overlay' <command>"
+    NoOverlay -> "You don't have PORTDIR_OVERLAY set in '/etc/make.conf'. Please set it or use '-p path-to-overlay'"
+    UnknownVerbosityLevel str -> "The verbosity level '"++str++"' is invalid. Please use debug,normal or silent"
+    InvalidServer srv -> "Invalid server address, could not parse: " ++ srv
+    --WrongCacheVersion -> "The version of the cache is too old. Please update the cache using 'hackport update'"
+    --InvalidCache -> "Could not read the cache. Please ensure that it's up to date using 'hackport update'"
diff --git a/Merge.hs b/Merge.hs
--- a/Merge.hs
+++ b/Merge.hs
@@ -3,7 +3,7 @@
   , mergeGenericPackageDescription
   ) where
 
-import Control.Monad.Except
+import Control.Monad
 import Control.Exception
 import qualified Data.ByteString.Lazy.Char8 as BL
 import Data.Function (on)
diff --git a/Merge/Dependencies.hs b/Merge/Dependencies.hs
--- a/Merge/Dependencies.hs
+++ b/Merge/Dependencies.hs
@@ -260,7 +260,7 @@
   m = [ ("z", any_c_p "sys-libs" "zlib")
       , ("bz2", any_c_p "app-arch" "bzip2")
       , ("mysqlclient", at_least_c_p_v "virtual" "mysql" [4,0])
-      , ("pq", at_least_c_p_v "dev-db" "postgresql-base" [7])
+      , ("pq", at_least_c_p_v "dev-db" "postgresql" [7])
       , ("ev", any_c_p "dev-libs" "libev")
       , ("expat", any_c_p "dev-libs" "expat")
       , ("curl", any_c_p "net-misc" "curl")
@@ -342,6 +342,8 @@
       , ("magic",  any_c_p "sys-apps" "file")
       , ("crypt",  any_c_p "virtual" "libc")
       , ("Xrender", any_c_p "x11-libs" "libXrender")
+      , ("Xcursor", any_c_p "x11-libs" "libXcursor")
+      , ("Xinerama", any_c_p "x11-libs" "libXinerama")
       ]
 
 ---------------------------------------------------------------
@@ -495,4 +497,6 @@
   ,("SDL_image",                   ("media-libs", "sdl-image", Portage.AnySlot))
   ,("libzmq",                      ("net-libs", "zeromq", Portage.AnySlot))
   ,("taglib_c",                    ("media-libs", "taglib", Portage.AnySlot))
+  ,("libcurl",                     ("net-misc", "curl", Portage.AnySlot))
+  ,("libpq",                       ("dev-db", "postgresql", Portage.AnySlot))
   ]
diff --git a/Portage/EBuild.hs b/Portage/EBuild.hs
--- a/Portage/EBuild.hs
+++ b/Portage/EBuild.hs
@@ -94,7 +94,7 @@
 showEBuild now ebuild =
   ss ("# Copyright 1999-" ++ this_year ++ " Gentoo Foundation"). nl.
   ss "# Distributed under the terms of the GNU General Public License v2". nl.
-  ss "# $Header: $". nl.
+  ss "# $Id$". nl.
   nl.
   ss "EAPI=5". nl.
   nl.
diff --git a/Portage/EMeta.hs b/Portage/EMeta.hs
--- a/Portage/EMeta.hs
+++ b/Portage/EMeta.hs
@@ -3,7 +3,7 @@
   , findExistingMeta
   ) where
 
-import Control.Monad.Error
+import Control.Monad
 import Data.Char (isSpace)
 import qualified Data.List as L
 
diff --git a/Status.hs b/Status.hs
--- a/Status.hs
+++ b/Status.hs
@@ -14,8 +14,6 @@
 import Portage.PackageId
 import Portage.Resolve
 
-import Control.Monad.State
-
 import qualified Data.List as List
 
 import qualified Data.ByteString.Char8 as BS
@@ -27,6 +25,7 @@
 
 import qualified Data.Traversable as T
 import Control.Applicative
+import Control.Monad
 
 -- cabal
 import Distribution.Client.Types ( Repo, SourcePackageDb(..), SourcePackage(..) )
@@ -98,7 +97,7 @@
     portage <- filterByHerd ("haskell" `elem`) <$> loadLazy portdir
     let (over, both, port) = portageDiff (overlayMap overlay) (overlayMap portage)
 
-    both' <- T.forM both $ mapM $ \e -> liftIO $ do
+    both' <- T.forM both $ mapM $ \e -> do
             -- can't fail, we know the ebuild exists in both portagedirs
             -- also, one of them is already bound to 'e'
             let (Just e1) = lookupEbuildWith (overlayMap portage) (ebuildId e)
@@ -164,6 +163,7 @@
         latestPortageVersion = List.maximum $ map (pkgVersion . ebuildId . fromStatus) inPortage
         interestingPackages = flip filter sts $ \st ->
             case st of
+                HackageOnly _ -> False
                 Differs _ _ -> True
                 _ | pkgVersion (ebuildId (fromStatus st)) > latestPortageVersion -> True
                   | otherwise -> False
diff --git a/hackport.cabal b/hackport.cabal
--- a/hackport.cabal
+++ b/hackport.cabal
@@ -1,5 +1,5 @@
 Name:           hackport
-Version:        0.4.5
+Version:        0.4.6
 License:        GPL
 License-file:   LICENSE
 Author:         Henning Günther, Duncan Coutts, Lennart Kolmodin
@@ -28,7 +28,6 @@
     deepseq >= 1.3,
     filepath,
     parsec,
-    mtl,
     network >= 2.6, network-uri >= 2.6,
     pretty,
     regex-compat,
@@ -102,7 +101,6 @@
     base >= 2.0 && < 5,
     filepath,
     parsec,
-    mtl,
     network >= 2.6, network-uri >= 2.6,
     pretty,
     regex-compat,
@@ -142,7 +140,6 @@
                         extensible-exceptions,
                         filepath,
                         HUnit,
-                        mtl,
                         pretty,
                         process,
                         time,
@@ -163,7 +160,6 @@
                         extensible-exceptions,
                         filepath,
                         HUnit,
-                        mtl,
                         pretty,
                         process,
                         time,
@@ -184,7 +180,6 @@
                         extensible-exceptions,
                         filepath,
                         HUnit,
-                        mtl,
                         pretty,
                         process,
                         time,
