what drives diffusion?