WIP: refactor PublishStep so SyncStep doesn't have to inherit from it