重构listenTo