(WIP) Cdodge/shopping cart rewrite

it'd be easier to maintain the code if the context was updated in as few places as possible.  settings `emails` could happen with the large block above.  a better name would be good also.