diff --git a/cabal-uninstall.cabal b/cabal-uninstall.cabal
--- a/cabal-uninstall.cabal
+++ b/cabal-uninstall.cabal
@@ -1,12 +1,12 @@
 name:                     cabal-uninstall
-version:                  0.1.5
+version:                  0.1.6
 cabal-version:            >= 1.6
 stability:                alpha
 description:              Very simple script to delete a cabal package.
 synopsis:                 Uninstall cabal packages
 license:                  BSD3
 license-file:             LICENSE
-author:                   Jan Christiansen
+author:                   Jan Christiansen, Thomas Miedema
 maintainer:               Jan Christiansen <j.christiansen@monoid-it.de>
 category:                 Distribution
 build-type:		  Simple
diff --git a/cabal-uninstall.hs b/cabal-uninstall.hs
--- a/cabal-uninstall.hs
+++ b/cabal-uninstall.hs
@@ -1,13 +1,13 @@
 module Main where
 
 
-import Data.List (groupBy)
+import Data.List (groupBy, isPrefixOf)
 import System.Environment (getArgs)
 import System.Process (system, readProcessWithExitCode)
 import System.Exit (ExitCode(..))
 import System.IO (hFlush, stdout)
 import System.Directory (doesDirectoryExist, removeDirectoryRecursive)
-import System.FilePath (takeDirectory)
+import System.FilePath (takeDirectory, takeBaseName)
 import Control.Monad.Instances ()
 import Control.Monad.Error
 
@@ -21,16 +21,16 @@
 mainError :: [String] -> ErrorT String IO ()
 mainError input = do
   (package, force) <- ErrorT (return (parseArgs input))
-  info@(PackageInfo _ _ _ libraryDir) <- ErrorT (selectPackageVersion package)
+  info@(PackageInfo _ libraryName _ libraryDir) <- ErrorT (selectPackageVersion package)
   ErrorT (unregisterPackage info force)
-  lift (removeDirectory "package directory" (takeDirectory libraryDir))
+  lift (removeDirectory "package directory" (selectDirectory libraryName libraryDir))
 
 (<|) :: a -> [a] -> [a]
 x <| xs = xs++[x]
 
 usageInfo :: String
 usageInfo =
-  "Version: 0.1.5\n\
+  "Version: 0.1.6\n\
   \Usage: cabal-uninstall {pkg-id} [--force]\n\
   \use sudo if the package is installed globally\n"
 
@@ -111,6 +111,13 @@
 parseVersion database ("name:":name:"version:":version:"library-dirs:":libraryDirs:rest) =
   return (PackageInfo database name version libraryDirs, rest)
 parseVersion _ _ = Left "PackageInfo format unknown"
+
+selectDirectory :: String -> FilePath -> FilePath
+selectDirectory libraryName libraryDir
+  | libraryName `isPrefixOf` (takeBaseName libraryDir) = libraryDir
+  | otherwise =
+    -- Old Cabal GHC directory structure: <libdir>/<libraryName>/<compiler>
+    takeDirectory libraryDir
 
 selectPackageVersion :: String -> IO (Either String PackageInfo)
 selectPackageVersion package = do
