learning user input