some refactoring and more shoppingcart-example