feat(controller) addListener