`extend` now avoids __defineGetter__ and __defineSetter__