support progress events closes #2 and #3 and #4