diff --git a/src/Data/TreeDiff/OMap.hs b/src/Data/TreeDiff/OMap.hs
--- a/src/Data/TreeDiff/OMap.hs
+++ b/src/Data/TreeDiff/OMap.hs
@@ -17,7 +17,7 @@
 import Control.DeepSeq (NFData (..))
 import Data.List       (sortBy)
 import Data.Ord        (comparing)
-import Data.Semialign  (Semialign (..))
+import Data.Semialign  (Semialign(..), Unzip (..), unzipDefault)
 import Data.These      (These (..))
 
 import qualified Data.Map.Strict as Map
@@ -148,3 +148,6 @@
         g (This (Val i x))            = Val i (f (This x))
         g (That (Val j y))            = Val j (f (That y))
         g (These (Val i x) (Val j y)) = Val (min i j) (f (These x y))
+
+instance Unzip (OMap k) where
+    unzip = unzipDefault
diff --git a/tree-diff.cabal b/tree-diff.cabal
--- a/tree-diff.cabal
+++ b/tree-diff.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.2
 name:               tree-diff
-version:            0.3.4.1
+version:            0.3.5
 synopsis:           Diffing of (expression) trees.
 category:           Data, Testing
 description:
@@ -99,13 +99,13 @@
   build-depends:
     , aeson                 ^>=2.2.0.0
     , ansi-terminal         ^>=1.1
-    , ansi-wl-pprint        ^>=1.0.2
+    , ansi-wl-pprint        ^>=1.0.2    || ^>=1.1.1
     , hashable              ^>=1.4.4.0  || ^>=1.5.0.0
     , parsers               ^>=0.12.11
     , primitive             ^>=0.9.0.0
     , QuickCheck            ^>=2.14.2   || ^>=2.15    || ^>=2.16.0.0 || ^>=2.18.0.0
     , scientific            ^>=0.3.8.0
-    , semialign             ^>=1.3.1
+    , semialign             ^>=1.3.1    || ^>=1.4
     , strict                ^>=0.5
     , tagged                ^>=0.8.8
     , these                 ^>=1.2.1
@@ -113,9 +113,6 @@
     , uuid-types            ^>=1.0.6
     , vector                ^>=0.13.1.0
 
-  if !flag(base-ge-4-17)
-    build-depends: data-array-byte >=0.1.0.1 && <0.2
-
   other-extensions:
     CPP
     ConstraintKinds
@@ -129,12 +126,6 @@
   hs-source-dirs:   src
   default-language: Haskell2010
 
-  if flag(base-ge-4-17)
-    build-depends: base >=4.17
-
-  else
-    build-depends: base <4.17
-
 test-suite tree-diff-test
   default-language: Haskell2010
   type:             exitcode-stdio-1.0
@@ -153,11 +144,8 @@
     , tree-diff
     , unordered-containers
 
-  if (impl(ghc >=8) && !impl(ghc >=9.4))
-    build-depends: data-array-byte
-
-  if impl(ghc <7.5)
-    build-depends: ghc-prim
+  if !flag(base-ge-4-17)
+    build-depends: data-array-byte >=0.1.0.1 && <0.2
 
   -- extra dependencies
   build-depends:
@@ -165,6 +153,12 @@
     , tasty-golden      ^>=2.3.5
     , tasty-quickcheck  ^>=0.10.3 || ^>=0.11
     , trifecta          ^>=2.1.4
+
+  if flag(base-ge-4-17)
+    build-depends: base >=4.17
+
+  else
+    build-depends: base <4.17
 
 benchmark tree-diff-bench
   default-language: Haskell2010
