Merge "Split ChangeReason and decouple it from Observer" into main