another working copy of donate with some fixes