fixed listener leak