OFDM benchmark


I am trying to understand the design in benchmark OFDM code in Gnuradio.

In the code, OFDM_RECEIVER use OFDM_SYNC_PN to do the timing and
offset synchronization, and then doing FFT_DEMOD to demodulate the
After that, SLICER and DEMAPPER in GR_OFDM_FRAME_SINK are used to output
in the message queue.

But the questions are:
Why there is PLL for carrier compensation in GR_OFDM_FRAME_SINK?
Should PLL be used before FFT_DEMOD ?
What is the difference between PLL here and timing and frequency
synchronization in OFDM_SYNC_PN?