sclass AbstractSayAndInputBot { VF1 say; // primary output listener L onOutput; // more output listeners (L>) F0 input; void say(S s) { callF(say, s); pcallFAll(onOutput, s); } S input() { ret callF(input); } }