further api cleanup, attempt to at asynch event handling