recursive update first