Need a more fine granularity as to when the progress report is sent back to Pulp. The way this reads, it's not updated until after all of the work is finished. I haven't read ahead yet, but either:

1. Each individual method calls update progress, in which case this call to it is out of place and/or redundant.
2. The call to update_progress() should occur in this call between each of the above three steps.