Checkout coding kata: http://codekata.com/kata/kata09-back-to-the-checkout/