diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Changelog
 
+#### 2.3.2.4
+
+* Compatibility with time 1.6, base 4.9, and Cabal 1.24 (GHC 8).
+
 #### 2.3.2.3
 
 * Compatibility with time 1.5.
diff --git a/HDBC-postgresql.cabal b/HDBC-postgresql.cabal
--- a/HDBC-postgresql.cabal
+++ b/HDBC-postgresql.cabal
@@ -1,5 +1,5 @@
 Name: HDBC-postgresql
-Version: 2.3.2.3
+Version: 2.3.2.4
 License: BSD3
 Maintainer: Nicolas Wu <nicolas.wu@gmail.com>
 Author: John Goerzen
@@ -42,7 +42,7 @@
   Build-Depends: base >= 3 && < 5, mtl, HDBC>=2.2.0, parsec, utf8-string,
                  bytestring, old-time, convertible
   if flag(minTime15)
-    Build-Depends: time >= 1.5 && < 1.6
+    Build-Depends: time >= 1.5 && < 1.7
     CPP-Options: -DMIN_TIME_15
   else
     Build-Depends: time < 1.5, old-locale
@@ -58,9 +58,9 @@
       Buildable: True
       Build-Depends: HUnit, QuickCheck, testpack, containers,
                      convertible, parsec, utf8-string,
-                     bytestring, old-time, base >= 4.6 && < 4.9, HDBC>=2.2.6
+                     bytestring, old-time, base >= 4.6 && < 5.0, HDBC>=2.2.6
       if flag(minTime15)
-        Build-Depends: time >= 1.5 && < 1.6
+        Build-Depends: time >= 1.5 && < 1.7
         CPP-Options: -DMIN_TIME_15
       else
         Build-Depends: time < 1.5, old-locale
diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -31,14 +31,17 @@
 -- 'programFindLocation' has a new (unused in this case)
 -- parameter. 'ConstOrId' adds this parameter when types say it is
 -- mandatory.
-class ConstOrId a b where
+class FindProgramLocation a b where
     constOrId :: a -> b
 
-instance ConstOrId a a where
+instance FindProgramLocation (IO (Maybe FilePath)) (IO (Maybe FilePath)) where
     constOrId = id
 
-instance ConstOrId a (b -> a) where
+instance FindProgramLocation (IO (Maybe FilePath)) (ProgramSearchPath -> IO (Maybe FilePath)) where
     constOrId = const
+
+instance FindProgramLocation (IO (Maybe FilePath)) (ProgramSearchPath -> IO (Maybe (FilePath, [FilePath]))) where
+    constOrId x = liftM (fmap (\x -> (x, []))) . const x
 
 pgconfigProgram = (simpleProgram "pgconfig or pg_config") {
     programFindLocation = \verbosity -> constOrId $ do
