why do we have this as opposed to AbstractFunction2? Is it to be a cleaner override statement? For the multiple inheritance (since it is an interface)?