generalise ext-var