diff --git a/background_scripts/bootstrap.js b/background_scripts/bootstrap.js
index 4cd2277..aa7e29d 100644
--- a/background_scripts/bootstrap.js
+++ b/background_scripts/bootstrap.js
@@ -40,16 +40,12 @@
         return prev;
     };
 
-
     const requestFilter = {
         urls: ["<all_urls>"],
         types: ["main_frame", "sub_frame"]
     };
     const requestOptions = ["blocking", "responseHeaders"];
 
-
-
-
     chrome.webRequest.onHeadersReceived.addListener(function (details) {
 
         const url = details.url;
@@ -78,5 +74,6 @@
         return {
             responseHeaders: details.responseHeaders
         };
+
     }, requestFilter, requestOptions);
 }());
\ No newline at end of file
diff --git a/config/index.html b/config/index.html
index d73eac8..9a66ca7 100644
--- a/config/index.html
+++ b/config/index.html
@@ -13,13 +13,13 @@
     <body>
         <header>
         </header>
-        <section class="container-fluid">
+        <section class="container">
             <div class="row">
                 <div class="col-xs-4 col-md-4 well">
                     <domain-rules :domain-names="domainNames" :selected-domain="selectedDomain"></domain-rules>
                 </div>
 
-                <div class="col-xs-8 col-md-8">
+                <div class="col-xs-7 col-md-7 col-md-offset-1 col-xs-offset-1">
                     <web-api-standards :standards="standards" :selected-standards="selectedStandards"></web-api-standards>
                 </div>
             </div>
