only save on changes