start implementing the actual syncing algorithm, including a crude updater to get tests going