added fourier transform