bug: should conside =
syncer