how diffusion works