restructuring listeners