| Index: lib/subscriptionClasses.js | 
| diff --git a/lib/subscriptionClasses.js b/lib/subscriptionClasses.js | 
| index f559cb3937f42a8caff29135c7799e90c598183f..a5cc2adb6e574b9e892a67c44a5a3d3197f6fb1a 100644 | 
| --- a/lib/subscriptionClasses.js | 
| +++ b/lib/subscriptionClasses.js | 
| @@ -21,6 +21,7 @@ | 
|  | 
| let {ActiveFilter, BlockingFilter, WhitelistFilter, ElemHideBase} = require("filterClasses"); | 
| let {FilterNotifier} = require("filterNotifier"); | 
| +let {desc} = require("coreUtils"); | 
|  | 
| /** | 
| * Abstract base class for filter subscriptions | 
| @@ -229,10 +230,7 @@ function SpecialSubscription(url, title) | 
| } | 
| exports.SpecialSubscription = SpecialSubscription; | 
|  | 
| -SpecialSubscription.prototype = | 
| -{ | 
| -  __proto__: Subscription.prototype, | 
| - | 
| +SpecialSubscription.prototype = Object.create(Subscription.prototype, desc({ | 
| /** | 
| * Filter types that should be added to this subscription by default | 
| * (entries should correspond to keys in SpecialSubscription.defaultsMap). | 
| @@ -272,14 +270,13 @@ SpecialSubscription.prototype = | 
| if (this._lastDownload) | 
| buffer.push("lastDownload=" + this._lastDownload); | 
| } | 
| -}; | 
| +})); | 
|  | 
| -SpecialSubscription.defaultsMap = { | 
| -  __proto__: null, | 
| +SpecialSubscription.defaultsMap = Object.create(null, desc({ | 
| "whitelist": WhitelistFilter, | 
| "blocking": BlockingFilter, | 
| "elemhide": ElemHideBase | 
| -}; | 
| +})); | 
|  | 
| /** | 
| * Creates a new user-defined filter group. | 
| @@ -327,10 +324,7 @@ function RegularSubscription(url, title) | 
| } | 
| exports.RegularSubscription = RegularSubscription; | 
|  | 
| -RegularSubscription.prototype = | 
| -{ | 
| -  __proto__: Subscription.prototype, | 
| - | 
| +RegularSubscription.prototype = Object.create(Subscription.prototype, desc({ | 
| _homepage: null, | 
| _lastDownload: 0, | 
|  | 
| @@ -383,7 +377,7 @@ RegularSubscription.prototype = | 
| if (this._lastDownload) | 
| buffer.push("lastDownload=" + this._lastDownload); | 
| } | 
| -}; | 
| +})); | 
|  | 
| /** | 
| * Class for filter subscriptions updated externally (by other extension) | 
| @@ -398,10 +392,7 @@ function ExternalSubscription(url, title) | 
| } | 
| exports.ExternalSubscription = ExternalSubscription; | 
|  | 
| -ExternalSubscription.prototype = | 
| -{ | 
| -  __proto__: RegularSubscription.prototype, | 
| - | 
| +ExternalSubscription.prototype = Object.create(RegularSubscription.prototype, desc({ | 
| /** | 
| * See Subscription.serialize() | 
| */ | 
| @@ -409,7 +400,7 @@ ExternalSubscription.prototype = | 
| { | 
| throw new Error("Unexpected call, external subscriptions should not be serialized"); | 
| } | 
| -}; | 
| +})); | 
|  | 
| /** | 
| * Class for filter subscriptions updated externally (by other extension) | 
| @@ -424,10 +415,7 @@ function DownloadableSubscription(url, title) | 
| } | 
| exports.DownloadableSubscription = DownloadableSubscription; | 
|  | 
| -DownloadableSubscription.prototype = | 
| -{ | 
| -  __proto__: RegularSubscription.prototype, | 
| - | 
| +DownloadableSubscription.prototype = Object.create(RegularSubscription.prototype, desc({ | 
| _downloadStatus: null, | 
| _lastCheck: 0, | 
| _errors: 0, | 
| @@ -549,4 +537,4 @@ DownloadableSubscription.prototype = | 
| if (this.downloadCount) | 
| buffer.push("downloadCount=" + this.downloadCount); | 
| } | 
| -}; | 
| +})); | 
|  |