diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Revision history for byteslice
 
+## 0.2.13.2 -- 2024-02-06
+
+* Restore `Data.Bytes.Text.Utf8.toText`.
+
 ## 0.2.13.1 -- 2024-02-01
 
 * Update package metadata.
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,25 @@
+# byteslice
+
+## Purpose
+
+Types for dealing with slices of 'ByteArray' and 'MutableByteArray'.
+These are never supposed to introduce overhead. Rather, they exist
+to clarify intent in type signatures.
+
+    receive ::
+         Resource -- ^ Some scarce resource
+      -> MutableByteArray RealWorld -- ^ Buffer
+      -> Int -- ^ Offset
+      -> Int -- ^ Length
+      -> IO ()
+
+With this library, we instead write
+
+    receive ::
+         Resource -- ^ Some scarce resource
+      -> MutableBytes RealWorld -- ^ Buffer
+      -> IO ()
+
+The combination of the worker-wrapper transformation and inlining means
+that we can expect these two to end up generating the same code in most
+situations.
diff --git a/byteslice.cabal b/byteslice.cabal
--- a/byteslice.cabal
+++ b/byteslice.cabal
@@ -1,6 +1,6 @@
 cabal-version:   2.4
 name:            byteslice
-version:         0.2.13.1
+version:         0.2.13.2
 synopsis:        Slicing managed and unmanaged memory
 description:
   This library provides types that allow the user to talk about a slice of
@@ -16,13 +16,22 @@
 maintainer:      amartin@layer3com.com
 copyright:       2020 Andrew Martin
 category:        Data
-extra-doc-files: CHANGELOG.md
+extra-doc-files:
+  CHANGELOG.md
+  README.md
 
+tested-with:     GHC ==9.4.8 || ==9.6.3 || ==9.8.1
+
+common build-settings
+  default-language: Haskell2010
+  ghc-options:      -Wall -Wunused-packages
+
 flag avoid-rawmemchr
   default:     True
   description: Avoid using rawmemchr which is non-portable GNU libc only
 
 library
+  import:           build-settings
   exposed-modules:
     Data.Bytes
     Data.Bytes.Chunks
@@ -60,7 +69,7 @@
     , vector              >=0.12   && <0.14
 
   hs-source-dirs:   src
-  ghc-options:      -Wall -O2
+  ghc-options:      -O2
 
   if impl(ghc >=9.2)
     hs-source-dirs: src-new-reps
@@ -74,7 +83,6 @@
   else
     hs-source-dirs: src-no-ghc-cstrlen
 
-  default-language: Haskell2010
   include-dirs:     include
   includes:         bs_custom.h
   install-includes: bs_custom.h
@@ -84,11 +92,10 @@
     cc-options: -DAVOID_RAWMEMCHR=1
 
 test-suite test
-  default-language: Haskell2010
-  type:             exitcode-stdio-1.0
-  hs-source-dirs:   test
-  main-is:          Main.hs
-  ghc-options:      -Wall -O2
+  import:         build-settings
+  type:           exitcode-stdio-1.0
+  hs-source-dirs: test
+  main-is:        Main.hs
   build-depends:
     , base                >=4.11.1 && <5
     , byteslice
@@ -102,17 +109,16 @@
     , transformers
 
 benchmark bench
-  type:             exitcode-stdio-1.0
+  import:         build-settings
+  type:           exitcode-stdio-1.0
   build-depends:
     , base
     , byteslice
     , gauge
-    , primitive
 
-  ghc-options:      -Wall -O2
-  default-language: Haskell2010
-  hs-source-dirs:   bench
-  main-is:          Main.hs
+  ghc-options:    -O2
+  hs-source-dirs: bench
+  main-is:        Main.hs
 
 source-repository head
   type:     git
diff --git a/src/Data/Bytes/Text/Utf8.hs b/src/Data/Bytes/Text/Utf8.hs
--- a/src/Data/Bytes/Text/Utf8.hs
+++ b/src/Data/Bytes/Text/Utf8.hs
@@ -9,7 +9,7 @@
   , fromText
 #endif
 #if MIN_VERSION_text(2,1,0)
-  -- , toText
+  , toText
 #endif
   ) where
 
