It's more that they are optional now, and I'm not sure it's worth changing it. Especially since you can add your own filler words via `expect.configure()` which would suddenly stop working. Your understanding of the wrapper function sounds right. I imagined it as something like this:

```js
expect.configure = function(assertions) {
  for (var key in assertions) {
    var descriptor = Object.getOwnPropertyDescriptor(assertions, key);
    if (descriptor) {
      descriptor.configurable = true;
      if (descriptor.get) {
        descriptor.get = makeWrappedExpectFunction(descriptor.get);
      } else if (typeof descriptor.value === 'function') {
        descriptor.value = makeWrappedExpectFunction(descriptor.value);
      }
      Object.defineProperty(Assertion.prototype, key, descriptor);
    }
  }
};

function makeWrappedExpectFunction(fn) {
  return function() {
    QUnit.config.current.expected = this._prevExpectedAssertions;
    fn.apply(this, arguments);
  };
}
```

And then we'd define our stuff using `expect.configure()`:

```js
expect.configure(Object.defineProperties({}, {
  to: ...
  be: ...
  not: ...
}));
```