working on diffusion