accepts user input