sacados algunos comentarios y mejorado codigo