auto choose event impl