diff --git a/ChasingBottoms.cabal b/ChasingBottoms.cabal
--- a/ChasingBottoms.cabal
+++ b/ChasingBottoms.cabal
@@ -1,5 +1,5 @@
 name:               ChasingBottoms
-version:            1.3.1.4
+version:            1.3.1.5
 license:            MIT
 license-file:       LICENCE
 copyright:          Copyright (c) Nils Anders Danielsson 2004-2018.
@@ -117,14 +117,15 @@
   the rest requires @Data.Generics@; @isBottom@ only requires
   exceptions, though.
 category:           Testing
-tested-with:        GHC == 6.12.3,
-                    GHC == 7.0.4,
+tested-with:        GHC == 7.0.4,
                     GHC == 7.4.2,
                     GHC == 7.6.3,
                     GHC == 7.8.4,
                     GHC == 7.10.3,
                     GHC == 8.0.2,
-                    GHC == 8.2.1
+                    GHC == 8.2.2,
+                    GHC == 8.4.3,
+                    GHC == 8.6.1
 cabal-version:      >= 1.9.2
 build-type:         Simple
 
@@ -145,10 +146,10 @@
 
     other-modules: Test.ChasingBottoms.IsType
 
-    build-depends: QuickCheck >= 2.3 && < 2.12,
+    build-depends: QuickCheck >= 2.10 && < 2.13,
                    mtl >= 2 && < 2.3,
-                   base >= 4.2 && < 4.12,
-                   containers >= 0.3 && < 0.6,
+                   base >= 4.2 && < 4.13,
+                   containers >= 0.5 && < 0.7,
                    random >= 1.0 && < 1.2,
                    syb >= 0.1.0.2 && < 0.8
 
@@ -176,10 +177,10 @@
                    Test.ChasingBottoms.TimeOut
                    Test.ChasingBottoms.TimeOut.Tests
 
-    build-depends: QuickCheck >= 2.3 && < 2.12,
+    build-depends: QuickCheck >= 2.10 && < 2.13,
                    mtl >= 2 && < 2.3,
-                   base >= 4.2 && < 4.12,
-                   containers >= 0.3 && < 0.6,
+                   base >= 4.2 && < 4.13,
+                   containers >= 0.5 && < 0.7,
                    random >= 1.0 && < 1.2,
                    syb >= 0.1.0.2 && < 0.8,
                    array >= 0.3 && < 0.6
diff --git a/Test/ChasingBottoms/ContinuousFunctions.hs b/Test/ChasingBottoms/ContinuousFunctions.hs
--- a/Test/ChasingBottoms/ContinuousFunctions.hs
+++ b/Test/ChasingBottoms/ContinuousFunctions.hs
@@ -146,16 +146,11 @@
 import Test.QuickCheck
   hiding ( (><)
          , listOf
-#if MIN_VERSION_QuickCheck(2,7,0)
          , infiniteListOf
-#endif
-#if MIN_VERSION_QuickCheck(2,10,0)
          , function
-#endif
          )
-#if MIN_VERSION_QuickCheck(2,7,0)
+import Test.QuickCheck.Arbitrary (CoArbitrary(..))
 import Test.QuickCheck.Gen.Unsafe (promote)
-#endif
 import Data.Sequence as Seq
 import Data.Foldable as Seq (foldr)
 import Prelude as P hiding (concat)
diff --git a/Test/ChasingBottoms/ContinuousFunctions/Tests.hs b/Test/ChasingBottoms/ContinuousFunctions/Tests.hs
--- a/Test/ChasingBottoms/ContinuousFunctions/Tests.hs
+++ b/Test/ChasingBottoms/ContinuousFunctions/Tests.hs
@@ -22,6 +22,9 @@
 import Control.Arrow
 import Control.Monad
 import Data.List
+#if MIN_VERSION_QuickCheck(2,12,0)
+import qualified Data.Map.Strict as Map
+#endif
 import Data.Ratio
 
 ------------------------------------------------------------------------
@@ -83,11 +86,14 @@
   unless ok $ putStrLn msg
   return ok
   where
-#if MIN_VERSION_QuickCheck(2,10,0)
-  convert _        labels = labels
-#else
+#if MIN_VERSION_QuickCheck(2,12,0)
   convert numTests labels =
-    map (\(x, f) -> (x, fromIntegral f / fromIntegral numTests)) labels
+    map (\(x, f) -> (x, fromIntegral f / fromIntegral numTests)) $
+    Map.toList $
+    Map.fromListWith (+)
+      [ (l, n) | (ls, n) <- Map.toList labels, l <- ls ]
+#else
+  convert _ labels = labels
 #endif
 
   apply test Success{numTests, labels} = test numTests
diff --git a/Test/ChasingBottoms/Nat.hs b/Test/ChasingBottoms/Nat.hs
--- a/Test/ChasingBottoms/Nat.hs
+++ b/Test/ChasingBottoms/Nat.hs
@@ -16,6 +16,7 @@
 module Test.ChasingBottoms.Nat(Nat, isSucc, fromSucc, natrec, foldN) where
 
 import Test.QuickCheck
+import Test.QuickCheck.Arbitrary (CoArbitrary(..))
 import qualified Data.Generics as G
 import Data.Ratio ((%))
 import Data.Typeable
diff --git a/Test/ChasingBottoms/TestUtilities.hs b/Test/ChasingBottoms/TestUtilities.hs
--- a/Test/ChasingBottoms/TestUtilities.hs
+++ b/Test/ChasingBottoms/TestUtilities.hs
@@ -39,11 +39,7 @@
 
 run :: Testable p => p -> IO Result
 run = quickCheckWithResult (stdArgs { maxSuccess = 1000
-#if MIN_VERSION_QuickCheck(2,5,0)
                                     , maxDiscardRatio = 5
-#else
-                                    , maxDiscard = 5000
-#endif
                                     })
 
 -- | Runs a bunch of QuickCheck tests, printing suitable information
diff --git a/Test/ChasingBottoms/TestUtilities/Generators.hs b/Test/ChasingBottoms/TestUtilities/Generators.hs
--- a/Test/ChasingBottoms/TestUtilities/Generators.hs
+++ b/Test/ChasingBottoms/TestUtilities/Generators.hs
@@ -47,16 +47,11 @@
 import Test.ChasingBottoms.SemanticOrd
 import Test.ChasingBottoms.TestUtilities
 import Test.QuickCheck
-#if MIN_VERSION_QuickCheck(2,7,0)
   hiding ( infiniteListOf
-#if MIN_VERSION_QuickCheck(2,10,0)
          , function
-#endif
          )
-#endif
-#if MIN_VERSION_QuickCheck(2,7,0)
+import Test.QuickCheck.Arbitrary (coarbitrary)
 import Test.QuickCheck.Gen.Unsafe (promote)
-#endif
 import Data.Generics
 import Control.Monad
 import Data.Maybe
