listener leak fix