added the checkout controller, a view and refactored a bit