Refactoring (incompleto). Fazendo testes passar