refactored updater