diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
 [![CircleCI](https://circleci.com/gh/theam/aws-lambda-haskell-runtime.svg?style=shield)](https://circleci.com/gh/theam/aws-lambda-haskell-runtime)
 [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=shield)](http://makeapullrequest.com)
 [![Hackage version](https://img.shields.io/hackage/v/aws-lambda-haskell-runtime.svg)](https://hackage.haskell.org/package/aws-lambda-haskell-runtime)
-[![Open Source Love png1](https://badges.frapsoft.com/os/v1/open-source.png?v=103)](https://github.com/ellerbrock/open-source-badges/)
+[![Open Source Love png1](https://raw.githubusercontent.com/ellerbrock/open-source-badges/master/badges/open-source-v1/open-source.png)](https://github.com/ellerbrock/open-source-badges/)
 [![Linter](https://img.shields.io/badge/code%20style-HLint-brightgreen.svg)](https://github.com/ndmitchell/hlint)
 
 [Proceed to site](https://theam.github.io/aws-lambda-haskell-runtime) to know how to use the AWS Lambda Haskell Runtime.
diff --git a/aws-lambda-haskell-runtime.cabal b/aws-lambda-haskell-runtime.cabal
--- a/aws-lambda-haskell-runtime.cabal
+++ b/aws-lambda-haskell-runtime.cabal
@@ -1,11 +1,11 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.34.4.
+-- This file has been generated from package.yaml by hpack version 0.35.1.
 --
 -- see: https://github.com/sol/hpack
 
 name:           aws-lambda-haskell-runtime
-version:        4.1.1
+version:        4.1.2
 synopsis:       Haskell runtime for AWS Lambda
 description:    Please see the README on GitHub at <https://github.com/theam/aws-lambda-haskell-runtime#readme>
 category:       AWS
@@ -13,7 +13,7 @@
 bug-reports:    https://github.com/theam/aws-lambda-haskell-runtime/issues
 author:         Nikita Tchayka
 maintainer:     hackers@theagilemonkeys.com
-copyright:      2021 The Agile Monkeys SL
+copyright:      2023 The Agile Monkeys SL
 license:        Apache-2.0
 license-file:   LICENSE
 build-type:     Simple
@@ -58,7 +58,7 @@
       QuasiQuotes
   ghc-options: -Wall -optP-Wno-nonportable-include-path -Wincomplete-uni-patterns -Wincomplete-record-updates -Wcompat -Widentities -Wredundant-constraints -Wmissing-export-lists -Wpartial-fields -fhide-source-paths -freverse-errors
   build-depends:
-      aeson
+      aeson >2
     , base >=4.7 && <5
     , bytestring
     , case-insensitive
diff --git a/src/Aws/Lambda/Runtime/ALB/Types.hs b/src/Aws/Lambda/Runtime/ALB/Types.hs
--- a/src/Aws/Lambda/Runtime/ALB/Types.hs
+++ b/src/Aws/Lambda/Runtime/ALB/Types.hs
@@ -27,6 +27,7 @@
   )
 import Data.Aeson.Types (Parser)
 import qualified Data.Aeson.Types as T
+import qualified Data.Aeson.Key as K
 import qualified Data.CaseInsensitive as CI
 import Data.HashMap.Strict (HashMap)
 import Data.Text (Text)
@@ -59,7 +60,7 @@
   parseJSON = parseALBRequest parseObjectFromStringField
 
 -- We need this because API Gateway is going to send us the payload as a JSON string
-parseObjectFromStringField :: FromJSON a => Object -> Text -> Parser (Maybe a)
+parseObjectFromStringField :: FromJSON a => Object -> T.Key -> Parser (Maybe a)
 parseObjectFromStringField obj fieldName = do
   fieldContents <- obj .: fieldName
   case fieldContents of
@@ -70,7 +71,7 @@
     Null -> pure Nothing
     other -> T.typeMismatch "String or Null" other
 
-parseALBRequest :: (Object -> Text -> Parser (Maybe body)) -> Value -> Parser (ALBRequest body)
+parseALBRequest :: (Object -> T.Key -> Parser (Maybe body)) -> Value -> Parser (ALBRequest body)
 parseALBRequest bodyParser (Object v) =
   ALBRequest
     <$> v .: "path"
@@ -167,5 +168,5 @@
 headerToPair :: Header -> T.Pair
 headerToPair (cibyte, bstr) = k .= v
   where
-    k = (T.decodeUtf8 . CI.original) cibyte
+    k = (K.fromText . T.decodeUtf8 . CI.original) cibyte
     v = T.decodeUtf8 bstr
diff --git a/src/Aws/Lambda/Runtime/APIGateway/Types.hs b/src/Aws/Lambda/Runtime/APIGateway/Types.hs
--- a/src/Aws/Lambda/Runtime/APIGateway/Types.hs
+++ b/src/Aws/Lambda/Runtime/APIGateway/Types.hs
@@ -29,6 +29,7 @@
     (.:?)
   )
 import Data.Aeson.Types (Parser)
+import qualified Data.Aeson.Key as K
 import qualified Data.Aeson.Types as T
 import qualified Data.CaseInsensitive as CI
 import Data.HashMap.Strict (HashMap)
@@ -70,7 +71,7 @@
   parseJSON = parseApiGatewayRequest parseObjectFromStringField
 
 -- We need this because API Gateway is going to send us the payload as a JSON string
-parseObjectFromStringField :: FromJSON a => Object -> Text -> Parser (Maybe a)
+parseObjectFromStringField :: FromJSON a => Object -> T.Key -> Parser (Maybe a)
 parseObjectFromStringField obj fieldName = do
   fieldContents <- obj .: fieldName
   case fieldContents of
@@ -81,7 +82,7 @@
     Null -> pure Nothing
     other -> T.typeMismatch "String or Null" other
 
-parseApiGatewayRequest :: (Object -> Text -> Parser (Maybe body)) -> Value -> Parser (ApiGatewayRequest body)
+parseApiGatewayRequest :: (Object -> T.Key -> Parser (Maybe body)) -> Value -> Parser (ApiGatewayRequest body)
 parseApiGatewayRequest bodyParser (Object v) =
   ApiGatewayRequest
     <$> v .: "resource"
@@ -215,5 +216,5 @@
 headerToPair :: Header -> T.Pair
 headerToPair (cibyte, bstr) = k .= v
   where
-    k = (T.decodeUtf8 . CI.original) cibyte
+    k = (K.fromText . T.decodeUtf8 . CI.original) cibyte
     v = T.decodeUtf8 bstr
