smart update