adicionando comentarios e melhorando o codigo