added dirty propagation and update scheme