Port changed() function to master

Port the `changed()` forward from #530 to `master`.
Don't feel bad, it confused me at first too. :smile_cat: