Generalizing the generation of function to allow for CPS.
Generalizing sync, async, etc.
Splitting function into function and continuation.