diff --git a/graphmod.cabal b/graphmod.cabal
--- a/graphmod.cabal
+++ b/graphmod.cabal
@@ -1,5 +1,5 @@
 name:           graphmod
-version:        1.4
+version:        1.4.1
 license:        BSD3
 license-file:   LICENSE
 author:         Iavor S. Diatchki
@@ -12,18 +12,25 @@
                 from the dependencies of a number of Haskell modules.
 category:       Development
 
-tested-with:    GHC==7.10.3, GHC==7.8.4
+tested-with:    GHC==7.0.1,  GHC==7.0.2,  GHC==7.0.3, GHC==7.0.4,
+                GHC==7.2.1,  GHC==7.2.2,
+                GHC==7.4.1,  GHC==7.4.2,
+                GHC==7.6.1,  GHC==7.6.2,  GHC==7.6.3,
+                GHC==7.8.1,  GHC==7.8.2,  GHC==7.8.3, GHC==7.8.4
+                GHC==7.10.1, GHC==7.10.2, GHC==7.10.3
+                GHC==8.0.1,  GHC==8.0.2,
+                GHC==8.2.1
+
 extra-source-files: CHANGELOG.md
 
 executable graphmod
     main-is:         Main.hs
     other-modules:   Utils, Trie, Paths_graphmod, CabalSupport
     build-depends:   base < 5, directory, filepath, dotgen >= 0.2 && < 0.5,
-                     haskell-lexer >= 1.0.1, containers, Cabal
+                     haskell-lexer >= 1.0.1, containers, Cabal, pretty
     hs-source-dirs:  src
     ghc-options:     -Wall -O2
 
 source-repository head
   type:     git
   location: git://github.com/yav/graphmod
-
diff --git a/src/CabalSupport.hs b/src/CabalSupport.hs
--- a/src/CabalSupport.hs
+++ b/src/CabalSupport.hs
@@ -1,3 +1,5 @@
+{-# language CPP #-}
+
 module CabalSupport (parseCabalFile,Unit(..),UnitName(..)) where
 
 import Utils(ModName)
@@ -6,7 +8,6 @@
 import System.FilePath((</>))
 
 -- Interface to cabal.
-import Distribution.PackageDescription.Parse(readPackageDescription)
 import Distribution.Verbosity(silent)
 import Distribution.PackageDescription
         ( GenericPackageDescription, PackageDescription(..)
@@ -14,11 +15,28 @@
 import Distribution.PackageDescription.Configuration (flattenPackageDescription)
 import Distribution.ModuleName(ModuleName,components)
 
+#if MIN_VERSION_Cabal(2,0,0)
+import Distribution.PackageDescription.Parse(readGenericPackageDescription)
+import Distribution.Types.UnqualComponentName (UnqualComponentName)
+import Distribution.Text (disp)
+import Text.PrettyPrint (render)
 
+pretty :: UnqualComponentName -> String
+pretty = render . disp
+#else
+import Distribution.PackageDescription.Parse(readPackageDescription)
+import Distribution.Verbosity (Verbosity)
 
+readGenericPackageDescription :: Verbosity -> FilePath -> IO GenericPackageDescription
+readGenericPackageDescription = readPackageDescription
 
+pretty :: String -> String
+pretty = id
+#endif
+
+
 parseCabalFile :: FilePath -> IO [Unit]
-parseCabalFile f = fmap findUnits (readPackageDescription silent f)
+parseCabalFile f = fmap findUnits (readGenericPackageDescription silent f)
 
 
 -- | This is our abstraction for something in a cabal file.
@@ -42,7 +60,7 @@
                    }
 
 exeUnit :: Executable -> Unit
-exeUnit exe = Unit { unitName    = UnitExecutable (exeName exe)
+exeUnit exe = Unit { unitName    = UnitExecutable (pretty $ exeName exe)
                    , unitPaths   = hsSourceDirs (buildInfo exe)
                    , unitModules = [] -- other modules?
                    , unitFiles   = case hsSourceDirs (buildInfo exe) of
@@ -60,5 +78,3 @@
                            fmap exeUnit (executables pkg)
   where
   pkg = flattenPackageDescription g -- we just ignore flags
-
-
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -5,7 +5,8 @@
 
 import Control.Monad(when,forM_,msum,guard,unless)
 import Control.Monad.Fix(mfix)
-import Control.Exception(catch,SomeException(..))
+import           Control.Exception (SomeException(..))
+import qualified Control.Exception as X (catch)
 import Data.List(intersperse,transpose)
 import Data.Maybe(isJust,fromMaybe,listToMaybe)
 import qualified Data.IntMap as IMap
@@ -444,7 +445,7 @@
   do fs <- getDirectoryContents "." -- XXX
      case filter ((".cabal" ==) . takeExtension) fs of
        f : _ -> do units <- parseCabalFile f
-                              `catch` \SomeException {} -> return []
+                              `X.catch` \SomeException {} -> return []
                    return (fromUnits units)
        _ -> return ([],[])
 fromCabal _ = return ([],[])
diff --git a/src/Utils.hs b/src/Utils.hs
--- a/src/Utils.hs
+++ b/src/Utils.hs
@@ -32,7 +32,7 @@
 parseFile          :: FilePath -> IO (ModName,[Import])
 parseFile f =
   do (modName, imps) <- (parseString . get_text) `fmap` readFile f
-     evaluate (length imps) -- this is here so that the file gets closed
+     _ <- evaluate (length imps) -- this is here so that the file gets closed
      if ext == ".imports"
        then return (splitModName (takeBaseName f), imps)
        else return (modName, imps)
