refactor the way changes are generated so that multiple methods can work together