diff --git a/config/js/components/web-api-standards.vue.js b/config/js/components/web-api-standards.vue.js
index d394b92..1a55a7d 100644
--- a/config/js/components/web-api-standards.vue.js
+++ b/config/js/components/web-api-standards.vue.js
@@ -2,17 +2,29 @@
 /*global window, browser, Vue*/
 (function () {
 
+    const standardsDefaults = window.WEB_API_MANAGER.defaults;
+
     Vue.component("web-api-standards", {
         props: ["standards", "selectedStandards"],
         template: `
             <div class="web-api-standards-container">
+                <div class="form-horizontal">
+                    <div class="form-group">
+                        <button @click="onConservativeClicked">
+                            Use Conservative Settings
+                        </button>
+                        <button @click="onAggressiveClicked">
+                            Use Aggressive Settings
+                        </button>
+                    </div>
+                </div>
                 <div class="checkbox" v-for="standard in standards">
                     <label>
                         <input type="checkbox"
-                             :value="standard.info.name"
+                             :value="standard.info.idenitifer"
                             v-model="selectedStandards"
                             @change="onStandardChecked">
-                        {{ standard.info.name }}
+                        {{ standard.info.idenitifer }}
                         <a href="{{ standard.info.url }}" v-if="standard.info.url">[info]</a>
                     </label>
                 </div>
@@ -21,6 +33,12 @@
         methods: {
             onStandardChecked: function () {
                 this.$root.$data.setSelectedStandards(this.selectedStandards);
+            },
+            onConservativeClicked: function () {
+                this.$root.$data.setSelectedStandards(standardsDefaults.conservative);
+            },
+            onAggressiveClicked: function () {
+                this.$root.$data.setSelectedStandards(standardsDefaults.aggressive);
             }
         }
     });
diff --git a/content_scripts/src/defaults.js b/content_scripts/src/defaults.js
index 977c489..8d4262f 100644
--- a/content_scripts/src/defaults.js
+++ b/content_scripts/src/defaults.js
@@ -3,8 +3,54 @@
  * overwritten, either by the extension user, or by a subscribed policy
  * list.
  */
-window.WEB_API_MANAGER.defaults = {
-    "conservative": [
-        "MediaStream Recording"
-    ]
-};
\ No newline at end of file
+window.WEB_API_MANAGER.defaults = {};
+
+window.WEB_API_MANAGER.defaults.conservative = [
+    "MediaStream Recording",
+    "DOM Parsing and Serialization",
+    "Fullscreen API",
+    "High Resolution Time Level 2",
+    "HTML: Web Sockets",
+    "HTML: Channel Messaging",
+    "HTML: Web Workers",
+    "Indexed Database API",
+    "Performance Timeline Level 2",
+    "Resource Timing",
+    "Scalable Vector Graphics 1.1",
+    "UI Events Specification",
+    "Web Audio API",
+    "WebGL Specification"
+];
+
+window.WEB_API_MANAGER.defaults.aggressive = window.WEB_API_MANAGER.defaults.conservative.concat([
+    "Ambient Light Sensor API",
+    "Battery Status API",
+    "CSS Conditional Rules Module Level 3",
+    "CSS Font Loading Module Level 3",
+    "CSSOM View Module",
+    "DOM Level 2: Traversal and Range",
+    "Encrypted Media Extensions",
+    "execCommand",
+    "Fetch",
+    "File API",
+    "Gamepad",
+    "Geolocation API",
+    "HTML: Broadcasting",
+    "HTML: Plugins",
+    "HTML: History Interface",
+    "HTML: Web Storage",
+    "Media Capture and Streams",
+    "Media Source Extensions",
+    "Navigation Timing",
+    "Performance Timeline Level 2",
+    "Pointer Lock",
+    "Proximity Events",
+    "Selection API",
+    "The Screen Orientation API",
+    "Timing Control for Script-Based Animations",
+    "URL",
+    "User Timing Level 2",
+    "W3C DOM4",
+    "Web Notifications",
+    "WebRTC 1.0"
+]);
\ No newline at end of file
diff --git a/data/standards/AJAX.json b/data/standards/AJAX.json
index f4218d9..0c22858 100644
--- a/data/standards/AJAX.json
+++ b/data/standards/AJAX.json
@@ -1 +1,23 @@
-{"info": {"name": "XMLHttpRequest", "subsection_number": null, "subsection_name": null, "url": "https://xhr.spec.whatwg.org/"}, "features": ["FormData.prototype.append", "FormData.prototype.delete", "FormData.prototype.get", "FormData.prototype.getAll", "FormData.prototype.has", "FormData.prototype.set", "XMLHttpRequest.prototype.abort", "XMLHttpRequest.prototype.getAllResponseHeaders", "XMLHttpRequest.prototype.getResponseHeader", "XMLHttpRequest.prototype.open", "XMLHttpRequest.prototype.overrideMimeType", "XMLHttpRequest.prototype.send", "XMLHttpRequest.prototype.setRequestHeader"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "XMLHttpRequest",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://xhr.spec.whatwg.org/"
+  },
+  "features": [
+    "FormData.prototype.append",
+    "FormData.prototype.delete",
+    "FormData.prototype.get",
+    "FormData.prototype.getAll",
+    "FormData.prototype.has",
+    "FormData.prototype.set",
+    "XMLHttpRequest.prototype.abort",
+    "XMLHttpRequest.prototype.getAllResponseHeaders",
+    "XMLHttpRequest.prototype.getResponseHeader",
+    "XMLHttpRequest.prototype.open",
+    "XMLHttpRequest.prototype.overrideMimeType",
+    "XMLHttpRequest.prototype.send",
+    "XMLHttpRequest.prototype.setRequestHeader"
+  ]
+}
diff --git a/data/standards/ALS.json b/data/standards/ALS.json
index 928ed7b..7a59451 100644
--- a/data/standards/ALS.json
+++ b/data/standards/ALS.json
@@ -1 +1,11 @@
-{"info": {"name": "Ambient Light Sensor API", "subsection_number": null, "subsection_name": null, "url": "https://w3c.github.io/ambient-light/"}, "features": ["window.ondevicelight"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Ambient Light Sensor API",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://w3c.github.io/ambient-light/"
+  },
+  "features": [
+    "window.ondevicelight"
+  ]
+}
diff --git a/data/standards/BA.json b/data/standards/BA.json
index 9ffca67..391d849 100644
--- a/data/standards/BA.json
+++ b/data/standards/BA.json
@@ -1 +1,12 @@
-{"info": {"name": "Battery Status API", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/battery-status/"}, "features": ["navigator.battery", "Navigator.prototype.getBattery"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Battery Status API",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/battery-status/"
+  },
+  "features": [
+    "navigator.battery",
+    "Navigator.prototype.getBattery"
+  ]
+}
diff --git a/data/standards/BE.json b/data/standards/BE.json
index 66bef86..b6ef38e 100644
--- a/data/standards/BE.json
+++ b/data/standards/BE.json
@@ -1 +1,11 @@
-{"info": {"name": "Beacon", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/beacon/"}, "features": ["Navigator.prototype.sendBeacon"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Beacon",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/beacon/"
+  },
+  "features": [
+    "Navigator.prototype.sendBeacon"
+  ]
+}
diff --git a/data/standards/CO.json b/data/standards/CO.json
index fde55a0..8daf351 100644
--- a/data/standards/CO.json
+++ b/data/standards/CO.json
@@ -1 +1,33 @@
-{"info": {"name": "Console API", "subsection_number": null, "subsection_name": null, "url": "https://github.com/DeveloperToolsWG/console-object"}, "features": ["Console.prototype.assert", "Console.prototype.clear", "Console.prototype.count", "Console.prototype.debug", "Console.prototype.dir", "Console.prototype.dirxml", "Console.prototype.error", "Console.prototype.group", "Console.prototype.groupCollapsed", "Console.prototype.groupEnd", "Console.prototype.info", "Console.prototype.log", "Console.prototype.markTimeline", "Console.prototype.profile", "Console.prototype.profileEnd", "Console.prototype.table", "Console.prototype.time", "Console.prototype.timeEnd", "Console.prototype.timeline", "Console.prototype.timelineEnd", "Console.prototype.timeStamp", "Console.prototype.trace", "Console.prototype.warn"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Console API",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://github.com/DeveloperToolsWG/console-object"
+  },
+  "features": [
+    "Console.prototype.assert",
+    "Console.prototype.clear",
+    "Console.prototype.count",
+    "Console.prototype.debug",
+    "Console.prototype.dir",
+    "Console.prototype.dirxml",
+    "Console.prototype.error",
+    "Console.prototype.group",
+    "Console.prototype.groupCollapsed",
+    "Console.prototype.groupEnd",
+    "Console.prototype.info",
+    "Console.prototype.log",
+    "Console.prototype.markTimeline",
+    "Console.prototype.profile",
+    "Console.prototype.profileEnd",
+    "Console.prototype.table",
+    "Console.prototype.time",
+    "Console.prototype.timeEnd",
+    "Console.prototype.timeline",
+    "Console.prototype.timelineEnd",
+    "Console.prototype.timeStamp",
+    "Console.prototype.trace",
+    "Console.prototype.warn"
+  ]
+}
diff --git a/data/standards/CSS-CR.json b/data/standards/CSS-CR.json
index e0992e2..fd7a93b 100644
--- a/data/standards/CSS-CR.json
+++ b/data/standards/CSS-CR.json
@@ -1 +1,11 @@
-{"info": {"name": "CSS Conditional Rules Module Level 3", "subsection_number": null, "subsection_name": null, "url": "https://drafts.csswg.org/css-conditional-3/"}, "features": ["CSS.supports"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "CSS Conditional Rules Module Level 3",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://drafts.csswg.org/css-conditional-3/"
+  },
+  "features": [
+    "CSS.supports"
+  ]
+}
diff --git a/data/standards/CSS-FO.json b/data/standards/CSS-FO.json
index cb265ba..87af0ff 100644
--- a/data/standards/CSS-FO.json
+++ b/data/standards/CSS-FO.json
@@ -1 +1,22 @@
-{"info": {"name": "CSS Font Loading Module Level 3", "subsection_number": null, "subsection_name": null, "url": "https://drafts.csswg.org/css-font-loading/"}, "features": ["document.fonts", "FontFace.prototype.load", "FontFaceSet.prototype.add", "FontFaceSet.prototype.check", "FontFaceSet.prototype.clear", "FontFaceSet.prototype.delete", "FontFaceSet.prototype.entries", "FontFaceSet.prototype.forEach", "FontFaceSet.prototype.has", "FontFaceSet.prototype.keys", "FontFaceSet.prototype.load", "FontFaceSet.prototype.values"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "CSS Font Loading Module Level 3",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://drafts.csswg.org/css-font-loading/"
+  },
+  "features": [
+    "document.fonts",
+    "FontFace.prototype.load",
+    "FontFaceSet.prototype.add",
+    "FontFaceSet.prototype.check",
+    "FontFaceSet.prototype.clear",
+    "FontFaceSet.prototype.delete",
+    "FontFaceSet.prototype.entries",
+    "FontFaceSet.prototype.forEach",
+    "FontFaceSet.prototype.has",
+    "FontFaceSet.prototype.keys",
+    "FontFaceSet.prototype.load",
+    "FontFaceSet.prototype.values"
+  ]
+}
diff --git a/data/standards/CSS-OM.json b/data/standards/CSS-OM.json
index f120230..972f33d 100644
--- a/data/standards/CSS-OM.json
+++ b/data/standards/CSS-OM.json
@@ -1 +1,25 @@
-{"info": {"name": "CSS Object Model (CSSOM)", "subsection_number": null, "subsection_name": null, "url": "https://drafts.csswg.org/cssom/"}, "features": ["CSS.escape", "Document.prototype.caretPositionFromPoint", "Document.prototype.elementFromPoint", "Element.prototype.getBoundingClientRect", "Element.prototype.getClientRects", "Element.prototype.scroll", "Element.prototype.scrollBy", "Element.prototype.scrollIntoView", "Element.prototype.scrollTo", "MediaList.prototype.appendMedium", "MediaList.prototype.deleteMedium", "MediaList.prototype.item", "MediaQueryList.prototype.addListener", "MediaQueryList.prototype.removeListener", "StyleSheetList.prototype.item"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "CSS Object Model (CSSOM)",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://drafts.csswg.org/cssom/"
+  },
+  "features": [
+    "CSS.escape",
+    "Document.prototype.caretPositionFromPoint",
+    "Document.prototype.elementFromPoint",
+    "Element.prototype.getBoundingClientRect",
+    "Element.prototype.getClientRects",
+    "Element.prototype.scroll",
+    "Element.prototype.scrollBy",
+    "Element.prototype.scrollIntoView",
+    "Element.prototype.scrollTo",
+    "MediaList.prototype.appendMedium",
+    "MediaList.prototype.deleteMedium",
+    "MediaList.prototype.item",
+    "MediaQueryList.prototype.addListener",
+    "MediaQueryList.prototype.removeListener",
+    "StyleSheetList.prototype.item"
+  ]
+}
diff --git a/data/standards/CSS-VM.json b/data/standards/CSS-VM.json
index d15c59f..9ac21d2 100644
--- a/data/standards/CSS-VM.json
+++ b/data/standards/CSS-VM.json
@@ -1 +1,38 @@
-{"info": {"name": "CSSOM View Module", "subsection_number": null, "subsection_name": null, "url": "https://drafts.csswg.org/cssom-view/"}, "features": ["CaretPosition.prototype.getClientRect", "screen.availHeight", "screen.availWidth", "screen.colorDepth", "screen.height", "screen.left", "screen.pixelDepth", "screen.width", "window.devicePixelRatio", "window.innerHeight", "window.innerWidth", "window.matchMedia", "window.moveBy", "window.moveTo", "window.outerHeight", "window.outerWidth", "window.pageXOffset", "window.pageYOffset", "window.resizeBy", "window.resizeTo", "window.screen", "window.screenX", "window.screenY", "window.scroll", "window.scrollBy", "window.scrollTo", "window.scrollX", "window.scrollY"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "CSSOM View Module",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://drafts.csswg.org/cssom-view/"
+  },
+  "features": [
+    "CaretPosition.prototype.getClientRect",
+    "screen.availHeight",
+    "screen.availWidth",
+    "screen.colorDepth",
+    "screen.height",
+    "screen.left",
+    "screen.pixelDepth",
+    "screen.width",
+    "window.devicePixelRatio",
+    "window.innerHeight",
+    "window.innerWidth",
+    "window.matchMedia",
+    "window.moveBy",
+    "window.moveTo",
+    "window.outerHeight",
+    "window.outerWidth",
+    "window.pageXOffset",
+    "window.pageYOffset",
+    "window.resizeBy",
+    "window.resizeTo",
+    "window.screen",
+    "window.screenX",
+    "window.screenY",
+    "window.scroll",
+    "window.scrollBy",
+    "window.scrollTo",
+    "window.scrollX",
+    "window.scrollY"
+  ]
+}
diff --git a/data/standards/DO.json b/data/standards/DO.json
index c468078..f85af29 100644
--- a/data/standards/DO.json
+++ b/data/standards/DO.json
@@ -1 +1,12 @@
-{"info": {"name": "DeviceOrientation Event Specification", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/orientation-event/"}, "features": ["DeviceMotionEvent.prototype.initDeviceMotionEvent", "DeviceOrientationEvent.prototype.initDeviceOrientationEvent"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "DeviceOrientation Event Specification",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/orientation-event/"
+  },
+  "features": [
+    "DeviceMotionEvent.prototype.initDeviceMotionEvent",
+    "DeviceOrientationEvent.prototype.initDeviceOrientationEvent"
+  ]
+}
diff --git a/data/standards/DOM-PS.json b/data/standards/DOM-PS.json
index 1d3afdc..f7f83da 100644
--- a/data/standards/DOM-PS.json
+++ b/data/standards/DOM-PS.json
@@ -1 +1,13 @@
-{"info": {"name": "DOM Parsing and Serialization", "subsection_number": null, "subsection_name": null, "url": "https://w3c.github.io/DOM-Parsing/"}, "features": ["DOMParser.prototype.parseFromString", "Element.prototype.insertAdjacentHTML", "XMLSerializer.prototype.serializeToString"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "DOM Parsing and Serialization",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://w3c.github.io/DOM-Parsing/"
+  },
+  "features": [
+    "DOMParser.prototype.parseFromString",
+    "Element.prototype.insertAdjacentHTML",
+    "XMLSerializer.prototype.serializeToString"
+  ]
+}
diff --git a/data/standards/DOM.json b/data/standards/DOM.json
index af3e0d7..85dc8d4 100644
--- a/data/standards/DOM.json
+++ b/data/standards/DOM.json
@@ -1 +1,46 @@
-{"info": {"name": "DOM", "subsection_number": null, "subsection_name": null, "url": "https://dom.spec.whatwg.org/"}, "features": ["CharacterData.prototype.appendData", "CharacterData.prototype.deleteData", "CharacterData.prototype.insertData", "CharacterData.prototype.remove", "CharacterData.prototype.replaceData", "CharacterData.prototype.substringData", "CustomEvent.prototype.initCustomEvent", "document.characterSet", "document.childElementCount", "document.children", "document.close", "document.compatMode", "document.contentType", "document.firstElementChild", "document.inputEncoding", "document.lastElementChild", "Document.prototype.createAttribute", "Document.prototype.createElement", "Document.prototype.createProcessingInstruction", "Document.prototype.getElementsByClassName", "document.scripts", "DocumentFragment.prototype.getElementById", "DocumentType.prototype.remove", "DOMImplementation.prototype.createHTMLDocument", "DOMTokenList.prototype.add", "DOMTokenList.prototype.contains", "DOMTokenList.prototype.item", "DOMTokenList.prototype.remove", "DOMTokenList.prototype.toggle", "Element.prototype.closest", "Element.prototype.getElementsByClassName", "Element.prototype.matches", "Element.prototype.mozMatchesSelector", "Element.prototype.remove", "window.clearInterval", "window.clearTimeout"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "DOM",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://dom.spec.whatwg.org/"
+  },
+  "features": [
+    "CharacterData.prototype.appendData",
+    "CharacterData.prototype.deleteData",
+    "CharacterData.prototype.insertData",
+    "CharacterData.prototype.remove",
+    "CharacterData.prototype.replaceData",
+    "CharacterData.prototype.substringData",
+    "CustomEvent.prototype.initCustomEvent",
+    "document.characterSet",
+    "document.childElementCount",
+    "document.children",
+    "document.close",
+    "document.compatMode",
+    "document.contentType",
+    "document.firstElementChild",
+    "document.inputEncoding",
+    "document.lastElementChild",
+    "Document.prototype.createAttribute",
+    "Document.prototype.createElement",
+    "Document.prototype.createProcessingInstruction",
+    "Document.prototype.getElementsByClassName",
+    "document.scripts",
+    "DocumentFragment.prototype.getElementById",
+    "DocumentType.prototype.remove",
+    "DOMImplementation.prototype.createHTMLDocument",
+    "DOMTokenList.prototype.add",
+    "DOMTokenList.prototype.contains",
+    "DOMTokenList.prototype.item",
+    "DOMTokenList.prototype.remove",
+    "DOMTokenList.prototype.toggle",
+    "Element.prototype.closest",
+    "Element.prototype.getElementsByClassName",
+    "Element.prototype.matches",
+    "Element.prototype.mozMatchesSelector",
+    "Element.prototype.remove",
+    "window.clearInterval",
+    "window.clearTimeout"
+  ]
+}
diff --git a/data/standards/DOM1.json b/data/standards/DOM1.json
index 94d7c33..dd898ea 100644
--- a/data/standards/DOM1.json
+++ b/data/standards/DOM1.json
@@ -1 +1,57 @@
-{"info": {"name": "Document Object Model (DOM) Level 1 Specification", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/REC-DOM-Level-1/"}, "features": ["Document.prototype.getElementById", "Document.prototype.getElementsByTagName", "Element.prototype.getAttribute", "Element.prototype.getAttributeNode", "Element.prototype.getElementsByTagName", "Element.prototype.removeAttribute", "Element.prototype.removeAttributeNode", "Element.prototype.setAttribute", "Element.prototype.setAttributeNode", "HTMLCollection.prototype.item", "HTMLCollection.prototype.namedItem", "HTMLDocument.prototype.close", "HTMLDocument.prototype.open", "HTMLDocument.prototype.write", "HTMLDocument.prototype.writeln", "HTMLElement.prototype.click", "HTMLElement.prototype.focus", "HTMLFormElement.prototype.reset", "HTMLFormElement.prototype.submit", "HTMLInputElement.prototype.select", "HTMLSelectElement.prototype.add", "HTMLSelectElement.prototype.item", "HTMLSelectElement.prototype.namedItem", "HTMLSelectElement.prototype.remove", "HTMLTableElement.prototype.createCaption", "HTMLTableElement.prototype.createTBody", "HTMLTableElement.prototype.createTFoot", "HTMLTableElement.prototype.createTHead", "HTMLTableElement.prototype.deleteCaption", "HTMLTableElement.prototype.deleteRow", "HTMLTableElement.prototype.deleteTFoot", "HTMLTableElement.prototype.deleteTHead", "HTMLTableElement.prototype.insertRow", "HTMLTableRowElement.prototype.deleteCell", "HTMLTableRowElement.prototype.insertCell", "HTMLTableSectionElement.prototype.deleteRow", "HTMLTableSectionElement.prototype.insertRow", "HTMLTextAreaElement.prototype.select", "Node.prototype.appendChild", "Node.prototype.cloneNode", "Node.prototype.hasChildNodes", "Node.prototype.insertBefore", "Node.prototype.normalize", "Node.prototype.removeChild", "Node.prototype.replaceChild", "NodeList.prototype.item", "Text.prototype.splitText"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Document Object Model (DOM) Level 1 Specification",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/REC-DOM-Level-1/"
+  },
+  "features": [
+    "Document.prototype.getElementById",
+    "Document.prototype.getElementsByTagName",
+    "Element.prototype.getAttribute",
+    "Element.prototype.getAttributeNode",
+    "Element.prototype.getElementsByTagName",
+    "Element.prototype.removeAttribute",
+    "Element.prototype.removeAttributeNode",
+    "Element.prototype.setAttribute",
+    "Element.prototype.setAttributeNode",
+    "HTMLCollection.prototype.item",
+    "HTMLCollection.prototype.namedItem",
+    "HTMLDocument.prototype.close",
+    "HTMLDocument.prototype.open",
+    "HTMLDocument.prototype.write",
+    "HTMLDocument.prototype.writeln",
+    "HTMLElement.prototype.click",
+    "HTMLElement.prototype.focus",
+    "HTMLFormElement.prototype.reset",
+    "HTMLFormElement.prototype.submit",
+    "HTMLInputElement.prototype.select",
+    "HTMLSelectElement.prototype.add",
+    "HTMLSelectElement.prototype.item",
+    "HTMLSelectElement.prototype.namedItem",
+    "HTMLSelectElement.prototype.remove",
+    "HTMLTableElement.prototype.createCaption",
+    "HTMLTableElement.prototype.createTBody",
+    "HTMLTableElement.prototype.createTFoot",
+    "HTMLTableElement.prototype.createTHead",
+    "HTMLTableElement.prototype.deleteCaption",
+    "HTMLTableElement.prototype.deleteRow",
+    "HTMLTableElement.prototype.deleteTFoot",
+    "HTMLTableElement.prototype.deleteTHead",
+    "HTMLTableElement.prototype.insertRow",
+    "HTMLTableRowElement.prototype.deleteCell",
+    "HTMLTableRowElement.prototype.insertCell",
+    "HTMLTableSectionElement.prototype.deleteRow",
+    "HTMLTableSectionElement.prototype.insertRow",
+    "HTMLTextAreaElement.prototype.select",
+    "Node.prototype.appendChild",
+    "Node.prototype.cloneNode",
+    "Node.prototype.hasChildNodes",
+    "Node.prototype.insertBefore",
+    "Node.prototype.normalize",
+    "Node.prototype.removeChild",
+    "Node.prototype.replaceChild",
+    "NodeList.prototype.item",
+    "Text.prototype.splitText"
+  ]
+}
diff --git a/data/standards/DOM2-C.json b/data/standards/DOM2-C.json
index 82456fd..98ed01e 100644
--- a/data/standards/DOM2-C.json
+++ b/data/standards/DOM2-C.json
@@ -1 +1,41 @@
-{"info": {"name": "Document Object Model (DOM) Level 2 Core Specification", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/DOM-Level-2-Core/"}, "features": ["document.doctype", "document.documentElement", "document.domain", "document.implementation", "Document.prototype.createAttributeNS", "Document.prototype.createCDATASection", "Document.prototype.createComment", "Document.prototype.createDocumentFragment", "Document.prototype.createElementNS", "Document.prototype.createTextNode", "Document.prototype.getElementsByTagNameNS", "Document.prototype.importNode", "DOMImplementation.prototype.createDocument", "DOMImplementation.prototype.createDocumentType", "DOMImplementation.prototype.hasFeature", "Element.prototype.getAttributeNodeNS", "Element.prototype.getAttributeNS", "Element.prototype.getElementsByTagNameNS", "Element.prototype.hasAttribute", "Element.prototype.hasAttributeNS", "Element.prototype.hasAttributes", "Element.prototype.removeAttributeNS", "Element.prototype.setAttributeNodeNS", "Element.prototype.setAttributeNS", "NamedNodeMap.prototype.getNamedItem", "NamedNodeMap.prototype.getNamedItemNS", "NamedNodeMap.prototype.item", "NamedNodeMap.prototype.removeNamedItem", "NamedNodeMap.prototype.removeNamedItemNS", "NamedNodeMap.prototype.setNamedItem", "NamedNodeMap.prototype.setNamedItemNS"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "DOM Level 2: Core",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/DOM-Level-2-Core/"
+  },
+  "features": [
+    "document.doctype",
+    "document.documentElement",
+    "document.domain",
+    "document.implementation",
+    "Document.prototype.createAttributeNS",
+    "Document.prototype.createCDATASection",
+    "Document.prototype.createComment",
+    "Document.prototype.createDocumentFragment",
+    "Document.prototype.createElementNS",
+    "Document.prototype.createTextNode",
+    "Document.prototype.getElementsByTagNameNS",
+    "Document.prototype.importNode",
+    "DOMImplementation.prototype.createDocument",
+    "DOMImplementation.prototype.createDocumentType",
+    "DOMImplementation.prototype.hasFeature",
+    "Element.prototype.getAttributeNodeNS",
+    "Element.prototype.getAttributeNS",
+    "Element.prototype.getElementsByTagNameNS",
+    "Element.prototype.hasAttribute",
+    "Element.prototype.hasAttributeNS",
+    "Element.prototype.hasAttributes",
+    "Element.prototype.removeAttributeNS",
+    "Element.prototype.setAttributeNodeNS",
+    "Element.prototype.setAttributeNS",
+    "NamedNodeMap.prototype.getNamedItem",
+    "NamedNodeMap.prototype.getNamedItemNS",
+    "NamedNodeMap.prototype.item",
+    "NamedNodeMap.prototype.removeNamedItem",
+    "NamedNodeMap.prototype.removeNamedItemNS",
+    "NamedNodeMap.prototype.setNamedItem",
+    "NamedNodeMap.prototype.setNamedItemNS"
+  ]
+}
diff --git a/data/standards/DOM2-E.json b/data/standards/DOM2-E.json
index fdd6598..ab62ba6 100644
--- a/data/standards/DOM2-E.json
+++ b/data/standards/DOM2-E.json
@@ -1 +1,17 @@
-{"info": {"name": "Document Object Model (DOM) Level 2 Events Specification", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/DOM-Level-2-Events/"}, "features": ["Document.prototype.createEvent", "Event.prototype.initEvent", "Event.prototype.preventDefault", "Event.prototype.stopPropagation", "EventTarget.prototype.addEventListener", "EventTarget.prototype.dispatchEvent", "EventTarget.prototype.removeEventListener"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "DOM Level 2: Events",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/DOM-Level-2-Events/"
+  },
+  "features": [
+    "Document.prototype.createEvent",
+    "Event.prototype.initEvent",
+    "Event.prototype.preventDefault",
+    "Event.prototype.stopPropagation",
+    "EventTarget.prototype.addEventListener",
+    "EventTarget.prototype.dispatchEvent",
+    "EventTarget.prototype.removeEventListener"
+  ]
+}
diff --git a/data/standards/DOM2-H.json b/data/standards/DOM2-H.json
index b61b286..fc69a24 100644
--- a/data/standards/DOM2-H.json
+++ b/data/standards/DOM2-H.json
@@ -1 +1,21 @@
-{"info": {"name": "Document Object Model (DOM) Level 2 HTML Specification", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/DOM-Level-2-HTML/"}, "features": ["document.cookie", "document.forms", "document.getElementsByName", "document.open", "document.referrer", "document.title", "document.URL", "document.write", "document.writeln", "HTMLDocument.prototype.getElementsByName", "HTMLElement.prototype.blur"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "DOM Level 2: HTML",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/DOM-Level-2-HTML/"
+  },
+  "features": [
+    "document.cookie",
+    "document.forms",
+    "document.getElementsByName",
+    "document.open",
+    "document.referrer",
+    "document.title",
+    "document.URL",
+    "document.write",
+    "document.writeln",
+    "HTMLDocument.prototype.getElementsByName",
+    "HTMLElement.prototype.blur"
+  ]
+}
diff --git a/data/standards/DOM2-S.json b/data/standards/DOM2-S.json
index 886d1ab..26e25e3 100644
--- a/data/standards/DOM2-S.json
+++ b/data/standards/DOM2-S.json
@@ -1 +1,29 @@
-{"info": {"name": "Document Object Model (DOM) Level 2 Style Specification", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/DOM-Level-2-Style/"}, "features": ["CSSPrimitiveValue.prototype.getCounterValue", "CSSPrimitiveValue.prototype.getFloatValue", "CSSPrimitiveValue.prototype.getRectValue", "CSSPrimitiveValue.prototype.getRGBColorValue", "CSSPrimitiveValue.prototype.getStringValue", "CSSPrimitiveValue.prototype.setFloatValue", "CSSPrimitiveValue.prototype.setStringValue", "CSSRuleList.prototype.item", "CSSStyleDeclaration.prototype.getPropertyCSSValue", "CSSStyleDeclaration.prototype.getPropertyPriority", "CSSStyleDeclaration.prototype.getPropertyValue", "CSSStyleDeclaration.prototype.item", "CSSStyleDeclaration.prototype.removeProperty", "CSSStyleDeclaration.prototype.setProperty", "CSSStyleSheet.prototype.deleteRule", "CSSStyleSheet.prototype.insertRule", "CSSValueList.prototype.item", "document.styleSheets", "window.getComputedStyle"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "DOM Level 2: Style",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/DOM-Level-2-Style/"
+  },
+  "features": [
+    "CSSPrimitiveValue.prototype.getCounterValue",
+    "CSSPrimitiveValue.prototype.getFloatValue",
+    "CSSPrimitiveValue.prototype.getRectValue",
+    "CSSPrimitiveValue.prototype.getRGBColorValue",
+    "CSSPrimitiveValue.prototype.getStringValue",
+    "CSSPrimitiveValue.prototype.setFloatValue",
+    "CSSPrimitiveValue.prototype.setStringValue",
+    "CSSRuleList.prototype.item",
+    "CSSStyleDeclaration.prototype.getPropertyCSSValue",
+    "CSSStyleDeclaration.prototype.getPropertyPriority",
+    "CSSStyleDeclaration.prototype.getPropertyValue",
+    "CSSStyleDeclaration.prototype.item",
+    "CSSStyleDeclaration.prototype.removeProperty",
+    "CSSStyleDeclaration.prototype.setProperty",
+    "CSSStyleSheet.prototype.deleteRule",
+    "CSSStyleSheet.prototype.insertRule",
+    "CSSValueList.prototype.item",
+    "document.styleSheets",
+    "window.getComputedStyle"
+  ]
+}
diff --git a/data/standards/DOM2-T.json b/data/standards/DOM2-T.json
index 4aa9f2c..05d05b0 100644
--- a/data/standards/DOM2-T.json
+++ b/data/standards/DOM2-T.json
@@ -1 +1,46 @@
-{"info": {"name": "Document Object Model (DOM) Level 2 Traversal and Range Specification", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/DOM-Level-2-Traversal-Range/"}, "features": ["Document.prototype.createNodeIterator", "Document.prototype.createRange", "Document.prototype.createTreeWalker", "NodeIterator.prototype.detach", "NodeIterator.prototype.nextNode", "NodeIterator.prototype.previousNode", "Range.prototype.cloneContents", "Range.prototype.cloneRange", "Range.prototype.collapse", "Range.prototype.compareBoundaryPoints", "Range.prototype.comparePoint", "Range.prototype.createContextualFragment", "Range.prototype.deleteContents", "Range.prototype.detach", "Range.prototype.extractContents", "Range.prototype.getBoundingClientRect", "Range.prototype.getClientRects", "Range.prototype.insertNode", "Range.prototype.intersectsNode", "Range.prototype.isPointInRange", "Range.prototype.selectNode", "Range.prototype.selectNodeContents", "Range.prototype.setEnd", "Range.prototype.setEndAfter", "Range.prototype.setEndBefore", "Range.prototype.setStart", "Range.prototype.setStartAfter", "Range.prototype.setStartBefore", "Range.prototype.surroundContents", "TreeWalker.prototype.firstChild", "TreeWalker.prototype.lastChild", "TreeWalker.prototype.nextNode", "TreeWalker.prototype.nextSibling", "TreeWalker.prototype.parentNode", "TreeWalker.prototype.previousNode", "TreeWalker.prototype.previousSibling"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "DOM Level 2: Traversal and Range",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/DOM-Level-2-Traversal-Range/"
+  },
+  "features": [
+    "Document.prototype.createNodeIterator",
+    "Document.prototype.createRange",
+    "Document.prototype.createTreeWalker",
+    "NodeIterator.prototype.detach",
+    "NodeIterator.prototype.nextNode",
+    "NodeIterator.prototype.previousNode",
+    "Range.prototype.cloneContents",
+    "Range.prototype.cloneRange",
+    "Range.prototype.collapse",
+    "Range.prototype.compareBoundaryPoints",
+    "Range.prototype.comparePoint",
+    "Range.prototype.createContextualFragment",
+    "Range.prototype.deleteContents",
+    "Range.prototype.detach",
+    "Range.prototype.extractContents",
+    "Range.prototype.getBoundingClientRect",
+    "Range.prototype.getClientRects",
+    "Range.prototype.insertNode",
+    "Range.prototype.intersectsNode",
+    "Range.prototype.isPointInRange",
+    "Range.prototype.selectNode",
+    "Range.prototype.selectNodeContents",
+    "Range.prototype.setEnd",
+    "Range.prototype.setEndAfter",
+    "Range.prototype.setEndBefore",
+    "Range.prototype.setStart",
+    "Range.prototype.setStartAfter",
+    "Range.prototype.setStartBefore",
+    "Range.prototype.surroundContents",
+    "TreeWalker.prototype.firstChild",
+    "TreeWalker.prototype.lastChild",
+    "TreeWalker.prototype.nextNode",
+    "TreeWalker.prototype.nextSibling",
+    "TreeWalker.prototype.parentNode",
+    "TreeWalker.prototype.previousNode",
+    "TreeWalker.prototype.previousSibling"
+  ]
+}
diff --git a/data/standards/DOM3-C.json b/data/standards/DOM3-C.json
index bb21c4b..9776656 100644
--- a/data/standards/DOM3-C.json
+++ b/data/standards/DOM3-C.json
@@ -1 +1,20 @@
-{"info": {"name": "Document Object Model (DOM) Level 3 Core Specification", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/DOM-Level-3-Core/"}, "features": ["document.documentURI", "Document.prototype.adoptNode", "DOMStringList.prototype.contains", "DOMStringList.prototype.item", "Node.prototype.compareDocumentPosition", "Node.prototype.contains", "Node.prototype.isDefaultNamespace", "Node.prototype.isEqualNode", "Node.prototype.lookupNamespaceURI", "Node.prototype.lookupPrefix"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "DOM Level 3: Core",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/DOM-Level-3-Core/"
+  },
+  "features": [
+    "document.documentURI",
+    "Document.prototype.adoptNode",
+    "DOMStringList.prototype.contains",
+    "DOMStringList.prototype.item",
+    "Node.prototype.compareDocumentPosition",
+    "Node.prototype.contains",
+    "Node.prototype.isDefaultNamespace",
+    "Node.prototype.isEqualNode",
+    "Node.prototype.lookupNamespaceURI",
+    "Node.prototype.lookupPrefix"
+  ]
+}
diff --git a/data/standards/DOM3-X.json b/data/standards/DOM3-X.json
index 6709224..6eed2af 100644
--- a/data/standards/DOM3-X.json
+++ b/data/standards/DOM3-X.json
@@ -1 +1,19 @@
-{"info": {"name": "Document Object Model (DOM) Level 3 XPath Specification", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/DOM-Level-3-XPath/"}, "features": ["Document.prototype.createExpression", "Document.prototype.createNSResolver", "Document.prototype.evaluate", "XPathEvaluator.prototype.createExpression", "XPathEvaluator.prototype.createNSResolver", "XPathEvaluator.prototype.evaluate", "XPathExpression.prototype.evaluate", "XPathResult.prototype.iterateNext", "XPathResult.prototype.snapshotItem"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "DOM Level 3: XPath",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/DOM-Level-3-XPath/"
+  },
+  "features": [
+    "Document.prototype.createExpression",
+    "Document.prototype.createNSResolver",
+    "Document.prototype.evaluate",
+    "XPathEvaluator.prototype.createExpression",
+    "XPathEvaluator.prototype.createNSResolver",
+    "XPathEvaluator.prototype.evaluate",
+    "XPathExpression.prototype.evaluate",
+    "XPathResult.prototype.iterateNext",
+    "XPathResult.prototype.snapshotItem"
+  ]
+}
diff --git a/data/standards/DOM4.json b/data/standards/DOM4.json
index 6ddf514..cdeaad1 100644
--- a/data/standards/DOM4.json
+++ b/data/standards/DOM4.json
@@ -1 +1,13 @@
-{"info": {"name": "W3C DOM4", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/dom/"}, "features": ["MutationObserver.prototype.disconnect", "MutationObserver.prototype.observe", "MutationObserver.prototype.takeRecords"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "W3C DOM4",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/dom/"
+  },
+  "features": [
+    "MutationObserver.prototype.disconnect",
+    "MutationObserver.prototype.observe",
+    "MutationObserver.prototype.takeRecords"
+  ]
+}
diff --git a/data/standards/DU.json b/data/standards/DU.json
index cbe4950..2b1326f 100644
--- a/data/standards/DU.json
+++ b/data/standards/DU.json
@@ -1 +1,11 @@
-{"info": {"name": "Directory Upload", "subsection_number": null, "subsection_name": null, "url": "https://wicg.github.io/directory-upload/proposal.html"}, "features": ["Directory.prototype.getFilesAndDirectories"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Directory Upload",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://wicg.github.io/directory-upload/proposal.html"
+  },
+  "features": [
+    "Directory.prototype.getFilesAndDirectories"
+  ]
+}
diff --git a/data/standards/E.json b/data/standards/E.json
index 6407817..6e6f1c9 100644
--- a/data/standards/E.json
+++ b/data/standards/E.json
@@ -1 +1,12 @@
-{"info": {"name": "Encoding", "subsection_number": null, "subsection_name": null, "url": "https://encoding.spec.whatwg.org/"}, "features": ["TextDecoder.prototype.decode", "TextEncoder.prototype.encode"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Encoding",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://encoding.spec.whatwg.org/"
+  },
+  "features": [
+    "TextDecoder.prototype.decode",
+    "TextEncoder.prototype.encode"
+  ]
+}
diff --git a/data/standards/EC.json b/data/standards/EC.json
index 8258802..c4c0677 100644
--- a/data/standards/EC.json
+++ b/data/standards/EC.json
@@ -1 +1,22 @@
-{"info": {"name": "execCommand", "subsection_number": null, "subsection_name": null, "url": "https://w3c.github.io/editing/execCommand.html"}, "features": ["document.execCommand", "document.queryCommandEnabled", "document.queryCommandIndeterm", "document.queryCommandState", "document.queryCommandSupported", "document.queryCommandValue", "HTMLDocument.prototype.execCommand", "HTMLDocument.prototype.queryCommandEnabled", "HTMLDocument.prototype.queryCommandIndeterm", "HTMLDocument.prototype.queryCommandState", "HTMLDocument.prototype.queryCommandSupported", "HTMLDocument.prototype.queryCommandValue"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "execCommand",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://w3c.github.io/editing/execCommand.html"
+  },
+  "features": [
+    "document.execCommand",
+    "document.queryCommandEnabled",
+    "document.queryCommandIndeterm",
+    "document.queryCommandState",
+    "document.queryCommandSupported",
+    "document.queryCommandValue",
+    "HTMLDocument.prototype.execCommand",
+    "HTMLDocument.prototype.queryCommandEnabled",
+    "HTMLDocument.prototype.queryCommandIndeterm",
+    "HTMLDocument.prototype.queryCommandState",
+    "HTMLDocument.prototype.queryCommandSupported",
+    "HTMLDocument.prototype.queryCommandValue"
+  ]
+}
diff --git a/data/standards/EME.json b/data/standards/EME.json
index 529221b..a3fb560 100644
--- a/data/standards/EME.json
+++ b/data/standards/EME.json
@@ -1 +1,23 @@
-{"info": {"name": "Encrypted Media Extensions", "subsection_number": null, "subsection_name": null, "url": "https://w3c.github.io/encrypted-media/"}, "features": ["MediaKeys.prototype.createSession", "MediaKeys.prototype.setServerCertificate", "MediaKeySession.prototype.close", "MediaKeySession.prototype.generateRequest", "MediaKeySession.prototype.load", "MediaKeySession.prototype.remove", "MediaKeySession.prototype.update", "MediaKeyStatusMap.prototype.entries", "MediaKeyStatusMap.prototype.keys", "MediaKeyStatusMap.prototype.values", "MediaKeySystemAccess.prototype.createMediaKeys", "MediaKeySystemAccess.prototype.getConfiguration", "Navigator.prototype.requestMediaKeySystemAccess"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Encrypted Media Extensions",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://w3c.github.io/encrypted-media/"
+  },
+  "features": [
+    "MediaKeys.prototype.createSession",
+    "MediaKeys.prototype.setServerCertificate",
+    "MediaKeySession.prototype.close",
+    "MediaKeySession.prototype.generateRequest",
+    "MediaKeySession.prototype.load",
+    "MediaKeySession.prototype.remove",
+    "MediaKeySession.prototype.update",
+    "MediaKeyStatusMap.prototype.entries",
+    "MediaKeyStatusMap.prototype.keys",
+    "MediaKeyStatusMap.prototype.values",
+    "MediaKeySystemAccess.prototype.createMediaKeys",
+    "MediaKeySystemAccess.prototype.getConfiguration",
+    "Navigator.prototype.requestMediaKeySystemAccess"
+  ]
+}
diff --git a/data/standards/F.json b/data/standards/F.json
index 0275f26..4a5e668 100644
--- a/data/standards/F.json
+++ b/data/standards/F.json
@@ -1 +1,31 @@
-{"info": {"name": "Fetch", "subsection_number": null, "subsection_name": null, "url": "https://fetch.spec.whatwg.org/"}, "features": ["Headers.prototype.append", "Headers.prototype.delete", "Headers.prototype.get", "Headers.prototype.getAll", "Headers.prototype.has", "Headers.prototype.set", "Request.prototype.arrayBuffer", "Request.prototype.blob", "Request.prototype.clone", "Request.prototype.formData", "Request.prototype.json", "Request.prototype.text", "Response.error", "Response.prototype.arrayBuffer", "Response.prototype.blob", "Response.prototype.clone", "Response.prototype.formData", "Response.prototype.json", "Response.prototype.text", "Response.redirect", "window.fetch"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Fetch",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://fetch.spec.whatwg.org/"
+  },
+  "features": [
+    "Headers.prototype.append",
+    "Headers.prototype.delete",
+    "Headers.prototype.get",
+    "Headers.prototype.getAll",
+    "Headers.prototype.has",
+    "Headers.prototype.set",
+    "Request.prototype.arrayBuffer",
+    "Request.prototype.blob",
+    "Request.prototype.clone",
+    "Request.prototype.formData",
+    "Request.prototype.json",
+    "Request.prototype.text",
+    "Response.error",
+    "Response.prototype.arrayBuffer",
+    "Response.prototype.blob",
+    "Response.prototype.clone",
+    "Response.prototype.formData",
+    "Response.prototype.json",
+    "Response.prototype.text",
+    "Response.redirect",
+    "window.fetch"
+  ]
+}
diff --git a/data/standards/FA.json b/data/standards/FA.json
index 22773fe..4fc11ef 100644
--- a/data/standards/FA.json
+++ b/data/standards/FA.json
@@ -1 +1,19 @@
-{"info": {"name": "File API", "subsection_number": null, "subsection_name": null, "url": "https://w3c.github.io/FileAPI/"}, "features": ["Blob.prototype.slice", "FileList.prototype.item", "FileReader.prototype.abort", "FileReader.prototype.readAsArrayBuffer", "FileReader.prototype.readAsBinaryString", "FileReader.prototype.readAsDataURL", "FileReader.prototype.readAsText", "URL.createObjectURL", "URL.revokeObjectURL"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "File API",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://w3c.github.io/FileAPI/"
+  },
+  "features": [
+    "Blob.prototype.slice",
+    "FileList.prototype.item",
+    "FileReader.prototype.abort",
+    "FileReader.prototype.readAsArrayBuffer",
+    "FileReader.prototype.readAsBinaryString",
+    "FileReader.prototype.readAsDataURL",
+    "FileReader.prototype.readAsText",
+    "URL.createObjectURL",
+    "URL.revokeObjectURL"
+  ]
+}
diff --git a/data/standards/FULL.json b/data/standards/FULL.json
index 53f313f..a98db8f 100644
--- a/data/standards/FULL.json
+++ b/data/standards/FULL.json
@@ -1 +1,19 @@
-{"info": {"name": "Fullscreen API", "subsection_number": null, "subsection_name": null, "url": "https://fullscreen.spec.whatwg.org/"}, "features": ["document.mozFullScreen", "document.mozFullScreenElement", "document.mozFullScreenEnabled", "document.onmozfullscreenchange", "document.onmozfullscreenerror", "Document.prototype.mozCancelFullScreen", "Element.prototype.mozRequestFullScreen", "window.onmozfullscreenchange", "window.onmozfullscreenerror"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Fullscreen API",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://fullscreen.spec.whatwg.org/"
+  },
+  "features": [
+    "document.mozFullScreen",
+    "document.mozFullScreenElement",
+    "document.mozFullScreenEnabled",
+    "document.onmozfullscreenchange",
+    "document.onmozfullscreenerror",
+    "Document.prototype.mozCancelFullScreen",
+    "Element.prototype.mozRequestFullScreen",
+    "window.onmozfullscreenchange",
+    "window.onmozfullscreenerror"
+  ]
+}
diff --git a/data/standards/GEO.json b/data/standards/GEO.json
index c9b691a..0196629 100644
--- a/data/standards/GEO.json
+++ b/data/standards/GEO.json
@@ -1 +1,14 @@
-{"info": {"name": "Geolocation API Specification", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/geolocation-API/"}, "features": ["navigator.geolocation", "navigator.geolocation.getCurrentPosition", "navigator.geolocation.watchPosition", "navigator.geolocation.clearWatch"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Geolocation API",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/geolocation-API/"
+  },
+  "features": [
+    "navigator.geolocation",
+    "navigator.geolocation.getCurrentPosition",
+    "navigator.geolocation.watchPosition",
+    "navigator.geolocation.clearWatch"
+  ]
+}
diff --git a/data/standards/GIM.json b/data/standards/GIM.json
index a8459d0..f8e1966 100644
--- a/data/standards/GIM.json
+++ b/data/standards/GIM.json
@@ -1 +1,40 @@
-{"info": {"name": "Geometry Interfaces Module Level 1", "subsection_number": null, "subsection_name": null, "url": "https://drafts.fxtf.org/geometry/"}, "features": ["DOMMatrix.prototype.invertSelf", "DOMMatrix.prototype.multiplySelf", "DOMMatrix.prototype.preMultiplySelf", "DOMMatrix.prototype.rotateAxisAngleSelf", "DOMMatrix.prototype.rotateFromVectorSelf", "DOMMatrix.prototype.rotateSelf", "DOMMatrix.prototype.scale3dSelf", "DOMMatrix.prototype.scaleNonUniformSelf", "DOMMatrix.prototype.scaleSelf", "DOMMatrix.prototype.setMatrixValue", "DOMMatrix.prototype.skewXSelf", "DOMMatrix.prototype.skewYSelf", "DOMMatrix.prototype.translateSelf", "DOMMatrixReadOnly.prototype.flipX", "DOMMatrixReadOnly.prototype.flipY", "DOMMatrixReadOnly.prototype.inverse", "DOMMatrixReadOnly.prototype.multiply", "DOMMatrixReadOnly.prototype.rotate", "DOMMatrixReadOnly.prototype.rotateAxisAngle", "DOMMatrixReadOnly.prototype.rotateFromVector", "DOMMatrixReadOnly.prototype.scale", "DOMMatrixReadOnly.prototype.scale3d", "DOMMatrixReadOnly.prototype.scaleNonUniform", "DOMMatrixReadOnly.prototype.skewX", "DOMMatrixReadOnly.prototype.skewY", "DOMMatrixReadOnly.prototype.toFloat32Array", "DOMMatrixReadOnly.prototype.toFloat64Array", "DOMMatrixReadOnly.prototype.transformPoint", "DOMMatrixReadOnly.prototype.translate", "DOMRectList.prototype.item"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Geometry Interfaces Module Level 1",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://drafts.fxtf.org/geometry/"
+  },
+  "features": [
+    "DOMMatrix.prototype.invertSelf",
+    "DOMMatrix.prototype.multiplySelf",
+    "DOMMatrix.prototype.preMultiplySelf",
+    "DOMMatrix.prototype.rotateAxisAngleSelf",
+    "DOMMatrix.prototype.rotateFromVectorSelf",
+    "DOMMatrix.prototype.rotateSelf",
+    "DOMMatrix.prototype.scale3dSelf",
+    "DOMMatrix.prototype.scaleNonUniformSelf",
+    "DOMMatrix.prototype.scaleSelf",
+    "DOMMatrix.prototype.setMatrixValue",
+    "DOMMatrix.prototype.skewXSelf",
+    "DOMMatrix.prototype.skewYSelf",
+    "DOMMatrix.prototype.translateSelf",
+    "DOMMatrixReadOnly.prototype.flipX",
+    "DOMMatrixReadOnly.prototype.flipY",
+    "DOMMatrixReadOnly.prototype.inverse",
+    "DOMMatrixReadOnly.prototype.multiply",
+    "DOMMatrixReadOnly.prototype.rotate",
+    "DOMMatrixReadOnly.prototype.rotateAxisAngle",
+    "DOMMatrixReadOnly.prototype.rotateFromVector",
+    "DOMMatrixReadOnly.prototype.scale",
+    "DOMMatrixReadOnly.prototype.scale3d",
+    "DOMMatrixReadOnly.prototype.scaleNonUniform",
+    "DOMMatrixReadOnly.prototype.skewX",
+    "DOMMatrixReadOnly.prototype.skewY",
+    "DOMMatrixReadOnly.prototype.toFloat32Array",
+    "DOMMatrixReadOnly.prototype.toFloat64Array",
+    "DOMMatrixReadOnly.prototype.transformPoint",
+    "DOMMatrixReadOnly.prototype.translate",
+    "DOMRectList.prototype.item"
+  ]
+}
diff --git a/data/standards/GP.json b/data/standards/GP.json
index 3ff07c6..869e5a5 100644
--- a/data/standards/GP.json
+++ b/data/standards/GP.json
@@ -1 +1,11 @@
-{"info": {"name": "Gamepad", "subsection_number": null, "subsection_name": null, "url": "https://w3c.github.io/gamepad/"}, "features": ["Navigator.prototype.getGamepads"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Gamepad",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://w3c.github.io/gamepad/"
+  },
+  "features": [
+    "Navigator.prototype.getGamepads"
+  ]
+}
diff --git a/data/standards/H-B.json b/data/standards/H-B.json
index a9edd6c..4106797 100644
--- a/data/standards/H-B.json
+++ b/data/standards/H-B.json
@@ -1 +1,12 @@
-{"info": {"name": "HTML", "subsection_number": "9.6", "subsection_name": "Broadcasting to other browsing contexts", "url": "https://html.spec.whatwg.org/multipage/comms.html#dom-broadcastchannel-postmessage"}, "features": ["BroadcastChannel.prototype.close", "BroadcastChannel.prototype.postMessage"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "HTML",
+    "subsection_number": "9.6",
+    "subsection_name": "Broadcasting",
+    "url": "https://html.spec.whatwg.org/multipage/comms.html#dom-broadcastchannel-postmessage"
+  },
+  "features": [
+    "BroadcastChannel.prototype.close",
+    "BroadcastChannel.prototype.postMessage"
+  ]
+}
diff --git a/data/standards/H-C.json b/data/standards/H-C.json
index 81a29af..ed9af2a 100644
--- a/data/standards/H-C.json
+++ b/data/standards/H-C.json
@@ -1 +1,64 @@
-{"info": {"name": "HTML", "subsection_number": "4.12.4", "subsection_name": "The canvas element", "url": "https://html.spec.whatwg.org/multipage/scripting.html#the-canvas-element"}, "features": ["CanvasGradient.prototype.addColorStop", "CanvasPattern.prototype.setTransform", "CanvasRenderingContext2D.prototype.arc", "CanvasRenderingContext2D.prototype.arcTo", "CanvasRenderingContext2D.prototype.beginPath", "CanvasRenderingContext2D.prototype.bezierCurveTo", "CanvasRenderingContext2D.prototype.clearRect", "CanvasRenderingContext2D.prototype.clip", "CanvasRenderingContext2D.prototype.closePath", "CanvasRenderingContext2D.prototype.createImageData", "CanvasRenderingContext2D.prototype.createLinearGradient", "CanvasRenderingContext2D.prototype.createPattern", "CanvasRenderingContext2D.prototype.createRadialGradient", "CanvasRenderingContext2D.prototype.drawFocusIfNeeded", "CanvasRenderingContext2D.prototype.drawImage", "CanvasRenderingContext2D.prototype.fill", "CanvasRenderingContext2D.prototype.fillRect", "CanvasRenderingContext2D.prototype.fillText", "CanvasRenderingContext2D.prototype.getImageData", "CanvasRenderingContext2D.prototype.getLineDash", "CanvasRenderingContext2D.prototype.isPointInPath", "CanvasRenderingContext2D.prototype.isPointInStroke", "CanvasRenderingContext2D.prototype.lineTo", "CanvasRenderingContext2D.prototype.measureText", "CanvasRenderingContext2D.prototype.moveTo", "CanvasRenderingContext2D.prototype.putImageData", "CanvasRenderingContext2D.prototype.quadraticCurveTo", "CanvasRenderingContext2D.prototype.rect", "CanvasRenderingContext2D.prototype.resetTransform", "CanvasRenderingContext2D.prototype.restore", "CanvasRenderingContext2D.prototype.rotate", "CanvasRenderingContext2D.prototype.save", "CanvasRenderingContext2D.prototype.scale", "CanvasRenderingContext2D.prototype.setLineDash", "CanvasRenderingContext2D.prototype.setTransform", "CanvasRenderingContext2D.prototype.stroke", "CanvasRenderingContext2D.prototype.strokeRect", "CanvasRenderingContext2D.prototype.strokeText", "CanvasRenderingContext2D.prototype.transform", "CanvasRenderingContext2D.prototype.translate", "HTMLCanvasElement.prototype.getContext", "HTMLCanvasElement.prototype.mozGetAsFile", "HTMLCanvasElement.prototype.toBlob", "HTMLCanvasElement.prototype.toDataURL", "Path2D.prototype.addPath", "Path2D.prototype.arc", "Path2D.prototype.arcTo", "Path2D.prototype.bezierCurveTo", "Path2D.prototype.closePath", "Path2D.prototype.lineTo", "Path2D.prototype.moveTo", "Path2D.prototype.quadraticCurveTo", "Path2D.prototype.rect", "window.requestAnimationFrame"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "HTML",
+    "subsection_number": "4.12.4",
+    "subsection_name": "The canvas element",
+    "url": "https://html.spec.whatwg.org/multipage/scripting.html#the-canvas-element"
+  },
+  "features": [
+    "CanvasGradient.prototype.addColorStop",
+    "CanvasPattern.prototype.setTransform",
+    "CanvasRenderingContext2D.prototype.arc",
+    "CanvasRenderingContext2D.prototype.arcTo",
+    "CanvasRenderingContext2D.prototype.beginPath",
+    "CanvasRenderingContext2D.prototype.bezierCurveTo",
+    "CanvasRenderingContext2D.prototype.clearRect",
+    "CanvasRenderingContext2D.prototype.clip",
+    "CanvasRenderingContext2D.prototype.closePath",
+    "CanvasRenderingContext2D.prototype.createImageData",
+    "CanvasRenderingContext2D.prototype.createLinearGradient",
+    "CanvasRenderingContext2D.prototype.createPattern",
+    "CanvasRenderingContext2D.prototype.createRadialGradient",
+    "CanvasRenderingContext2D.prototype.drawFocusIfNeeded",
+    "CanvasRenderingContext2D.prototype.drawImage",
+    "CanvasRenderingContext2D.prototype.fill",
+    "CanvasRenderingContext2D.prototype.fillRect",
+    "CanvasRenderingContext2D.prototype.fillText",
+    "CanvasRenderingContext2D.prototype.getImageData",
+    "CanvasRenderingContext2D.prototype.getLineDash",
+    "CanvasRenderingContext2D.prototype.isPointInPath",
+    "CanvasRenderingContext2D.prototype.isPointInStroke",
+    "CanvasRenderingContext2D.prototype.lineTo",
+    "CanvasRenderingContext2D.prototype.measureText",
+    "CanvasRenderingContext2D.prototype.moveTo",
+    "CanvasRenderingContext2D.prototype.putImageData",
+    "CanvasRenderingContext2D.prototype.quadraticCurveTo",
+    "CanvasRenderingContext2D.prototype.rect",
+    "CanvasRenderingContext2D.prototype.resetTransform",
+    "CanvasRenderingContext2D.prototype.restore",
+    "CanvasRenderingContext2D.prototype.rotate",
+    "CanvasRenderingContext2D.prototype.save",
+    "CanvasRenderingContext2D.prototype.scale",
+    "CanvasRenderingContext2D.prototype.setLineDash",
+    "CanvasRenderingContext2D.prototype.setTransform",
+    "CanvasRenderingContext2D.prototype.stroke",
+    "CanvasRenderingContext2D.prototype.strokeRect",
+    "CanvasRenderingContext2D.prototype.strokeText",
+    "CanvasRenderingContext2D.prototype.transform",
+    "CanvasRenderingContext2D.prototype.translate",
+    "HTMLCanvasElement.prototype.getContext",
+    "HTMLCanvasElement.prototype.mozGetAsFile",
+    "HTMLCanvasElement.prototype.toBlob",
+    "HTMLCanvasElement.prototype.toDataURL",
+    "Path2D.prototype.addPath",
+    "Path2D.prototype.arc",
+    "Path2D.prototype.arcTo",
+    "Path2D.prototype.bezierCurveTo",
+    "Path2D.prototype.closePath",
+    "Path2D.prototype.lineTo",
+    "Path2D.prototype.moveTo",
+    "Path2D.prototype.quadraticCurveTo",
+    "Path2D.prototype.rect",
+    "window.requestAnimationFrame"
+  ]
+}
diff --git a/data/standards/H-CM.json b/data/standards/H-CM.json
index 08739cb..e5735e5 100644
--- a/data/standards/H-CM.json
+++ b/data/standards/H-CM.json
@@ -1 +1,14 @@
-{"info": {"name": "HTML", "subsection_number": "9.5", "subsection_name": "Channel Messaging", "url": "https://html.spec.whatwg.org/multipage/comms.html#channel-messaging"}, "features": ["MessagePort.prototype.close", "MessagePort.prototype.postMessage", "MessagePort.prototype.start", "window.postMessage"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "HTML",
+    "subsection_number": "9.5",
+    "subsection_name": "Channel Messaging",
+    "url": "https://html.spec.whatwg.org/multipage/comms.html#channel-messaging"
+  },
+  "features": [
+    "MessagePort.prototype.close",
+    "MessagePort.prototype.postMessage",
+    "MessagePort.prototype.start",
+    "window.postMessage"
+  ]
+}
diff --git a/data/standards/H-HI.json b/data/standards/H-HI.json
index d956249..30be4da 100644
--- a/data/standards/H-HI.json
+++ b/data/standards/H-HI.json
@@ -1 +1,16 @@
-{"info": {"name": "HTML", "subsection_number": "7.5.2", "subsection_name": "History Interface", "url": "https://html.spec.whatwg.org/multipage/browsers.html#the-history-interface"}, "features": ["History.prototype.back", "History.prototype.forward", "History.prototype.go", "History.prototype.pushState", "History.prototype.replaceState", "window.history"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "HTML",
+    "subsection_number": "7.5.2",
+    "subsection_name": "History Interface",
+    "url": "https://html.spec.whatwg.org/multipage/browsers.html#the-history-interface"
+  },
+  "features": [
+    "History.prototype.back",
+    "History.prototype.forward",
+    "History.prototype.go",
+    "History.prototype.pushState",
+    "History.prototype.replaceState",
+    "window.history"
+  ]
+}
diff --git a/data/standards/H-P.json b/data/standards/H-P.json
index cb64296..d37fb84 100644
--- a/data/standards/H-P.json
+++ b/data/standards/H-P.json
@@ -1 +1,20 @@
-{"info": {"name": "HTML", "subsection_number": "8.6.1.5", "subsection_name": "Plugins", "url": "https://html.spec.whatwg.org/multipage/webappapis.html#plugins-2"}, "features": ["document.plugins", "MimeTypeArray.prototype.item", "MimeTypeArray.prototype.namedItem", "navigator.mimeTypes", "navigator.plugins", "Plugin.prototype.item", "Plugin.prototype.namedItem", "PluginArray.prototype.item", "PluginArray.prototype.namedItem", "PluginArray.prototype.refresh"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "HTML",
+    "subsection_number": "8.6.1.5",
+    "subsection_name": "Plugins",
+    "url": "https://html.spec.whatwg.org/multipage/webappapis.html#plugins-2"
+  },
+  "features": [
+    "document.plugins",
+    "MimeTypeArray.prototype.item",
+    "MimeTypeArray.prototype.namedItem",
+    "navigator.mimeTypes",
+    "navigator.plugins",
+    "Plugin.prototype.item",
+    "Plugin.prototype.namedItem",
+    "PluginArray.prototype.item",
+    "PluginArray.prototype.namedItem",
+    "PluginArray.prototype.refresh"
+  ]
+}
diff --git a/data/standards/H-WB.json b/data/standards/H-WB.json
index 6b31db1..9b3891d 100644
--- a/data/standards/H-WB.json
+++ b/data/standards/H-WB.json
@@ -1 +1,18 @@
-{"info": {"name": "HTML", "subsection_number": "11", "subsection_name": "Web Storage", "url": "https://html.spec.whatwg.org/multipage/webstorage.html"}, "features": ["Storage.prototype.clear", "Storage.prototype.getItem", "Storage.prototype.key", "Storage.prototype.removeItem", "Storage.prototype.setItem", "StorageEvent.prototype.initStorageEvent", "window.localStorage", "window.sessionStorage"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "HTML",
+    "subsection_number": "11",
+    "subsection_name": "Web Storage",
+    "url": "https://html.spec.whatwg.org/multipage/webstorage.html"
+  },
+  "features": [
+    "Storage.prototype.clear",
+    "Storage.prototype.getItem",
+    "Storage.prototype.key",
+    "Storage.prototype.removeItem",
+    "Storage.prototype.setItem",
+    "StorageEvent.prototype.initStorageEvent",
+    "window.localStorage",
+    "window.sessionStorage"
+  ]
+}
diff --git a/data/standards/H-WS.json b/data/standards/H-WS.json
index 0b5c49e..0575410 100644
--- a/data/standards/H-WS.json
+++ b/data/standards/H-WS.json
@@ -1 +1,12 @@
-{"info": {"name": "HTML", "subsection_number": "9.3", "subsection_name": "Web Sockets", "url": "https://html.spec.whatwg.org/multipage/comms.html#network"}, "features": ["WebSocket.prototype.close", "WebSocket.prototype.send"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "HTML",
+    "subsection_number": "9.3",
+    "subsection_name": "Web Sockets",
+    "url": "https://html.spec.whatwg.org/multipage/comms.html#network"
+  },
+  "features": [
+    "WebSocket.prototype.close",
+    "WebSocket.prototype.send"
+  ]
+}
diff --git a/data/standards/H-WW.json b/data/standards/H-WW.json
index 6ba188d..fe0db92 100644
--- a/data/standards/H-WW.json
+++ b/data/standards/H-WW.json
@@ -1 +1,12 @@
-{"info": {"name": "HTML", "subsection_number": "10", "subsection_name": "Web Workers", "url": "https://html.spec.whatwg.org/multipage/workers.html"}, "features": ["Worker.prototype.postMessage", "Worker.prototype.terminate"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "HTML",
+    "subsection_number": "10",
+    "subsection_name": "Web Workers",
+    "url": "https://html.spec.whatwg.org/multipage/workers.html"
+  },
+  "features": [
+    "Worker.prototype.postMessage",
+    "Worker.prototype.terminate"
+  ]
+}
diff --git a/data/standards/HRT.json b/data/standards/HRT.json
index 5b499fa..31761a1 100644
--- a/data/standards/HRT.json
+++ b/data/standards/HRT.json
@@ -1 +1,11 @@
-{"info": {"name": "High Resolution Time Level 2", "subsection_number": null, "subsection_name": null, "url": "https://w3c.github.io/hr-time/"}, "features": ["Performance.prototype.now"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "High Resolution Time Level 2",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://w3c.github.io/hr-time/"
+  },
+  "features": [
+    "Performance.prototype.now"
+  ]
+}
diff --git a/data/standards/HTML.json b/data/standards/HTML.json
index 9356fc0..e6d3cce 100644
--- a/data/standards/HTML.json
+++ b/data/standards/HTML.json
@@ -1 +1,205 @@
-{"info": {"name": "HTML", "subsection_number": null, "subsection_name": null, "url": "https://html.spec.whatwg.org"}, "features": ["DataTransfer.prototype.addElement", "DataTransfer.prototype.clearData", "DataTransfer.prototype.getData", "DataTransfer.prototype.mozClearDataAt", "DataTransfer.prototype.mozGetDataAt", "DataTransfer.prototype.mozSetDataAt", "DataTransfer.prototype.mozTypesAt", "DataTransfer.prototype.setData", "DataTransfer.prototype.setDragImage", "document.activeElement", "document.body", "document.currentScript", "document.designMode", "document.dir", "document.getItems", "document.head", "document.images", "document.lastModified", "document.lastStyleSheetSet", "document.links", "document.onabort", "document.onblur", "document.oncanplay", "document.oncanplaythrough", "document.onchange", "document.onclick", "document.oncontextmenu", "document.oncopy", "document.oncut", "document.ondblclick", "document.ondrag", "document.ondragend", "document.ondragenter", "document.ondragleave", "document.ondragover", "document.ondragstart", "document.ondrop", "document.ondurationchange", "document.onemptied", "document.onended", "document.onerror", "document.onfocus", "document.oninput", "document.oninvalid", "document.onkeydown", "document.onkeypress", "document.onkeyup", "document.onload", "document.onloadeddata", "document.onloadedmetadata", "document.onloadstart", "document.onmousedown", "document.onmouseenter", "document.onmouseleave", "document.onmousemove", "document.onmouseout", "document.onmouseover", "document.onmouseup", "document.onpaste", "document.onpause", "document.onplay", "document.onplaying", "document.onprogress", "document.onratechange", "document.onreadystatechange", "document.onreset", "document.onresize", "document.onscroll", "document.onseeked", "document.onseeking", "document.onselect", "document.onshow", "document.onstalled", "document.onsubmit", "document.onsuspend", "document.ontimeupdate", "document.onvolumechange", "document.onwaiting", "document.onwheel", "Document.prototype.enableStyleSheetsForSet", "Document.prototype.hasFocus", "document.selectedStyleSheetSet", "document.styleSheetSets", "EventSource.prototype.close", "HashChangeEvent.prototype.initHashChangeEvent", "HTMLAllCollection.prototype.item", "HTMLAllCollection.prototype.namedItem", "HTMLDocument.prototype.clear", "HTMLDocument.prototype.getItems", "navigator.appCodeName", "navigator.appName", "navigator.appVersion", "navigator.cookieEnabled", "navigator.onLine", "navigator.platform", "navigator.product", "navigator.productSub", "Navigator.prototype.registerContentHandler", "Navigator.prototype.registerProtocolHandler", "navigator.userAgent", "navigator.vendor", "navigator.vendorSub", "PropertyNodeList.prototype.getValues", "TimeRanges.prototype.end", "TimeRanges.prototype.start", "window.blur", "window.close", "window.closed", "window.console", "window.createImageBitmap", "window.document", "window.focus", "window.frameElement", "window.frames", "window.length", "window.location", "window.name", "window.navigator", "window.onabort", "window.onafterprint", "window.onbeforeprint", "window.onbeforeunload", "window.onblur", "window.oncanplay", "window.oncanplaythrough", "window.onchange", "window.onclick", "window.oncontextmenu", "window.ondblclick", "window.ondrag", "window.ondragend", "window.ondragenter", "window.ondragleave", "window.ondragover", "window.ondragstart", "window.ondurationchange", "window.onemptied", "window.onended", "window.onerror", "window.onfocus", "window.onhashchange", "window.oninput", "window.oninvalid", "window.onkeydown", "window.onkeypress", "window.onkeyup", "window.onlanguagechange", "window.onloadeddata", "window.onloadedmetadata", "window.onloadstart", "window.onmessage", "window.onmousedown", "window.onmouseenter", "window.onmouseleave", "window.onmousemove", "window.onmouseout", "window.onmouseover", "window.onmouseup", "window.onoffline", "window.ononline", "window.onpagehide", "window.onpageshow", "window.onpause", "window.onplay", "window.onplaying", "window.onpopstate", "window.onprogress", "window.onratechange", "window.onreset", "window.onresize", "window.onscroll", "window.onseeked", "window.onseeking", "window.onselect", "window.onshow", "window.onstalled", "window.onsubmit", "window.onsuspend", "window.ontimeupdate", "window.onunload", "window.onvolumechange", "window.onwaiting", "window.onwheel", "window.open", "window.opener", "window.parent", "window.self", "window.setInterval", "window.setResizable", "window.setTimeout", "window.showModalDialog", "window.stop", "window.top", "window.window", "XMLDocument.prototype.load"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "HTML",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://html.spec.whatwg.org"
+  },
+  "features": [
+    "DataTransfer.prototype.addElement",
+    "DataTransfer.prototype.clearData",
+    "DataTransfer.prototype.getData",
+    "DataTransfer.prototype.mozClearDataAt",
+    "DataTransfer.prototype.mozGetDataAt",
+    "DataTransfer.prototype.mozSetDataAt",
+    "DataTransfer.prototype.mozTypesAt",
+    "DataTransfer.prototype.setData",
+    "DataTransfer.prototype.setDragImage",
+    "document.activeElement",
+    "document.body",
+    "document.currentScript",
+    "document.designMode",
+    "document.dir",
+    "document.getItems",
+    "document.head",
+    "document.images",
+    "document.lastModified",
+    "document.lastStyleSheetSet",
+    "document.links",
+    "document.onabort",
+    "document.onblur",
+    "document.oncanplay",
+    "document.oncanplaythrough",
+    "document.onchange",
+    "document.onclick",
+    "document.oncontextmenu",
+    "document.oncopy",
+    "document.oncut",
+    "document.ondblclick",
+    "document.ondrag",
+    "document.ondragend",
+    "document.ondragenter",
+    "document.ondragleave",
+    "document.ondragover",
+    "document.ondragstart",
+    "document.ondrop",
+    "document.ondurationchange",
+    "document.onemptied",
+    "document.onended",
+    "document.onerror",
+    "document.onfocus",
+    "document.oninput",
+    "document.oninvalid",
+    "document.onkeydown",
+    "document.onkeypress",
+    "document.onkeyup",
+    "document.onload",
+    "document.onloadeddata",
+    "document.onloadedmetadata",
+    "document.onloadstart",
+    "document.onmousedown",
+    "document.onmouseenter",
+    "document.onmouseleave",
+    "document.onmousemove",
+    "document.onmouseout",
+    "document.onmouseover",
+    "document.onmouseup",
+    "document.onpaste",
+    "document.onpause",
+    "document.onplay",
+    "document.onplaying",
+    "document.onprogress",
+    "document.onratechange",
+    "document.onreadystatechange",
+    "document.onreset",
+    "document.onresize",
+    "document.onscroll",
+    "document.onseeked",
+    "document.onseeking",
+    "document.onselect",
+    "document.onshow",
+    "document.onstalled",
+    "document.onsubmit",
+    "document.onsuspend",
+    "document.ontimeupdate",
+    "document.onvolumechange",
+    "document.onwaiting",
+    "document.onwheel",
+    "Document.prototype.enableStyleSheetsForSet",
+    "Document.prototype.hasFocus",
+    "document.selectedStyleSheetSet",
+    "document.styleSheetSets",
+    "EventSource.prototype.close",
+    "HashChangeEvent.prototype.initHashChangeEvent",
+    "HTMLAllCollection.prototype.item",
+    "HTMLAllCollection.prototype.namedItem",
+    "HTMLDocument.prototype.clear",
+    "HTMLDocument.prototype.getItems",
+    "navigator.appCodeName",
+    "navigator.appName",
+    "navigator.appVersion",
+    "navigator.cookieEnabled",
+    "navigator.onLine",
+    "navigator.platform",
+    "navigator.product",
+    "navigator.productSub",
+    "Navigator.prototype.registerContentHandler",
+    "Navigator.prototype.registerProtocolHandler",
+    "navigator.userAgent",
+    "navigator.vendor",
+    "navigator.vendorSub",
+    "PropertyNodeList.prototype.getValues",
+    "TimeRanges.prototype.end",
+    "TimeRanges.prototype.start",
+    "window.blur",
+    "window.close",
+    "window.closed",
+    "window.console",
+    "window.createImageBitmap",
+    "window.document",
+    "window.focus",
+    "window.frameElement",
+    "window.frames",
+    "window.length",
+    "window.location",
+    "window.name",
+    "window.navigator",
+    "window.onabort",
+    "window.onafterprint",
+    "window.onbeforeprint",
+    "window.onbeforeunload",
+    "window.onblur",
+    "window.oncanplay",
+    "window.oncanplaythrough",
+    "window.onchange",
+    "window.onclick",
+    "window.oncontextmenu",
+    "window.ondblclick",
+    "window.ondrag",
+    "window.ondragend",
+    "window.ondragenter",
+    "window.ondragleave",
+    "window.ondragover",
+    "window.ondragstart",
+    "window.ondurationchange",
+    "window.onemptied",
+    "window.onended",
+    "window.onerror",
+    "window.onfocus",
+    "window.onhashchange",
+    "window.oninput",
+    "window.oninvalid",
+    "window.onkeydown",
+    "window.onkeypress",
+    "window.onkeyup",
+    "window.onlanguagechange",
+    "window.onloadeddata",
+    "window.onloadedmetadata",
+    "window.onloadstart",
+    "window.onmessage",
+    "window.onmousedown",
+    "window.onmouseenter",
+    "window.onmouseleave",
+    "window.onmousemove",
+    "window.onmouseout",
+    "window.onmouseover",
+    "window.onmouseup",
+    "window.onoffline",
+    "window.ononline",
+    "window.onpagehide",
+    "window.onpageshow",
+    "window.onpause",
+    "window.onplay",
+    "window.onplaying",
+    "window.onpopstate",
+    "window.onprogress",
+    "window.onratechange",
+    "window.onreset",
+    "window.onresize",
+    "window.onscroll",
+    "window.onseeked",
+    "window.onseeking",
+    "window.onselect",
+    "window.onshow",
+    "window.onstalled",
+    "window.onsubmit",
+    "window.onsuspend",
+    "window.ontimeupdate",
+    "window.onunload",
+    "window.onvolumechange",
+    "window.onwaiting",
+    "window.onwheel",
+    "window.open",
+    "window.opener",
+    "window.parent",
+    "window.self",
+    "window.setInterval",
+    "window.setResizable",
+    "window.setTimeout",
+    "window.showModalDialog",
+    "window.stop",
+    "window.top",
+    "window.window",
+    "XMLDocument.prototype.load"
+  ]
+}
diff --git a/data/standards/HTML5.json b/data/standards/HTML5.json
index 54896d6..7078148 100644
--- a/data/standards/HTML5.json
+++ b/data/standards/HTML5.json
@@ -1 +1,79 @@
-{"info": {"name": "HTML 5", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/html5/"}, "features": ["document.defaultView", "document.location", "document.onafterscriptexecute", "document.onbeforescriptexecute", "document.preferredStyleSheetSet", "document.readyState", "HTMLButtonElement.prototype.checkValidity", "HTMLButtonElement.prototype.setCustomValidity", "HTMLFieldSetElement.prototype.checkValidity", "HTMLFieldSetElement.prototype.setCustomValidity", "HTMLFormControlsCollection.prototype.item", "HTMLFormElement.prototype.checkValidity", "HTMLInputElement.prototype.checkValidity", "HTMLInputElement.prototype.setCustomValidity", "HTMLInputElement.prototype.setRangeText", "HTMLInputElement.prototype.setSelectionRange", "HTMLInputElement.prototype.stepDown", "HTMLInputElement.prototype.stepUp", "HTMLMediaElement.prototype.addTextTrack", "HTMLMediaElement.prototype.canPlayType", "HTMLMediaElement.prototype.fastSeek", "HTMLMediaElement.prototype.load", "HTMLMediaElement.prototype.mozCaptureStream", "HTMLMediaElement.prototype.mozCaptureStreamUntilEnded", "HTMLMediaElement.prototype.mozGetMetadata", "HTMLMediaElement.prototype.pause", "HTMLMediaElement.prototype.play", "HTMLMediaElement.prototype.setMediaKeys", "HTMLObjectElement.prototype.checkValidity", "HTMLObjectElement.prototype.setCustomValidity", "HTMLOptionsCollection.prototype.add", "HTMLOptionsCollection.prototype.remove", "HTMLOutputElement.prototype.checkValidity", "HTMLOutputElement.prototype.setCustomValidity", "HTMLSelectElement.prototype.checkValidity", "HTMLSelectElement.prototype.setCustomValidity", "HTMLTextAreaElement.prototype.checkValidity", "HTMLTextAreaElement.prototype.setCustomValidity", "HTMLTextAreaElement.prototype.setRangeText", "HTMLTextAreaElement.prototype.setSelectionRange", "location.assign", "location.reload", "location.replace", "OfflineResourceList.prototype.mozAdd", "OfflineResourceList.prototype.mozHasItem", "OfflineResourceList.prototype.mozItem", "OfflineResourceList.prototype.mozRemove", "OfflineResourceList.prototype.swapCache", "OfflineResourceList.prototype.update", "TextTrack.prototype.addCue", "TextTrack.prototype.removeCue", "TextTrackCueList.prototype.getCueById", "TextTrackList.prototype.getTrackById", "TimeEvent.prototype.initTimeEvent", "window.alert", "window.applicationCache", "window.atob", "window.btoa", "window.confirm", "window.locationbar", "window.menubar", "window.personalbar", "window.print", "window.prompt", "window.scrollbars", "window.status", "window.statusbar", "window.toolbar", "location.href"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "HTML 5",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/html5/"
+  },
+  "features": [
+    "document.defaultView",
+    "document.location",
+    "document.onafterscriptexecute",
+    "document.onbeforescriptexecute",
+    "document.preferredStyleSheetSet",
+    "document.readyState",
+    "HTMLButtonElement.prototype.checkValidity",
+    "HTMLButtonElement.prototype.setCustomValidity",
+    "HTMLFieldSetElement.prototype.checkValidity",
+    "HTMLFieldSetElement.prototype.setCustomValidity",
+    "HTMLFormControlsCollection.prototype.item",
+    "HTMLFormElement.prototype.checkValidity",
+    "HTMLInputElement.prototype.checkValidity",
+    "HTMLInputElement.prototype.setCustomValidity",
+    "HTMLInputElement.prototype.setRangeText",
+    "HTMLInputElement.prototype.setSelectionRange",
+    "HTMLInputElement.prototype.stepDown",
+    "HTMLInputElement.prototype.stepUp",
+    "HTMLMediaElement.prototype.addTextTrack",
+    "HTMLMediaElement.prototype.canPlayType",
+    "HTMLMediaElement.prototype.fastSeek",
+    "HTMLMediaElement.prototype.load",
+    "HTMLMediaElement.prototype.mozCaptureStream",
+    "HTMLMediaElement.prototype.mozCaptureStreamUntilEnded",
+    "HTMLMediaElement.prototype.mozGetMetadata",
+    "HTMLMediaElement.prototype.pause",
+    "HTMLMediaElement.prototype.play",
+    "HTMLMediaElement.prototype.setMediaKeys",
+    "HTMLObjectElement.prototype.checkValidity",
+    "HTMLObjectElement.prototype.setCustomValidity",
+    "HTMLOptionsCollection.prototype.add",
+    "HTMLOptionsCollection.prototype.remove",
+    "HTMLOutputElement.prototype.checkValidity",
+    "HTMLOutputElement.prototype.setCustomValidity",
+    "HTMLSelectElement.prototype.checkValidity",
+    "HTMLSelectElement.prototype.setCustomValidity",
+    "HTMLTextAreaElement.prototype.checkValidity",
+    "HTMLTextAreaElement.prototype.setCustomValidity",
+    "HTMLTextAreaElement.prototype.setRangeText",
+    "HTMLTextAreaElement.prototype.setSelectionRange",
+    "location.assign",
+    "location.reload",
+    "location.replace",
+    "OfflineResourceList.prototype.mozAdd",
+    "OfflineResourceList.prototype.mozHasItem",
+    "OfflineResourceList.prototype.mozItem",
+    "OfflineResourceList.prototype.mozRemove",
+    "OfflineResourceList.prototype.swapCache",
+    "OfflineResourceList.prototype.update",
+    "TextTrack.prototype.addCue",
+    "TextTrack.prototype.removeCue",
+    "TextTrackCueList.prototype.getCueById",
+    "TextTrackList.prototype.getTrackById",
+    "TimeEvent.prototype.initTimeEvent",
+    "window.alert",
+    "window.applicationCache",
+    "window.atob",
+    "window.btoa",
+    "window.confirm",
+    "window.locationbar",
+    "window.menubar",
+    "window.personalbar",
+    "window.print",
+    "window.prompt",
+    "window.scrollbars",
+    "window.status",
+    "window.statusbar",
+    "window.toolbar",
+    "location.href"
+  ]
+}
diff --git a/data/standards/HTML51.json b/data/standards/HTML51.json
index ffbb86c..4e764aa 100644
--- a/data/standards/HTML51.json
+++ b/data/standards/HTML51.json
@@ -1 +1,16 @@
-{"info": {"name": "HTML 5.1", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/html51/"}, "features": ["DragEvent.prototype.initDragEvent", "External.prototype.addSearchEngine", "External.prototype.AddSearchProvider", "External.prototype.IsSearchProviderInstalled", "navigator.language", "navigator.languages"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "HTML 5.1",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/html51/"
+  },
+  "features": [
+    "DragEvent.prototype.initDragEvent",
+    "External.prototype.addSearchEngine",
+    "External.prototype.AddSearchProvider",
+    "External.prototype.IsSearchProviderInstalled",
+    "navigator.language",
+    "navigator.languages"
+  ]
+}
diff --git a/data/standards/IDB.json b/data/standards/IDB.json
index 2864aa3..4eb7b2b 100644
--- a/data/standards/IDB.json
+++ b/data/standards/IDB.json
@@ -1 +1,58 @@
-{"info": {"name": "Indexed Database API", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/IndexedDB/"}, "features": ["IDBCursor.prototype.advance", "IDBCursor.prototype.continue", "IDBCursor.prototype.delete", "IDBCursor.prototype.update", "IDBDatabase.prototype.close", "IDBDatabase.prototype.createMutableFile", "IDBDatabase.prototype.createObjectStore", "IDBDatabase.prototype.deleteObjectStore", "IDBDatabase.prototype.mozCreateFileHandle", "IDBDatabase.prototype.transaction", "IDBFactory.prototype.cmp", "IDBFactory.prototype.deleteDatabase", "IDBFactory.prototype.open", "IDBFileHandle.prototype.abort", "IDBFileHandle.prototype.append", "IDBFileHandle.prototype.flush", "IDBFileHandle.prototype.getMetadata", "IDBFileHandle.prototype.readAsArrayBuffer", "IDBFileHandle.prototype.readAsText", "IDBFileHandle.prototype.truncate", "IDBFileHandle.prototype.write", "IDBIndex.prototype.count", "IDBIndex.prototype.get", "IDBIndex.prototype.getKey", "IDBIndex.prototype.mozGetAll", "IDBIndex.prototype.mozGetAllKeys", "IDBIndex.prototype.openCursor", "IDBIndex.prototype.openKeyCursor", "IDBKeyRange.bound", "IDBKeyRange.lowerBound", "IDBKeyRange.only", "IDBKeyRange.upperBound", "IDBMutableFile.prototype.getFile", "IDBMutableFile.prototype.open", "IDBObjectStore.prototype.add", "IDBObjectStore.prototype.clear", "IDBObjectStore.prototype.count", "IDBObjectStore.prototype.createIndex", "IDBObjectStore.prototype.delete", "IDBObjectStore.prototype.deleteIndex", "IDBObjectStore.prototype.get", "IDBObjectStore.prototype.index", "IDBObjectStore.prototype.mozGetAll", "IDBObjectStore.prototype.openCursor", "IDBObjectStore.prototype.put", "IDBTransaction.prototype.abort", "IDBTransaction.prototype.objectStore", "window.indexedDB"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Indexed Database API",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/IndexedDB/"
+  },
+  "features": [
+    "IDBCursor.prototype.advance",
+    "IDBCursor.prototype.continue",
+    "IDBCursor.prototype.delete",
+    "IDBCursor.prototype.update",
+    "IDBDatabase.prototype.close",
+    "IDBDatabase.prototype.createMutableFile",
+    "IDBDatabase.prototype.createObjectStore",
+    "IDBDatabase.prototype.deleteObjectStore",
+    "IDBDatabase.prototype.mozCreateFileHandle",
+    "IDBDatabase.prototype.transaction",
+    "IDBFactory.prototype.cmp",
+    "IDBFactory.prototype.deleteDatabase",
+    "IDBFactory.prototype.open",
+    "IDBFileHandle.prototype.abort",
+    "IDBFileHandle.prototype.append",
+    "IDBFileHandle.prototype.flush",
+    "IDBFileHandle.prototype.getMetadata",
+    "IDBFileHandle.prototype.readAsArrayBuffer",
+    "IDBFileHandle.prototype.readAsText",
+    "IDBFileHandle.prototype.truncate",
+    "IDBFileHandle.prototype.write",
+    "IDBIndex.prototype.count",
+    "IDBIndex.prototype.get",
+    "IDBIndex.prototype.getKey",
+    "IDBIndex.prototype.mozGetAll",
+    "IDBIndex.prototype.mozGetAllKeys",
+    "IDBIndex.prototype.openCursor",
+    "IDBIndex.prototype.openKeyCursor",
+    "IDBKeyRange.bound",
+    "IDBKeyRange.lowerBound",
+    "IDBKeyRange.only",
+    "IDBKeyRange.upperBound",
+    "IDBMutableFile.prototype.getFile",
+    "IDBMutableFile.prototype.open",
+    "IDBObjectStore.prototype.add",
+    "IDBObjectStore.prototype.clear",
+    "IDBObjectStore.prototype.count",
+    "IDBObjectStore.prototype.createIndex",
+    "IDBObjectStore.prototype.delete",
+    "IDBObjectStore.prototype.deleteIndex",
+    "IDBObjectStore.prototype.get",
+    "IDBObjectStore.prototype.index",
+    "IDBObjectStore.prototype.mozGetAll",
+    "IDBObjectStore.prototype.openCursor",
+    "IDBObjectStore.prototype.put",
+    "IDBTransaction.prototype.abort",
+    "IDBTransaction.prototype.objectStore",
+    "window.indexedDB"
+  ]
+}
diff --git a/data/standards/MCD.json b/data/standards/MCD.json
index 708556a..877bbfb 100644
--- a/data/standards/MCD.json
+++ b/data/standards/MCD.json
@@ -1 +1,12 @@
-{"info": {"name": "Media Capture from DOM Elements", "subsection_number": null, "subsection_name": null, "url": "https://w3c.github.io/mediacapture-fromelement/"}, "features": ["CanvasCaptureMediaStream.prototype.requestFrame", "HTMLCanvasElement.prototype.captureStream"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Media Capture from DOM Elements",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://w3c.github.io/mediacapture-fromelement/"
+  },
+  "features": [
+    "CanvasCaptureMediaStream.prototype.requestFrame",
+    "HTMLCanvasElement.prototype.captureStream"
+  ]
+}
diff --git a/data/standards/MCS.json b/data/standards/MCS.json
index 8ced269..c8bbd6e 100644
--- a/data/standards/MCS.json
+++ b/data/standards/MCS.json
@@ -1 +1,14 @@
-{"info": {"name": "Media Capture and Streams", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/mediacapture-streams/"}, "features": ["LocalMediaStream.prototype.stop", "MediaDevices.prototype.enumerateDevices", "MediaDevices.prototype.getUserMedia", "navigator.mediaDevices"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Media Capture and Streams",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/mediacapture-streams/"
+  },
+  "features": [
+    "LocalMediaStream.prototype.stop",
+    "MediaDevices.prototype.enumerateDevices",
+    "MediaDevices.prototype.getUserMedia",
+    "navigator.mediaDevices"
+  ]
+}
diff --git a/data/standards/MSE.json b/data/standards/MSE.json
index 8f9157c..a83f3c0 100644
--- a/data/standards/MSE.json
+++ b/data/standards/MSE.json
@@ -1 +1,18 @@
-{"info": {"name": "Media Source Extensions", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/media-source/"}, "features": ["HTMLVideoElement.prototype.getVideoPlaybackQuality", "MediaSource.isTypeSupported", "MediaSource.prototype.addSourceBuffer", "MediaSource.prototype.endOfStream", "MediaSource.prototype.removeSourceBuffer", "SourceBuffer.prototype.abort", "SourceBuffer.prototype.appendBuffer", "SourceBuffer.prototype.remove"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Media Source Extensions",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/media-source/"
+  },
+  "features": [
+    "HTMLVideoElement.prototype.getVideoPlaybackQuality",
+    "MediaSource.isTypeSupported",
+    "MediaSource.prototype.addSourceBuffer",
+    "MediaSource.prototype.endOfStream",
+    "MediaSource.prototype.removeSourceBuffer",
+    "SourceBuffer.prototype.abort",
+    "SourceBuffer.prototype.appendBuffer",
+    "SourceBuffer.prototype.remove"
+  ]
+}
diff --git a/data/standards/MSR.json b/data/standards/MSR.json
index 4ce273b..700c4fa 100644
--- a/data/standards/MSR.json
+++ b/data/standards/MSR.json
@@ -1 +1,20 @@
-{"info": {"name": "MediaStream Recording", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/mediastream-recording/"}, "features": ["MediaRecorder.prototype.pause", "MediaRecorder.prototype.requestData", "MediaRecorder.prototype.resume", "MediaRecorder.prototype.start", "MediaRecorder.prototype.stop", "MediaStream.prototype.getAudioTracks", "MediaStream.prototype.getTracks", "MediaStream.prototype.getVideoTracks", "MediaStreamTrack.prototype.applyConstraints", "MediaStreamTrack.prototype.stop"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "MediaStream Recording",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/mediastream-recording/"
+  },
+  "features": [
+    "MediaRecorder.prototype.pause",
+    "MediaRecorder.prototype.requestData",
+    "MediaRecorder.prototype.resume",
+    "MediaRecorder.prototype.start",
+    "MediaRecorder.prototype.stop",
+    "MediaStream.prototype.getAudioTracks",
+    "MediaStream.prototype.getTracks",
+    "MediaStream.prototype.getVideoTracks",
+    "MediaStreamTrack.prototype.applyConstraints",
+    "MediaStreamTrack.prototype.stop"
+  ]
+}
diff --git a/data/standards/NS.json b/data/standards/NS.json
index 02a9d23..aec2413 100644
--- a/data/standards/NS.json
+++ b/data/standards/NS.json
@@ -1 +1,75 @@
-{"info": {"name": "Non-Standard", "subsection_number": null, "subsection_name": null, "url": null}, "features": ["AnonymousContent.prototype.getAttributeForElement", "AnonymousContent.prototype.getTextContentForElement", "AnonymousContent.prototype.removeAttributeForElement", "AnonymousContent.prototype.setAttributeForElement", "AnonymousContent.prototype.setTextContentForElement", "CommandEvent.prototype.initCommandEvent", "document.embeds", "Document.prototype.mozSetImageElement", "Document.prototype.releaseCapture", "DOMCursor.prototype.continue", "DOMRequest.prototype.then", "Element.prototype.releaseCapture", "Element.prototype.setCapture", "Event.prototype.getPreventDefault", "HTMLDocument.prototype.captureEvents", "HTMLDocument.prototype.releaseEvents", "HTMLInputElement.prototype.mozIsTextField", "HTMLPropertiesCollection.prototype.item", "HTMLPropertiesCollection.prototype.namedItem", "window.captureEvents", "MouseEvent.prototype.initNSMouseEvent", "MouseScrollEvent.prototype.initMouseScrollEvent", "mozContact.prototype.init", "MozPowerManager.prototype.addWakeLockListener", "MozPowerManager.prototype.factoryReset", "MozPowerManager.prototype.getWakeLockState", "MozPowerManager.prototype.powerOff", "MozPowerManager.prototype.reboot", "MozPowerManager.prototype.removeWakeLockListener", "navigator.buildID", "navigator.oscpu", "Navigator.prototype.javaEnabled", "PaintRequestList.prototype.item", "screen.availLeft", "screen.availTop", "screen.top", "ScrollAreaEvent.prototype.initScrollAreaEvent", "SimpleGestureEvent.prototype.initSimpleGestureEvent", "window.content", "window.controllers", "window.dump", "window.external", "window.find", "window.fullScreen", "window.getDefaultComputedStyle", "window.mozInnerScreenX", "window.mozInnerScreenY", "window.mozPaintCount", "window.ondrop", "window.releaseEvents", "window.scrollByLines", "window.scrollByPages", "window.scrollMaxX", "window.scrollMaxY", "window.sidebar", "window.sizeToContent", "window.updateCommands", "XSLTProcessor.prototype.clearParameters", "XSLTProcessor.prototype.getParameter", "XSLTProcessor.prototype.importStylesheet", "XSLTProcessor.prototype.removeParameter", "XSLTProcessor.prototype.reset", "XSLTProcessor.prototype.setParameter", "XSLTProcessor.prototype.transformToDocument", "XSLTProcessor.prototype.transformToFragment"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Non-Standard",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": null
+  },
+  "features": [
+    "AnonymousContent.prototype.getAttributeForElement",
+    "AnonymousContent.prototype.getTextContentForElement",
+    "AnonymousContent.prototype.removeAttributeForElement",
+    "AnonymousContent.prototype.setAttributeForElement",
+    "AnonymousContent.prototype.setTextContentForElement",
+    "CommandEvent.prototype.initCommandEvent",
+    "document.embeds",
+    "Document.prototype.mozSetImageElement",
+    "Document.prototype.releaseCapture",
+    "DOMCursor.prototype.continue",
+    "DOMRequest.prototype.then",
+    "Element.prototype.releaseCapture",
+    "Element.prototype.setCapture",
+    "Event.prototype.getPreventDefault",
+    "HTMLDocument.prototype.captureEvents",
+    "HTMLDocument.prototype.releaseEvents",
+    "HTMLInputElement.prototype.mozIsTextField",
+    "HTMLPropertiesCollection.prototype.item",
+    "HTMLPropertiesCollection.prototype.namedItem",
+    "window.captureEvents",
+    "MouseEvent.prototype.initNSMouseEvent",
+    "MouseScrollEvent.prototype.initMouseScrollEvent",
+    "mozContact.prototype.init",
+    "MozPowerManager.prototype.addWakeLockListener",
+    "MozPowerManager.prototype.factoryReset",
+    "MozPowerManager.prototype.getWakeLockState",
+    "MozPowerManager.prototype.powerOff",
+    "MozPowerManager.prototype.reboot",
+    "MozPowerManager.prototype.removeWakeLockListener",
+    "navigator.buildID",
+    "navigator.oscpu",
+    "Navigator.prototype.javaEnabled",
+    "PaintRequestList.prototype.item",
+    "screen.availLeft",
+    "screen.availTop",
+    "screen.top",
+    "ScrollAreaEvent.prototype.initScrollAreaEvent",
+    "SimpleGestureEvent.prototype.initSimpleGestureEvent",
+    "window.content",
+    "window.controllers",
+    "window.dump",
+    "window.external",
+    "window.find",
+    "window.fullScreen",
+    "window.getDefaultComputedStyle",
+    "window.mozInnerScreenX",
+    "window.mozInnerScreenY",
+    "window.mozPaintCount",
+    "window.ondrop",
+    "window.releaseEvents",
+    "window.scrollByLines",
+    "window.scrollByPages",
+    "window.scrollMaxX",
+    "window.scrollMaxY",
+    "window.sidebar",
+    "window.sizeToContent",
+    "window.updateCommands",
+    "XSLTProcessor.prototype.clearParameters",
+    "XSLTProcessor.prototype.getParameter",
+    "XSLTProcessor.prototype.importStylesheet",
+    "XSLTProcessor.prototype.removeParameter",
+    "XSLTProcessor.prototype.reset",
+    "XSLTProcessor.prototype.setParameter",
+    "XSLTProcessor.prototype.transformToDocument",
+    "XSLTProcessor.prototype.transformToFragment"
+  ]
+}
diff --git a/data/standards/NT.json b/data/standards/NT.json
index a3e5996..46fe364 100644
--- a/data/standards/NT.json
+++ b/data/standards/NT.json
@@ -1 +1,35 @@
-{"info": {"name": "Navigation Timing", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/navigation-timing/"}, "features": ["performance.navigation", "performance.navigation.redirectCount", "performance.navigation.type", "performance.timing", "performance.timing.connectEnd", "performance.timing.connectStart", "performance.timing.domainLookupEnd", "performance.timing.domainLookupStart", "performance.timing.domComplete", "performance.timing.domContentLoadedEventEnd", "performance.timing.domContentLoadedEventStart", "performance.timing.domInteractive", "performance.timing.domLoading", "performance.timing.fetchStart", "performance.timing.loadEventEnd", "performance.timing.loadEventStart", "performance.timing.navigationStart", "performance.timing.redirectEnd", "performance.timing.redirectStart", "performance.timing.requestStart", "performance.timing.responseEnd", "performance.timing.responseStart", "performance.timing.unloadEventEnd", "performance.timing.unloadEventStart", "window.performance"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Navigation Timing",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/navigation-timing/"
+  },
+  "features": [
+    "performance.navigation",
+    "performance.navigation.redirectCount",
+    "performance.navigation.type",
+    "performance.timing",
+    "performance.timing.connectEnd",
+    "performance.timing.connectStart",
+    "performance.timing.domainLookupEnd",
+    "performance.timing.domainLookupStart",
+    "performance.timing.domComplete",
+    "performance.timing.domContentLoadedEventEnd",
+    "performance.timing.domContentLoadedEventStart",
+    "performance.timing.domInteractive",
+    "performance.timing.domLoading",
+    "performance.timing.fetchStart",
+    "performance.timing.loadEventEnd",
+    "performance.timing.loadEventStart",
+    "performance.timing.navigationStart",
+    "performance.timing.redirectEnd",
+    "performance.timing.redirectStart",
+    "performance.timing.requestStart",
+    "performance.timing.responseEnd",
+    "performance.timing.responseStart",
+    "performance.timing.unloadEventEnd",
+    "performance.timing.unloadEventStart",
+    "window.performance"
+  ]
+}
diff --git a/data/standards/PE.json b/data/standards/PE.json
index df1d482..8145b49 100644
--- a/data/standards/PE.json
+++ b/data/standards/PE.json
@@ -1 +1,12 @@
-{"info": {"name": "Proximity Events", "subsection_number": null, "subsection_name": null, "url": "https://w3c.github.io/proximity/"}, "features": ["window.ondeviceproximity", "window.onuserproximity"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Proximity Events",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://w3c.github.io/proximity/"
+  },
+  "features": [
+    "window.ondeviceproximity",
+    "window.onuserproximity"
+  ]
+}
diff --git a/data/standards/PL.json b/data/standards/PL.json
index eda9f38..e9412d7 100644
--- a/data/standards/PL.json
+++ b/data/standards/PL.json
@@ -1 +1,17 @@
-{"info": {"name": "Pointer Lock", "subsection_number": null, "subsection_name": null, "url": "https://w3c.github.io/pointerlock/"}, "features": ["document.mozPointerLockElement", "document.onmozpointerlockchange", "document.onmozpointerlockerror", "Document.prototype.mozExitPointerLock", "Element.prototype.mozRequestPointerLock", "window.onmozpointerlockchange", "window.onmozpointerlockerror"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Pointer Lock",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://w3c.github.io/pointerlock/"
+  },
+  "features": [
+    "document.mozPointerLockElement",
+    "document.onmozpointerlockchange",
+    "document.onmozpointerlockerror",
+    "Document.prototype.mozExitPointerLock",
+    "Element.prototype.mozRequestPointerLock",
+    "window.onmozpointerlockchange",
+    "window.onmozpointerlockerror"
+  ]
+}
diff --git a/data/standards/PT.json b/data/standards/PT.json
index 385b8fe..898a98a 100644
--- a/data/standards/PT.json
+++ b/data/standards/PT.json
@@ -1 +1,12 @@
-{"info": {"name": "Performance Timeline", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/performance-timeline"}, "features": ["Performance.prototype.getEntriesByName", "Performance.prototype.getEntriesByType"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Performance Timeline",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/performance-timeline"
+  },
+  "features": [
+    "Performance.prototype.getEntriesByName",
+    "Performance.prototype.getEntriesByType"
+  ]
+}
diff --git a/data/standards/PT2.json b/data/standards/PT2.json
index 233407c..a7cb4e8 100644
--- a/data/standards/PT2.json
+++ b/data/standards/PT2.json
@@ -1 +1,11 @@
-{"info": {"name": "Performance Timeline Level 2", "subsection_number": null, "subsection_name": null, "url": "https://w3c.github.io/performance-timeline"}, "features": ["Performance.prototype.getEntries"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Performance Timeline Level 2",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://w3c.github.io/performance-timeline"
+  },
+  "features": [
+    "Performance.prototype.getEntries"
+  ]
+}
diff --git a/data/standards/PV.json b/data/standards/PV.json
index 18f22ca..e1ee23a 100644
--- a/data/standards/PV.json
+++ b/data/standards/PV.json
@@ -1 +1,14 @@
-{"info": {"name": "Page Visibility (Second Edition)", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/page-visibility/"}, "features": ["document.hidden", "document.mozHidden", "document.mozVisibilityState", "document.visibilityState"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Page Visibility (Second Edition)",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/page-visibility/"
+  },
+  "features": [
+    "document.hidden",
+    "document.mozHidden",
+    "document.mozVisibilityState",
+    "document.visibilityState"
+  ]
+}
diff --git a/data/standards/RT.json b/data/standards/RT.json
index a574afa..5dd05d7 100644
--- a/data/standards/RT.json
+++ b/data/standards/RT.json
@@ -1 +1,13 @@
-{"info": {"name": "Resource Timing", "subsection_number": null, "subsection_name": null, "url": "https://w3c.github.io/resource-timing/"}, "features": ["performance.onresourcetimingbufferfull", "Performance.prototype.clearResourceTimings", "Performance.prototype.setResourceTimingBufferSize"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Resource Timing",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://w3c.github.io/resource-timing/"
+  },
+  "features": [
+    "performance.onresourcetimingbufferfull",
+    "Performance.prototype.clearResourceTimings",
+    "Performance.prototype.setResourceTimingBufferSize"
+  ]
+}
diff --git a/data/standards/SD.json b/data/standards/SD.json
index 94aad68..d36cae8 100644
--- a/data/standards/SD.json
+++ b/data/standards/SD.json
@@ -1 +1,11 @@
-{"info": {"name": "Shadow DOM", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/shadow-dom/"}, "features": ["HTMLContentElement.prototype.getDistributedNodes"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Shadow DOM",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/shadow-dom/"
+  },
+  "features": [
+    "HTMLContentElement.prototype.getDistributedNodes"
+  ]
+}
diff --git a/data/standards/SEL.json b/data/standards/SEL.json
index 02ea1be..9b5fc13 100644
--- a/data/standards/SEL.json
+++ b/data/standards/SEL.json
@@ -1 +1,24 @@
-{"info": {"name": "Selection API", "subsection_number": null, "subsection_name": null, "url": "http://w3c.github.io/selection-api/"}, "features": ["HTMLDocument.prototype.getSelection", "Selection.prototype.addRange", "Selection.prototype.collapse", "Selection.prototype.collapseToEnd", "Selection.prototype.collapseToStart", "Selection.prototype.containsNode", "Selection.prototype.deleteFromDocument", "Selection.prototype.extend", "Selection.prototype.getRangeAt", "Selection.prototype.modify", "Selection.prototype.removeAllRanges", "Selection.prototype.removeRange", "Selection.prototype.selectAllChildren", "window.getSelection"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Selection API",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "http://w3c.github.io/selection-api/"
+  },
+  "features": [
+    "HTMLDocument.prototype.getSelection",
+    "Selection.prototype.addRange",
+    "Selection.prototype.collapse",
+    "Selection.prototype.collapseToEnd",
+    "Selection.prototype.collapseToStart",
+    "Selection.prototype.containsNode",
+    "Selection.prototype.deleteFromDocument",
+    "Selection.prototype.extend",
+    "Selection.prototype.getRangeAt",
+    "Selection.prototype.modify",
+    "Selection.prototype.removeAllRanges",
+    "Selection.prototype.removeRange",
+    "Selection.prototype.selectAllChildren",
+    "window.getSelection"
+  ]
+}
diff --git a/data/standards/SLC.json b/data/standards/SLC.json
index 100bc8e..f73751f 100644
--- a/data/standards/SLC.json
+++ b/data/standards/SLC.json
@@ -1 +1,16 @@
-{"info": {"name": "Selectors API Level 1", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/selectors-api"}, "features": ["Document.prototype.querySelector", "Document.prototype.querySelectorAll", "DocumentFragment.prototype.querySelector", "DocumentFragment.prototype.querySelectorAll", "Element.prototype.querySelector", "Element.prototype.querySelectorAll"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Selectors API Level 1",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/selectors-api"
+  },
+  "features": [
+    "Document.prototype.querySelector",
+    "Document.prototype.querySelectorAll",
+    "DocumentFragment.prototype.querySelector",
+    "DocumentFragment.prototype.querySelectorAll",
+    "Element.prototype.querySelector",
+    "Element.prototype.querySelectorAll"
+  ]
+}
diff --git a/data/standards/SO.json b/data/standards/SO.json
index e790734..bc6823f 100644
--- a/data/standards/SO.json
+++ b/data/standards/SO.json
@@ -1 +1,19 @@
-{"info": {"name": "The Screen Orientation API", "subsection_number": null, "subsection_name": null, "url": "https://w3c.github.io/screen-orientation/"}, "features": ["screen.mozOrientation", "screen.onmozorientationchange", "screen.orientation", "Screen.prototype.mozLockOrientation", "Screen.prototype.mozUnlockOrientation", "ScreenOrientation.prototype.lock", "ScreenOrientation.prototype.unlock", "window.ondevicemotion", "window.ondeviceorientation"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "The Screen Orientation API",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://w3c.github.io/screen-orientation/"
+  },
+  "features": [
+    "screen.mozOrientation",
+    "screen.onmozorientationchange",
+    "screen.orientation",
+    "Screen.prototype.mozLockOrientation",
+    "Screen.prototype.mozUnlockOrientation",
+    "ScreenOrientation.prototype.lock",
+    "ScreenOrientation.prototype.unlock",
+    "window.ondevicemotion",
+    "window.ondeviceorientation"
+  ]
+}
diff --git a/data/standards/SVG.json b/data/standards/SVG.json
index 2040415..5000d22 100644
--- a/data/standards/SVG.json
+++ b/data/standards/SVG.json
@@ -1 +1,148 @@
-{"info": {"name": "Scalable Vector Graphics (SVG) 1.1 (Second Edition)", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/SVG/"}, "features": ["HTMLEmbedElement.prototype.getSVGDocument", "HTMLIFrameElement.prototype.getSVGDocument", "HTMLObjectElement.prototype.getSVGDocument", "SVGAngle.prototype.convertToSpecifiedUnits", "SVGAngle.prototype.newValueSpecifiedUnits", "SVGAnimationElement.prototype.beginElement", "SVGAnimationElement.prototype.beginElementAt", "SVGAnimationElement.prototype.endElement", "SVGAnimationElement.prototype.endElementAt", "SVGAnimationElement.prototype.getCurrentTime", "SVGAnimationElement.prototype.getSimpleDuration", "SVGAnimationElement.prototype.getStartTime", "SVGAnimationElement.prototype.hasExtension", "SVGFEDropShadowElement.prototype.setStdDeviation", "SVGFEGaussianBlurElement.prototype.setStdDeviation", "SVGFilterElement.apply", "SVGGraphicsElement.prototype.getBBox", "SVGGraphicsElement.prototype.getCTM", "SVGGraphicsElement.prototype.getScreenCTM", "SVGGraphicsElement.prototype.getTransformToElement", "SVGGraphicsElement.prototype.hasExtension", "SVGLength.prototype.convertToSpecifiedUnits", "SVGLength.prototype.newValueSpecifiedUnits", "SVGLengthList.prototype.appendItem", "SVGLengthList.prototype.clear", "SVGLengthList.prototype.getItem", "SVGLengthList.prototype.initialize", "SVGLengthList.prototype.insertItemBefore", "SVGLengthList.prototype.removeItem", "SVGLengthList.prototype.replaceItem", "SVGMarkerElement.prototype.setOrientToAngle", "SVGMarkerElement.prototype.setOrientToAuto", "SVGMatrix.prototype.flipX", "SVGMatrix.prototype.flipY", "SVGMatrix.prototype.inverse", "SVGMatrix.prototype.multiply", "SVGMatrix.prototype.rotate", "SVGMatrix.prototype.rotateFromVector", "SVGMatrix.prototype.scale", "SVGMatrix.prototype.scaleNonUniform", "SVGMatrix.prototype.skewX", "SVGMatrix.prototype.skewY", "SVGMatrix.prototype.translate", "SVGNumberList.prototype.appendItem", "SVGNumberList.prototype.clear", "SVGNumberList.prototype.getItem", "SVGNumberList.prototype.initialize", "SVGNumberList.prototype.insertItemBefore", "SVGNumberList.prototype.removeItem", "SVGNumberList.prototype.replaceItem", "SVGPathElement.prototype.createSVGPathSegArcAbs", "SVGPathElement.prototype.createSVGPathSegArcRel", "SVGPathElement.prototype.createSVGPathSegClosePath", "SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs", "SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel", "SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs", "SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel", "SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs", "SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel", "SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs", "SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel", "SVGPathElement.prototype.createSVGPathSegLinetoAbs", "SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs", "SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel", "SVGPathElement.prototype.createSVGPathSegLinetoRel", "SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs", "SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel", "SVGPathElement.prototype.createSVGPathSegMovetoAbs", "SVGPathElement.prototype.createSVGPathSegMovetoRel", "SVGPathElement.prototype.getPathSegAtLength", "SVGPathElement.prototype.getPointAtLength", "SVGPathElement.prototype.getTotalLength", "SVGPathSegList.prototype.appendItem", "SVGPathSegList.prototype.clear", "SVGPathSegList.prototype.getItem", "SVGPathSegList.prototype.initialize", "SVGPathSegList.prototype.insertItemBefore", "SVGPathSegList.prototype.removeItem", "SVGPathSegList.prototype.replaceItem", "SVGPoint.prototype.matrixTransform", "SVGPointList.prototype.appendItem", "SVGPointList.prototype.clear", "SVGPointList.prototype.getItem", "SVGPointList.prototype.initialize", "SVGPointList.prototype.insertItemBefore", "SVGPointList.prototype.removeItem", "SVGPointList.prototype.replaceItem", "SVGStringList.prototype.appendItem", "SVGStringList.prototype.clear", "SVGStringList.prototype.getItem", "SVGStringList.prototype.initialize", "SVGStringList.prototype.insertItemBefore", "SVGStringList.prototype.removeItem", "SVGStringList.prototype.replaceItem", "SVGSVGElement.prototype.animationsPaused", "SVGSVGElement.prototype.createSVGAngle", "SVGSVGElement.prototype.createSVGLength", "SVGSVGElement.prototype.createSVGMatrix", "SVGSVGElement.prototype.createSVGNumber", "SVGSVGElement.prototype.createSVGPoint", "SVGSVGElement.prototype.createSVGRect", "SVGSVGElement.prototype.createSVGTransform", "SVGSVGElement.prototype.createSVGTransformFromMatrix", "SVGSVGElement.prototype.deselectAll", "SVGSVGElement.prototype.forceRedraw", "SVGSVGElement.prototype.getCurrentTime", "SVGSVGElement.prototype.getElementById", "SVGSVGElement.prototype.pauseAnimations", "SVGSVGElement.prototype.setCurrentTime", "SVGSVGElement.prototype.suspendRedraw", "SVGSVGElement.prototype.unpauseAnimations", "SVGSVGElement.prototype.unsuspendRedraw", "SVGSVGElement.prototype.unsuspendRedrawAll", "SVGSymbolElement.prototype.hasExtension", "SVGTextContentElement.prototype.getCharNumAtPosition", "SVGTextContentElement.prototype.getComputedTextLength", "SVGTextContentElement.prototype.getEndPositionOfChar", "SVGTextContentElement.prototype.getExtentOfChar", "SVGTextContentElement.prototype.getNumberOfChars", "SVGTextContentElement.prototype.getRotationOfChar", "SVGTextContentElement.prototype.getStartPositionOfChar", "SVGTextContentElement.prototype.getSubStringLength", "SVGTextContentElement.prototype.selectSubString", "SVGTransform.prototype.setMatrix", "SVGTransform.prototype.setRotate", "SVGTransform.prototype.setScale", "SVGTransform.prototype.setSkewX", "SVGTransform.prototype.setSkewY", "SVGTransform.prototype.setTranslate", "SVGTransformList.prototype.appendItem", "SVGTransformList.prototype.clear", "SVGTransformList.prototype.consolidate", "SVGTransformList.prototype.createSVGTransformFromMatrix", "SVGTransformList.prototype.getItem", "SVGTransformList.prototype.initialize", "SVGTransformList.prototype.insertItemBefore", "SVGTransformList.prototype.removeItem", "SVGTransformList.prototype.replaceItem"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Scalable Vector Graphics (SVG) 1.1 (Second Edition)",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/SVG/"
+  },
+  "features": [
+    "HTMLEmbedElement.prototype.getSVGDocument",
+    "HTMLIFrameElement.prototype.getSVGDocument",
+    "HTMLObjectElement.prototype.getSVGDocument",
+    "SVGAngle.prototype.convertToSpecifiedUnits",
+    "SVGAngle.prototype.newValueSpecifiedUnits",
+    "SVGAnimationElement.prototype.beginElement",
+    "SVGAnimationElement.prototype.beginElementAt",
+    "SVGAnimationElement.prototype.endElement",
+    "SVGAnimationElement.prototype.endElementAt",
+    "SVGAnimationElement.prototype.getCurrentTime",
+    "SVGAnimationElement.prototype.getSimpleDuration",
+    "SVGAnimationElement.prototype.getStartTime",
+    "SVGAnimationElement.prototype.hasExtension",
+    "SVGFEDropShadowElement.prototype.setStdDeviation",
+    "SVGFEGaussianBlurElement.prototype.setStdDeviation",
+    "SVGFilterElement.apply",
+    "SVGGraphicsElement.prototype.getBBox",
+    "SVGGraphicsElement.prototype.getCTM",
+    "SVGGraphicsElement.prototype.getScreenCTM",
+    "SVGGraphicsElement.prototype.getTransformToElement",
+    "SVGGraphicsElement.prototype.hasExtension",
+    "SVGLength.prototype.convertToSpecifiedUnits",
+    "SVGLength.prototype.newValueSpecifiedUnits",
+    "SVGLengthList.prototype.appendItem",
+    "SVGLengthList.prototype.clear",
+    "SVGLengthList.prototype.getItem",
+    "SVGLengthList.prototype.initialize",
+    "SVGLengthList.prototype.insertItemBefore",
+    "SVGLengthList.prototype.removeItem",
+    "SVGLengthList.prototype.replaceItem",
+    "SVGMarkerElement.prototype.setOrientToAngle",
+    "SVGMarkerElement.prototype.setOrientToAuto",
+    "SVGMatrix.prototype.flipX",
+    "SVGMatrix.prototype.flipY",
+    "SVGMatrix.prototype.inverse",
+    "SVGMatrix.prototype.multiply",
+    "SVGMatrix.prototype.rotate",
+    "SVGMatrix.prototype.rotateFromVector",
+    "SVGMatrix.prototype.scale",
+    "SVGMatrix.prototype.scaleNonUniform",
+    "SVGMatrix.prototype.skewX",
+    "SVGMatrix.prototype.skewY",
+    "SVGMatrix.prototype.translate",
+    "SVGNumberList.prototype.appendItem",
+    "SVGNumberList.prototype.clear",
+    "SVGNumberList.prototype.getItem",
+    "SVGNumberList.prototype.initialize",
+    "SVGNumberList.prototype.insertItemBefore",
+    "SVGNumberList.prototype.removeItem",
+    "SVGNumberList.prototype.replaceItem",
+    "SVGPathElement.prototype.createSVGPathSegArcAbs",
+    "SVGPathElement.prototype.createSVGPathSegArcRel",
+    "SVGPathElement.prototype.createSVGPathSegClosePath",
+    "SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs",
+    "SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel",
+    "SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs",
+    "SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel",
+    "SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs",
+    "SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel",
+    "SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs",
+    "SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel",
+    "SVGPathElement.prototype.createSVGPathSegLinetoAbs",
+    "SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs",
+    "SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel",
+    "SVGPathElement.prototype.createSVGPathSegLinetoRel",
+    "SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs",
+    "SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel",
+    "SVGPathElement.prototype.createSVGPathSegMovetoAbs",
+    "SVGPathElement.prototype.createSVGPathSegMovetoRel",
+    "SVGPathElement.prototype.getPathSegAtLength",
+    "SVGPathElement.prototype.getPointAtLength",
+    "SVGPathElement.prototype.getTotalLength",
+    "SVGPathSegList.prototype.appendItem",
+    "SVGPathSegList.prototype.clear",
+    "SVGPathSegList.prototype.getItem",
+    "SVGPathSegList.prototype.initialize",
+    "SVGPathSegList.prototype.insertItemBefore",
+    "SVGPathSegList.prototype.removeItem",
+    "SVGPathSegList.prototype.replaceItem",
+    "SVGPoint.prototype.matrixTransform",
+    "SVGPointList.prototype.appendItem",
+    "SVGPointList.prototype.clear",
+    "SVGPointList.prototype.getItem",
+    "SVGPointList.prototype.initialize",
+    "SVGPointList.prototype.insertItemBefore",
+    "SVGPointList.prototype.removeItem",
+    "SVGPointList.prototype.replaceItem",
+    "SVGStringList.prototype.appendItem",
+    "SVGStringList.prototype.clear",
+    "SVGStringList.prototype.getItem",
+    "SVGStringList.prototype.initialize",
+    "SVGStringList.prototype.insertItemBefore",
+    "SVGStringList.prototype.removeItem",
+    "SVGStringList.prototype.replaceItem",
+    "SVGSVGElement.prototype.animationsPaused",
+    "SVGSVGElement.prototype.createSVGAngle",
+    "SVGSVGElement.prototype.createSVGLength",
+    "SVGSVGElement.prototype.createSVGMatrix",
+    "SVGSVGElement.prototype.createSVGNumber",
+    "SVGSVGElement.prototype.createSVGPoint",
+    "SVGSVGElement.prototype.createSVGRect",
+    "SVGSVGElement.prototype.createSVGTransform",
+    "SVGSVGElement.prototype.createSVGTransformFromMatrix",
+    "SVGSVGElement.prototype.deselectAll",
+    "SVGSVGElement.prototype.forceRedraw",
+    "SVGSVGElement.prototype.getCurrentTime",
+    "SVGSVGElement.prototype.getElementById",
+    "SVGSVGElement.prototype.pauseAnimations",
+    "SVGSVGElement.prototype.setCurrentTime",
+    "SVGSVGElement.prototype.suspendRedraw",
+    "SVGSVGElement.prototype.unpauseAnimations",
+    "SVGSVGElement.prototype.unsuspendRedraw",
+    "SVGSVGElement.prototype.unsuspendRedrawAll",
+    "SVGSymbolElement.prototype.hasExtension",
+    "SVGTextContentElement.prototype.getCharNumAtPosition",
+    "SVGTextContentElement.prototype.getComputedTextLength",
+    "SVGTextContentElement.prototype.getEndPositionOfChar",
+    "SVGTextContentElement.prototype.getExtentOfChar",
+    "SVGTextContentElement.prototype.getNumberOfChars",
+    "SVGTextContentElement.prototype.getRotationOfChar",
+    "SVGTextContentElement.prototype.getStartPositionOfChar",
+    "SVGTextContentElement.prototype.getSubStringLength",
+    "SVGTextContentElement.prototype.selectSubString",
+    "SVGTransform.prototype.setMatrix",
+    "SVGTransform.prototype.setRotate",
+    "SVGTransform.prototype.setScale",
+    "SVGTransform.prototype.setSkewX",
+    "SVGTransform.prototype.setSkewY",
+    "SVGTransform.prototype.setTranslate",
+    "SVGTransformList.prototype.appendItem",
+    "SVGTransformList.prototype.clear",
+    "SVGTransformList.prototype.consolidate",
+    "SVGTransformList.prototype.createSVGTransformFromMatrix",
+    "SVGTransformList.prototype.getItem",
+    "SVGTransformList.prototype.initialize",
+    "SVGTransformList.prototype.insertItemBefore",
+    "SVGTransformList.prototype.removeItem",
+    "SVGTransformList.prototype.replaceItem"
+  ]
+}
diff --git a/data/standards/SW.json b/data/standards/SW.json
index 39ea72f..db46f02 100644
--- a/data/standards/SW.json
+++ b/data/standards/SW.json
@@ -1 +1,23 @@
-{"info": {"name": "Service Workers", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/service-workers/"}, "features": ["Cache.prototype.add", "Cache.prototype.addAll", "Cache.prototype.delete", "Cache.prototype.keys", "Cache.prototype.match", "Cache.prototype.matchAll", "Cache.prototype.put", "CacheStorage.prototype.delete", "CacheStorage.prototype.has", "CacheStorage.prototype.keys", "CacheStorage.prototype.match", "CacheStorage.prototype.open", "window.caches"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Service Workers",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/service-workers/"
+  },
+  "features": [
+    "Cache.prototype.add",
+    "Cache.prototype.addAll",
+    "Cache.prototype.delete",
+    "Cache.prototype.keys",
+    "Cache.prototype.match",
+    "Cache.prototype.matchAll",
+    "Cache.prototype.put",
+    "CacheStorage.prototype.delete",
+    "CacheStorage.prototype.has",
+    "CacheStorage.prototype.keys",
+    "CacheStorage.prototype.match",
+    "CacheStorage.prototype.open",
+    "window.caches"
+  ]
+}
diff --git a/data/standards/TC.json b/data/standards/TC.json
index d3f5a1d..9e82feb 100644
--- a/data/standards/TC.json
+++ b/data/standards/TC.json
@@ -1 +1,11 @@
-{"info": {"name": "Timing control for script-based animations", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/animation-timing"}, "features": ["window.cancelAnimationFrame"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Timing Control for Script-Based Animations",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/animation-timing"
+  },
+  "features": [
+    "window.cancelAnimationFrame"
+  ]
+}
diff --git a/data/standards/TPE.json b/data/standards/TPE.json
index d000c51..75270fb 100644
--- a/data/standards/TPE.json
+++ b/data/standards/TPE.json
@@ -1 +1,11 @@
-{"info": {"name": "Tracking Preference Expression (DNT)", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/tracking-dnt/"}, "features": ["navigator.doNotTrack"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Tracking Preference Expression (DNT)",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/tracking-dnt/"
+  },
+  "features": [
+    "navigator.doNotTrack"
+  ]
+}
diff --git a/data/standards/UIE.json b/data/standards/UIE.json
index 72c6646..c62ea81 100644
--- a/data/standards/UIE.json
+++ b/data/standards/UIE.json
@@ -1 +1,18 @@
-{"info": {"name": "UI Events Specification", "subsection_number": null, "subsection_name": null, "url": "https://w3c.github.io/uievents/"}, "features": ["CompositionEvent.prototype.initCompositionEvent", "Event.prototype.stopImmediatePropagation", "KeyboardEvent.prototype.getModifierState", "KeyboardEvent.prototype.initKeyEvent", "MouseEvent.prototype.getModifierState", "MouseEvent.prototype.initMouseEvent", "MutationEvent.prototype.initMutationEvent", "UIEvent.prototype.initUIEvent"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "UI Events Specification",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://w3c.github.io/uievents/"
+  },
+  "features": [
+    "CompositionEvent.prototype.initCompositionEvent",
+    "Event.prototype.stopImmediatePropagation",
+    "KeyboardEvent.prototype.getModifierState",
+    "KeyboardEvent.prototype.initKeyEvent",
+    "MouseEvent.prototype.getModifierState",
+    "MouseEvent.prototype.initMouseEvent",
+    "MutationEvent.prototype.initMutationEvent",
+    "UIEvent.prototype.initUIEvent"
+  ]
+}
diff --git a/data/standards/URL.json b/data/standards/URL.json
index cc04f6a..7797648 100644
--- a/data/standards/URL.json
+++ b/data/standards/URL.json
@@ -1 +1,16 @@
-{"info": {"name": "URL", "subsection_number": null, "subsection_name": null, "url": "https://url.spec.whatwg.org/"}, "features": ["URLSearchParams.prototype.append", "URLSearchParams.prototype.delete", "URLSearchParams.prototype.get", "URLSearchParams.prototype.getAll", "URLSearchParams.prototype.has", "URLSearchParams.prototype.set"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "URL",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://url.spec.whatwg.org/"
+  },
+  "features": [
+    "URLSearchParams.prototype.append",
+    "URLSearchParams.prototype.delete",
+    "URLSearchParams.prototype.get",
+    "URLSearchParams.prototype.getAll",
+    "URLSearchParams.prototype.has",
+    "URLSearchParams.prototype.set"
+  ]
+}
diff --git a/data/standards/UTL.json b/data/standards/UTL.json
index fce2de1..c8d764e 100644
--- a/data/standards/UTL.json
+++ b/data/standards/UTL.json
@@ -1 +1,14 @@
-{"info": {"name": "User Timing Level 2", "subsection_number": null, "subsection_name": null, "url": "https://w3c.github.io/user-timing/"}, "features": ["Performance.prototype.clearMarks", "Performance.prototype.clearMeasures", "Performance.prototype.mark", "Performance.prototype.measure"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "User Timing Level 2",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://w3c.github.io/user-timing/"
+  },
+  "features": [
+    "Performance.prototype.clearMarks",
+    "Performance.prototype.clearMeasures",
+    "Performance.prototype.mark",
+    "Performance.prototype.measure"
+  ]
+}
diff --git a/data/standards/V.json b/data/standards/V.json
index b0c90b4..79f19af 100644
--- a/data/standards/V.json
+++ b/data/standards/V.json
@@ -1 +1,11 @@
-{"info": {"name": "Vibration API", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/vibration/"}, "features": ["Navigator.prototype.vibrate"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Vibration API",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/vibration/"
+  },
+  "features": [
+    "Navigator.prototype.vibrate"
+  ]
+}
diff --git a/data/standards/WCR.json b/data/standards/WCR.json
index 7cfcddf..01ceb20 100644
--- a/data/standards/WCR.json
+++ b/data/standards/WCR.json
@@ -1 +1,24 @@
-{"info": {"name": "Web Cryptography API", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/WebCryptoAPI/"}, "features": ["Crypto.prototype.getRandomValues", "SubtleCrypto.prototype.decrypt", "SubtleCrypto.prototype.deriveBits", "SubtleCrypto.prototype.deriveKey", "SubtleCrypto.prototype.digest", "SubtleCrypto.prototype.encrypt", "SubtleCrypto.prototype.exportKey", "SubtleCrypto.prototype.generateKey", "SubtleCrypto.prototype.importKey", "SubtleCrypto.prototype.sign", "SubtleCrypto.prototype.unwrapKey", "SubtleCrypto.prototype.verify", "SubtleCrypto.prototype.wrapKey", "window.crypto"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Web Cryptography API",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/WebCryptoAPI/"
+  },
+  "features": [
+    "Crypto.prototype.getRandomValues",
+    "SubtleCrypto.prototype.decrypt",
+    "SubtleCrypto.prototype.deriveBits",
+    "SubtleCrypto.prototype.deriveKey",
+    "SubtleCrypto.prototype.digest",
+    "SubtleCrypto.prototype.encrypt",
+    "SubtleCrypto.prototype.exportKey",
+    "SubtleCrypto.prototype.generateKey",
+    "SubtleCrypto.prototype.importKey",
+    "SubtleCrypto.prototype.sign",
+    "SubtleCrypto.prototype.unwrapKey",
+    "SubtleCrypto.prototype.verify",
+    "SubtleCrypto.prototype.wrapKey",
+    "window.crypto"
+  ]
+}
diff --git a/data/standards/WEBA.json b/data/standards/WEBA.json
index a3a4c32..3524926 100644
--- a/data/standards/WEBA.json
+++ b/data/standards/WEBA.json
@@ -1 +1,62 @@
-{"info": {"name": "Web Audio API", "subsection_number": null, "subsection_name": null, "url": "https://webaudio.github.io/web-audio-api"}, "features": ["AnalyserNode.prototype.getByteFrequencyData", "AnalyserNode.prototype.getByteTimeDomainData", "AnalyserNode.prototype.getFloatFrequencyData", "AnalyserNode.prototype.getFloatTimeDomainData", "AudioBuffer.prototype.copyFromChannel", "AudioBuffer.prototype.copyToChannel", "AudioBuffer.prototype.getChannelData", "AudioBufferSourceNode.prototype.start", "AudioBufferSourceNode.prototype.stop", "AudioContext.prototype.close", "AudioContext.prototype.createAnalyser", "AudioContext.prototype.createBiquadFilter", "AudioContext.prototype.createBuffer", "AudioContext.prototype.createBufferSource", "AudioContext.prototype.createChannelMerger", "AudioContext.prototype.createChannelSplitter", "AudioContext.prototype.createConvolver", "AudioContext.prototype.createDelay", "AudioContext.prototype.createDynamicsCompressor", "AudioContext.prototype.createGain", "AudioContext.prototype.createMediaElementSource", "AudioContext.prototype.createMediaStreamDestination", "AudioContext.prototype.createMediaStreamSource", "AudioContext.prototype.createOscillator", "AudioContext.prototype.createPanner", "AudioContext.prototype.createPeriodicWave", "AudioContext.prototype.createScriptProcessor", "AudioContext.prototype.createStereoPanner", "AudioContext.prototype.createWaveShaper", "AudioContext.prototype.decodeAudioData", "AudioContext.prototype.resume", "AudioContext.prototype.suspend", "AudioListener.prototype.setOrientation", "AudioListener.prototype.setPosition", "AudioListener.prototype.setVelocity", "AudioNode.prototype.connect", "AudioNode.prototype.disconnect", "AudioParam.prototype.cancelScheduledValues", "AudioParam.prototype.exponentialRampToValueAtTime", "AudioParam.prototype.linearRampToValueAtTime", "AudioParam.prototype.setValueAtTime", "AudioParam.prototype.setValueCurveAtTime", "BiquadFilterNode.prototype.getFrequencyResponse", "OfflineAudioContext.prototype.resume", "OfflineAudioContext.prototype.startRendering", "OfflineAudioContext.prototype.suspend", "OscillatorNode.prototype.setPeriodicWave", "OscillatorNode.prototype.start", "OscillatorNode.prototype.stop", "PannerNode.prototype.setOrientation", "PannerNode.prototype.setPosition", "PannerNode.prototype.setVelocity"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Web Audio API",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://webaudio.github.io/web-audio-api"
+  },
+  "features": [
+    "AnalyserNode.prototype.getByteFrequencyData",
+    "AnalyserNode.prototype.getByteTimeDomainData",
+    "AnalyserNode.prototype.getFloatFrequencyData",
+    "AnalyserNode.prototype.getFloatTimeDomainData",
+    "AudioBuffer.prototype.copyFromChannel",
+    "AudioBuffer.prototype.copyToChannel",
+    "AudioBuffer.prototype.getChannelData",
+    "AudioBufferSourceNode.prototype.start",
+    "AudioBufferSourceNode.prototype.stop",
+    "AudioContext.prototype.close",
+    "AudioContext.prototype.createAnalyser",
+    "AudioContext.prototype.createBiquadFilter",
+    "AudioContext.prototype.createBuffer",
+    "AudioContext.prototype.createBufferSource",
+    "AudioContext.prototype.createChannelMerger",
+    "AudioContext.prototype.createChannelSplitter",
+    "AudioContext.prototype.createConvolver",
+    "AudioContext.prototype.createDelay",
+    "AudioContext.prototype.createDynamicsCompressor",
+    "AudioContext.prototype.createGain",
+    "AudioContext.prototype.createMediaElementSource",
+    "AudioContext.prototype.createMediaStreamDestination",
+    "AudioContext.prototype.createMediaStreamSource",
+    "AudioContext.prototype.createOscillator",
+    "AudioContext.prototype.createPanner",
+    "AudioContext.prototype.createPeriodicWave",
+    "AudioContext.prototype.createScriptProcessor",
+    "AudioContext.prototype.createStereoPanner",
+    "AudioContext.prototype.createWaveShaper",
+    "AudioContext.prototype.decodeAudioData",
+    "AudioContext.prototype.resume",
+    "AudioContext.prototype.suspend",
+    "AudioListener.prototype.setOrientation",
+    "AudioListener.prototype.setPosition",
+    "AudioListener.prototype.setVelocity",
+    "AudioNode.prototype.connect",
+    "AudioNode.prototype.disconnect",
+    "AudioParam.prototype.cancelScheduledValues",
+    "AudioParam.prototype.exponentialRampToValueAtTime",
+    "AudioParam.prototype.linearRampToValueAtTime",
+    "AudioParam.prototype.setValueAtTime",
+    "AudioParam.prototype.setValueCurveAtTime",
+    "BiquadFilterNode.prototype.getFrequencyResponse",
+    "OfflineAudioContext.prototype.resume",
+    "OfflineAudioContext.prototype.startRendering",
+    "OfflineAudioContext.prototype.suspend",
+    "OscillatorNode.prototype.setPeriodicWave",
+    "OscillatorNode.prototype.start",
+    "OscillatorNode.prototype.stop",
+    "PannerNode.prototype.setOrientation",
+    "PannerNode.prototype.setPosition",
+    "PannerNode.prototype.setVelocity"
+  ]
+}
diff --git a/data/standards/WEBGL.json b/data/standards/WEBGL.json
index 7e7c9c8..4c48cc9 100644
--- a/data/standards/WEBGL.json
+++ b/data/standards/WEBGL.json
@@ -1 +1,146 @@
-{"info": {"name": "WebGL Specification", "subsection_number": null, "subsection_name": null, "url": "https://www.khronos.org/registry/webgl/specs/latest/1.0/"}, "features": ["WebGLRenderingContext.prototype.activeTexture", "WebGLRenderingContext.prototype.attachShader", "WebGLRenderingContext.prototype.bindAttribLocation", "WebGLRenderingContext.prototype.bindBuffer", "WebGLRenderingContext.prototype.bindFramebuffer", "WebGLRenderingContext.prototype.bindRenderbuffer", "WebGLRenderingContext.prototype.bindTexture", "WebGLRenderingContext.prototype.blendColor", "WebGLRenderingContext.prototype.blendEquation", "WebGLRenderingContext.prototype.blendEquationSeparate", "WebGLRenderingContext.prototype.blendFunc", "WebGLRenderingContext.prototype.blendFuncSeparate", "WebGLRenderingContext.prototype.bufferData", "WebGLRenderingContext.prototype.bufferSubData", "WebGLRenderingContext.prototype.checkFramebufferStatus", "WebGLRenderingContext.prototype.clear", "WebGLRenderingContext.prototype.clearColor", "WebGLRenderingContext.prototype.clearDepth", "WebGLRenderingContext.prototype.clearStencil", "WebGLRenderingContext.prototype.colorMask", "WebGLRenderingContext.prototype.compileShader", "WebGLRenderingContext.prototype.compressedTexImage2D", "WebGLRenderingContext.prototype.compressedTexSubImage2D", "WebGLRenderingContext.prototype.copyTexImage2D", "WebGLRenderingContext.prototype.copyTexSubImage2D", "WebGLRenderingContext.prototype.createBuffer", "WebGLRenderingContext.prototype.createFramebuffer", "WebGLRenderingContext.prototype.createProgram", "WebGLRenderingContext.prototype.createRenderbuffer", "WebGLRenderingContext.prototype.createShader", "WebGLRenderingContext.prototype.createTexture", "WebGLRenderingContext.prototype.cullFace", "WebGLRenderingContext.prototype.deleteBuffer", "WebGLRenderingContext.prototype.deleteFramebuffer", "WebGLRenderingContext.prototype.deleteProgram", "WebGLRenderingContext.prototype.deleteRenderbuffer", "WebGLRenderingContext.prototype.deleteShader", "WebGLRenderingContext.prototype.deleteTexture", "WebGLRenderingContext.prototype.depthFunc", "WebGLRenderingContext.prototype.depthMask", "WebGLRenderingContext.prototype.depthRange", "WebGLRenderingContext.prototype.detachShader", "WebGLRenderingContext.prototype.disable", "WebGLRenderingContext.prototype.disableVertexAttribArray", "WebGLRenderingContext.prototype.drawArrays", "WebGLRenderingContext.prototype.drawElements", "WebGLRenderingContext.prototype.enable", "WebGLRenderingContext.prototype.enableVertexAttribArray", "WebGLRenderingContext.prototype.finish", "WebGLRenderingContext.prototype.flush", "WebGLRenderingContext.prototype.framebufferRenderbuffer", "WebGLRenderingContext.prototype.framebufferTexture2D", "WebGLRenderingContext.prototype.frontFace", "WebGLRenderingContext.prototype.generateMipmap", "WebGLRenderingContext.prototype.getActiveAttrib", "WebGLRenderingContext.prototype.getActiveUniform", "WebGLRenderingContext.prototype.getAttachedShaders", "WebGLRenderingContext.prototype.getAttribLocation", "WebGLRenderingContext.prototype.getBufferParameter", "WebGLRenderingContext.prototype.getContextAttributes", "WebGLRenderingContext.prototype.getError", "WebGLRenderingContext.prototype.getExtension", "WebGLRenderingContext.prototype.getFramebufferAttachmentParameter", "WebGLRenderingContext.prototype.getParameter", "WebGLRenderingContext.prototype.getProgramInfoLog", "WebGLRenderingContext.prototype.getProgramParameter", "WebGLRenderingContext.prototype.getRenderbufferParameter", "WebGLRenderingContext.prototype.getShaderInfoLog", "WebGLRenderingContext.prototype.getShaderParameter", "WebGLRenderingContext.prototype.getShaderPrecisionFormat", "WebGLRenderingContext.prototype.getShaderSource", "WebGLRenderingContext.prototype.getSupportedExtensions", "WebGLRenderingContext.prototype.getTexParameter", "WebGLRenderingContext.prototype.getUniform", "WebGLRenderingContext.prototype.getUniformLocation", "WebGLRenderingContext.prototype.getVertexAttrib", "WebGLRenderingContext.prototype.getVertexAttribOffset", "WebGLRenderingContext.prototype.hint", "WebGLRenderingContext.prototype.isBuffer", "WebGLRenderingContext.prototype.isContextLost", "WebGLRenderingContext.prototype.isEnabled", "WebGLRenderingContext.prototype.isFramebuffer", "WebGLRenderingContext.prototype.isProgram", "WebGLRenderingContext.prototype.isRenderbuffer", "WebGLRenderingContext.prototype.isShader", "WebGLRenderingContext.prototype.isTexture", "WebGLRenderingContext.prototype.lineWidth", "WebGLRenderingContext.prototype.linkProgram", "WebGLRenderingContext.prototype.pixelStorei", "WebGLRenderingContext.prototype.polygonOffset", "WebGLRenderingContext.prototype.readPixels", "WebGLRenderingContext.prototype.renderbufferStorage", "WebGLRenderingContext.prototype.sampleCoverage", "WebGLRenderingContext.prototype.scissor", "WebGLRenderingContext.prototype.shaderSource", "WebGLRenderingContext.prototype.stencilFunc", "WebGLRenderingContext.prototype.stencilFuncSeparate", "WebGLRenderingContext.prototype.stencilMask", "WebGLRenderingContext.prototype.stencilMaskSeparate", "WebGLRenderingContext.prototype.stencilOp", "WebGLRenderingContext.prototype.stencilOpSeparate", "WebGLRenderingContext.prototype.texImage2D", "WebGLRenderingContext.prototype.texParameterf", "WebGLRenderingContext.prototype.texParameteri", "WebGLRenderingContext.prototype.texSubImage2D", "WebGLRenderingContext.prototype.uniform1f", "WebGLRenderingContext.prototype.uniform1fv", "WebGLRenderingContext.prototype.uniform1i", "WebGLRenderingContext.prototype.uniform1iv", "WebGLRenderingContext.prototype.uniform2f", "WebGLRenderingContext.prototype.uniform2fv", "WebGLRenderingContext.prototype.uniform2i", "WebGLRenderingContext.prototype.uniform2iv", "WebGLRenderingContext.prototype.uniform3f", "WebGLRenderingContext.prototype.uniform3fv", "WebGLRenderingContext.prototype.uniform3i", "WebGLRenderingContext.prototype.uniform3iv", "WebGLRenderingContext.prototype.uniform4f", "WebGLRenderingContext.prototype.uniform4fv", "WebGLRenderingContext.prototype.uniform4i", "WebGLRenderingContext.prototype.uniform4iv", "WebGLRenderingContext.prototype.uniformMatrix2fv", "WebGLRenderingContext.prototype.uniformMatrix3fv", "WebGLRenderingContext.prototype.uniformMatrix4fv", "WebGLRenderingContext.prototype.useProgram", "WebGLRenderingContext.prototype.validateProgram", "WebGLRenderingContext.prototype.vertexAttrib1f", "WebGLRenderingContext.prototype.vertexAttrib1fv", "WebGLRenderingContext.prototype.vertexAttrib2f", "WebGLRenderingContext.prototype.vertexAttrib2fv", "WebGLRenderingContext.prototype.vertexAttrib3f", "WebGLRenderingContext.prototype.vertexAttrib3fv", "WebGLRenderingContext.prototype.vertexAttrib4f", "WebGLRenderingContext.prototype.vertexAttrib4fv", "WebGLRenderingContext.prototype.vertexAttribPointer", "WebGLRenderingContext.prototype.viewport"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "WebGL Specification",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.khronos.org/registry/webgl/specs/latest/1.0/"
+  },
+  "features": [
+    "WebGLRenderingContext.prototype.activeTexture",
+    "WebGLRenderingContext.prototype.attachShader",
+    "WebGLRenderingContext.prototype.bindAttribLocation",
+    "WebGLRenderingContext.prototype.bindBuffer",
+    "WebGLRenderingContext.prototype.bindFramebuffer",
+    "WebGLRenderingContext.prototype.bindRenderbuffer",
+    "WebGLRenderingContext.prototype.bindTexture",
+    "WebGLRenderingContext.prototype.blendColor",
+    "WebGLRenderingContext.prototype.blendEquation",
+    "WebGLRenderingContext.prototype.blendEquationSeparate",
+    "WebGLRenderingContext.prototype.blendFunc",
+    "WebGLRenderingContext.prototype.blendFuncSeparate",
+    "WebGLRenderingContext.prototype.bufferData",
+    "WebGLRenderingContext.prototype.bufferSubData",
+    "WebGLRenderingContext.prototype.checkFramebufferStatus",
+    "WebGLRenderingContext.prototype.clear",
+    "WebGLRenderingContext.prototype.clearColor",
+    "WebGLRenderingContext.prototype.clearDepth",
+    "WebGLRenderingContext.prototype.clearStencil",
+    "WebGLRenderingContext.prototype.colorMask",
+    "WebGLRenderingContext.prototype.compileShader",
+    "WebGLRenderingContext.prototype.compressedTexImage2D",
+    "WebGLRenderingContext.prototype.compressedTexSubImage2D",
+    "WebGLRenderingContext.prototype.copyTexImage2D",
+    "WebGLRenderingContext.prototype.copyTexSubImage2D",
+    "WebGLRenderingContext.prototype.createBuffer",
+    "WebGLRenderingContext.prototype.createFramebuffer",
+    "WebGLRenderingContext.prototype.createProgram",
+    "WebGLRenderingContext.prototype.createRenderbuffer",
+    "WebGLRenderingContext.prototype.createShader",
+    "WebGLRenderingContext.prototype.createTexture",
+    "WebGLRenderingContext.prototype.cullFace",
+    "WebGLRenderingContext.prototype.deleteBuffer",
+    "WebGLRenderingContext.prototype.deleteFramebuffer",
+    "WebGLRenderingContext.prototype.deleteProgram",
+    "WebGLRenderingContext.prototype.deleteRenderbuffer",
+    "WebGLRenderingContext.prototype.deleteShader",
+    "WebGLRenderingContext.prototype.deleteTexture",
+    "WebGLRenderingContext.prototype.depthFunc",
+    "WebGLRenderingContext.prototype.depthMask",
+    "WebGLRenderingContext.prototype.depthRange",
+    "WebGLRenderingContext.prototype.detachShader",
+    "WebGLRenderingContext.prototype.disable",
+    "WebGLRenderingContext.prototype.disableVertexAttribArray",
+    "WebGLRenderingContext.prototype.drawArrays",
+    "WebGLRenderingContext.prototype.drawElements",
+    "WebGLRenderingContext.prototype.enable",
+    "WebGLRenderingContext.prototype.enableVertexAttribArray",
+    "WebGLRenderingContext.prototype.finish",
+    "WebGLRenderingContext.prototype.flush",
+    "WebGLRenderingContext.prototype.framebufferRenderbuffer",
+    "WebGLRenderingContext.prototype.framebufferTexture2D",
+    "WebGLRenderingContext.prototype.frontFace",
+    "WebGLRenderingContext.prototype.generateMipmap",
+    "WebGLRenderingContext.prototype.getActiveAttrib",
+    "WebGLRenderingContext.prototype.getActiveUniform",
+    "WebGLRenderingContext.prototype.getAttachedShaders",
+    "WebGLRenderingContext.prototype.getAttribLocation",
+    "WebGLRenderingContext.prototype.getBufferParameter",
+    "WebGLRenderingContext.prototype.getContextAttributes",
+    "WebGLRenderingContext.prototype.getError",
+    "WebGLRenderingContext.prototype.getExtension",
+    "WebGLRenderingContext.prototype.getFramebufferAttachmentParameter",
+    "WebGLRenderingContext.prototype.getParameter",
+    "WebGLRenderingContext.prototype.getProgramInfoLog",
+    "WebGLRenderingContext.prototype.getProgramParameter",
+    "WebGLRenderingContext.prototype.getRenderbufferParameter",
+    "WebGLRenderingContext.prototype.getShaderInfoLog",
+    "WebGLRenderingContext.prototype.getShaderParameter",
+    "WebGLRenderingContext.prototype.getShaderPrecisionFormat",
+    "WebGLRenderingContext.prototype.getShaderSource",
+    "WebGLRenderingContext.prototype.getSupportedExtensions",
+    "WebGLRenderingContext.prototype.getTexParameter",
+    "WebGLRenderingContext.prototype.getUniform",
+    "WebGLRenderingContext.prototype.getUniformLocation",
+    "WebGLRenderingContext.prototype.getVertexAttrib",
+    "WebGLRenderingContext.prototype.getVertexAttribOffset",
+    "WebGLRenderingContext.prototype.hint",
+    "WebGLRenderingContext.prototype.isBuffer",
+    "WebGLRenderingContext.prototype.isContextLost",
+    "WebGLRenderingContext.prototype.isEnabled",
+    "WebGLRenderingContext.prototype.isFramebuffer",
+    "WebGLRenderingContext.prototype.isProgram",
+    "WebGLRenderingContext.prototype.isRenderbuffer",
+    "WebGLRenderingContext.prototype.isShader",
+    "WebGLRenderingContext.prototype.isTexture",
+    "WebGLRenderingContext.prototype.lineWidth",
+    "WebGLRenderingContext.prototype.linkProgram",
+    "WebGLRenderingContext.prototype.pixelStorei",
+    "WebGLRenderingContext.prototype.polygonOffset",
+    "WebGLRenderingContext.prototype.readPixels",
+    "WebGLRenderingContext.prototype.renderbufferStorage",
+    "WebGLRenderingContext.prototype.sampleCoverage",
+    "WebGLRenderingContext.prototype.scissor",
+    "WebGLRenderingContext.prototype.shaderSource",
+    "WebGLRenderingContext.prototype.stencilFunc",
+    "WebGLRenderingContext.prototype.stencilFuncSeparate",
+    "WebGLRenderingContext.prototype.stencilMask",
+    "WebGLRenderingContext.prototype.stencilMaskSeparate",
+    "WebGLRenderingContext.prototype.stencilOp",
+    "WebGLRenderingContext.prototype.stencilOpSeparate",
+    "WebGLRenderingContext.prototype.texImage2D",
+    "WebGLRenderingContext.prototype.texParameterf",
+    "WebGLRenderingContext.prototype.texParameteri",
+    "WebGLRenderingContext.prototype.texSubImage2D",
+    "WebGLRenderingContext.prototype.uniform1f",
+    "WebGLRenderingContext.prototype.uniform1fv",
+    "WebGLRenderingContext.prototype.uniform1i",
+    "WebGLRenderingContext.prototype.uniform1iv",
+    "WebGLRenderingContext.prototype.uniform2f",
+    "WebGLRenderingContext.prototype.uniform2fv",
+    "WebGLRenderingContext.prototype.uniform2i",
+    "WebGLRenderingContext.prototype.uniform2iv",
+    "WebGLRenderingContext.prototype.uniform3f",
+    "WebGLRenderingContext.prototype.uniform3fv",
+    "WebGLRenderingContext.prototype.uniform3i",
+    "WebGLRenderingContext.prototype.uniform3iv",
+    "WebGLRenderingContext.prototype.uniform4f",
+    "WebGLRenderingContext.prototype.uniform4fv",
+    "WebGLRenderingContext.prototype.uniform4i",
+    "WebGLRenderingContext.prototype.uniform4iv",
+    "WebGLRenderingContext.prototype.uniformMatrix2fv",
+    "WebGLRenderingContext.prototype.uniformMatrix3fv",
+    "WebGLRenderingContext.prototype.uniformMatrix4fv",
+    "WebGLRenderingContext.prototype.useProgram",
+    "WebGLRenderingContext.prototype.validateProgram",
+    "WebGLRenderingContext.prototype.vertexAttrib1f",
+    "WebGLRenderingContext.prototype.vertexAttrib1fv",
+    "WebGLRenderingContext.prototype.vertexAttrib2f",
+    "WebGLRenderingContext.prototype.vertexAttrib2fv",
+    "WebGLRenderingContext.prototype.vertexAttrib3f",
+    "WebGLRenderingContext.prototype.vertexAttrib3fv",
+    "WebGLRenderingContext.prototype.vertexAttrib4f",
+    "WebGLRenderingContext.prototype.vertexAttrib4fv",
+    "WebGLRenderingContext.prototype.vertexAttribPointer",
+    "WebGLRenderingContext.prototype.viewport"
+  ]
+}
diff --git a/data/standards/WEBVTT.json b/data/standards/WEBVTT.json
index 8928449..067c90f 100644
--- a/data/standards/WEBVTT.json
+++ b/data/standards/WEBVTT.json
@@ -1 +1,11 @@
-{"info": {"name": "WebVTT: The Web Video Text Tracks Format", "subsection_number": null, "subsection_name": null, "url": "https://w3c.github.io/webvtt/"}, "features": ["VTTCue.prototype.getCueAsHTML"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "WebVTT: The Web Video Text Tracks Format",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://w3c.github.io/webvtt/"
+  },
+  "features": [
+    "VTTCue.prototype.getCueAsHTML"
+  ]
+}
diff --git a/data/standards/WN.json b/data/standards/WN.json
index bbfa102..14a9537 100644
--- a/data/standards/WN.json
+++ b/data/standards/WN.json
@@ -1 +1,15 @@
-{"info": {"name": "Web Notifications", "subsection_number": null, "subsection_name": null, "url": "https://notifications.spec.whatwg.org/"}, "features": ["DesktopNotification.prototype.show", "DesktopNotificationCenter.prototype.createNotification", "Notification.get", "Notification.prototype.close", "Notification.requestPermission"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "Web Notifications",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://notifications.spec.whatwg.org/"
+  },
+  "features": [
+    "DesktopNotification.prototype.show",
+    "DesktopNotificationCenter.prototype.createNotification",
+    "Notification.get",
+    "Notification.prototype.close",
+    "Notification.requestPermission"
+  ]
+}
diff --git a/data/standards/WRTC.json b/data/standards/WRTC.json
index 3e3f137..449d844 100644
--- a/data/standards/WRTC.json
+++ b/data/standards/WRTC.json
@@ -1 +1,38 @@
-{"info": {"name": "WebRTC 1.0: Real-time Communication Between Browser", "subsection_number": null, "subsection_name": null, "url": "https://www.w3.org/TR/webrtc/"}, "features": ["DataChannel.prototype.close", "DataChannel.prototype.send", "mozRTCPeerConnection.generateCertificate", "mozRTCPeerConnection.prototype.addIceCandidate", "mozRTCPeerConnection.prototype.addStream", "mozRTCPeerConnection.prototype.addTrack", "mozRTCPeerConnection.prototype.close", "mozRTCPeerConnection.prototype.createAnswer", "mozRTCPeerConnection.prototype.createDataChannel", "mozRTCPeerConnection.prototype.createOffer", "mozRTCPeerConnection.prototype.getConfiguration", "mozRTCPeerConnection.prototype.getIdentityAssertion", "mozRTCPeerConnection.prototype.getLocalStreams", "mozRTCPeerConnection.prototype.getReceivers", "mozRTCPeerConnection.prototype.getRemoteStreams", "mozRTCPeerConnection.prototype.getSenders", "mozRTCPeerConnection.prototype.getStats", "mozRTCPeerConnection.prototype.getStreamById", "mozRTCPeerConnection.prototype.removeStream", "mozRTCPeerConnection.prototype.removeTrack", "mozRTCPeerConnection.prototype.setIdentityProvider", "mozRTCPeerConnection.prototype.setLocalDescription", "mozRTCPeerConnection.prototype.setRemoteDescription", "mozRTCPeerConnection.prototype.updateIce", "RTCRtpSender.prototype.replaceTrack", "RTCStatsReport.prototype.forEach", "RTCStatsReport.prototype.get", "RTCStatsReport.prototype.has"]}
\ No newline at end of file
+{
+  "info": {
+    "name": "WebRTC 1.0: Real-time Communication Between Browser",
+    "subsection_number": null,
+    "subsection_name": null,
+    "url": "https://www.w3.org/TR/webrtc/"
+  },
+  "features": [
+    "DataChannel.prototype.close",
+    "DataChannel.prototype.send",
+    "mozRTCPeerConnection.generateCertificate",
+    "mozRTCPeerConnection.prototype.addIceCandidate",
+    "mozRTCPeerConnection.prototype.addStream",
+    "mozRTCPeerConnection.prototype.addTrack",
+    "mozRTCPeerConnection.prototype.close",
+    "mozRTCPeerConnection.prototype.createAnswer",
+    "mozRTCPeerConnection.prototype.createDataChannel",
+    "mozRTCPeerConnection.prototype.createOffer",
+    "mozRTCPeerConnection.prototype.getConfiguration",
+    "mozRTCPeerConnection.prototype.getIdentityAssertion",
+    "mozRTCPeerConnection.prototype.getLocalStreams",
+    "mozRTCPeerConnection.prototype.getReceivers",
+    "mozRTCPeerConnection.prototype.getRemoteStreams",
+    "mozRTCPeerConnection.prototype.getSenders",
+    "mozRTCPeerConnection.prototype.getStats",
+    "mozRTCPeerConnection.prototype.getStreamById",
+    "mozRTCPeerConnection.prototype.removeStream",
+    "mozRTCPeerConnection.prototype.removeTrack",
+    "mozRTCPeerConnection.prototype.setIdentityProvider",
+    "mozRTCPeerConnection.prototype.setLocalDescription",
+    "mozRTCPeerConnection.prototype.setRemoteDescription",
+    "mozRTCPeerConnection.prototype.updateIce",
+    "RTCRtpSender.prototype.replaceTrack",
+    "RTCStatsReport.prototype.forEach",
+    "RTCStatsReport.prototype.get",
+    "RTCStatsReport.prototype.has"
+  ]
+}
diff --git a/gulpfile.js b/gulpfile.js
index e05e551..bd5c9a8 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -11,7 +11,7 @@ gulp.task('default', function () {
             aLine.indexOf(" * ") === 0
         );
         return lineStartsWithComment;
-    }; 
+    };
 
     const builtScriptComment = "/** This file is automatically generated. **/\n";
     const standardsDefDir = "data/standards";
@@ -26,7 +26,10 @@ gulp.task('default', function () {
 
             const fileContents = fs.readFileSync(standardsDefDir + "/" + next, {encoding: "utf8"});
             const standardContents = JSON.parse(fileContents);
-            prev[standardContents.info.name] = standardContents;
+            const nameParts = [standardContents.info.name, standardContents.info.subsection_name].filter(part => !!part);
+            const standardIdenitifer = nameParts.join(": ").trim();
+            standardContents.info.idenitifer = standardIdenitifer;
+            prev[standardIdenitifer] = standardContents;
             return prev;
         }, {});
 
@@ -36,13 +39,13 @@ gulp.task('default', function () {
 
     const proxyBlockSrc = fs.readFileSync("content_scripts/src/proxyblock.js", "utf8");
     const instrumentSrc = fs.readFileSync("content_scripts/src/instrument.js", "utf8");
-    
+
     const stripCommentsFromSource = function (source) {
         const fileLines = source.split("\n");
         const linesWithoutComments = fileLines.filter(aLine => !isLineAComment(aLine));
         return linesWithoutComments.join("\n");
     };
-    
+
     const proxyBlockSrcWOComments = stripCommentsFromSource(proxyBlockSrc);
     const instrumentSrcWOComments = stripCommentsFromSource(instrumentSrc);
     const instrumentSrcWithProxyInjected = instrumentSrcWOComments.replace(
diff --git a/lib/pack.js b/lib/pack.js
index 6a17b78..2504eeb 100644
--- a/lib/pack.js
+++ b/lib/pack.js
@@ -5,6 +5,22 @@
 
     const bucketSize = 8;
 
+    const bufferToBase64 = function (buf) {
+        const binstr = Array.prototype.map.call(buf, function (ch) {
+            return String.fromCharCode(ch);
+        }).join('');
+        return btoa(binstr);
+    };
+
+    const base64ToBuffer = function (base64) {
+        const binstr = atob(base64);
+        const buf = new Uint8Array(binstr.length);
+        Array.prototype.forEach.call(binstr, function (ch, i) {
+          buf[i] = ch.charCodeAt(0);
+        });
+        return buf;
+    };
+
     const binOptionsReduceFunction = function (binSize, prev, next) {
 
         if (prev.length === 0) {
@@ -46,8 +62,8 @@
             bitFields[i] = bitfield;
         }
 
-        const decoder = new TextDecoder('utf8');
-        return window.btoa(decoder.decode(bitFields));
+        const encodedString = bufferToBase64(bitFields);
+        return encodedString;
     };
 
     const unpack = function (options, data) {
@@ -57,9 +73,7 @@
         options.sort();
 
         const binnedOptions = options.reduce(binToBucketSizeFunc, []);
-
-        const encoder = new TextEncoder('utf8');
-        const bitFields = encoder.encode(window.atob(data));
+        const bitFields = base64ToBuffer(data);
 
         const result = [];
 
diff --git a/manifest.json b/manifest.json
index 507f670..14a39d3 100644
--- a/manifest.json
+++ b/manifest.json
@@ -1,7 +1,7 @@
 {
   "manifest_version": 2,
   "name": "WebAPI Manager",
-  "version": "0.3",
+  "version": "0.4",
   "description": "Improves browser security by restricting page access to parts of the Web API.",
   "permissions": [
     "http://*/*", "https://*/*",