correct handling of `this`, added optional `thisArg` to match function