- refactor listener