fixed removeListener