renamed to pyFunctional