add input validation