diff --git a/changelog.md b/changelog.md
new file mode 100644
--- /dev/null
+++ b/changelog.md
@@ -0,0 +1,9 @@
+# Changelog
+
+## 0.5.0.0
+
+- Added support for GHC 9.14.
+  - This release is expected to be compatible with the `0.4.4.x` series in
+    most practical cases.
+  - The major version bump is required because exposed type class instances
+    and their constraints changed, which is a technical API change.
diff --git a/json-spec-elm-servant.cabal b/json-spec-elm-servant.cabal
--- a/json-spec-elm-servant.cabal
+++ b/json-spec-elm-servant.cabal
@@ -1,6 +1,6 @@
 cabal-version:       3.0
 name:                json-spec-elm-servant
-version:             0.4.4.4
+version:             0.5.0.0
 synopsis:            Generated elm code for servant APIs.
 description:         Generate Elm encoders, decoders, and API requests
                      for an Servant API, where the shape of the data
@@ -18,12 +18,13 @@
 category:            JSON, Elm, Servant, Web
 build-type:          Simple
 extra-source-files:
+  changelog.md
   README.md
   LICENSE
 
 common dependencies
   build-depends:
-    , base                 >= 4.19.2.0  && < 4.22
+    , base                 >= 4.19.2.0  && < 4.23
     , bound                >= 2.0.7     && < 2.1
     , containers           >= 0.6.8     && < 0.8
     , directory            >= 1.3.8.1   && < 1.4
diff --git a/src/Data/JsonSpec/Elm/Servant.hs b/src/Data/JsonSpec/Elm/Servant.hs
--- a/src/Data/JsonSpec/Elm/Servant.hs
+++ b/src/Data/JsonSpec/Elm/Servant.hs
@@ -389,7 +389,7 @@
 instance (Elmable (Verb m c t r)) => Elmable (Verb m c t (Headers h r)) where
   endpoints = endpoints @(Verb m c t r)
 instance {- Elmable (Verb m c t NoContent) -}
-    (Elmable (NoContentVerb m))
+    (ReflectMethod m)
   =>
     Elmable (Verb m c t NoContent)
   where
@@ -471,11 +471,11 @@
       encoder <- encoderOf @(DecodingSpec a)
       pure $ BodyEncoder {elmType, encoder}
 instance {- IsParam (ReqBody' (other : mods) (JSON : accept) a) -}
-    {-# overlaps #-} (IsParam (ReqBody' mods '[JSON] a))
+    {-# overlaps #-} (IsParam (ReqBody' (other : mods) accept a))
   =>
     IsParam (ReqBody' (other : mods) (JSON : accept) a)
   where
-    param = param @(ReqBody' mods '[JSON] a)
+    param = param @(ReqBody' (other : mods) accept a)
 instance {- IsParam (ReqBody' mods (other : accept) a) -}
     {-# overlaps #-} (IsParam (ReqBody' mods accept a))
   =>
