add totalstep callback for progress