Merge upstream changes: new function: exec