refactor ListIterator to its own file