List

List class for discussion: I actually didn't make any changes (at all), only converted list to a class. For the clients, the same call is used, createList($param).
Client code can optionally also create a List object.

I'd submit it so that we see it, know it exists, and eventually work it out better internally or externally: for example, we can factor it with an internal structure (instance variables from those parameters), and we can create subclasses to override the buildList() method.