diff --git a/ascii.cabal b/ascii.cabal
--- a/ascii.cabal
+++ b/ascii.cabal
@@ -1,7 +1,7 @@
 cabal-version: 3.0
 
 name: ascii
-version: 1.5.4.0
+version: 1.6.0.0
 synopsis: The ASCII character set and encoding
 category: Data, Text
 
@@ -32,9 +32,9 @@
       , ascii-char == 1.0.1.*
       , ascii-group == 1.0.0.*
       , ascii-case == 1.0.1.*
-      , ascii-numbers == 1.1.0.*
+      , ascii-numbers == 1.2.0.*
       , ascii-predicates == 1.0.1.*
-      , ascii-superset == 1.2.7.*
+      , ascii-superset == 1.3.0.*
       , ascii-th == 1.2.0.*
       , base ^>= 4.14 || ^>= 4.15 || ^>= 4.16 || ^>= 4.17
       , bytestring ^>= 0.10.12 || ^>= 0.11
@@ -54,7 +54,6 @@
       , ASCII.Group
       , ASCII.Hexadecimal
       , ASCII.Isomorphism
-      , ASCII.Lift
       , ASCII.Lists
       , ASCII.ListsAndPredicates
       , ASCII.Predicates
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,27 @@
+### 1.6.0.0 (2023-02-08)
+
+Raise `ascii-superset` to `1.3`. This removes the `ASCII.Lift` module.
+
+Raise `ascii-numbers` to `1.2`.
+
+From the `ASCII` module, the `Lift` class and `lift` function are removed.
+
+The removed `lift` function is replaced with the `lift` function from
+`ASCII.Refinement`. If you were using `lift` specialized as
+`ASCII a -> a`, then this is not a breaking change. Otherwise, migrate
+by using one the new functions below.
+
+```haskell
+fromChar        :: FromChar char               => Char      -> char
+fromCharList    :: FromString string           => [Char]    -> string
+fromDigit       :: DigitSuperset char          => Digit     -> char
+fromDigitList   :: DigitStringSuperset string  => [Digit]   -> string
+fromHexChar     :: HexCharSuperset char        => HexChar   -> char
+fromHexCharList :: HexStringSuperset string    => [HexChar] -> string
+
+forgetCase      :: ASCII'case letterCase superset -> ASCII superset
+```
+
 ### 1.5.4.0 (2023-02-08)
 
 Raise `ascii-superset` to `1.2.7`
