parseFloor str = let
        -- remove punction marks and "and"
        parts = filter (/="and") . map (filter isAlphaNum) $ words str
        floorno = fromMaybe (-1) $
            elemIndex (parts !! 1) ["first", "second", "third", "fourth"]
    in
        (floorno, parseItemList $ drop 4 parts)
parseFloor str = let
        -- remove punction marks and "and"
        parts = filter (/="and") . map (filter isAlphaNum) $ words str
        floorno = fromMaybe (-1) $
            elemIndex (parts !! 1) ["first", "second", "third", "fourth"]
    in
        (floorno, parseItemList $ drop 4 parts)
parseFloor str = let
        -- remove punction marks and "and"
        parts = filter (/="and") . map (filter isAlphaNum) $ words str
        floorno = fromMaybe (-1) $
            elemIndex (parts !! 1) ["first", "second", "third", "fourth"]
    in
        (floorno, parseItemList $ drop 4 parts)