updated with keyboard input