refactored getGift