using Object.defineProperty so Function.prototype extensions are not enumerable