updated canonical argument macro