Base Functors

refactoring of functors