Rearranged files; added diffusion; changed loads of stuff