diff --git a/Network/Wai/Parse.hs b/Network/Wai/Parse.hs
--- a/Network/Wai/Parse.hs
+++ b/Network/Wai/Parse.hs
@@ -244,6 +244,7 @@
     res <- takeLine src
     src' <- case res of
                 Nothing -> return (S.empty, Nothing)
+                -- The _bs here should only contain boundary information
                 Just (_bs, src') -> return src'
     res' <- takeLines src'
     case res' of
@@ -252,14 +253,14 @@
             let ls' = map parsePair ls
             let x = do
                     cd <- lookup contDisp ls'
-                    ct <- lookup contType ls'
+                    let ct = lookup contType ls'
                     let attrs = parseAttrs cd
                     let nameBS = S8.pack "name"
                     name <- lookup nameBS attrs
                     let fnBS = S8.pack "filename"
                     return (ct, name, lookup fnBS attrs)
             case x of
-                Just (ct, name, Just filename) -> do
+                Just (Just ct, name, Just filename) -> do
                     seed <- sinkInit sink
                     (seed', wasFound, msrc''') <-
                         sinkTillBound bound src'' (sinkAppend sink) seed
@@ -283,7 +284,7 @@
                             then parsePieces sink bound msrc'''
                             else return ([], [])
                     return (x' : xs, ys)
-                Nothing -> do
+                _ -> do
                     -- ignore this part
                     let seed = ()
                         iter () _ = return ()
diff --git a/wai-extra.cabal b/wai-extra.cabal
--- a/wai-extra.cabal
+++ b/wai-extra.cabal
@@ -1,5 +1,5 @@
 Name:                wai-extra
-Version:             0.1.3
+Version:             0.1.3.1
 Synopsis:            Provides some basic WAI handlers and middleware.
 Description:         The goal here is to provide common features without many dependencies.
 License:             BSD3