diff --git a/library/ASCII.hs b/library/ASCII.hs
--- a/library/ASCII.hs
+++ b/library/ASCII.hs
@@ -29,110 +29,187 @@
 module ASCII
   (
     {- * @Char@ -}
-    {- ** ASCII -} {- $char -} Char,
-    {- ** Unicode -} UnicodeChar,
-    {- ** Case-insensitive -} {- $caselessChar -} CaselessChar,
 
+        {- ** ASCII -}
+            {- $char -} Char,
+
+        {- ** Unicode -}
+            UnicodeChar,
+
+        {- ** Case-insensitive -}
+            {- $caselessChar -} CaselessChar,
+
     {- * Character classifications -}
-    {- ** Print/control groups -} {- $groups -}
-    Group (..), charGroup, inGroup,
-    {- ** Upper/lower case -} {- $case -}
-    Case (..), letterCase, isCase, toCaseChar, toCaseString,
-    disregardCase, refineCharToCase, refineStringToCase,
-    {- ** Letters -} isLetter,
-    {- ** Letters and numbers -} isAlphaNum,
-    {- ** Decimal digits -} {- $digit -} isDigit, Digit,
-    {- ** Hexadecimal digits -} {- $hexchar -} isHexDigit, HexChar,
-    {- ** Octal digits -} isOctDigit,
-    {- ** Spaces and symbols -} isSpace, isPunctuation, isSymbol, isVisible,
 
-    {- * Monomorphic character conversions -} {- $monomorphicConversions -}
-    {- ** @ASCII.Char@ ↔ @Int@ -} {- $intConversions -}
-    charToInt, intToCharMaybe, intToCharUnsafe,
-    {- ** @ASCII.Char@ ↔ @Word8@ -} {- $word8Conversions -}
-    charToWord8, word8ToCharMaybe, word8ToCharUnsafe,
-    {- ** @ASCII.Char@ ↔ @UnicodeChar@ -} {- $unicodeCharConversions -}
-    charToUnicode, unicodeToCharMaybe, unicodeToCharUnsafe,
+        {- ** Print/control groups -}
+            {- $groups -} Group (..), charGroup, inGroup,
 
+        {- ** Upper/lower case -}
+            {- $case -} Case (..), letterCase, isCase, toCaseChar, toCaseString,
+            disregardCase, refineCharToCase, refineStringToCase,
+
+        {- ** Letters -}
+            isLetter,
+
+        {- ** Letters and numbers -}
+            isAlphaNum,
+
+        {- ** Decimal digits -}
+            {- $digit -} isDigit, Digit,
+
+        {- ** Hexadecimal digits -}
+            {- $hexchar -} isHexDigit, HexChar,
+
+        {- ** Octal digits -}
+            isOctDigit,
+
+        {- ** Spaces and symbols -}
+            isSpace, isPunctuation, isSymbol, isVisible,
+
+    {- * Monomorphic character conversions -}
+
+        {- $monomorphicConversions -}
+
+        {- ** @ASCII.Char@ ↔ @Int@ -}
+            {- $intConversions -}
+            charToInt, intToCharMaybe, intToCharUnsafe,
+
+        {- ** @ASCII.Char@ ↔ @Word8@ -}
+            {- $word8Conversions -}
+            charToWord8, word8ToCharMaybe, word8ToCharUnsafe,
+
+        {- ** @ASCII.Char@ ↔ @UnicodeChar@ -}
+            {- $unicodeCharConversions -}
+            charToUnicode, unicodeToCharMaybe, unicodeToCharUnsafe,
+
     {- * Monomorphic digit conversions -}
-    {- ** @Digit@ ↔ @Word8@ -} {- $digitWord8Conversions -}
-    digitToWord8, word8ToDigitMaybe, word8ToDigitUnsafe,
-    {- ** @Digit@ ↔ @ASCII.Char@ -} {- $digitCharConversions -}
-    digitToChar, charToDigitMaybe, charToDigitUnsafe,
-    {- ** @Digit@ ↔ @UnicodeChar@ -} {- $digitUnicodeConversions -}
-    digitToUnicode, unicodeToDigitMaybe, unicodeToDigitUnsafe,
-    {- ** @HexChar@ ↔ @Word8@ -} {- $hexCharWord8Conversions -}
-    hexCharToWord8, word8ToHexCharMaybe, word8ToHexCharUnsafe,
-    {- ** @HexChar@ ↔ @ASCII.Char@ -} {- $hexCharCharConversions -}
-    hexCharToChar, charToHexCharMaybe, charToHexCharUnsafe,
-    {- ** @HexChar@ ↔ @UnicodeChar@ -} {- $hexCharUnicodeConversions -}
-    hexCharToUnicode, unicodeToHexCharMaybe, unicodeToHexCharUnsafe,
 
+        {- ** @Digit@ ↔ @Word8@ -}
+            {- $digitWord8Conversions -}
+            digitToWord8, word8ToDigitMaybe, word8ToDigitUnsafe,
+
+        {- ** @Digit@ ↔ @ASCII.Char@ -}
+            {- $digitCharConversions -}
+            digitToChar, charToDigitMaybe, charToDigitUnsafe,
+
+        {- ** @Digit@ ↔ @UnicodeChar@ -}
+            {- $digitUnicodeConversions -}
+            digitToUnicode, unicodeToDigitMaybe, unicodeToDigitUnsafe,
+
+        {- ** @HexChar@ ↔ @Word8@ -}
+            {- $hexCharWord8Conversions -}
+            hexCharToWord8, word8ToHexCharMaybe, word8ToHexCharUnsafe,
+
+        {- ** @HexChar@ ↔ @ASCII.Char@ -}
+            {- $hexCharCharConversions -}
+            hexCharToChar, charToHexCharMaybe, charToHexCharUnsafe,
+
+        {- ** @HexChar@ ↔ @UnicodeChar@ -}
+            {- $hexCharUnicodeConversions -}
+            hexCharToUnicode, unicodeToHexCharMaybe, unicodeToHexCharUnsafe,
+
     {- * Monomorphic string conversions -}
-    {- ** @ASCII.Char@ ↔ @String@ -} {- $unicodeStringConversions -}
-    charListToUnicodeString, unicodeStringToCharListMaybe, unicodeStringToCharListUnsafe,
-    {- ** @ASCII.Char@ ↔ @Text@ -} {- $textConversions -}
-    charListToText, textToCharListMaybe, textToCharListUnsafe,
-    {- ** @ASCII.Char@ ↔ @ByteString@ -} {- $byteStringConversions -}
-    charListToByteString, byteStringToCharListMaybe, byteStringToCharListUnsafe,
-    {- ** @ASCII ByteString@ -> @Text@ -}
-    asciiByteStringToText, asciiByteStringToTextLazy,
 
-    {- * Monomorphic conversions between ASCII supersets -} {- $monoSupersetConversions -}
-    {- ** @ByteString@ ↔ @String@ -}
-    byteStringToUnicodeStringMaybe, unicodeStringToByteStringMaybe,
-    {- ** @[Word8]@ ↔ @String@ -}
-    byteListToUnicodeStringMaybe, unicodeStringToByteListMaybe,
+        {- ** @ASCII.Char@ ↔ @String@ -}
+            {- $unicodeStringConversions -}
+            charListToUnicodeString, unicodeStringToCharListMaybe,
+            unicodeStringToCharListUnsafe,
 
+        {- ** @ASCII.Char@ ↔ @Text@ -}
+            {- $textConversions -}
+            charListToText, textToCharListMaybe, textToCharListUnsafe,
+
+        {- ** @ASCII.Char@ ↔ @ByteString@ -}
+            {- $byteStringConversions -}
+            charListToByteString, byteStringToCharListMaybe,
+            byteStringToCharListUnsafe,
+
+        {- ** @ASCII ByteString@ -> @Text@ -}
+            asciiByteStringToText, asciiByteStringToTextLazy,
+
+    {- * Monomorphic conversions between ASCII supersets -}
+
+        {- $monoSupersetConversions -}
+
+        {- ** @ByteString@ ↔ @String@ -}
+            byteStringToUnicodeStringMaybe, unicodeStringToByteStringMaybe,
+
+        {- ** @[Word8]@ ↔ @String@ -}
+            byteListToUnicodeStringMaybe, unicodeStringToByteListMaybe,
+
     {- * Monomorphic numeric string conversions -}
-    {- ** @Natural@ ↔ @[Digit]@ -}
-    showNaturalDigits, readNaturalDigits,
-    {- ** @Natural@ ↔ @[HexChar]@ -}
-    showNaturalHexChars, readNaturalHexChars,
 
-    {- * Refinement types -} {- $refinement -} ASCII,
-    ASCII'case, ASCII'upper, ASCII'lower, KnownCase (..),
+        {- ** @Natural@ ↔ @[Digit]@ -}
+            showNaturalDigits, readNaturalDigits,
 
+        {- ** @Natural@ ↔ @[HexChar]@ -}
+            showNaturalHexChars, readNaturalHexChars,
+
+    {- * Refinement types -}
+        {- $refinement -} ASCII,
+        ASCII'case, ASCII'upper, ASCII'lower, KnownCase (..),
+
     {- * Polymorphic conversions -}
-    {- ** Narrowing -} toAsciiCharMaybe, toDigitMaybe, toHexCharMaybe,
-    {- ** Validate -} validateChar, validateString,
-    {- ** Widening -} {- $toText -} toStrictText, toLazyText, toUnicodeCharList,
-    {- $lift -} lift,
-    {- ** Convert -} {- $supersetConversions -}
-    convertCharMaybe, convertCharOrFail, convertStringMaybe, convertStringOrFail,
-    convertRefinedString,
-    {- ** Integral strings -} {- $numbers -}
-    showIntegralDecimal, showIntegralHexadecimal,
-    readIntegralDecimal, readIntegralHexadecimal,
-    {- ** Natural strings -}
-    showNaturalDecimal, showNaturalHexadecimal,
-    readNaturalDecimal, readNaturalHexadecimal,
-    {- ** Single-digit strings -}
-    digitString, hexCharString,
 
+        {- ** Narrowing -}
+            toAsciiCharMaybe, toDigitMaybe, toHexCharMaybe,
+
+        {- ** Validate -}
+            validateChar, validateString,
+
+        {- ** Widening -}
+            {- $lift -} lift,
+            {- $toText -} toStrictText, toLazyText, toUnicodeCharList,
+            {- $fromChar -} fromChar, fromCharList,
+            {- $fromDigit -} fromDigit, fromDigitList,
+            {- $fromHexChar -} fromHexChar, fromHexCharList,
+            {- $forgetCase -} forgetCase,
+
+        {- ** Convert -}
+            {- $supersetConversions -}
+            convertCharMaybe, convertCharOrFail, convertStringMaybe,
+            convertStringOrFail, convertRefinedString,
+
+        {- ** Integral strings -}
+            {- $numbers -}
+            showIntegralDecimal, showIntegralHexadecimal,
+            readIntegralDecimal, readIntegralHexadecimal,
+
+        {- ** Natural strings -}
+            showNaturalDecimal, showNaturalHexadecimal,
+            readNaturalDecimal, readNaturalHexadecimal,
+
+        {- ** Single-digit strings -}
+            digitString, hexCharString,
+
     {- * Classes -}
-    {- ** Supersets of ASCII -} CharSuperset, StringSuperset,
-    StringSupersetConversion, ToText, Lift,
-    {- ** Equivalents to ASCII -} CharIso, StringIso,
-    {- ** Supersets of numeric characters -}
-    DigitSuperset, DigitStringSuperset, HexCharSuperset, HexStringSuperset,
 
-    {- * Quasi-quoters -} char, string, caseless, lower, upper,
+        {- ** Supersets of ASCII -}
+            CharSuperset, StringSuperset,
+            StringSupersetConversion, ToText,
+
+        {- ** Equivalents to ASCII -}
+            CharIso, StringIso,
+
+        {- ** Supersets of numeric characters -}
+            DigitSuperset, DigitStringSuperset, HexCharSuperset, HexStringSuperset,
+
+    {- * Quasi-quoters -}
+        char, string, caseless, lower, upper,
   )
   where
 
 import ASCII.Case (Case (..))
