(WIP) Cdodge/shopping cart rewrite

Not sure how this might have gotten in. I know the team needed to rebase this branch after Donations landed in master (due to merge conflicts). @wedaly can you weigh in here?