Hecho y refactorizado. Sólo faltan comenarios