use 0 based list iterator