fixed hasListener