Progress as an event and not a callback