generate event listener proxy