Reimplement ItemUpdater.
Refactor: Remove deep nesting and extract methods.
Clean up tests.