add iterator method