Un refactor un poco más profundo que el anterior, aun quedan cosas pendientes.