some refactoring with shopping cart and actions