only emit state changes if the states actually change for real