diff --git a/README b/README
--- a/README
+++ b/README
@@ -1,2 +1,6 @@
 Inspired by the RubyGem of the same name, this package allows you to
 easily build validating forms that infer defaults based on type.
+
+Most users will want to both render 'Html' and parse input, and so
+should use the SimpleForm.Digestive.Combined and SimpleForm.Combined
+modules.
diff --git a/SimpleForm.hs b/SimpleForm.hs
--- a/SimpleForm.hs
+++ b/SimpleForm.hs
@@ -1,4 +1,7 @@
 -- | Forms that configure themselves based on type
+--
+-- This module is for constructing forms that only output to 'Html'.
+-- For forms that also parse input, see SimpleForm.Combined
 module SimpleForm (
 	Widget,
 	DefaultWidget(..),
diff --git a/SimpleForm/Combined.hs b/SimpleForm/Combined.hs
--- a/SimpleForm/Combined.hs
+++ b/SimpleForm/Combined.hs
@@ -1,4 +1,6 @@
 -- | Forms that configure themselves based on type
+--
+-- The Combined module both renders to 'Html' and also parses input.
 module SimpleForm.Combined (
 	Widget,
 	DefaultWidget(..),
diff --git a/SimpleForm/Digestive.hs b/SimpleForm/Digestive.hs
--- a/SimpleForm/Digestive.hs
+++ b/SimpleForm/Digestive.hs
@@ -1,4 +1,7 @@
 -- | SimpleForm implementation that works along with digestive-functors
+--
+-- This module is for constructing forms that only output to 'Html'.
+-- For forms that also parse input, see SimpleForm.Digestive.Combined
 module SimpleForm.Digestive (
 	SimpleForm,
 	simpleForm,
@@ -117,4 +120,6 @@
 
 -- | Like 'withFields', but also wrap in fieldset tag
 fieldset :: Maybe Text -> (r' -> r) -> SimpleForm r a -> SimpleForm r' a
-fieldset n f = wrap HTML.fieldset . withFields n f
+fieldset n f form = wrap HTML.fieldset $ do
+	maybe (return ()) (toForm . HTML.legend . toHtml . humanize) n
+	withFields n f form
diff --git a/SimpleForm/Digestive/Combined.hs b/SimpleForm/Digestive/Combined.hs
--- a/SimpleForm/Digestive/Combined.hs
+++ b/SimpleForm/Digestive/Combined.hs
@@ -1,9 +1,10 @@
 -- | SimpleForm implementation that works along with digestive-functors
+--
+-- The Combined module both renders to 'Html' and also parses input.
 module SimpleForm.Digestive.Combined (
 	SimpleForm,
-	getSimpleForm,
 	postSimpleForm,
-	simpleForm,
+	getSimpleForm,
 	simpleForm',
 	-- * Create forms
 	input,
@@ -11,6 +12,7 @@
 	toForm,
 	-- * Subforms
 	withFields,
+	withFields',
 	wrap,
 	fieldset
 ) where
@@ -27,7 +29,8 @@
 import Text.Digestive.View
 import Text.Digestive.Form
 import Text.Digestive.Types (Env)
-import SimpleForm.Digestive (toForm, withFields, wrap, fieldset, simpleForm, simpleForm')
+import SimpleForm.Digestive (toForm, wrap, simpleForm')
+import qualified SimpleForm.Digestive (withFields, fieldset)
 import SimpleForm.Combined
 import SimpleForm.Digestive.Internal
 import SimpleForm.Digestive.Validation
@@ -53,11 +56,13 @@
 
 -- | Render a 'SimpleForm' to 'Html' in the presence of input
 --
--- This produces the contents of the form, but you must still wrap it in
+-- This also parses the input to the correct datatype.
+--
+-- The 'Html' is the contents of the form, but you must still wrap it in
 -- the actual \<form\> element.
 postSimpleForm :: (Monad m) =>
 	Renderer
-	-> m (Env m)
+	-> m (Env m)                    -- ^ The digestive-functors input environment
 	-> SimpleForm a (Form Html m a) -- ^ The simple form to render
 	-> m (Html, Maybe a)
 postSimpleForm render env form = do
@@ -89,3 +94,27 @@
 	-> (r -> Maybe a)           -- ^ Get value from parsed data
 	-> SimpleForm r (Form Html m a)
 input_ n sel = input n sel (wdef,vdef) mempty
+
+-- | Project out some part of the parsed data (does not add name to subview)
+withFields' ::
+	Maybe Text     -- ^ Optional subview name
+	-> (r' -> r)   -- ^ Projection function
+	-> SimpleForm r a
+	-> SimpleForm r' a
+withFields' = SimpleForm.Digestive.withFields
+
+-- | Project out some part of the parsed data and name the subview
+withFields :: (Monad m) =>
+	Text           -- ^ Subview name
+	-> (r' -> r)   -- ^ Projection function
+	-> SimpleForm r (Form Html m a)
+	-> SimpleForm r' (Form Html m a)
+withFields n f = fmap (n .:) . withFields' (Just n) f
+
+-- | Like 'withFields'', but also wrap in fieldset tag
+fieldset' :: Maybe Text -> (r' -> r) -> SimpleForm r a -> SimpleForm r' a
+fieldset' = SimpleForm.Digestive.fieldset
+
+-- | Like 'withFields', but also wrap in fieldset tag
+fieldset :: (Monad m) => Text -> (r' -> r) -> SimpleForm r (Form Html m a) -> SimpleForm r' (Form Html m a)
+fieldset n f = fmap (n .:) . fieldset' (Just n) f
diff --git a/SimpleForm/Digestive/Internal.hs b/SimpleForm/Digestive/Internal.hs
--- a/SimpleForm/Digestive/Internal.hs
+++ b/SimpleForm/Digestive/Internal.hs
@@ -32,7 +32,7 @@
 
 type SimpleFormEnv r = (Maybe r, View Html, (RenderOptions -> Html))
 
--- | The type of a form
+-- | A form for producing something of type r
 newtype SimpleForm r a = SimpleForm (ReaderT (SimpleFormEnv r) (Writer Html) a)
 
 instance Functor (SimpleForm r) where
diff --git a/SimpleForm/Render.hs b/SimpleForm/Render.hs
--- a/SimpleForm/Render.hs
+++ b/SimpleForm/Render.hs
@@ -1,3 +1,4 @@
+-- | These utilities are for writing 'Renderer's
 module SimpleForm.Render (
 	Renderer,
 	Input(..),
diff --git a/simple-form.cabal b/simple-form.cabal
--- a/simple-form.cabal
+++ b/simple-form.cabal
@@ -1,5 +1,5 @@
 name:            simple-form
-version:         0.1.1
+version:         0.2
 cabal-version:   >= 1.8
 license:         OtherLicense
 license-file:    COPYING
@@ -16,6 +16,10 @@
 description:
         Inspired by the RubyGem of the same name, this package allows you to
         easily build validating forms that infer defaults based on type.
+        .
+        Most users will want to both render 'Html' and parse input, and so
+        should use the SimpleForm.Digestive.Combined and SimpleForm.Combined
+        modules.
 
 extra-source-files:
         README
