support addEventListener()