public async Task <decimal> Pump(ITank tank, TimeSpan duration) { Console.WriteLine($"Pumping water for {duration}..."); var drainedVolume = 0m; for (var i = 0; i < duration.TotalSeconds; i++) { await Task.Delay(1000); drainedVolume += tank.Drain(this.FlowRate); Console.Write("."); } Console.WriteLine(); Console.WriteLine($"Pumping finished with volume={drainedVolume} (tank.CurrentVolume={tank.CurrentVolume})"); return(drainedVolume); }