#19, #22 add event API; fire event "mark" when progress reaches a mark