comecando o factory method