Comentarios y algunos cambios pequeños añadidos, me falta probarlo