diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,1 +1,6 @@
-# primitive-class
+# contiguous-checked
+
+A drop-in replacement for `contiguous` where all the functions
+checks bounds at runtime. This is less efficient but gives
+helpful error messages instead of segfaulting. It is intended
+to be used when testing software.
diff --git a/contiguous-checked.cabal b/contiguous-checked.cabal
--- a/contiguous-checked.cabal
+++ b/contiguous-checked.cabal
@@ -1,7 +1,12 @@
 cabal-version: 2.0
 name: contiguous-checked
-version: 0.3.0.0
-description: Please see the README on GitHub
+version: 0.3.2.0
+description:
+  A drop-in replacement for `contiguous` where all the functions
+  checks bounds at runtime. This is less efficient but gives
+  helpful error messages instead of segfaulting. It is intended
+  to be used when testing software.
+synopsis: contiguous with bounds checks
 homepage: https://github.com/andrewthad/contiguous-checked
 bug-reports: https://github.com/andrewthad/contiguous-checked/issues
 author: Andrew Martin
@@ -9,6 +14,7 @@
 copyright: 2018 Andrew Martin
 license: BSD3
 license-file: LICENSE
+category: Data
 build-type: Simple
 extra-source-files: README.md
 
@@ -23,6 +29,6 @@
   build-depends:
       base >=4.9 && <5
     , primitive >= 0.6.4
-    , contiguous >= 0.3 && < 0.4
+    , contiguous >= 0.3.2 && < 0.4
   default-language: Haskell2010
 
diff --git a/src/Data/Primitive/Contiguous.hs b/src/Data/Primitive/Contiguous.hs
--- a/src/Data/Primitive/Contiguous.hs
+++ b/src/Data/Primitive/Contiguous.hs
@@ -35,19 +35,29 @@
   , copyMutable
   , clone
   , cloneMutable
+  , thaw
   , C.equals
   , C.unlift
   , C.lift
     -- * Synthetic Functions
+  , C.singleton
+  , C.doubleton
+  , C.tripleton
+  , C.append
   , C.map
+  , C.map'
+  , C.imap
   , C.foldr
   , C.foldl'
   , C.foldr'
   , C.foldMap
   , C.foldMap'
   , C.foldlM'
+  , C.traverse
   , C.traverse_
   , C.itraverse_
+  , C.imapMutable'
+  , C.traverseP
   , unsafeFromListN
   , unsafeFromListReverseN
   , C.liftHashWithSalt
@@ -75,6 +85,13 @@
 
 new :: (HasCallStack, Contiguous arr, Element arr b, PrimMonad m) => Int -> m (Mutable arr (PrimState m) b)
 new n = check "new: negative size" (n>=0) (C.new n)
+
+thaw :: (HasCallStack, Contiguous arr, PrimMonad m, Element arr b) => arr b -> Int -> Int -> m (Mutable arr (PrimState m) b)
+thaw arr off len = check ("thaw: out of bounds [off=" ++ show off ++ ",len=" ++ show len ++ "]")
+  (off >= 0 && len >= 0 && off + len <= sz)
+  (C.thaw arr off len)
+  where
+  sz = C.size arr
 
 index :: (HasCallStack, Contiguous arr, Element arr b) => arr b -> Int -> b
 index arr i = check ("index: out of bounds [ix=" ++ show i ++ ",sz=" ++ show sz ++ "]")
