recurrent update