add input handling