public CalcResult <Phonecall, decimal> Calculate(List <ConsumedInfo <Phonecall, decimal> > items) { var result = new CalcResult <Phonecall, decimal>(); var chuncks = items.Chunker(3); foreach (var chunck in chuncks) { var prices = chunck.Select(x => priceCalculator.Calculate(new List <ConsumedInfo <Phonecall, decimal> >() { x })).ToList(); if (prices.Count == 3) { var min = prices.Min(); bool hasGivenDiscount = false; foreach (var price in prices) { result.Billed.Add(new BillRecord <decimal>() { }); } } } return(result); }