create a smarter cart
handle errors & finish the cart