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