update gift function