Refactor the main "recipients" api to be much easier to cache.