diff --git a/digestive-functors.cabal b/digestive-functors.cabal
--- a/digestive-functors.cabal
+++ b/digestive-functors.cabal
@@ -1,5 +1,5 @@
 Name:     digestive-functors
-Version:  0.6.2.0
+Version:  0.7.0.0
 Synopsis: A practical formlet library
 
 Description:
@@ -95,7 +95,7 @@
     containers >= 0.3     && < 0.6,
     mtl        >= 1.1.0.0 && < 3,
     old-locale >= 1.0     && < 1.1,
-    text       >= 0.10    && < 1.1,
+    text       >= 0.10    && < 1.2,
     time       >= 1.4     && < 1.5
 
 Source-repository head
diff --git a/src/Text/Digestive/Form/Encoding.hs b/src/Text/Digestive/Form/Encoding.hs
--- a/src/Text/Digestive/Form/Encoding.hs
+++ b/src/Text/Digestive/Form/Encoding.hs
@@ -5,13 +5,11 @@
 -- the content types of forms.
 module Text.Digestive.Form.Encoding
     ( FormEncType (..)
-    , formEncType
     , formTreeEncType
     ) where
 
 
 --------------------------------------------------------------------------------
-import           Control.Monad                      (liftM)
 import           Control.Monad.Identity             (Identity)
 import           Data.Maybe                         (mapMaybe)
 import           Data.Monoid                        (Monoid (..), mconcat)
@@ -61,13 +59,6 @@
   where
     fieldList' (SomeForm f) = SomeForm f : concatMap fieldList' (children f)
     toField' (SomeForm f)   = toField f
-
-
---------------------------------------------------------------------------------
--- | Determines the encoding type of a "Form" -
--- returns result in evaluating context
-formEncType :: Monad m => Form v m a -> m FormEncType
-formEncType form = liftM formTreeEncType $ toFormTree form
 
 
 --------------------------------------------------------------------------------
diff --git a/src/Text/Digestive/View.hs b/src/Text/Digestive/View.hs
--- a/src/Text/Digestive/View.hs
+++ b/src/Text/Digestive/View.hs
@@ -106,14 +106,16 @@
 --------------------------------------------------------------------------------
 -- | Handle a form for a POST request - evaluate with the given environment
 -- and return the result.
-postForm :: Monad m => Text -> Form v m a -> Env m -> m (View v, Maybe a)
-postForm name form env = do
+postForm :: Monad m
+         => Text -> Form v m a -> (FormEncType -> m (Env m))
+         -> m (View v, Maybe a)
+postForm name form makeEnv = do
     form' <- toFormTree form
+    env <- makeEnv $ formTreeEncType form'
+    let env' = env . (name :)
     eval Post env' form' >>= \(r, inp) -> return $ case r of
         Error errs -> (View name [] form' inp errs Post, Nothing)
         Success x  -> (View name [] form' inp [] Post, Just x)
-  where
-    env' = env . (name :)
 
 
 --------------------------------------------------------------------------------
diff --git a/tests/Text/Digestive/Form/Encoding/QTests.hs b/tests/Text/Digestive/Form/Encoding/QTests.hs
--- a/tests/Text/Digestive/Form/Encoding/QTests.hs
+++ b/tests/Text/Digestive/Form/Encoding/QTests.hs
@@ -1,19 +1,19 @@
-module Text.Digestive.Form.Encoding.QTests
-       ( tests
-       ) where
-
 --------------------------------------------------------------------------------
-import Test.Framework
-import Test.Framework.Providers.QuickCheck2
-import Test.QuickCheck
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+module Text.Digestive.Form.Encoding.QTests
+   ( tests
+   ) where
 
 
 --------------------------------------------------------------------------------
-import Text.Digestive.Form.Encoding
+import           Data.Monoid
+import           Test.Framework
+import           Test.Framework.Providers.QuickCheck2
+import           Test.QuickCheck
 
 
 --------------------------------------------------------------------------------
-import Data.Monoid
+import           Text.Digestive.Form.Encoding
 
 
 --------------------------------------------------------------------------------
@@ -25,7 +25,6 @@
        , testProperty "enctype monoid - Right identity" prop_idr
        , testProperty "enctype monoid - Associativity" prop_assoc
     ]
-
 
 
 --------------------------------------------------------------------------------
diff --git a/tests/Text/Digestive/Form/Encoding/Tests.hs b/tests/Text/Digestive/Form/Encoding/Tests.hs
--- a/tests/Text/Digestive/Form/Encoding/Tests.hs
+++ b/tests/Text/Digestive/Form/Encoding/Tests.hs
@@ -7,7 +7,7 @@
 
 --------------------------------------------------------------------------------
 import           Control.Applicative            ((<$>), (<*>))
-import           Control.Monad.Identity         (Identity(..))
+import           Control.Monad.Identity         (Identity (..))
 import           Data.Text                      (Text)
 import           Test.Framework                 (Test, testGroup)
 import           Test.Framework.Providers.HUnit (testCase)
@@ -17,6 +17,7 @@
 --------------------------------------------------------------------------------
 import           Text.Digestive.Form
 import           Text.Digestive.Form.Encoding
+import           Text.Digestive.Form.Internal
 
 
 --------------------------------------------------------------------------------
@@ -31,4 +32,4 @@
     ]
   where
     formEncType' :: Form Text Identity a -> FormEncType
-    formEncType' = runIdentity . formEncType
+    formEncType' = formTreeEncType . runIdentity . toFormTree
diff --git a/tests/Text/Digestive/View/Tests.hs b/tests/Text/Digestive/View/Tests.hs
--- a/tests/Text/Digestive/View/Tests.hs
+++ b/tests/Text/Digestive/View/Tests.hs
@@ -17,6 +17,7 @@
 
 
 --------------------------------------------------------------------------------
+import           Text.Digestive.Form.Encoding
 import           Text.Digestive.Tests.Fixtures
 import           Text.Digestive.Types
 import           Text.Digestive.View
@@ -171,8 +172,8 @@
 
 
 --------------------------------------------------------------------------------
-testEnv :: Monad m => [(Text, Text)] -> Env m
-testEnv input key = return $ map (TextInput . snd) $
+testEnv :: Monad m => [(Text, Text)] -> FormEncType -> m (Env m)
+testEnv input _formEncType = return $ \key -> return $ map (TextInput . snd) $
     filter ((== fromPath key) . fst) input
 
 
