diff --git a/Yesod/Form/Types.hs b/Yesod/Form/Types.hs
--- a/Yesod/Form/Types.hs
+++ b/Yesod/Form/Types.hs
@@ -2,6 +2,7 @@
 {-# LANGUAGE TypeFamilies #-}
 {-# LANGUAGE ExistentialQuantification #-}
 {-# LANGUAGE CPP #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
 module Yesod.Form.Types
     ( -- * Helpers
       Enctype (..)
@@ -30,7 +31,7 @@
 import Control.Applicative ((<$>), Applicative (..))
 import Control.Monad (liftM)
 import Data.String (IsString (..))
-import Yesod.Core (GHandler, GWidget, SomeMessage)
+import Yesod.Core (GHandler, GWidget, SomeMessage, MonadLift (..))
 import qualified Data.Map as Map
 
 -- | A form can produce three different results: there was no data available,
@@ -97,6 +98,10 @@
 instance Monoid a => Monoid (AForm sub master a) where
     mempty = pure mempty
     mappend a b = mappend <$> a <*> b
+instance MonadLift (GHandler sub master) (AForm sub master) where
+    lift f = AForm $ \_ _ ints -> do
+        x <- f
+        return (FormSuccess x, id, ints, mempty)
 
 data FieldSettings master = FieldSettings
     { fsLabel :: SomeMessage master
diff --git a/yesod-form.cabal b/yesod-form.cabal
--- a/yesod-form.cabal
+++ b/yesod-form.cabal
@@ -1,5 +1,5 @@
 name:            yesod-form
-version:         1.1.1.1
+version:         1.1.2
 license:         MIT
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
@@ -26,7 +26,7 @@
                    , data-default
                    , xss-sanitize          >= 0.3.0.1  && < 0.4
                    , blaze-builder         >= 0.2.1.4  && < 0.4
-                   , network               >= 2.2      && < 2.4
+                   , network               >= 2.2
                    , email-validate        >= 0.2.6    && < 0.3
                    , bytestring            >= 0.9.1.4
                    , text                  >= 0.9      && < 1.0
