refactor using formData()

note: pulled forward from multiform branch