public Money MakePurchase(IReadOnlyList <IPurchaseItem> products) { //find a better way to do this here... var currency = products.First().Product.Cost.Currency; var po = new PurchaseOrder(currency, discountCalculator); foreach (var item in products) { po.AddProduct(item); } var total = po.TotalCost; return(total); }