revising FFT