diff --git a/lib/Hikaru/Form.hs b/lib/Hikaru/Form.hs
index 688301372279e9c32a2b4e37321077f780e21923..24e2ed100cfc18f51402741b9b1f15cb73730040 100644
--- a/lib/Hikaru/Form.hs
+++ b/lib/Hikaru/Form.hs
@@ -13,6 +13,7 @@ module Hikaru.Form
   , FormElement(..)
   , FormNote(..)
   , FormT
+  , Form
   , newForm
   , getForm
   , postForm
@@ -94,6 +95,9 @@ where
     deriving (Functor, Applicative, Monad)
 
 
+  type Form l m a = Maybe a -> FormT l m (Maybe a)
+
+
   data Env
     = Env
       { envPrefix      :: [Text]
@@ -175,7 +179,7 @@ where
 
 
   inputField :: (Monad m, ToParam a, FromParam a)
-             => Text -> l -> Maybe a -> FormT l m (Maybe a)
+             => Text -> l -> Form l m a
   inputField name label orig = do
     fullName  <- makeName name
     textValue <- formParamMaybe fullName
@@ -193,7 +197,7 @@ where
 
 
   hiddenField :: (Monad m, ToParam a, FromParam a)
-              => Text -> Maybe a -> FormT l m (Maybe a)
+              => Text -> Form l m a
   hiddenField name orig = do
     fullName  <- makeName name
     textValue <- formParamMaybe fullName
@@ -208,7 +212,7 @@ where
 
 
   textField :: (Monad m, ToParam a, FromParam a)
-            => Text -> l -> Maybe a -> FormT l m (Maybe a)
+            => Text -> l -> Form l m a
   textField name label orig = do
     fullName  <- makeName name
     textValue <- formParamMaybe fullName
@@ -226,7 +230,7 @@ where
 
 
   selectField :: (Monad m, ToParam a, FromParam a, Eq a)
-              => Text -> l -> (a -> l) -> [a] -> Maybe a -> FormT l m (Maybe a)
+              => Text -> l -> (a -> l) -> [a] -> Form l m a
   selectField name label optlabel options orig = do
     fullName  <- makeName name
     value     <- formParamMaybe fullName