implement external atoms with variable output arity