Refactoring of progress updating.
Use with statement for progress tracking.
Implement EveryNUpdater.
Refactor with observer pattern for step logging.