refine impl from List that is inefficient for LinkedLists