use hasNext