added isDiverged() and needsHandling() functions. more sophisticated fetch() and push()