-import ASCII.CaseRefinement (KnownCase (..), ASCII'case, ASCII'upper, ASCII'lower, refineCharToCase, refineStringToCase)
+import ASCII.CaseRefinement (KnownCase (..), ASCII'case, ASCII'upper, ASCII'lower, refineCharToCase, refineStringToCase, forgetCase)
 import ASCII.Caseless (CaselessChar)
 import ASCII.Char (Char)
-import ASCII.Decimal (Digit, DigitStringSuperset, DigitSuperset)
+import ASCII.Decimal (Digit, DigitStringSuperset, DigitSuperset, fromDigit, fromDigitList)
 import ASCII.Group (Group (..))
-import ASCII.Hexadecimal (HexChar, HexCharSuperset, HexStringSuperset)
+import ASCII.Hexadecimal (HexChar, HexCharSuperset, HexStringSuperset, fromHexChar, fromHexCharList)
 import ASCII.Isomorphism (CharIso, StringIso)
-import ASCII.Lift (Lift)
 import ASCII.QuasiQuoters (char, string, caseless, lower, upper)
-import ASCII.Refinement (ASCII, validateChar, validateString)
-import ASCII.Superset (CharSuperset, StringSuperset)
+import ASCII.Refinement (ASCII, lift, validateChar, validateString)
+import ASCII.Superset (CharSuperset, StringSuperset, fromChar, fromCharList)
 import ASCII.SupersetConversion (StringSupersetConversion)
 import ASCII.Superset.Text (ToText (..))
 
@@ -154,7 +231,6 @@
 import qualified ASCII.Group
 import qualified ASCII.Hexadecimal
 import qualified ASCII.Isomorphism
-import qualified ASCII.Lift
 import qualified ASCII.Predicates
 import qualified ASCII.Superset
 import qualified ASCII.SupersetConversion as SupersetConversion
@@ -470,10 +546,10 @@
 byteStringToCharListUnsafe = ASCII.Superset.toCharListUnsafe
 
 asciiByteStringToText :: ASCII BS.ByteString -> Text.Text
-asciiByteStringToText = Text.decodeASCII . lift
+asciiByteStringToText = Text.decodeUtf8 . ASCII.Refinement.lift
 
 asciiByteStringToTextLazy :: ASCII LBS.ByteString -> LText.Text
-asciiByteStringToTextLazy = LText.decodeASCII . lift
+asciiByteStringToTextLazy = LText.decodeUtf8 . ASCII.Refinement.lift
 
 {- $refinement
 
@@ -481,31 +557,27 @@
 
 {- $lift
 
-See also: "ASCII.Lift" -}
+See also: "ASCII.Refinement" -}
 
 {- $toText
 
 See also: "ASCII.Superset.ToText" -}
 
-{-| Converts from ASCII to any larger type
+{- $fromChar
 
-For example, @(lift \@ASCII.Char \@Word8)@ is the same function as 'charToWord8'.
+See also: "ASCII.Superset" -}
 
-@
-(lift CapitalLetterA :: Word8) == 65
-@
+{- $fromDigit
 
-And @(lift \@[ASCII.Char] \@Text)@ is equivalent to 'charListToText'.
+See also: "ASCII.Decimal" -}
 
-@
-(lift [CapitalLetterH,SmallLetterI,ExclamationMark] :: Text) == "Hi!"
-@
+{- $fromHexChar
 
-Due to the highly polymorphic nature of the 'lift' function, often it must used
-with an explicit type signature or type application to avoid any type ambiguity.
--}
-lift :: Lift ascii superset => ascii -> superset
-lift = ASCII.Lift.lift
+See also: "ASCII.Hexadecimal" -}
+
+{- $forgetCase
+
+See also: "ASCII.CaseRefinement" -}
 
 {- $supersetConversions
 
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -118,10 +118,12 @@
             charListToText [CapitalLetterH, SmallLetterI, ExclamationMark]
                 `shouldBe` "Hi!"
 
-    describe "lift" $ do
-        it "converts Char to Word8" $ (lift CapitalLetterA :: Word8) `shouldBe` 65
+    describe "fromChar" $ do
+        it "converts Char to Word8" $ (fromChar CapitalLetterA :: Word8) `shouldBe` 65
+
+    describe "fromCharList" $ do
         it "converts [Char] to Text" $
-            (lift [CapitalLetterH, SmallLetterI, ExclamationMark] :: Text)
+            (fromCharList [CapitalLetterH, SmallLetterI, ExclamationMark] :: Text)
                 `shouldBe` "Hi!"
 
     describe "byteListToUnicodeStringMaybe" $ do
