substitution index should iteratively update