incremental update algorithm update