I think I may have found a way to eliminate the need for the 'codef' keyword. I realised that although it's important to prevent making a regular call to a cofunction, there's no need to prevent making a cocall to an ordinary function. In that case, it can just be treated like a normal call. So I suggest the following changes: 1. The presence of 'cocall' inside a function causes it to be a cofunction. There is no 'codef' keyword. 2. The 'cocall' construct checks whether the function supports cocalls, and if so, proceeds as previously specified. Otherwise, it calls the function normally and returns the result. (To allow for objects such as bound methods to wrap things which could be cofunctions or not, the __cocall__ method will be permitted to return NotImplemented as a way of signalling that cocalls are not supported.) Does this scheme sound any better? -- Greg