diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Changelog for qrcode-core
 
+## 0.9.6 -- 2023-03-19
+
+* Support for text-2.0
+
 ## 0.9.5 -- 2022-03-16
 
 * Support for bytestring-0.11
diff --git a/qrcode-core.cabal b/qrcode-core.cabal
--- a/qrcode-core.cabal
+++ b/qrcode-core.cabal
@@ -1,13 +1,13 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.34.6.
+-- This file has been generated from package.yaml by hpack version 0.35.0.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 751e52adbe7cc14662866650a6fe6a97d748286a60d2d440993993030e284ee0
+-- hash: de1abfb9198d2014f9d1e86e0fb7b7cb462db507d20c6417ac7c939a3ac43fe1
 
 name:           qrcode-core
-version:        0.9.5
+version:        0.9.6
 synopsis:       QR code library in pure Haskell
 description:    Please see the README on GitHub at <https://github.com/alexkazik/qrcode/qrcode-core#readme>
 category:       codec
@@ -19,7 +19,7 @@
 license:        MIT
 license-file:   LICENSE
 tested-with:
-    GHC == 7.10.3, GHC == 8.0.1, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.3, GHC == 8.4.4, GHC == 8.6.3, GHC == 8.6.4, GHC == 8.6.5, GHC == 8.8.2, GHC == 8.8.3, GHC == 8.10.1 GHC == 8.10.7
+    GHC == 7.10.3, GHC == 8.0.1, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.3, GHC == 8.4.4, GHC == 8.6.3, GHC == 8.6.4, GHC == 8.6.5, GHC == 8.8.2, GHC == 8.8.3, GHC == 8.10.1, GHC == 8.10.7, GHC == 9.4.4
 build-type:     Simple
 extra-source-files:
     README.md
@@ -73,9 +73,9 @@
     , containers >=0.5.6.2 && <0.7
     , dlist >=0.7.1.2 && <1.1
     , primitive >=0.6.1.0 && <0.8
-    , text >=1.2.2.0 && <1.3
+    , text >=1.2.2.0 && <2.1
     , vector >=0.11.0.0 && <0.13
+  default-language: Haskell2010
   if impl(ghc < 8)
     build-depends:
         semigroups
-  default-language: Haskell2010
diff --git a/src/Codec/QRCode/Data/QRImage.hs b/src/Codec/QRCode/Data/QRImage.hs
--- a/src/Codec/QRCode/Data/QRImage.hs
+++ b/src/Codec/QRCode/Data/QRImage.hs
@@ -1,6 +1,7 @@
 {-# LANGUAGE NoImplicitPrelude #-}
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE TypeOperators #-}
 
 module Codec.QRCode.Data.QRImage
   ( QRImage(..)
diff --git a/src/Codec/QRCode/Mode/Mixed.hs b/src/Codec/QRCode/Mode/Mixed.hs
--- a/src/Codec/QRCode/Mode/Mixed.hs
+++ b/src/Codec/QRCode/Mode/Mixed.hs
@@ -246,7 +246,7 @@
           g12 = g1 <> g2
           g23 = g2 <> g3
           g123 = g1 <> g2 <> g3
-          Just tn = commonSuper te t1 t3
+          tn = fromMaybe (error "commonSuper failed") $ commonSuper te t1 t3
           x1 = pfxEncLen vr t1 g12 + pfxEncLen vr t3 g3
           x2 = pfxEncLen vr t1 g1 + pfxEncLen vr t2 g2 + pfxEncLen vr t3 g3
           x3 = pfxEncLen vr t1 g1 + pfxEncLen vr t3 g23
@@ -264,7 +264,7 @@
       -- (Phase 2-3) left, middle and right have a common super
       | mt >= 2 && isJust (commonSuper te t2 =<< commonSuper te t1 t3) =
         let
-          Just tn = commonSuper te t2 =<< commonSuper te t1 t3
+          tn = fromMaybe (error "commonSuper failed") $ commonSuper te t2 =<< commonSuper te t1 t3
           x2 = pfxEncLen vr t1 g1 + pfxEncLen vr t2 g2 + pfxEncLen vr t3 g3
           g123 = g1 <> g2 <> g3
           xn = pfxEncLen vr tn g123
