updated backward_diffusion