Añadidos algunos comentarios y documentacion sobre el codigo para entender mejor que hace cada metodo