added onProgressUpdate()