improved sticky donate function