This will re-set the trait on the object that changed it, which means any other callbacks it has registered will fire twice. Do we want to exclude that case in order to avoid this?