added progress and error events