FFT works ! (lots of cleanup and optimization to do)