Adicionado comentários e revisto um pouco do código.