New, event based API