Clean clambda generation, use an intermediate pass