Reorganizing the code to make it easier to understand.
Delete leftover difficulties.
Renew the this pointer for functors