First aproach if Factory refactor