updateNeeded => hasChanged