add more flexible object syncer