introduced new event based API