adds input validation