added backward_diffusion