Pass sets to `on_change_*` handlers, instead of tuples