better validation callbacks