diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+# 2.0.1 (2019-07-22)
+
+- Add `(PartialOrd a, PartialOrd b) => PartialOrd (Either a b)` instance
+
 # 2 (2019-04-17)
 
 - Reduce to three classes (from six): `Lattice`, `BoundedMeetSemiLattice`
diff --git a/lattices.cabal b/lattices.cabal
--- a/lattices.cabal
+++ b/lattices.cabal
@@ -1,6 +1,6 @@
 cabal-version:      1.18
 name:               lattices
-version:            2
+version:            2.0.1
 category:           Math
 license:            BSD3
 license-file:       LICENSE
@@ -75,7 +75,7 @@
     , base-compat                 >=0.10.5   && <0.11
     , containers                  >=0.5.0.0  && <0.7
     , deepseq                     >=1.3.0.0  && <1.5
-    , hashable                    >=1.2.7.0  && <1.3
+    , hashable                    >=1.2.7.0  && <1.4
     , integer-logarithms          >=1.0.3    && <1.1
     , QuickCheck                  >=2.12.6.1 && <2.14
     , semigroupoids               >=5.3.2    && <5.4
@@ -86,7 +86,7 @@
     , unordered-containers        >=0.2.8.0  && <0.3
 
   if !impl(ghc >=8.0)
-    build-depends: semigroups >=0.18.5 && <0.19
+    build-depends: semigroups >=0.18.5 && <0.20
 
   if !impl(ghc >=7.10)
     build-depends: void >=0.7.2 && <0.8
@@ -115,4 +115,4 @@
     , unordered-containers
 
   if !impl(ghc >=8.0)
-    build-depends: semigroups >=0.18.3 && <0.19
+    build-depends: semigroups
diff --git a/src/Algebra/PartialOrd.hs b/src/Algebra/PartialOrd.hs
--- a/src/Algebra/PartialOrd.hs
+++ b/src/Algebra/PartialOrd.hs
@@ -148,6 +148,18 @@
     -- ordering is incompatible with the transitivity axiom we require for the derived partial order
     (x1, y1) `leq` (x2, y2) = x1 `leq` x2 && y1 `leq` y2
 
+    comparable (x1, y1) (x2, y2) = comparable x1 x2 && comparable y1 y2
+
+-- | @since 2.0.1
+instance (PartialOrd a, PartialOrd b) => PartialOrd (Either a b) where
+    Left x  `leq` Left y  = leq x y
+    Right x `leq` Right y = leq x y
+    leq _ _ = False
+
+    comparable (Left x)  (Left y)  = comparable x y
+    comparable (Right x) (Right y) = comparable x y
+    comparable _ _ = False
+
 -- | Least point of a partially ordered monotone function. Checks that the function is monotone.
 lfpFrom :: PartialOrd a => a -> (a -> a) -> a
 lfpFrom = lfpFrom' leq
