diff --git a/CHANGES.md b/CHANGES.md
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,5 +1,10 @@
 See also https://pvp.haskell.org/faq
 
+## Version 1.4.0.2
+
+ * Restore older GHC support
+ * Support GHC-9.0.2
+
 ## Version 1.4.0.1
 
  * `text-2.0` compatibility
diff --git a/hashable.cabal b/hashable.cabal
--- a/hashable.cabal
+++ b/hashable.cabal
@@ -1,6 +1,6 @@
 cabal-version:      1.12
 name:               hashable
-version:            1.4.0.1
+version:            1.4.0.2
 synopsis:           A class for types that can be converted to a hash value
 description:
   This package defines a class, 'Hashable', for types that
@@ -36,7 +36,9 @@
    || ==8.6.5
    || ==8.8.3
    || ==8.10.4
+   || ==8.10.7
    || ==9.0.1
+   || ==9.0.2
    || ==9.2.1
 
 extra-source-files:
@@ -94,9 +96,9 @@
 
   -- Integer internals
   if impl(ghc >=9)
-    build-depends: ghc-bignum >=1.0 && <1.1 || >=1.2 && <1.3
+    build-depends: ghc-bignum >=1.0 && <1.3
 
-    if !impl(ghc >=9.2)
+    if !impl(ghc >=9.0.2)
       build-depends: ghc-bignum-orphans >=0.1 && <0.2
 
   else
@@ -121,12 +123,16 @@
     else
       c-sources: cbits-unix/init.c
 
+  -- containers flag mutually exclusive choice
   if flag(containers)
     build-depends: containers >=0.5.9.1
-
   else
     build-depends: containers <0.5.9.1
-    build-depends: functor-classes-compat >=2 && <2.1
+
+  -- we need functor-classes-compat on older GHCs always.
+  -- we also need it if containers is too old.
+  if !impl(ghc >=8.0) || !flag(containers)
+    build-depends: functor-classes-compat >=2.0.0.2 && <2.1
 
   default-language: Haskell2010
   other-extensions:
