diff --git a/Distribution/Gentoo/GHC.hs b/Distribution/Gentoo/GHC.hs
--- a/Distribution/Gentoo/GHC.hs
+++ b/Distribution/Gentoo/GHC.hs
@@ -21,24 +21,16 @@
 import Distribution.Gentoo.Packages
 
 -- Cabal imports
-import Distribution.Simple.PackageIndex( PackageIndex
-                                        , brokenPackages
-                                        , reverseDependencyClosure)
-import Distribution.Simple.GHC(getInstalledPackages, configure)
-import Distribution.Simple.Program( ProgramConfiguration
-                                  , defaultProgramConfiguration)
-import Distribution.Simple.Compiler(PackageDB(GlobalPackageDB))
-import Distribution.Simple.Utils(rawSystemStdout)
+import Distribution.Simple.Utils(rawSystemStdInOut)
 import Distribution.Verbosity(silent)
 import Distribution.Package(PackageIdentifier, packageId)
-import Distribution.InstalledPackageInfo( InstalledPackageInfo_
-                                        , installedPackageId)
-import Distribution.Text(display)
+import Distribution.InstalledPackageInfo(InstalledPackageInfo_)
+import Distribution.Text(display, simpleParse)
 
 -- Other imports
 import Data.Char(isDigit)
 import Data.Either(partitionEithers)
-import Data.Maybe(fromJust)
+import Data.Maybe(fromJust, mapMaybe)
 import qualified Data.Map as Map
 import Data.Map(Map)
 import qualified Data.ByteString.Char8 as BS
@@ -54,8 +46,12 @@
 
 -- Get only the first line of output
 rawSysStdOutLine     :: FilePath -> [String] -> IO String
-rawSysStdOutLine app = liftM (head . lines) . rawSystemStdout silent app
+rawSysStdOutLine app = liftM (head . lines) . rawCommand app
 
+rawCommand          :: FilePath -> [String] -> IO String
+rawCommand cmd args = do (out,_,_) <- rawSystemStdInOut silent cmd args Nothing False
+                         return out
+
 -- Get the first line of output from calling GHC with the given
 -- arguments.
 ghcRawOut      :: [String] -> IO String
@@ -74,6 +70,14 @@
 ghcLibDir :: IO FilePath
 ghcLibDir = canonicalizePath =<< ghcRawOut ["--print-libdir"]
 
+ghcPkgRawOut      :: [String] -> IO String
+ghcPkgRawOut args = ghcPkgLoc >>= flip rawCommand args
+
+-- Cheat with using fromJust since we know that ghc-pkg must be in $PATH
+-- somewhere, probably /usr/bin.
+ghcPkgLoc :: IO FilePath
+ghcPkgLoc = liftM fromJust $ findExecutable "ghc-pkg"
+
 -- Return the Gentoo .conf files found in this GHC libdir
 confFiles     :: FilePath -> IO [FilePath]
 confFiles dir = do let gDir = dir </> "gentoo"
@@ -129,7 +133,7 @@
     isValid = isGhcLibDir libDir
 
     -- Invalid if it's this GHC
-    isInvalid = BS.isPrefixOf thisGhc
+    isInvalid fp = fp == thisGhc || BS.isPrefixOf (thisGhc `BS.snoc` pathSeparator) fp
 
 -- A valid GHC library directory starting at libdir has a name of
 -- either "ghc" or "ghc-bin", then a hyphen and then a version number.
@@ -187,7 +191,7 @@
 
 -- .conf files from broken packages of this GHC version
 brokenConfs :: IO ([PackageIdentifier], [FilePath])
-brokenConfs = do brkn <- getBroken
+brokenConfs = do brkn <- getBroken -- getBroken
                  -- Check if we actually have to go look up files and
                  -- do IO.
                  if null brkn
@@ -219,23 +223,12 @@
                         [([],_)] -> return cmp
                         rd       -> do let nm = cfNm rd
                                        return $ Map.insert nm conf cmp
-
   where
     -- It's not InstalledPackageInfo, as it can't read the modules
     cfNm :: [([InstalledPackageInfo_ String], String)] -> PackageIdentifier
     cfNm = packageId . head . fst . head
 
--- Obtain GHC info about installed libs, etc.
-configureGHC :: IO ProgramConfiguration
-configureGHC = liftM snd
-               $ configure silent Nothing Nothing defaultProgramConfiguration
-
--- Return all packages registered with GHC
-pkgIndex :: IO PackageIndex
-pkgIndex = configureGHC >>= getInstalledPackages silent [GlobalPackageDB]
-
 -- Return the closure of all packages affected by breakage
 getBroken :: IO [PackageIdentifier]
-getBroken = do ind <- pkgIndex
-               let broken = map (installedPackageId . fst) $ brokenPackages ind
-               return $ map packageId $ reverseDependencyClosure ind broken
+getBroken = liftM (mapMaybe simpleParse . words)
+            $ ghcPkgRawOut ["check", "--simple-output"]
diff --git a/haskell-updater.cabal b/haskell-updater.cabal
--- a/haskell-updater.cabal
+++ b/haskell-updater.cabal
@@ -1,6 +1,6 @@
 Name:                haskell-updater
 Homepage:            http://haskell.org/haskellwiki/Gentoo#haskell-updater
-Version:             1.1.0.0
+Version:             1.1.1.0
 Synopsis:            Rebuild Haskell dependencies in Gentoo
 Description:         haskell-updater rebuilds Haskell packages on Gentoo
                      after a GHC upgrade or a dependency upgrade.
@@ -15,11 +15,11 @@
 License-file:        COPYRIGHT
 Copyright:           (c) Ivan Lazar Miljenovic,
                          Lennart Kolmodin,
-                         Stephan Friedrichs
+                         Stephan Friedrichs,
                          Emil Karlson
 Author:              Ivan Lazar Miljenovic,
                      Lennart Kolmodin,
-                     Stephan Friedrichs
+                     Stephan Friedrichs,
                      Emil Karlson
 Maintainer:          Ivan.Miljenovic@gmail.com
 Cabal-Version:       >= 1.6
