Refactoring + listener