diff --git a/digestive-functors-happstack.cabal b/digestive-functors-happstack.cabal
--- a/digestive-functors-happstack.cabal
+++ b/digestive-functors-happstack.cabal
@@ -1,5 +1,5 @@
 Name:                digestive-functors-happstack
-Version:             0.0.2.1
+Version:             0.1.0.0
 Synopsis:            Happstack backend for the digestive-functors library
 Description:         This is a happstack backend for the digestive-functors
     library.
@@ -18,7 +18,7 @@
   Hs-source-dirs:    src
   Exposed-modules:   Text.Digestive.Forms.Happstack
   Build-depends:     base >= 4 && < 5,
-                     digestive-functors == 0.0.2.*,
+                     digestive-functors == 0.1.0.*,
                      happstack-server >= 6.0 && < 6.1,
                      utf8-string >= 0.3,
                      bytestring >= 0.9,
diff --git a/src/Text/Digestive/Forms/Happstack.hs b/src/Text/Digestive/Forms/Happstack.hs
--- a/src/Text/Digestive/Forms/Happstack.hs
+++ b/src/Text/Digestive/Forms/Happstack.hs
@@ -10,43 +10,47 @@
 
 import Control.Monad (MonadPlus, liftM)
 import Control.Applicative (Alternative, optional)
-
 import Data.ByteString.Lazy.UTF8 as LB (toString)
+import Data.Either
 import Data.Text.Lazy          as Text (toStrict)
 import Data.Text.Lazy.Encoding as Text (decodeUtf8)
-import Happstack.Server ( Input (..), HasRqData (..), lookInput
+import Happstack.Server ( Input (..), HasRqData (..), lookInputs
                         , Method (..), ServerMonad (..), rqMethod
                         )
 
 import Text.Digestive.Forms (FormInput (..))
 import Text.Digestive.Types (Form (..), Environment (..), viewForm, eitherForm)
 
-instance FormInput Input (String, FilePath) where
-    getInputString inp =
-        case inputValue inp of
-          (Right bs) -> Just . LB.toString $ bs
-          _          -> Nothing
-    getInputText inp =
-        case inputValue inp of
-          (Right bs) -> Just . Text.toStrict . Text.decodeUtf8 $ bs
-          _          -> Nothing
+instance FormInput [Input] (String, FilePath) where
+    getInputStrings inps =
+        map LB.toString $ rights $ map inputValue inps
 
-    getInputFile inp =
-        case inputValue inp of
-          (Left fp) ->
-              do fn <- inputFilename inp
-                 return (fn, fp)
+    getInputTexts inps =
+        map (Text.toStrict . Text.decodeUtf8) $ rights $ map inputValue inps
+
+    getInputFile inps =
+        case inps of
+          (inp:_) ->
+              case inputValue inp of
+                (Left fp) ->
+                    do fn <- inputFilename inp
+                       return (fn, fp)
+                _ -> Nothing
           _ -> Nothing
 
 -- | Simplification of the `Form` type, instantiated to Happstack
 --
-type HappstackForm m e v a = Form m Input e v a
+type HappstackForm m e v a = Form m [Input] e v a
 
 -- | Environment that will fetch input from the parameters parsed by Happstack
 --
 happstackEnvironment :: (HasRqData m, MonadPlus m, Alternative m)
-                     => Environment m Input
-happstackEnvironment = Environment $ optional . lookInput . show
+                     => Environment m [Input]
+happstackEnvironment = Environment $ fmap toMaybe . lookInputs . show
+    where
+      toMaybe :: [a] -> Maybe [a]
+      toMaybe [] = Nothing
+      toMaybe l  = Just l
 
 -- | Run a happstack form
 --
