diff --git a/ASCII.hs b/ASCII.hs
--- a/ASCII.hs
+++ b/ASCII.hs
@@ -26,9 +26,16 @@
     {- ** @Text@       -} {- $textConversions          -} charListToText,          textToCharListMaybe,          textToCharListUnsafe,
     {- ** @ByteString@ -} {- $byteStringConversions    -} charListToByteString,    byteStringToCharListMaybe,    byteStringToCharListUnsafe,
 
+    {- * Monomorphic conversions between ASCII supersets -} {- $monoSupersetConversions -}
+    {- ** @ByteString@ / @String@ -} byteStringToUnicodeStringMaybe, unicodeStringToByteStringMaybe,
+    {- ** @[Word8]@      / @String@ -} byteListToUnicodeStringMaybe,   unicodeStringToByteListMaybe,
+
     {- * Refinement type -} {- $refinement -} {- ** @ASCII@ -} ASCII,
 
-    {- * Polymorphic conversions -} {- ** Validate -} validateChar, validateString, {- ** Lift -} {- $lift -} lift,
+    {- * Polymorphic conversions -}
+    {- ** Validate -} validateChar, validateString,
+    {- ** Lift -} {- $lift -} lift,
+    {- ** Convert -} {- $supersetConversions -} convertCharMaybe, convertCharOrFail, convertStringMaybe, convertStringOrFail,
 
     {- * Classes -} {- ** @CharSuperset@ -} CharSuperset, {- ** @StringSuperset@ -} StringSuperset, {- ** @Lift@ -} Lift, {- ** @CharIso@ -} CharIso, {- ** @StringIso@ -} StringIso,
 
@@ -46,6 +53,7 @@
 import ASCII.Superset      ( CharSuperset, StringSuperset )
 
 import Control.Monad       ( (>=>) )
+import Control.Monad.Fail  ( MonadFail )
 import Data.Bool           ( Bool (..) )
 import Data.Function       ( (.) )
 import Data.Int            ( Int )
@@ -325,3 +333,47 @@
 
 lift :: Lift ascii superset => ascii -> superset
 lift = ASCII.Lift.lift
+
+{- $supersetConversions
+
+These functions all convert from one ASCII-superset type to another, failing if any of the characters in the input is outside the ASCII character set.
+
+-}
+
+convertCharMaybe :: (CharSuperset char1, CharSuperset char2) => char1 -> Maybe char2
+convertCharMaybe = ASCII.Superset.convertCharMaybe
+
+convertCharOrFail :: (CharSuperset char1, CharSuperset char2, MonadFail context) => char1 -> context char2
+convertCharOrFail = ASCII.Superset.convertCharOrFail
+
+convertStringMaybe :: (StringSuperset string1, StringSuperset string2) => string1 -> Maybe string2
+convertStringMaybe = ASCII.Superset.convertStringMaybe
+
+convertStringOrFail :: (StringSuperset string1, StringSuperset string2, MonadFail context) => string1 -> context string2
+convertStringOrFail = ASCII.Superset.convertStringOrFail
+
+{- $monoSupersetConversions
+
+These functions are all specializations of 'convertStringMaybe'. They convert a string from one ASCII-superset type to another.
+
+>>> ASCII.byteListToUnicodeStringMaybe [0x48, 0x54, 0x54, 0x50]
+Just "HTTP"
+
+If any of the characters in the input is outside the ASCII character set, the result is 'Nothing'.
+
+>>> ASCII.byteListToUnicodeStringMaybe [0x48, 0x54, 0x54, 0x80]
+Nothing
+
+-}
+
+byteStringToUnicodeStringMaybe :: BS.ByteString -> Maybe Unicode.String
+byteStringToUnicodeStringMaybe = convertStringMaybe
+
+unicodeStringToByteStringMaybe :: Unicode.String -> Maybe BS.ByteString
+unicodeStringToByteStringMaybe = convertStringMaybe
+
+byteListToUnicodeStringMaybe :: [Word8] -> Maybe Unicode.String
+byteListToUnicodeStringMaybe = convertStringMaybe
+
+unicodeStringToByteListMaybe :: Unicode.String -> Maybe [Word8]
+unicodeStringToByteListMaybe = convertStringMaybe
diff --git a/ascii.cabal b/ascii.cabal
--- a/ascii.cabal
+++ b/ascii.cabal
@@ -1,7 +1,7 @@
 cabal-version: 2.0
 
 name: ascii
-version: 1.0.0.2
+version: 1.0.1.0
 synopsis: The ASCII character set and encoding
 category: Data, Text
 
@@ -32,36 +32,36 @@
     ghc-options: -Wall
 
     build-depends: base       >= 4.11 && < 4.15
-    build-depends: bytestring >= 0.10 && < 0.11
-    build-depends: text       >= 1.2  && < 1.3
+    build-depends: bytestring ^>= 0.10
+    build-depends: text       ^>= 1.2
 
     exposed-modules: ASCII
 
-    build-depends: ascii-char >= 1.0 && < 1.1
+    build-depends: ascii-char ^>= 1.0
     reexported-modules: ASCII.Char
 
-    build-depends: ascii-group >= 1.0 && < 1.1
+    build-depends: ascii-group ^>= 1.0
     reexported-modules: ASCII.Group
 
-    build-depends: ascii-case >= 1.0 && < 1.1
+    build-depends: ascii-case ^>= 1.0
     reexported-modules: ASCII.Case
 
-    build-depends: ascii-predicates >= 1.0 && < 1.1
+    build-depends: ascii-predicates ^>= 1.0
     reexported-modules: ASCII.Predicates
     reexported-modules: ASCII.Lists
     reexported-modules: ASCII.ListsAndPredicates
 
-    build-depends: ascii-superset >= 1.0 && < 1.1
+    build-depends: ascii-superset ^>= 1.0.1
     reexported-modules: ASCII.Superset
     reexported-modules: ASCII.Isomorphism
     reexported-modules: ASCII.Refinement
     reexported-modules: ASCII.Lift
 
-    build-depends: ascii-th >= 1.0 && < 1.1
+    build-depends: ascii-th ^>= 1.0
     reexported-modules: ASCII.TemplateHaskell
     reexported-modules: ASCII.QuasiQuoters
 
-    build-depends: data-ascii >= 1.0 && < 1.1
+    build-depends: data-ascii ^>= 1.0
     reexported-modules: Data.Ascii
     reexported-modules: Data.Ascii.Blaze
     reexported-modules: Data.Ascii.ByteString
diff --git a/changelog.txt b/changelog.txt
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,2 +1,15 @@
 1.0.0.0 - 2020-05-05 - Initial release
+
 1.0.0.2 - 2020-05-18 - Support GHC 8.10
+
+1.0.1.0 - 2021-01-27
+
+    New functions:
+        - byteStringToUnicodeStringMaybe
+        - unicodeStringToByteStringMaybe
+        - byteListToUnicodeStringMaybe
+        - unicodeStringToByteListMaybe
+        - convertCharMaybe
+        - convertCharOrFail
+        - convertStringMaybe
+        - convertStringOrFail
diff --git a/license.txt b/license.txt
--- a/license.txt
+++ b/license.txt
@@ -1,4 +1,4 @@
-Copyright 2020 Typeclass Consulting LLC
+Copyright 2021 Mission Valley Software LLC
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
