implement user input with channel