--- a/cassava.cabal
+++ b/cassava.cabal
@@ -96,9 +96,9 @@
     attoparsec >= 0.11.3.0 && < 0.14,
     base >= 4.5 && < 5,
     bytestring >= 0.9.2 && < 0.11,
-    containers >= 0.4.2 && < 0.6,
+    containers >= 0.4.2 && < 0.7,
     deepseq >= 1.1 && < 1.5,
-    hashable < 1.3,
+    hashable < 1.4,
     scientific >= 0.3.4.7 && < 0.4,
     text < 1.3,
     unordered-containers < 0.3,
@@ -125,7 +125,7 @@
     ghc-options: -Wcompat -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances
   else
     -- provide/emulate `Control.Monad.Fail` and `Data.Semigroups` API for pre-GHC8
-    build-depends: fail == 4.9.*, semigroups == 0.18.*
+    build-depends: fail == 4.9.*, semigroups >= 0.18.2 && <0.20
 
   if impl(ghc >= 8.2)
     ghc-options: -Wcpp-undef
@@ -151,7 +151,7 @@
                , vector
   -- extra dependencies not already used by lib:cassava
   build-depends: HUnit < 1.7
-               , QuickCheck == 2.10.*
+               , QuickCheck >= 2.10
                , quickcheck-instances >= 0.3.12 && < 0.4
                , test-framework == 0.8.*
                , test-framework-hunit == 0.3.*
@@ -172,7 +172,7 @@
     ghc-options: -Wcompat -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances
   else
     -- provide/emulate `Control.Monad.Fail` and `Data.Semigroups` API for pre-GHC8
-    build-depends: fail == 4.9.*, semigroups == 0.18.*
+    build-depends: fail, semigroups
 
   if impl(ghc >= 8.2)
     ghc-options: -Wcpp-undef
