fixed listener memory leak