detailed form validation