listener with scope