Rework the updater API again to enforce a separation between the 3 types of updaters