Factoria completo. // Queda pendiente refactorizar el codigo!