add Iterator; listerner