Calculated Basket deliveries price items payment DTO Calculation calculate(Basket, Context) Persister load(name) persist(name, Basket) Services Product Validator handle(Basket, Context) Product Handler Voucher Handler Delivery Separator Delivery Calculator Access points Shipping Cost Calculation calculate(Delivery, Context) Voucher Calculation calculate(Voucher, Item[], Context) Product Calculation calculate(Product, Context) Calculations