refatoração do factory