diff --git a/CHANGES.md b/CHANGES.md
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,6 +1,11 @@
 <!-- Unreleased: append new entries here -->
 
 
+0.6.0
+=====
+* [!1364](https://gitlab.com/morley-framework/morley/-/merge_requests/1364)
+  Update to LTS-21.4 (GHC 9.4.5)
+
 0.5.3
 =====
 * [!1352](https://gitlab.com/morley-framework/morley/-/merge_requests/1352)
diff --git a/morley-prelude.cabal b/morley-prelude.cabal
--- a/morley-prelude.cabal
+++ b/morley-prelude.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           morley-prelude
-version:        0.5.3
+version:        0.6.0
 synopsis:       A custom prelude used in Morley
 description:    A custom prelude used in Morley. It re-exports the Universum prelude and makes some tiny changes.
 category:       Prelude
@@ -95,7 +95,7 @@
       UndecidableInstances
       UndecidableSuperClasses
       ViewPatterns
-  ghc-options: -Weverything -Wno-missing-exported-signatures -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-local-signatures -Wno-monomorphism-restriction -Wno-implicit-prelude -Wno-prepositive-qualified-module -Wno-missing-safe-haskell-mode
+  ghc-options: -Weverything -Wno-missing-exported-signatures -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-local-signatures -Wno-monomorphism-restriction -Wno-implicit-prelude -Wno-prepositive-qualified-module -Wno-missing-safe-haskell-mode -Wno-missing-kind-signatures -Wno-implicit-lift -Wno-unticked-promoted-constructors
   build-depends:
       Cabal
     , OddWord
diff --git a/src/Fmt/Buildable.hs b/src/Fmt/Buildable.hs
--- a/src/Fmt/Buildable.hs
+++ b/src/Fmt/Buildable.hs
@@ -94,8 +94,8 @@
 
 >>> :{
 layoutNarrow =
-  Prettyprinter.layoutPretty Prettyprinter.LayoutOptions
-    {Prettyprinter.layoutPageWidth = Prettyprinter.AvailablePerLine 20 1}
+  Prettyprinter.layoutPretty $ Prettyprinter.LayoutOptions $
+    Prettyprinter.AvailablePerLine 20 1
 :}
 
 >>> doc = reflowF "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
diff --git a/src/Morley/Prelude/Length.hs b/src/Morley/Prelude/Length.hs
--- a/src/Morley/Prelude/Length.hs
+++ b/src/Morley/Prelude/Length.hs
@@ -64,15 +64,15 @@
 However, this lets us avoid the issue with integral literals.
 -}
 length
-  :: (Integral i, Container a, CheckIntSubType Length i, DefaultToInt (IsIntSubType Length i) i)
+  :: (Integral i, Container a, DefaultToInt (IsIntSubType Length i) i)
   => a -> i
 length = Universum.fromIntegral . Universum.length
 
 type DefaultToInt :: Bool -> Type -> Constraint
-class DefaultToInt b i
+class CheckIntSubType Length i => DefaultToInt b i
 
-instance DefaultToInt 'True i
-instance DefaultToInt 'False i
+instance CheckIntSubType Length i => DefaultToInt 'True i
+instance CheckIntSubType Length i => DefaultToInt 'False i
 
 instance {-# incoherent #-} i ~ Int => DefaultToInt f i
 
diff --git a/src/Morley/Prelude/Show.hs b/src/Morley/Prelude/Show.hs
--- a/src/Morley/Prelude/Show.hs
+++ b/src/Morley/Prelude/Show.hs
@@ -16,13 +16,14 @@
 import Data.Fixed (Fixed)
 import Data.Time (NominalDiffTime)
 import Data.Typeable (TypeRep)
-import Data.Word.Odd (Word62, Word63)
 import GHC.TypeLits (ErrorMessage(..), TypeError)
 import Language.Haskell.Extension (KnownExtension)
 import Language.Haskell.TH (Name)
 import Language.Haskell.TH.PprLib (Doc)
 import Universum hiding (show)
 import Universum qualified (show)
+
+import Morley.Prelude.Word
 
 -- | An open type family for types having a human-readable 'Show' representation. The
 -- kind is 'Constraint' in case we need to further constrain the instance, and also for
diff --git a/src/Morley/Prelude/Word.hs b/src/Morley/Prelude/Word.hs
--- a/src/Morley/Prelude/Word.hs
+++ b/src/Morley/Prelude/Word.hs
@@ -1,15 +1,24 @@
 -- SPDX-FileCopyrightText: 2022 Oxhead Alpha
 -- SPDX-License-Identifier: LicenseRef-MIT-OA
 
-{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE NoImplicitPrelude, CPP #-}
 
 module Morley.Prelude.Word
-  ( module Data.Word.Odd
+  ( Word63
+  , Word62
   )
   where
 
+import Data.Bits (Bits, FiniteBits)
+import Universum (Bounded, Enum, Eq, Integral, Num, Ord, Read, Real, Show)
+
 import Data.IntCast (IntBaseType, IntBaseTypeK(..))
-import Data.Word.Odd (Word62, Word63)
+import Data.Word.Odd qualified as OddWord
+
+newtype Word62 = Word62 OddWord.Word62
+  deriving newtype (Eq, Ord, Show, Read, Num, Real, Bounded, Enum, Integral, Bits, FiniteBits)
+newtype Word63 = Word63 OddWord.Word63
+  deriving newtype (Eq, Ord, Show, Read, Num, Real, Bounded, Enum, Integral, Bits, FiniteBits)
 
 type instance IntBaseType Word63 = 'FixedWordTag 63
 type instance IntBaseType Word62 = 'FixedWordTag 62
