only save on actual change