diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,19 +1,5 @@
 # Revision history for cborg
 
-## 0.2.6.0  -- 2021-10-31
-
-* Support for GHC 9.2
-
-* Support for `text-2.0` and zero-copy `Text` serialisation support
-
-## 0.2.5.0  -- 2021-04-08
-
-* Support for `ghc-bignum` and GHC 9.0
-
-## 0.2.4.0  -- 2021-07-05
-
-* Fix decoding on 32-bit systems (#244)
-
 ## 0.2.3.1  -- 2020-05-10
 
 * Bounds updates for GHC 8.10
diff --git a/cborg.cabal b/cborg.cabal
--- a/cborg.cabal
+++ b/cborg.cabal
@@ -1,5 +1,5 @@
 name:                cborg
-version:             0.2.6.0
+version:             0.2.7.0
 synopsis:            Concise Binary Object Representation (CBOR)
 license:             BSD3
 license-file:        LICENSE.txt
@@ -19,7 +19,8 @@
   GHC == 8.6.5,
   GHC == 8.8.3,
   GHC == 8.10.1,
-  GHC == 9.0.1
+  GHC == 9.0.1,
+  GHC == 9.2.2
 
 extra-source-files:
   ChangeLog.md
@@ -112,7 +113,7 @@
     build-depends:
       -- provide/emulate `Control.Monad.Fail` and `Data.Semigroups` API for pre-GHC8
       fail                    == 4.9.*,
-      semigroups              >= 0.18 && < 0.20,
+      semigroups              >= 0.18 && < 0.21,
       -- the `PS` pattern synonym in bytestring 0.11 is unavailable with GHC < 8.0
       bytestring              < 0.11
 
@@ -150,7 +151,7 @@
     base                    >= 4.7     && < 4.17,
     base-orphans,
     bytestring              >= 0.10.4  && < 0.12,
-    text                    >= 1.1     && < 1.3,
+    text                    >= 1.1     && < 2.1,
     cborg,
     aeson                   >= 0.7     && < 2.1,
     base64-bytestring       >= 1.0     && < 1.3,
diff --git a/src/Codec/CBOR/Magic.hs b/src/Codec/CBOR/Magic.hs
--- a/src/Codec/CBOR/Magic.hs
+++ b/src/Codec/CBOR/Magic.hs
@@ -191,8 +191,14 @@
     case indexWord8OffAddr# ip# 0# of
      w0# ->
       case indexWord8OffAddr# ip# 1# of
-       w1# -> W16# w0# `unsafeShiftL` 8 .|.
-              W16# w1#
+       w1# -> w16 w0# `unsafeShiftL` 8 .|.
+              w16 w1#
+  where
+#if MIN_VERSION_ghc_prim(0,8,0)
+    w16 w# = W16# (wordToWord16# (word8ToWord# w#))
+#else 
+    w16 w# = W16# w#  
+#endif
 
 grabWord32 (Ptr ip#) =
     case indexWord8OffAddr# ip# 0# of
@@ -202,10 +208,16 @@
         case indexWord8OffAddr# ip# 2# of
          w2# ->
           case indexWord8OffAddr# ip# 3# of
-           w3# -> W32# w0# `unsafeShiftL` 24 .|.
-                  W32# w1# `unsafeShiftL` 16 .|.
-                  W32# w2# `unsafeShiftL`  8 .|.
-                  W32# w3#
+           w3# -> w32 w0# `unsafeShiftL` 24 .|.
+                  w32 w1# `unsafeShiftL` 16 .|.
+                  w32 w2# `unsafeShiftL`  8 .|.
+                  w32 w3#
+  where 
+#if MIN_VERSION_ghc_prim(0,8,0)
+    w32 w# = W32# (wordToWord32# (word8ToWord# w#))
+#else 
+    w32 w# = W32# w#  
+#endif
 
 grabWord64 (Ptr ip#) =
     case indexWord8OffAddr# ip# 0# of
@@ -223,19 +235,27 @@
                 case indexWord8OffAddr# ip# 6# of
                  w6# ->
                   case indexWord8OffAddr# ip# 7# of
-                   w7# -> w w0# `unsafeShiftL` 56 .|.
-                          w w1# `unsafeShiftL` 48 .|.
-                          w w2# `unsafeShiftL` 40 .|.
-                          w w3# `unsafeShiftL` 32 .|.
-                          w w4# `unsafeShiftL` 24 .|.
-                          w w5# `unsafeShiftL` 16 .|.
-                          w w6# `unsafeShiftL`  8 .|.
-                          w w7#
+                   w7# -> w64 w0# `unsafeShiftL` 56 .|.
+                          w64 w1# `unsafeShiftL` 48 .|.
+                          w64 w2# `unsafeShiftL` 40 .|.
+                          w64 w3# `unsafeShiftL` 32 .|.
+                          w64 w4# `unsafeShiftL` 24 .|.
+                          w64 w5# `unsafeShiftL` 16 .|.
+                          w64 w6# `unsafeShiftL`  8 .|.
+                          w64 w7#
   where
-#if defined(ARCH_64bit)
-    w w# = W64# w#
-#else
-    w w# = W64# (wordToWord64# w#)
+#if MIN_VERSION_ghc_prim(0,8,0)
+    toWord :: Word8# -> Word#
+    toWord w# = word8ToWord# w#
+#else 
+    toWord :: Word# -> Word#
+    toWord w# = w#  
+#endif
+
+#if WORD_SIZE_IN_BITS == 64
+    w64 w# = W64# (toWord w#)
+#else 
+    w64 w# = W64# (wordToWord64# (toWord w#))
 #endif
 
 #endif
