keep state in forEach rather than rely on behavior of next
refactor toArray and join to use forEach instead of next
reduce items in list to single value
implement concat with reduce.

Now iteration logic can be separated from 'business' logic
map list into another list with the result of the callback
return a reference to the list from reset.

Mostly to allow chaining of methods or simplify return statements.