only do something if something has changed