He puesto comentarios al codigo para hacerlo mas claro