extract referral coplete logic into model observer