Comentei mais o código e dividi mais em métodos.