changed dispersal function