Refactor: IFunction has an Apply method with self parameter