add hasEventListener