added tree iterator design