Hice un refactor del factory, pero creo que esta bien