Shopping cart - 2nd submission.

I like this syntax in theory, but the implementation of the conditions would be a pain.