abstracting away the updater to be able to provide several implementations