better change detection - avoids updates if there hasn't been a change