user input implementation complete