diff --git a/SimpleForm/Digestive/Internal.hs b/SimpleForm/Digestive/Internal.hs
--- a/SimpleForm/Digestive/Internal.hs
+++ b/SimpleForm/Digestive/Internal.hs
@@ -6,7 +6,8 @@
 	input',
 	getField,
 	subView',
-	fieldInputChoiceGroup'
+	fieldInputChoiceGroup',
+	underRef
 ) where
 
 import Data.Monoid
@@ -168,3 +169,7 @@
 	notFound :: FormTree Identity v Identity a
 	notFound = error $ "Text.Digestive.View.subView: " ++
 		"No such subView: " ++ show path
+
+underRef :: (Form v m a -> Form v m b) -> Form v m a -> Form v m b
+underRef f (Ref r x) = Ref r (f x)
+underRef f form = f form
diff --git a/SimpleForm/Digestive/Validation.hs b/SimpleForm/Digestive/Validation.hs
--- a/SimpleForm/Digestive/Validation.hs
+++ b/SimpleForm/Digestive/Validation.hs
@@ -1,4 +1,4 @@
-module SimpleForm.Digestive.Validation where
+module SimpleForm.Digestive.Validation (validationToForm, underRef) where
 
 import Data.Monoid
 import Control.Arrow (second)
@@ -7,6 +7,7 @@
 import Text.Digestive.Types (Result(..))
 import Data.Text (Text)
 import SimpleForm.Validation (Validation(..))
+import SimpleForm.Digestive.Internal (underRef)
 
 validationToForm :: (Eq a, Monad m) => Text -> Validation a -> Form Html m a
 validationToForm n (Check chk) = n .: validate (maybeErr . chk . (:[])) (text Nothing)
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.4.1
+version:         0.4.2
 cabal-version:   >= 1.8
 license:         OtherLicense
 license-file:    COPYING
