better server-side form error handling