Completado código y añadidos comentarios