diffusion logic