diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,12 @@
 Changes
 =======
 
+Version 0.4
+-----------
+
+Update to Cabal-1.24.
+Update to aeson-0.11.0.0.
+
 Version 0.3
 -----------
 
diff --git a/haskell-packages.cabal b/haskell-packages.cabal
--- a/haskell-packages.cabal
+++ b/haskell-packages.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                haskell-packages
-version:             0.3
+version:             0.4
 synopsis:            Haskell suite library for package management and integration with Cabal
 description:         See <http://documentup.com/haskell-suite/haskell-packages>
 license:             MIT
@@ -39,9 +39,9 @@
   build-depends:
       base >=4.5 && < 5
     , optparse-applicative >= 0.11
-    , aeson >= 0.6
+    , aeson >= 0.11
     , bytestring >= 0.9
-    , Cabal == 1.22.*
+    , Cabal == 1.24.*
     , deepseq
     , directory
     , filepath
diff --git a/src/Distribution/HaskellSuite/Cabal.hs b/src/Distribution/HaskellSuite/Cabal.hs
--- a/src/Distribution/HaskellSuite/Cabal.hs
+++ b/src/Distribution/HaskellSuite/Cabal.hs
@@ -153,7 +153,7 @@
       cppOptsParser <*>
       (option (simpleParseM "package name") (long "package-name" <> metavar "NAME-VERSION")) <*>
       pkgDbStackParser <*>
-      (many $ InstalledPackageId <$> strOption (long "package-id")) <*>
+      (many $ mkUnitId <$> strOption (long "package-id")) <*>
       (many $ argument str (metavar "MODULE"))
 
 data ModuleNotFound = ModuleNotFound String
diff --git a/src/Distribution/HaskellSuite/Compiler.hs b/src/Distribution/HaskellSuite/Compiler.hs
--- a/src/Distribution/HaskellSuite/Compiler.hs
+++ b/src/Distribution/HaskellSuite/Compiler.hs
@@ -47,7 +47,7 @@
   -> CpphsOptions -- ^ CPP options
   -> PackageId -- ^ name and version of the package being compiled
   -> PackageDBStack -- ^ package db stack to use
-  -> [InstalledPackageId] -- ^ dependencies
+  -> [UnitId] -- ^ dependencies
   -> [FilePath] -- ^ list of files to compile
   -> IO ()
 
@@ -113,7 +113,7 @@
       Nothing -> throwIO RegisterNullDB
       Just db -> do
         pkgs <- readPackageDB (maybeInitDB dbspec) db
-        let pkgid = installedPackageId pkg
+        let pkgid = installedUnitId pkg
         writePackageDB db $ pkg : removePackage pkgid pkgs
 
   -- | Unregister the package
@@ -149,7 +149,7 @@
           else do
             putStrLn "Packages removed:"
             forM_ packagesRemoved $ \p ->
-              putStrLn $ "  " ++ display (installedPackageId p)
+              putStrLn $ "  " ++ display (installedUnitId p)
 
         writePackageDB db packagesLeft
 
@@ -165,10 +165,10 @@
       Just db -> do
         pkgs <- readPackageDB (maybeInitDB dbspec) db
 
-        forM_ pkgs $ putStrLn . display . installedPackageId
+        forM_ pkgs $ putStrLn . display . installedUnitId
 
-removePackage :: InstalledPackageId -> Packages -> Packages
-removePackage pkgid = filter ((pkgid /=) . installedPackageId)
+removePackage :: UnitId -> Packages -> Packages
+removePackage pkgid = filter ((pkgid /=) . installedUnitId)
 
 data Simple db = Simple
   { stName :: String
diff --git a/src/Distribution/HaskellSuite/Packages.hs b/src/Distribution/HaskellSuite/Packages.hs
--- a/src/Distribution/HaskellSuite/Packages.hs
+++ b/src/Distribution/HaskellSuite/Packages.hs
@@ -76,7 +76,6 @@
 import System.Directory
 
 -- The following imports are needed only for JSON instances
-import Data.Version (Version(..))
 import Distribution.Simple.Compiler (PackageDB(..))
 import Distribution.License (License(..))
 import Distribution.ModuleName(ModuleName)
@@ -107,7 +106,7 @@
     (mbDb :: Maybe db)
 
 -- | Try to retrieve an 'InstalledPackageInfo' for each of
--- 'InstalledPackageId's from a specified set of 'PackageDB's.
+-- 'UnitId's from a specified set of 'PackageDB's.
 --
 -- May throw a 'PkgInfoNotFound' exception.
 --
@@ -115,13 +114,13 @@
 -- 'maybeInitDB'.
 readPackagesInfo
   :: IsPackageDB db
-  => Proxy db -> [PackageDB] -> [InstalledPackageId] -> IO Packages
+  => Proxy db -> [PackageDB] -> [UnitId] -> IO Packages
 readPackagesInfo proxyDb dbs pkgIds = do
   allPkgInfos <- concat <$> mapM (getInstalledPackages proxyDb) dbs
   let
     pkgMap =
       Map.fromList
-        [ (Info.installedPackageId pkgInfo, pkgInfo)
+        [ (Info.installedUnitId pkgInfo, pkgInfo)
         | pkgInfo <- allPkgInfos
         ]
   forM pkgIds $ \pkgId ->
@@ -290,7 +289,7 @@
 data PkgDBError
   = BadPkgDB FilePath -- ^ package database could not be parsed or contains errors
   | PkgDBReadError FilePath IOException -- ^ package db file could not be read
-  | PkgExists InstalledPackageId -- ^ attempt to register an already present package id
+  | PkgExists UnitId -- ^ attempt to register an already present package id
   | RegisterNullDB -- ^ attempt to register in the global db when it's not present
   deriving (Typeable)
 instance Show PkgDBError where
@@ -306,7 +305,7 @@
 instance Exception PkgDBError
 
 data PkgInfoError
-  = PkgInfoNotFound InstalledPackageId
+  = PkgInfoNotFound UnitId
   -- ^ requested package id could not be found in any of the package databases
   deriving Typeable
 instance Exception PkgInfoError
@@ -328,11 +327,6 @@
 instance FromJSON License where
   parseJSON = stdFromJSON
 
-instance ToJSON Version where
-  toJSON = stdToJSON
-instance FromJSON Version where
-  parseJSON = stdFromJSON
-
 instance ToJSON ModuleName where
   toJSON = stdToJSON
 instance FromJSON ModuleName where
@@ -348,16 +342,16 @@
 instance FromJSON PackageIdentifier where
   parseJSON = stdFromJSON
 
-instance ToJSON InstalledPackageId where
+instance ToJSON UnitId where
   toJSON = stdToJSON
-instance FromJSON InstalledPackageId where
+instance FromJSON UnitId where
   parseJSON = stdFromJSON
 
-instance ToJSON PackageKey where
+instance ToJSON AbiHash where
   toJSON = stdToJSON
-instance FromJSON PackageKey where
+instance FromJSON AbiHash where
   parseJSON = stdFromJSON
 
 deriveJSON defaultOptions ''Info.OriginalModule
 deriveJSON defaultOptions ''Info.ExposedModule
-deriveJSON defaultOptions ''Info.InstalledPackageInfo_
+deriveJSON defaultOptions ''Info.InstalledPackageInfo
