add input checking