Implementação da factory segunda parte