diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,5 +1,9 @@
 # summer
 
+[![Hackage](https://img.shields.io/hackage/v/summer.svg)](https://hackage.haskell.org/package/summer)
+[![Build Status](https://travis-ci.org/SamuelSchlesinger/summer.svg?branch=master)](https://travis-ci.org/SamuelSchlesinger/summer)
+
+
 Extensible sums and products for Haskell.
 
 ```haskell
@@ -21,3 +25,5 @@
 a' :: Bool
 a' = consume y' (\b f -> b && f == 0.2)
 ```
+
+This package is extremely experimental, and is subject to arbitrarily large changes.
diff --git a/src/Data/Prodder.hs b/src/Data/Prodder.hs
--- a/src/Data/Prodder.hs
+++ b/src/Data/Prodder.hs
@@ -25,11 +25,6 @@
 module Data.Prodder
   ( -- * The extensible product type
     Prod
-    -- * Type families
-  , IndexIn
-  , HasIndexIn
-  , Consumer
-  , (<>)
     -- * Construction and deconstruction
   , extract
   , index
@@ -37,6 +32,15 @@
   , initN
   , dropFirst
   , Consume(consume, produce, extend1, cmap)
+    -- * Type families
+  , IndexIn
+  , HasIndexIn
+  , Consumer
+  , (<>)
+  , Length
+  , Tail
+  , Init
+  , Replace
     -- * Rearranging and removing elements
   , Strengthen(strengthen)
     -- * Transforming extensible products
@@ -67,10 +71,12 @@
   Length '[] = 0
   Length (x ': xs) = 1 + Length xs
 
+-- | A type family for computing the tail of a type level list
 type family Tail n xs where
   Tail 0 xs = xs
   Tail n (x ': xs) = Tail (n - 1) xs
 
+-- | A type family for computing the initial segment of a type level list
 type family Init n xs where
   Init 0 xs = '[]
   Init n (x ': xs) = x ': Init (n - 1) xs
diff --git a/src/Data/Summer.hs b/src/Data/Summer.hs
--- a/src/Data/Summer.hs
+++ b/src/Data/Summer.hs
@@ -34,6 +34,7 @@
   , inspect
   , consider
   , Match(match, override, unmatch)
+  , Unmatch
   -- * Type families
   , TagIn
   , HasTagIn
@@ -199,9 +200,12 @@
   override r m = fmap (override @xs r) m
   {-# INLINE CONLIKE override #-}
 
+-- | A utility typeclass which makes the implementation of 'Match' cleaner.
 class Unmatch xs ys where
   unmatchGo :: Matcher xs (Sum ys) -> Sum ys
 instance Unmatch '[] ys where
   unmatchGo = id
+  {-# INLINE CONLIKE unmatchGo #-}
 instance (Unmatch xs ys, x `HasTagIn` ys) => Unmatch (x ': xs) ys where
   unmatchGo f = unmatchGo @xs (f (UnsafeInj (tag @x @ys) . unsafeCoerce @x))
+  {-# INLINE CONLIKE unmatchGo #-}
diff --git a/summer.cabal b/summer.cabal
--- a/summer.cabal
+++ b/summer.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.4
 name:                summer
-version:             0.1.0.0
+version:             0.1.1.0
 synopsis:            An implementation of extensible products and sums
 description:         An implementation of extensible products and sums.
 license:             MIT
