validate, now returns a second value which keeps the failed fields