Arrumei um pouco o código e mudei os nomes de algumas funções para melhorar representarem suas tarefas.