refactoring, novas classes adicionadas e testes usando array