reduce unnecessary update