don't use anonymous functions in listen