use `function!`