Removed all the ToList() stuff that we didn't need
Changed .First() to First(x => x.Stuff()) for optimization
more switches from list to ienumerable
yet another change from list to ienumerable