diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## [0.3.1.0] - 2024-05-20
+
+* Support for GHC 9.10
+
 ## [0.3.0.0] - 2023-12-06
 
 * Extra functionality for `Data.Mapping.Piecewise`
diff --git a/mappings.cabal b/mappings.cabal
--- a/mappings.cabal
+++ b/mappings.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           mappings
-version:        0.3.0.0
+version:        0.3.1.0
 synopsis:       Types which represent functions k -> v
 description:    A typeclass and a number of implementations; please read README.md on github
 category:       Data structures
@@ -13,15 +13,13 @@
 bug-reports:    https://github.com/jcranch/mapping/issues
 author:         James Cranch
 maintainer:     j.d.cranch@sheffield.ac.uk
-copyright:      2023 James Cranch
+copyright:      2023-24 James Cranch
 license:        BSD-3-Clause
 build-type:     Simple
 extra-doc-files:
     README.md
     CHANGELOG.md
 
-tested-with:    GHC==9.6.2, GHC==9.4.5, GHC==9.2.8
-
 source-repository head
   type: git
   location: https://github.com/jcranch/mapping
@@ -42,7 +40,7 @@
       src
   ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints
   build-depends:
-      base >=4.16 && <4.20
+      base >=4.16 && <4.21
     , cond >=0.5.1 && <0.6
     , containers >=0.6.5 && <0.8
     , formatting >=7.0.0 && <7.3
@@ -60,7 +58,7 @@
       examples
   ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints -threaded -rtsopts -with-rtsopts=-N
   build-depends:
-      base >=4.16 && <4.20
+      base >=4.16 && <4.21
     , cond >=0.5.1 && <0.6
     , containers >=0.6.5 && <0.8
     , formatting >=7.0.0 && <7.3
@@ -85,7 +83,7 @@
   build-tool-depends:
       hspec-discover:hspec-discover ==2.11.*
   build-depends:
-      base >=4.16 && <4.20
+      base >=4.16 && <4.21
     , cond >=0.5.1 && <0.6
     , containers >=0.6.5 && <0.8
     , formatting >=7.0.0 && <7.3
diff --git a/src/Data/Mapping/MapWithDefault.hs b/src/Data/Mapping/MapWithDefault.hs
--- a/src/Data/Mapping/MapWithDefault.hs
+++ b/src/Data/Mapping/MapWithDefault.hs
@@ -10,7 +10,11 @@
 import Control.Applicative (liftA2)
 #endif
 import Data.Algebra.Boolean
+#if MIN_VERSION_GLASGOW_HASKELL(9,10,0,0)
+import Data.List (groupBy)
+#else
 import Data.List (foldl', groupBy)
+#endif
 import Data.Map.Strict (Map)
 import qualified Data.Map.Strict as M
 import qualified Data.Map.Merge.Strict as M
diff --git a/src/Data/Mapping/Piecewise.hs b/src/Data/Mapping/Piecewise.hs
--- a/src/Data/Mapping/Piecewise.hs
+++ b/src/Data/Mapping/Piecewise.hs
@@ -168,8 +168,9 @@
 
 instance Neighbourly (Piecewise k) where
   neighbours m = let
-    v = values m
-    in S.fromList $ zip v (tail v)
+    pairs (x:r@(y:_)) = (x,y):pairs r
+    pairs _           = []
+    in S.fromList . pairs $ values m
 
 deriving via (AlgebraWrapper k (Piecewise k) b)
   instance (Ord k, Ord b, Semigroup b) => Semigroup (Piecewise k b)
