Convert DFT to pImpl pattern

This means that we can substitute a different implementation soon (or later)