Why is there a `.ToList()` at each step?