Use correct name for the internal functions
Modify Functor classes. Use now a base FunctorImpl which is contained in the Functor which implement a copy function which can be  used in the Functor copy constructors without using dynamic_cast