functional through isComplete updating