Abstraction allowing use of different donation models.