why do we need both a `fetch_destination` and `update_destination`?  the update will do a pull which does a fetch