complete interactioncompiler rewrite