functions don't need *linked*lists

these lists are only iterated, sot edited, so they do not need to be *linked* lists

List is an interface, 
where appropriate, linked lists are still instantiated, because LLists are a very good choice when all you want to do is quickly add an unknown number of items and iterate them.
(an ArrayList would be better if we could "guess" how many elements would be needed - adding to a pre-init'd arrayList is about 4x faster).

this PR causes no runtime changes, but means that any further optimisations which produce different list types don't need another pr.