modifiquei algumas coisas e adicionei um iterator