public string Finalize() { ShippingProvider shippingProvider = purchaseProviderFactory.CreateShippingProvider(order.Sender.Country); var invoice = purchaseProviderFactory.CreateInvoice(order); // Send invoice invoice.GenerateInvoice(); var summary = purchaseProviderFactory.CreateSummary(order); summary.Send(); // Send summary order.ShippingStatus = ShippingStatus.ReadyForShippment; return(shippingProvider.GenerateShippingLabelFor(order)); }