fix hasChanges()