about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-05-03 16:45:14 +0300
committerManeraKai <manerakai@protonmail.com>2022-05-03 16:45:29 +0300
commita78d6cdd04d491fcc773a4530d7887eee2ba4a59 (patch)
tree4784be6bdd47a0da9af535961a90e26e02393ae3 /src
parentUpdate README.md (diff)
downloadlibredirect-a78d6cdd04d491fcc773a4530d7887eee2ba4a59.zip
Restructuring and simplifying code #229
Diffstat (limited to 'src')
-rw-r--r--src/assets/javascripts/helpers/common.js115
-rw-r--r--src/assets/javascripts/helpers/imgur.js208
-rw-r--r--src/assets/javascripts/helpers/instagram.js170
-rw-r--r--src/assets/javascripts/helpers/reddit.js1
-rw-r--r--src/assets/javascripts/helpers/youtube/invidious.js133
-rw-r--r--src/assets/javascripts/helpers/youtube/options.js223
-rw-r--r--src/assets/javascripts/helpers/youtube/piped-preferences.js52
-rw-r--r--src/assets/javascripts/helpers/youtube/piped.js37
-rw-r--r--src/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js35
-rw-r--r--src/assets/javascripts/helpers/youtube/pipedMaterial.js31
-rw-r--r--src/assets/javascripts/helpers/youtube/youtube.js520
-rw-r--r--src/pages/background/background.js29
-rw-r--r--src/pages/options/imgur/imgur.js84
-rw-r--r--src/pages/options/instagram/instagram.js73
-rw-r--r--src/pages/options/reddit/reddit.js166
-rw-r--r--src/pages/options/youtube/invidious.js190
-rw-r--r--src/pages/options/youtube/piped.js144
-rw-r--r--src/pages/options/youtube/pipedMaterial.js118
-rw-r--r--src/pages/options/youtube/youtube.js62
19 files changed, 939 insertions, 1452 deletions
diff --git a/src/assets/javascripts/helpers/common.js b/src/assets/javascripts/helpers/common.js
index 93707dcc..b2a91b20 100644
--- a/src/assets/javascripts/helpers/common.js
+++ b/src/assets/javascripts/helpers/common.js
@@ -50,7 +50,19 @@ async function updateInstances() {
 
     const instances = JSON.parse(request.responseText);
 
-    youtubeHelper.setInvidiousRedirects(instances.invidious);
+    brwoser.storage.local.get(
+      [
+        'youtubeRedirects'
+      ],
+      r =>
+        brwoser.storage.local.set({
+          youtubeRedirects: {
+            'invidious': instances.invidious,
+            'piped': r.youtubeRedirects.piped,
+            'pipedMaterial': r.youtubeRedirects.pipedMaterial
+          },
+        })
+    )
 
     twitterHelper.setRedirects(instances.nitter);
 
@@ -80,10 +92,6 @@ async function updateInstances() {
   return false;
 }
 
-function isFirefox() {
-  return typeof InstallTrigger !== "undefined";
-}
-
 function protocolHost(url) {
   if (url.username && url.password) return `${url.protocol}//${url.username}:${url.password}@${url.host}`;
   return `${url.protocol}//${url.host}`;
@@ -94,18 +102,17 @@ async function processDefaultCustomInstances(
   protocol,
   nameHelper,
   document,
-  getNameRedirectsChecks,
-  setNameRedirectsChecks,
-  getNameCustomRedirects,
-  setNameCustomRedirects,
-  instancesLatency,
 ) {
-  instancesLatency = instancesLatency ?? [];
+  function camelCase(str) {
+    return str.charAt(0).toUpperCase() + str.slice(1);
+  }
+  let latencyKey = `${name}Latency`;
+  let instancesLatency;
+  await browser.storage.local.get(latencyKey, r => instancesLatency = r[latencyKey] ?? []);
   let nameProtocolElement = document.getElementById(name).getElementsByClassName(protocol)[0];
 
   let nameCustomInstances = [];
   let nameCheckListElement = nameProtocolElement.getElementsByClassName('checklist')[0];
-  let nameDefaultRedirects;
 
   await initCloudflareList();
 
@@ -122,59 +129,103 @@ async function processDefaultCustomInstances(
     nameProtocolElement.getElementsByClassName('toogle-all')[0].checked = isTrue;
   }
 
-  nameDefaultRedirects = getNameRedirectsChecks();
+  let nameDefaultRedirects;
+
+  let redirectsChecks = `${name}${camelCase(protocol)}RedirectsChecks`;
+  let customRedirects = `${name}${camelCase(protocol)}CustomRedirects`;
+
+  async function setRedirectsChecks(val) {
+    await browser.storage.local.set({ [redirectsChecks]: val });
+  }
+
+  async function setCustom(val) {
+    await browser.storage.local.set({ [customRedirects]: val });
+  }
+
+  async function getFromStorage() {
+    return new Promise(async resolve => {
+      nameHelper.init().then(() =>
+        browser.storage.local.get(
+          [
+            redirectsChecks,
+            customRedirects,
+          ],
+          r => {
+            nameDefaultRedirects = r[redirectsChecks];
+            nameCustomInstances = r[customRedirects];
+            resolve();
+          }
+        )
+      )
+    })
+  }
+  await getFromStorage();
+
   nameCheckListElement.innerHTML =
     [
-      `<div><x data-localise="__MSG_toggleAll__">Toggle All</x><input type="checkbox" class="toogle-all" /></div>`,
-      ...nameHelper.getRedirects()[name][protocol].map(x => `<div><x>${x}${cloudflareList.includes(x) ? ' <span style="color:red;">cloudflare</span>' : ''} ${x in instancesLatency ? '<span style="color:' + (instancesLatency[x] <= 1000 ? "green" : instancesLatency[x] <= 2000 ? "orange" : "red") + ';">' + (instancesLatency[x] == 5000 ? '5000ms+' : instancesLatency[x] + 'ms') + '</span>' : ''}</x > <input type="checkbox" class="${x}" /></div > `),
+      `<div>
+        <x data-localise="__MSG_toggleAll__">Toggle All</x>
+        <input type="checkbox" class="toogle-all"/>
+      </div>`,
+      ...nameHelper.getRedirects()[name][protocol].map(
+        x => {
+          let cloudflare = cloudflareList.includes(x) ? ' <span style="color:red;">cloudflare</span>' : '';
+
+          let latencyColor = (instancesLatency[x] <= 1000 ? "green" : instancesLatency[x] <= 2000 ? "orange" : "red");
+          let latencyLimit = (instancesLatency[x] == 5000 ? '5000ms+' : instancesLatency[x] + 'ms')
+          let latency = x in instancesLatency ? '<span style="color:' + latencyColor + ';">' + latencyLimit + '</span>' : '';
+
+          return `<div><x>${x}${cloudflare} ${latency}</x><input type="checkbox" class="${x}"/></div>`;
+        }
+      ),
     ].join('\n<hr>\n');
 
   localise.localisePage();
 
   calcNameCheckBoxes();
-  nameProtocolElement.getElementsByClassName('toogle-all')[0].addEventListener("change", event => {
+  nameProtocolElement.getElementsByClassName('toogle-all')[0].addEventListener("change", async event => {
     if (event.target.checked)
       nameDefaultRedirects = [...nameHelper.getRedirects()[name][protocol]];
     else
       nameDefaultRedirects = [];
-    setNameRedirectsChecks(nameDefaultRedirects);
+
+    await setRedirectsChecks(nameDefaultRedirects);
     calcNameCheckBoxes();
   });
 
   for (let element of nameCheckListElement.getElementsByTagName('input')) {
     if (element.className != 'toogle-all')
-      nameProtocolElement.getElementsByClassName(element.className)[0].addEventListener("change", event => {
+      nameProtocolElement.getElementsByClassName(element.className)[0].addEventListener("change", async event => {
         if (event.target.checked)
           nameDefaultRedirects.push(element.className)
         else {
           let index = nameDefaultRedirects.indexOf(element.className);
           if (index > -1) nameDefaultRedirects.splice(index, 1);
         }
-        setNameRedirectsChecks(nameDefaultRedirects);
+        await setRedirectsChecks(nameDefaultRedirects);
         calcNameCheckBoxes();
       });
   }
 
-  nameCustomInstances = getNameCustomRedirects();
   function calcNameCustomInstances() {
     nameProtocolElement.getElementsByClassName('custom-checklist')[0].innerHTML =
       nameCustomInstances.map(
-        x => `<div> ${x} <button class="add clear-${x}">
-  <svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px"
-    fill="currentColor">
-    <path d="M0 0h24v24H0V0z" fill="none" />
-    <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z" />
-  </svg>
-</button>
-                      </div >
-  <hr>`
+        x => `<div>
+                ${x}
+                <button class="add clear-${x}">
+                  <svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor">
+                    <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z" />
+                  </svg>
+                </button>
+              </div>
+              <hr>`
       ).join('\n');
 
     for (const item of nameCustomInstances) {
       nameProtocolElement.getElementsByClassName(`clear-${item}`)[0].addEventListener("click", () => {
         let index = nameCustomInstances.indexOf(item);
         if (index > -1) nameCustomInstances.splice(index, 1);
-        setNameCustomRedirects(nameCustomInstances);
+        setCustom(nameCustomInstances);
         calcNameCustomInstances();
       });
     }
@@ -188,13 +239,14 @@ async function processDefaultCustomInstances(
     if (nameCustomInstanceInput.validity.valid && !nameHelper.getRedirects()[name][protocol].includes(protocolHostVar)) {
       if (!nameCustomInstances.includes(protocolHostVar)) {
         nameCustomInstances.push(protocolHostVar)
-        setNameCustomRedirects(nameCustomInstances);
+        setCustom(nameCustomInstances);
         nameCustomInstanceInput.value = '';
       }
       calcNameCustomInstances();
     }
   })
 }
+
 function isRtl() {
   return ["ar", "iw", "ku", "fa", "ur"].includes(browser.i18n.getUILanguage())
 }
@@ -243,7 +295,6 @@ export default {
   getRandomInstance,
   updateInstances,
   protocolHost,
-  isFirefox,
   processDefaultCustomInstances,
   isRtl,
   testLatency,
diff --git a/src/assets/javascripts/helpers/imgur.js b/src/assets/javascripts/helpers/imgur.js
index a376e404..7a2daa43 100644
--- a/src/assets/javascripts/helpers/imgur.js
+++ b/src/assets/javascripts/helpers/imgur.js
@@ -12,16 +12,6 @@ let redirects = {
     }
 }
 const getRedirects = () => redirects;
-const getCustomRedirects = function () {
-    return {
-        "rimgo": {
-            "normal": [...rimgoNormalRedirectsChecks, ...rimgoNormalCustomRedirects],
-            "tor": [...rimgoTorRedirectsChecks, ...rimgoTorCustomRedirects],
-            "i2p": [...rimgoI2pRedirectsChecks, ...rimgoI2pCustomRedirects]
-        },
-    };
-};
-
 function setRedirects(val) {
     redirects.rimgo = val;
     browser.storage.local.set({ imgurRedirects: redirects })
@@ -31,103 +21,50 @@ function setRedirects(val) {
             var index = rimgoNormalRedirectsChecks.indexOf(item);
             if (index !== -1) rimgoNormalRedirectsChecks.splice(index, 1);
         }
-    setRimgoNormalRedirectsChecks(rimgoNormalRedirectsChecks);
+    browser.storage.local.set({rimgoNormalRedirectsChecks});
 
     for (const item of rimgoTorRedirectsChecks)
         if (!redirects.rimgo.tor.includes(item)) {
             var index = rimgoTorRedirectsChecks.indexOf(item);
             if (index !== -1) rimgoTorRedirectsChecks.splice(index, 1);
         }
-    setRimgoTorRedirectsChecks(rimgoTorRedirectsChecks);
+    browser.storage.local.set({rimgoTorRedirectsChecks});
 
     for (const item of rimgoI2pRedirectsChecks)
         if (!redirects.rimgo.i2p.includes(item)) {
             var index = rimgoI2pRedirectsChecks.indexOf(item);
             if (index !== -1) rimgoI2pRedirectsChecks.splice(index, 1);
         }
-    setRimgoI2pRedirectsChecks(rimgoI2pRedirectsChecks);
-}
+    browser.storage.local.set({rimgoI2pRedirectsChecks});
 
-let disable;
-const getDisable = () => disable;
-function setDisable(val) {
-    disable = val;
-    browser.storage.local.set({ disableImgur: disable })
 }
 
+let disable;
 let protocol;
-const getProtocol = () => protocol;
-function setProtocol(val) {
-    protocol = val;
-    browser.storage.local.set({ imgurProtocol: val })
-    console.log("imgurProtocol: ", val)
-}
 
 let rimgoNormalRedirectsChecks;
-const getRimgoNormalRedirectsChecks = () => rimgoNormalRedirectsChecks;
-function setRimgoNormalRedirectsChecks(val) {
-    rimgoNormalRedirectsChecks = val;
-    browser.storage.local.set({ rimgoNormalRedirectsChecks })
-    console.log("rimgoNormalRedirectsChecks: ", val)
-}
-
 let rimgoTorRedirectsChecks;
-const getRimgoTorRedirectsChecks = () => rimgoTorRedirectsChecks;
-function setRimgoTorRedirectsChecks(val) {
-    rimgoTorRedirectsChecks = val;
-    browser.storage.local.set({ rimgoTorRedirectsChecks })
-    console.log("rimgoTorRedirectsChecks: ", val)
-}
-
 let rimgoI2pRedirectsChecks;
-const getRimgoI2pRedirectsChecks = () => rimgoI2pRedirectsChecks;
-function setRimgoI2pRedirectsChecks(val) {
-    rimgoI2pRedirectsChecks = val;
-    browser.storage.local.set({ rimgoI2pRedirectsChecks })
-    console.log("rimgoI2pRedirectsChecks: ", val)
-}
-
 let rimgoNormalCustomRedirects = [];
-const getRimgoNormalCustomRedirects = () => rimgoNormalCustomRedirects;
-function setRimgoNormalCustomRedirects(val) {
-    rimgoNormalCustomRedirects = val;
-    browser.storage.local.set({ rimgoNormalCustomRedirects })
-    console.log("rimgoNormalCustomRedirects: ", val)
-}
-
 let rimgoTorCustomRedirects = [];
-const getRimgoTorCustomRedirects = () => rimgoTorCustomRedirects;
-function setRimgoTorCustomRedirects(val) {
-    rimgoTorCustomRedirects = val;
-    browser.storage.local.set({ rimgoTorCustomRedirects })
-    console.log("rimgoTorCustomRedirects: ", val)
-}
-
 let rimgoI2pCustomRedirects = [];
-const getRimgoI2pCustomRedirects = () => rimgoI2pCustomRedirects;
-function setRimgoI2pCustomRedirects(val) {
-    rimgoI2pCustomRedirects = val;
-    browser.storage.local.set({ rimgoI2pCustomRedirects })
-    console.log("rimgoI2pCustomRedirects: ", val)
-}
 
-function isImgur(url, initiator) {
-    if (disable) return false;
-    if (url.pathname == "/") return false;
-    if (
-        initiator &&
-        ([...redirects.rimgo.normal, ...rimgoNormalCustomRedirects].includes(initiator.origin) || targets.test(initiator.host))
-    ) return false;
-    return targets.test(url.href);
-}
-
-function redirect(url, type) {
+function redirect(url, type, initiator) {
     // https://imgur.com/gallery/s4WXQmn
     // https://imgur.com/a/H8M4rcp
     // https://imgur.com/gallery/gYiQLWy
     // https://imgur.com/gallery/cTRwaJU
     // https://i.imgur.com/CFSQArP.jpeg
 
+    if (disable) return;
+    if (url.pathname == "/") false;
+    if (
+        initiator &&
+        ([...redirects.rimgo.normal, ...rimgoNormalCustomRedirects].includes(initiator.origin) || targets.test(initiator.host))
+    ) return;
+    if (!targets.test(url.href)) return;
+
+
     if (![
         "main_frame",
         "sub_frame",
@@ -191,79 +128,72 @@ function switchInstance(url) {
     return `${randomInstance}${url.pathname}${url.search}`;
 }
 
+async function initDefaults() {
+    return new Promise(async resolve => {
+        fetch('/instances/data.json').then(response => response.text()).then(async data => {
+            let dataJson = JSON.parse(data);
+            redirects.rimgo = dataJson.rimgo
+            await browser.storage.local.set({
+                disableImgur: false,
+                imgurProtocol: 'normal',
+                imgurRedirects: {
+                    'rimgo': redirects.rimgo,
+                },
+
+                rimgoNormalRedirectsChecks: [...redirects.rimgo.normal],
+                rimgoNormalCustomRedirects: [],
+
+                rimgoTorRedirectsChecks: [...redirects.rimgo.tor],
+                rimgoTorCustomRedirects: [],
+
+                rimgoI2pRedirectsChecks: [...redirects.rimgo.i2p],
+                rimgoI2pCustomRedirects: [],
+            });
+            resolve();
+        });
+    })
+}
+
 async function init() {
     return new Promise(resolve => {
-        fetch('/instances/data.json')
-            .then(response => response.text())
-            .then(text => {
-                let data = JSON.parse(text);
-                browser.storage.local.get(
-                    [
-                        "disableImgur",
-                        "imgurRedirects",
-
-                        "rimgoNormalRedirectsChecks",
-                        "rimgoNormalCustomRedirects",
-                        "rimgoTorRedirectsChecks",
-                        "rimgoTorCustomRedirects",
-                        "rimgoI2pRedirectsChecks",
-                        "rimgoI2pCustomRedirects",
-
-                        "imgurProtocol",
-                    ],
-                    r => {
-                        disable = r.disableImgur ?? false;
-
-                        protocol = r.imgurProtocol ?? "normal";
-
-                        redirects.rimgo = data.rimgo;
-                        if (r.imgurRedirects) redirects = r.imgurRedirects;
-
-                        rimgoNormalRedirectsChecks = r.rimgoNormalRedirectsChecks ?? [...redirects.rimgo.normal];
-                        rimgoNormalCustomRedirects = r.rimgoNormalCustomRedirects ?? [];
-
-                        rimgoTorRedirectsChecks = r.rimgoTorRedirectsChecks ?? [...redirects.rimgo.tor];
-                        rimgoTorCustomRedirects = r.rimgoTorCustomRedirects ?? [];
-
-                        rimgoI2pRedirectsChecks = r.rimgoI2pRedirectsChecks ?? [...redirects.rimgo.i2p];
-                        rimgoI2pCustomRedirects = r.rimgoI2pCustomRedirects ?? [];
-
-                        resolve();
-                    }
-                )
-            });
+        browser.storage.local.get(
+            [
+                "disableImgur",
+                "imgurRedirects",
+                "imgurProtocol",
+
+                "rimgoNormalRedirectsChecks",
+                "rimgoNormalCustomRedirects",
+                "rimgoTorRedirectsChecks",
+                "rimgoTorCustomRedirects",
+                "rimgoI2pRedirectsChecks",
+                "rimgoI2pCustomRedirects",
+            ],
+            r => {
+                disable = r.disableImgur;
+                protocol = r.imgurProtocol;
+                redirects = r.imgurRedirects;
+
+                rimgoNormalRedirectsChecks = r.rimgoNormalRedirectsChecks;
+                rimgoNormalCustomRedirects = r.rimgoNormalCustomRedirects;
+                rimgoTorRedirectsChecks = r.rimgoTorRedirectsChecks;
+                rimgoTorCustomRedirects = r.rimgoTorCustomRedirects;
+                rimgoI2pRedirectsChecks = r.rimgoI2pRedirectsChecks;
+                rimgoI2pCustomRedirects = r.rimgoI2pCustomRedirects;
+
+                resolve();
+            }
+        )
     });
 }
 
 export default {
     getRedirects,
-    getCustomRedirects,
     setRedirects,
 
-    getDisable,
-    setDisable,
-
-
-    getProtocol,
-    setProtocol,
-
-    getRimgoNormalRedirectsChecks,
-    setRimgoNormalRedirectsChecks,
-    getRimgoTorRedirectsChecks,
-    setRimgoTorRedirectsChecks,
-    getRimgoI2pRedirectsChecks,
-    setRimgoI2pRedirectsChecks,
-
-    getRimgoNormalCustomRedirects,
-    setRimgoNormalCustomRedirects,
-    getRimgoTorCustomRedirects,
-    setRimgoTorCustomRedirects,
-    getRimgoI2pCustomRedirects,
-    setRimgoI2pCustomRedirects,
-
     redirect,
     reverse,
-    isImgur,
     init,
+    initDefaults,
     switchInstance,
 };
diff --git a/src/assets/javascripts/helpers/instagram.js b/src/assets/javascripts/helpers/instagram.js
index f007fac3..26414070 100644
--- a/src/assets/javascripts/helpers/instagram.js
+++ b/src/assets/javascripts/helpers/instagram.js
@@ -12,13 +12,6 @@ let redirects = {
   }
 };
 const getRedirects = () => redirects;
-const getCustomRedirects = function () {
-  return {
-    "bibliogram": {
-      "normal": [...bibliogramNormalRedirectsChecks, ...bibliogramNormalCustomRedirects]
-    },
-  };
-};
 function setRedirects(val) {
   redirects.bibliogram = val;
   browser.storage.local.set({ instagramRedirects: redirects })
@@ -28,40 +21,13 @@ function setRedirects(val) {
       var index = bibliogramNormalRedirectsChecks.indexOf(item);
       if (index !== -1) bibliogramNormalRedirectsChecks.splice(index, 1);
     }
-  setBibliogramNormalRedirectsChecks(bibliogramNormalRedirectsChecks);
+  browser.storage.local.set({ bibliogramNormalRedirectsChecks });
 }
 
 let bibliogramNormalRedirectsChecks;
-const getBibliogramNormalRedirectsChecks = () => bibliogramNormalRedirectsChecks;
-function setBibliogramNormalRedirectsChecks(val) {
-  bibliogramNormalRedirectsChecks = val;
-  browser.storage.local.set({ bibliogramNormalRedirectsChecks })
-  console.log("bibliogramNormalRedirectsChecks: ", val)
-}
-
 let bibliogramTorRedirectsChecks;
-const getBibliogramTorRedirectsChecks = () => bibliogramTorRedirectsChecks;
-function setBibliogramTorRedirectsChecks(val) {
-  bibliogramTorRedirectsChecks = val;
-  browser.storage.local.set({ bibliogramTorRedirectsChecks })
-  console.log("bibliogramTorRedirectsChecks: ", val)
-}
-
 let bibliogramNormalCustomRedirects = [];
-const getBibliogramNormalCustomRedirects = () => bibliogramNormalCustomRedirects;
-function setBibliogramNormalCustomRedirects(val) {
-  bibliogramNormalCustomRedirects = val;
-  browser.storage.local.set({ bibliogramNormalCustomRedirects })
-  console.log("bibliogramNormalCustomRedirects: ", val)
-}
-
 let bibliogramTorCustomRedirects = [];
-const getBibliogramTorCustomRedirects = () => bibliogramTorCustomRedirects;
-function setBibliogramTorCustomRedirects(val) {
-  bibliogramTorCustomRedirects = val;
-  browser.storage.local.set({ bibliogramTorCustomRedirects })
-  console.log("bibliogramTorCustomRedirects: ", val)
-}
 
 const reservedPaths = [
   "u",
@@ -81,20 +47,8 @@ const bypassPaths = [
   /\/(accounts\/|embeds?.js)/
 ];
 
-let disable;
-const getDisable = () => disable;
-function setDisable(val) {
-  disable = val;
-  browser.storage.local.set({ disableInstagram: disable })
-}
-
-let protocol;
-const getProtocol = () => protocol;
-function setProtocol(val) {
-  protocol = val;
-  browser.storage.local.set({ nitterProtocol: val })
-  console.log("nitterProtocol: ", val)
-}
+let disable; //disableInstagram
+let protocol; //instagramProtocol
 
 function redirect(url, type, initiator) {
   if (disable) return;
@@ -189,10 +143,7 @@ let applyThemeToSites;
 function initBibliogramCookies(url) {
   let protocolHost = commonHelper.protocolHost(url);
   browser.cookies.get(
-    {
-      url: protocolHost,
-      name: "settings"
-    },
+    { url: protocolHost, name: "settings" },
     cookie => {
       if (!cookie || !instancesCookies.includes(protocolHost)) {
         console.log(`initing cookie for ${protocolHost}`);
@@ -211,89 +162,94 @@ function initBibliogramCookies(url) {
             browser.storage.local.set({ instancesCookies })
           }
         }
-      } else {
-        console.log("cookie url", protocolHost);
-        console.log("instancesCookies", instancesCookies);
-      };
+      }
     })
 
 }
 
-async function init() {
-  return new Promise((resolve) => {
-    fetch('/instances/data.json').then(response => response.text()).then(data => {
-      let dataJson = JSON.parse(data);
-      browser.storage.local.get(
-        [
-          "disableInstagram",
-          "instagramRedirects",
 
-          "theme",
-          "applyThemeToSites",
+async function initDefaults() {
+  return new Promise(async resolve => {
+    fetch('/instances/data.json').then(response => response.text()).then(async data => {
+      let dataJson = JSON.parse(data);
+      redirects.bibliogram = dataJson.bibliogram;
+      await browser.storage.local.set({
+        disableInstagram: false,
+        instagramRedirects: {
+          'bibliogram': redirects.bibliogram
+        },
+
+        theme: 'DEFAULT',
+        applyThemeToSites: false,
+
+        instancesCookies: [],
+
+        bibliogramNormalRedirectsChecks: [...redirects.bibliogram.normal],
+        bibliogramTorRedirectsChecks: [],
+
+        bibliogramNormalCustomRedirects: [...redirects.bibliogram.tor],
+        bibliogramTorCustomRedirects: [],
+        instagramProtocol: "normal",
+      })
+      resolve();
+    }
+    )
+  })
+}
 
-          "instancesCookies",
+async function init() {
+  return new Promise(resolve => {
+    browser.storage.local.get(
+      [
+        "disableInstagram",
+        "instagramRedirects",
 
-          "bibliogramNormalRedirectsChecks",
-          "bibliogramTorRedirectsChecks",
+        "theme",
+        "applyThemeToSites",
 
-          "bibliogramNormalCustomRedirects",
-          "bibliogramTorCustomRedirects",
-          "instagramProtocol"
-        ],
-        r => {
-          disable = r.disableInstagram ?? false;
+        "instancesCookies",
 
-          redirects.bibliogram = dataJson.bibliogram;
+        "bibliogramNormalRedirectsChecks",
+        "bibliogramTorRedirectsChecks",
 
-          if (r.instagramRedirects) redirects = r.instagramRedirects
+        "bibliogramNormalCustomRedirects",
+        "bibliogramTorCustomRedirects",
+        "instagramProtocol"
+      ],
+      r => {
+        disable = r.disableInstagram;
+        if (r.instagramRedirects) redirects = r.instagramRedirects
 
-          theme = r.theme ?? 'DEFAULT';
-          applyThemeToSites = r.applyThemeToSites ?? false;
+        theme = r.theme;
+        applyThemeToSites = r.applyThemeToSites;
 
-          instancesCookies = r.instancesCookies ?? [];
+        instancesCookies = r.instancesCookies;
 
-          bibliogramNormalRedirectsChecks = r.bibliogramNormalRedirectsChecks ?? [...redirects.bibliogram.normal];
-          bibliogramNormalCustomRedirects = r.bibliogramNormalCustomRedirects ?? [];
+        bibliogramNormalRedirectsChecks = r.bibliogramNormalRedirectsChecks;
+        bibliogramNormalCustomRedirects = r.bibliogramNormalCustomRedirects;
 
-          bibliogramTorRedirectsChecks = r.bibliogramTorRedirectsChecks ?? [...redirects.bibliogram.tor];
-          bibliogramTorCustomRedirects = r.bibliogramTorCustomRedirects ?? [];
+        bibliogramTorRedirectsChecks = r.bibliogramTorRedirectsChecks;
+        bibliogramTorCustomRedirects = r.bibliogramTorCustomRedirects;
 
-          protocol = r.instagramProtocol ?? "normal";
+        protocol = r.instagramProtocol;
 
-          resolve();
-        }
-      )
-    })
+        resolve();
+      }
+    )
   })
 }
 
 export default {
   getRedirects,
-  getCustomRedirects,
   setRedirects,
 
-  getDisable,
-  setDisable,
-
   reverse,
 
-  getProtocol,
-  setProtocol,
-
   isBibliogram,
   initBibliogramCookies,
 
-  getBibliogramNormalRedirectsChecks,
-  setBibliogramNormalRedirectsChecks,
-  getBibliogramTorRedirectsChecks,
-  setBibliogramTorRedirectsChecks,
-
-  getBibliogramNormalCustomRedirects,
-  setBibliogramNormalCustomRedirects,
-  getBibliogramTorCustomRedirects,
-  setBibliogramTorCustomRedirects,
-
   redirect,
   init,
+  initDefaults,
   switchInstance,
 };
diff --git a/src/assets/javascripts/helpers/reddit.js b/src/assets/javascripts/helpers/reddit.js
index cae152e9..ebb13ffa 100644
--- a/src/assets/javascripts/helpers/reddit.js
+++ b/src/assets/javascripts/helpers/reddit.js
@@ -393,6 +393,7 @@ function switchInstance(url) {
 }
 
 async function initDefaults() {
+  console.log('init redditDefault')
   return new Promise(async resolve => {
     fetch('/instances/data.json').then(response => response.text()).then(async data => {
       let dataJson = JSON.parse(data);
diff --git a/src/assets/javascripts/helpers/youtube/invidious.js b/src/assets/javascripts/helpers/youtube/invidious.js
new file mode 100644
index 00000000..a8e215a2
--- /dev/null
+++ b/src/assets/javascripts/helpers/youtube/invidious.js
@@ -0,0 +1,133 @@
+"use strict";
+
+window.browser = window.browser || window.chrome;
+
+async function initDefaults() {
+    await browser.storage.local.set({
+        youtubeListen: false,
+        youtubeVolume: 100,
+        youtubeAutoplay: false,
+        invidiousAlwaysProxy: false,
+        invidiousQuality: 'hd720',
+        invidiousPlayerStyle: 'invidious',
+        invidiousVideoLoop: false,
+        invidiousContinueAutoplay: true,
+        invidiousContinue: false,
+        invidiousSpeed: '1.0',
+        invidiousQualityDash: 'auto',
+        invidiousComments: ['youtube', ''],
+        invidiousCaptions: ['', '', ''],
+        invidiousRelatedVideos: true,
+        invidiousAnnotations: false,
+        invidiousExtendDesc: false,
+        invidiousVrMode: true,
+        invidiousSavePlayerPos: false,
+        invidiousRegion: 'US',
+        invidiousDarkMode: '',
+        invidiousThinMode: false,
+        invidiousDefaultHome: 'Popular',
+        invidiousFeedMenuList: ['Popular', 'Trending']
+    })
+}
+
+async function initInvidiousCookies() {
+    console.log('initInvidiousCookies() starting')
+    await browser.storage.local.get(
+        [
+            "disableYoutube",
+            "youtubeFrontend",
+            "youtubeProtocol",
+
+            "enableYoutubeCustomSettings",
+
+            "invidiousNormalRedirectsChecks",
+            "invidiousNormalCustomRedirects",
+            "invidiousTorRedirectsChecks",
+            "invidiousTorCustomRedirects",
+
+            "youtubeListen",
+            "youtubeVolume",
+            "youtubeAutoplay",
+            "invidiousQuality",
+            "invidiousAlwaysProxy",
+            "invidiousQuality",
+            "invidiousPlayerStyle",
+            "invidiousVideoLoop",
+            "invidiousContinueAutoplay",
+            "invidiousContinue",
+            "invidiousSpeed",
+            "invidiousQualityDash",
+            "invidiousComments",
+            "invidiousCaptions",
+            "invidiousRelatedVideos",
+            "invidiousAnnotations",
+            "invidiousExtendDesc",
+            "invidiousVrMode",
+            "invidiousSavePlayerPos",
+            "invidiousRegion",
+            "invidiousDarkMode",
+            "invidiousThinMode",
+            "invidiousDefaultHome",
+            "invidiousFeedMenuList",
+        ],
+        r => {
+            if (!r.disableYoutube && r.youtubeFrontend == 'invidious' && r.enableYoutubeCustomSettings) {
+                let checkedInstances;
+                if (r.youtubeProtocol == 'normal')
+                    checkedInstances = [...r.invidiousNormalRedirectsChecks, ...r.invidiousNormalCustomRedirects]
+                else if (r.youtubeProtocol == 'tor')
+                    checkedInstances = [...r.invidiousTorRedirectsChecks, ...r.invidiousTorCustomRedirects]
+
+                for (const instanceUrl of checkedInstances)
+                    browser.cookies.get(
+                        { url: instanceUrl, name: "PREFS" },
+                        cookie => {
+                            let prefs = {};
+                            if (cookie) {
+                                prefs = JSON.parse(decodeURIComponent(cookie.value));
+                                browser.cookies.remove({ url: instanceUrl, name: "PREFS" });
+                            }
+
+                            prefs.local = r.invidiousAlwaysProxy;
+                            prefs.video_loop = r.invidiousVideoLoop;
+                            prefs.continue_autoplay = r.invidiousContinueAutoplay;
+                            prefs.continue = r.invidiousContinue;
+                            prefs.listen = r.youtubeListen;
+                            prefs.speed = parseFloat(r.invidiousSpeed);
+                            prefs.quality = r.invidiousQuality;
+                            prefs.quality_dash = r.invidiousQualityDash;
+
+                            prefs.comments = r.invidiousComments;
+                            prefs.captions = r.invidiousCaptions;
+
+                            prefs.related_videos = r.invidiousRelatedVideos;
+                            prefs.annotations = r.invidiousAnnotations
+                            prefs.extend_desc = r.invidiousExtendDesc;
+                            prefs.vr_mode = r.invidiousVrMode;
+                            prefs.save_player_pos = r.invidiousSavePlayerPos;
+
+                            prefs.volume = parseInt(r.youtubeVolume);
+                            prefs.player_style = r.invidiousPlayerStyle;
+                            prefs.autoplay = r.youtubeAutoplay;
+
+                            prefs.region = r.invidiousRegion;
+                            prefs.dark_mode = r.invidiousDarkMode;
+                            prefs.thin_mode = r.invidiousThinMode;
+                            prefs.default_home = r.invidiousDefaultHome;
+                            prefs.feed_menu = r.invidiousFeedMenuList;
+
+                            browser.cookies.set({
+                                url: instanceUrl, name: "PREFS",
+                                value: encodeURIComponent(JSON.stringify(prefs))
+                            })
+                        }
+                    )
+            }
+        }
+    )
+}
+
+export default {
+    initDefaults,
+    initInvidiousCookies,
+}
\ No newline at end of file
diff --git a/src/assets/javascripts/helpers/youtube/options.js b/src/assets/javascripts/helpers/youtube/options.js
deleted file mode 100644
index a5aa413d..00000000
--- a/src/assets/javascripts/helpers/youtube/options.js
+++ /dev/null
@@ -1,223 +0,0 @@
-"use strict";
-
-window.browser = window.browser || window.chrome;
-
-export let youtubeListen;
-export const getYoutubeListen = () => youtubeListen;
-
-export let volume;
-export const getVolume = () => volume;
-export function setVolume(val) {
-    volume = val;
-    browser.storage.local.set({ youtubeVolume: volume })
-    console.log("youtubeVolume: ", volume)
-}
-
-export let youtubeAutoplay;
-export const getAutoplay = () => youtubeAutoplay;
-export function setAutoplay(val) {
-    youtubeAutoplay = val;
-    browser.storage.local.set({ youtubeAutoplay })
-    console.log("youtubeAutoplay: ", youtubeAutoplay)
-}
-
-export let invidiousQuality;
-export const getInvidiousQuality = () => invidiousQuality;
-
-export let invidiousAlwaysProxy;
-export const getInvidiousAlwaysProxy = () => invidiousAlwaysProxy;
-
-export let invidiousPlayerStyle;
-export const getInvidiousPlayerStyle = () => invidiousPlayerStyle;
-
-export let invidiousVideoLoop;
-export const getInvidiousVideoLoop = () => invidiousVideoLoop;
-
-export let invidiousContinueAutoplay;
-export const getInvidiousContinueAutoplay = () => invidiousContinueAutoplay;
-
-export let invidiousContinue;
-export const getInvidiousContinue = () => invidiousContinue;
-
-export let invidiousSpeed;
-export const getInvidiousSpeed = () => invidiousSpeed;
-
-export let invidiousQualityDash;
-export const getInvidiousQualityDash = () => invidiousQualityDash;
-
-export let invidiousComments;
-export const getInvidiousComments = () => invidiousComments;
-
-export let invidiousCaptions;
-export const getInvidiousCaptions = () => invidiousCaptions;
-
-export let invidiousRelatedVideos;
-export const getInvidiousRelatedVideos = () => invidiousRelatedVideos;
-
-export let invidiousAnnotations;
-export const getInvidiousAnnotations = () => invidiousAnnotations;
-
-export let invidiousExtendDesc;
-export const getInvidiousExtendDesc = () => invidiousExtendDesc;
-
-export let invidiousVrMode;
-export const getInvidiousVrMode = () => invidiousVrMode;
-
-export let invidiousSavePlayerPos;
-export const getInvidiousSavePlayerPos = () => invidiousSavePlayerPos;
-
-export let invidiousRegion;
-export const getInvidiousRegion = () => invidiousRegion;
-
-export let invidiousDarkMode;
-export const getInvidiousDarkMode = () => invidiousDarkMode;
-
-export let invidiousThinMode;
-export const getInvidiousThinMode = () => invidiousThinMode;
-
-export let invidiousDefaultHome;
-export const getInvidiousDefaultHome = () => invidiousDefaultHome;
-
-export let invidiousFeedMenuList;
-export const getInvidiousFeedMenuList = () => invidiousFeedMenuList;
-
-export let pipedBufferGoal;
-export const getPipedBufferGoal = () => pipedBufferGoal;
-
-export let pipedComments;
-export const getPipedComments = () => pipedComments;
-
-export let pipedDisableLBRY;
-export const getPipedDisableLBRY = () => pipedDisableLBRY;
-
-export let pipedEnabledCodecs;
-export const getPipedEnabledCodecs = () => pipedEnabledCodecs;
-
-export let pipedHomepage;
-export const getPipedHomepage = () => pipedHomepage;
-
-export let pipedMinimizeDescription;
-export const getPipedMinimizeDescription = () => pipedMinimizeDescription;
-
-export let pipedProxyLBRY;
-export const getPipedProxyLBRY = () => pipedProxyLBRY;
-
-export let pipedQuality;
-export const getPipedQuality = () => pipedQuality;
-
-export let pipedRegion;
-export const getPipedRegion = () => pipedRegion;
-
-export let pipedSelectedSkip;
-export const getPipedSelectedSkip = () => pipedSelectedSkip;
-
-export let pipedSponsorblock;
-export const getPipedSponsorblock = () => pipedSponsorblock;
-
-export let pipedDdlTheme;
-export const getPipedDdlTheme = () => pipedDdlTheme;
-
-export let pipedWatchHistory;
-export const getPipedWatchHistory = () => pipedWatchHistory;
-
-export let pipedMaterialSkipToLastPoint;
-export const getPipedMaterialSkipToLastPoint = () => pipedMaterialSkipToLastPoint;
-
-export async function initOptions() {
-    return new Promise(
-        resolve => {
-            browser.storage.local.get(
-                [
-                    "youtubeListen",
-                    "youtubeVolume",
-                    "youtubeAutoplay",
-
-                    "invidiousQuality",
-                    "invidiousAlwaysProxy",
-                    "invidiousQuality",
-                    "invidiousPlayerStyle",
-                    "invidiousVideoLoop",
-                    "invidiousContinueAutoplay",
-                    "invidiousContinue",
-                    "invidiousSpeed",
-                    "invidiousQualityDash",
-                    "invidiousComments",
-                    "invidiousCaptions",
-                    "invidiousRelatedVideos",
-                    "invidiousAnnotations",
-                    "invidiousExtendDesc",
-                    "invidiousVrMode",
-                    "invidiousSavePlayerPos",
-                    "invidiousRegion",
-                    "invidiousDarkMode",
-                    "invidiousThinMode",
-                    "invidiousDefaultHome",
-                    "invidiousFeedMenuList",
-
-                    "pipedBufferGoal",
-                    "pipedComments",
-                    "pipedDisableLBRY",
-                    "pipedEnabledCodecs",
-                    "pipedHomepage",
-                    "pipedMinimizeDescription",
-                    "pipedProxyLBRY",
-                    "pipedQuality",
-                    "pipedRegion",
-                    "pipedSelectedSkip",
-                    "pipedSponsorblock",
-                    "pipedDdlTheme",
-                    "pipedWatchHistory",
-
-                    "pipedMaterialSkipToLastPoint",
-                ],
-                r => {
-
-                    youtubeListen = r.youtubeListen ?? false;
-                    volume = r.youtubeVolume ?? 100;
-                    youtubeAutoplay = r.youtubeAutoplay ?? false;
-
-                    invidiousVideoLoop = r.invidiousVideoLoop ?? false;
-                    invidiousAlwaysProxy = r.invidiousAlwaysProxy ?? false;
-                    invidiousPlayerStyle = r.invidiousPlayerStyle ?? 'invidious';
-                    invidiousQuality = r.invidiousQuality ?? 'hd720';
-                    invidiousContinueAutoplay = r.invidiousContinueAutoplay ?? true;
-                    invidiousContinue = r.invidiousContinue ?? false;
-                    invidiousSpeed = r.invidiousSpeed ?? '1.0';
-                    invidiousQualityDash = r.invidiousQualityDash ?? 'auto';
-                    invidiousComments = r.invidiousComments ?? ['youtube', ''];
-                    invidiousCaptions = r.invidiousCaptions ?? ['', '', ''];
-                    invidiousRelatedVideos = r.invidiousRelatedVideos ?? true;
-                    invidiousAnnotations = r.invidiousAnnotations ?? false;
-                    invidiousExtendDesc = r.invidiousExtendDesc ?? false;
-                    invidiousVrMode = r.invidiousVrMode ?? true;
-                    invidiousSavePlayerPos = r.invidiousSavePlayerPos ?? false;
-
-                    invidiousRegion = r.invidiousRegion ?? 'US';
-                    invidiousDarkMode = r.invidiousDarkMode ?? '';
-                    invidiousThinMode = r.invidiousThinMode ?? false;
-                    invidiousDefaultHome = r.invidiousDefaultHome ?? 'Popular';
-                    invidiousFeedMenuList = r.invidiousFeedMenuList ?? ['Popular', 'Trending'];
-
-                    pipedBufferGoal = r.pipedBufferGoal ?? 300;
-                    pipedComments = r.pipedComments ?? true;
-                    pipedDisableLBRY = r.pipedDisableLBRY ?? false;
-                    pipedEnabledCodecs = r.pipedEnabledCodecs ?? ["av1", "vp9", "avc"];
-                    pipedHomepage = r.pipedHomepage ?? "trending";
-                    pipedMinimizeDescription = r.pipedMinimizeDescription ?? false;
-                    pipedProxyLBRY = r.pipedProxyLBRY ?? false;
-                    pipedQuality = r.pipedQuality ?? 0;
-                    pipedRegion = r.pipedRegion ?? "US";
-
-                    pipedSelectedSkip = r.pipedSelectedSkip ?? ["sponsor", "interaction", "selfpromo", "music_offtopic"];
-                    pipedSponsorblock = r.pipedSponsorblock ?? true;
-                    pipedDdlTheme = r.pipedDdlTheme ?? 'auto';
-                    pipedWatchHistory = r.pipedWatchHistory ?? false;
-
-                    pipedMaterialSkipToLastPoint = r.pipedMaterialSkipToLastPoint ?? true;
-
-                    resolve();
-                }
-            )
-        }
-    )
-}
\ No newline at end of file
diff --git a/src/assets/javascripts/helpers/youtube/piped-preferences.js b/src/assets/javascripts/helpers/youtube/piped-preferences.js
index 3f9572dc..c6a5707a 100644
--- a/src/assets/javascripts/helpers/youtube/piped-preferences.js
+++ b/src/assets/javascripts/helpers/youtube/piped-preferences.js
@@ -2,7 +2,6 @@ window.browser = window.browser || window.chrome;
 
 browser.storage.local.get(
     [
-        "theme",
         "youtubeVolume",
         "youtubeAutoplay",
         "youtubeListen",
@@ -22,40 +21,21 @@ browser.storage.local.get(
         "pipedWatchHistory",
     ],
     r => {
-        let theme = r.theme ?? "dark";
-        let youtubeAutoplay = r.youtubeAutoplay ?? false;
-        let youtubeVolume = r.youtubeVolume ?? 100;
-        let youtubeListen = r.youtubeListen ?? false;
-
-        let pipedBufferGoal = r.pipedBufferGoal ?? 300;
-        let pipedComments = r.pipedComments ?? true;
-        let pipedDisableLBRY = r.pipedDisableLBRY ?? false;
-        let pipedEnabledCodecs = r.pipedEnabledCodecs ?? ["av1", "vp9", "avc"];
-        let pipedHomepage = r.pipedHomepage ?? "trending";
-        let pipedMinimizeDescription = r.pipedMinimizeDescription ?? false;
-        let pipedProxyLBRY = r.pipedProxyLBRY ?? false;
-        let pipedQuality = r.pipedQuality ?? 0;
-        let pipedRegion = r.pipedRegion ?? "US";
-        let pipedSelectedSkip = r.pipedSelectedSkip ?? ["sponsor", "interaction", "selfpromo", "music_offtopic"];
-        let pipedSponsorblock = r.pipedSponsorblock ?? true;
-        let pipedDdlTheme = r.pipedDdlTheme ?? 'auto';
-        let pipedWatchHistory = r.pipedWatchHistory ?? false;
-
-        localStorage.setItem("bufferGoal", pipedBufferGoal.toString());
-        localStorage.setItem("comments", pipedComments);
-        localStorage.setItem("disableLBRY", pipedDisableLBRY);
-        localStorage.setItem("enabledCodecs", pipedEnabledCodecs);
-        localStorage.setItem("homepage", pipedHomepage);
-        localStorage.setItem("listen", youtubeListen);
-        localStorage.setItem("minimizeDescription", pipedMinimizeDescription);
-        localStorage.setItem("playerAutoPlay", youtubeAutoplay);
-        localStorage.setItem("proxyLBRY", pipedProxyLBRY);
-        localStorage.setItem("quality", pipedQuality);
-        localStorage.setItem("region", pipedRegion);
-        localStorage.setItem("selectedSkip", pipedSelectedSkip);
-        localStorage.setItem("sponsorblock", pipedSponsorblock);
-        localStorage.setItem("theme", pipedDdlTheme);
-        localStorage.setItem("volume", youtubeVolume / 100);
-        localStorage.setItem("watchHistory", pipedWatchHistory);
+        localStorage.setItem("bufferGoal", r.pipedBufferGoal.toString());
+        localStorage.setItem("comments", r.pipedComments);
+        localStorage.setItem("disableLBRY", r.pipedDisableLBRY);
+        localStorage.setItem("enabledCodecs", r.pipedEnabledCodecs);
+        localStorage.setItem("homepage", r.pipedHomepage);
+        localStorage.setItem("listen", r.youtubeListen);
+        localStorage.setItem("minimizeDescription", r.pipedMinimizeDescription);
+        localStorage.setItem("playerAutoPlay", r.youtubeAutoplay);
+        localStorage.setItem("proxyLBRY", r.pipedProxyLBRY);
+        localStorage.setItem("quality", r.pipedQuality);
+        localStorage.setItem("region", r.pipedRegion);
+        localStorage.setItem("selectedSkip", r.pipedSelectedSkip);
+        localStorage.setItem("sponsorblock", r.pipedSponsorblock);
+        localStorage.setItem("theme", r.pipedDdlTheme);
+        localStorage.setItem("volume", r.youtubeVolume / 100);
+        localStorage.setItem("watchHistory", r.pipedWatchHistory);
     }
 )
\ No newline at end of file
diff --git a/src/assets/javascripts/helpers/youtube/piped.js b/src/assets/javascripts/helpers/youtube/piped.js
new file mode 100644
index 00000000..10bec749
--- /dev/null
+++ b/src/assets/javascripts/helpers/youtube/piped.js
@@ -0,0 +1,37 @@
+async function initDefaults() {
+    await browser.storage.local.set({
+        youtubeVolume: 100,
+        youtubeAutoplay: false,
+        youtubeListen: false,
+
+        pipedBufferGoal: 300,
+        pipedComments: true,
+        pipedDisableLBRY: false,
+        pipedEnabledCodecs: ["av1", "vp9", "avc"],
+        pipedHomepage: "trending",
+        pipedMinimizeDescription: false,
+        pipedProxyLBRY: false,
+        pipedQuality: 0,
+        pipedRegion: "US",
+        pipedSelectedSkip: ["sponsor", "interaction", "selfpromo", "music_offtopic"],
+        pipedSponsorblock: true,
+        pipedDdlTheme: 'auto',
+        pipedWatchHistory: false,
+    })
+}
+
+function initPipedLocalStorage(tabId) {
+    if (!disable && frontend == 'piped' && enableCustomSettings)
+      browser.tabs.executeScript(
+        tabId,
+        {
+          file: "/assets/javascripts/helpers/youtube/piped-preferences.js",
+          runAt: "document_start"
+        }
+      );
+  }
+
+export default {
+    initDefaults,
+    initPipedLocalStorage
+}
\ No newline at end of file
diff --git a/src/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js b/src/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js
index 312271fe..c669c47e 100644
--- a/src/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js
+++ b/src/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js
@@ -15,33 +15,22 @@ browser.storage.local.get(
         "pipedMaterialSkipToLastPoint",
     ],
     r => {
-        let theme = r.theme ?? "dark";
-        let youtubeAutoplay = r.youtubeAutoplay ?? false;
-        let youtubeVolume = r.youtubeVolume ?? 100;
-        let youtubeListen = r.youtubeListen ?? false;
-
-        let pipedDisableLBRY = r.pipedDisableLBRY ?? false;
-        let pipedProxyLBRY = r.pipedProxyLBRY ?? false;
-        let pipedSelectedSkip = r.pipedSelectedSkip ?? [];
-        let pipedSponsorblock = r.pipedSponsorblock ?? true;
-
-        let pipedMaterialSkipToLastPoint = r.pipedMaterialSkipToLastPoint ?? true;
-
         let prefs = {};
-        if (localStorage.getItem("PREFERENCES")) prefs = JSON.parse(localStorage.getItem("PREFERENCES"));
+        if (localStorage.getItem("PREFERENCES"))
+            prefs = JSON.parse(localStorage.getItem("PREFERENCES"));
 
-        if (theme == 'dark') prefs.darkMode = true;
-        if (theme == 'light') prefs.darkMode = false;
+        if (r.theme == 'dark') prefs.darkMode = true;
+        if (r.theme == 'light') prefs.darkMode = false;
 
-        prefs.volume = youtubeVolume / 100;
-        prefs.playerAutoplay = youtubeAutoplay;
+        prefs.volume = r.youtubeVolume / 100;
+        prefs.playerAutoplay = r.youtubeAutoplay;
 
-        prefs.listen = youtubeListen;
-        prefs.disableLBRY = pipedDisableLBRY;
-        prefs.proxyLBRY = pipedProxyLBRY;
-        prefs.sponsorblock = pipedSponsorblock;
-        prefs.skipToLastPoint = pipedMaterialSkipToLastPoint;
-        prefs.selectedSkip = pipedSelectedSkip;
+        prefs.listen = r.youtubeListen;
+        prefs.disableLBRY = r.pipedDisableLBRY;
+        prefs.proxyLBRY = r.pipedProxyLBRY;
+        prefs.sponsorblock = r.pipedSponsorblock;
+        prefs.skipToLastPoint = r.pipedMaterialSkipToLastPoint;
+        prefs.selectedSkip = r.pipedSelectedSkip;
 
         localStorage.setItem("PREFERENCES", JSON.stringify(prefs));
     }
diff --git a/src/assets/javascripts/helpers/youtube/pipedMaterial.js b/src/assets/javascripts/helpers/youtube/pipedMaterial.js
new file mode 100644
index 00000000..5e5a577d
--- /dev/null
+++ b/src/assets/javascripts/helpers/youtube/pipedMaterial.js
@@ -0,0 +1,31 @@
+async function initDefaults() {
+  await browser.storage.local.set({
+    theme: "dark",
+    youtubeAutoplay: false,
+    youtubeVolume: 100,
+    youtubeListen: false,
+
+    pipedDisableLBRY: false,
+    pipedProxyLBRY: false,
+    pipedSelectedSkip: [],
+    pipedSponsorblock: true,
+
+    pipedMaterialSkipToLastPoint: true,
+  })
+}
+
+function initPipedMaterialLocalStorage(tabId) {
+  if (!disable && frontend == 'pipedMaterial' && enableCustomSettings)
+    browser.tabs.executeScript(
+      tabId,
+      {
+        file: "/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js",
+        runAt: "document_start"
+      }
+    );
+}
+
+export default {
+  initDefaults,
+  initPipedMaterialLocalStorage,
+}
\ No newline at end of file
diff --git a/src/assets/javascripts/helpers/youtube/youtube.js b/src/assets/javascripts/helpers/youtube/youtube.js
index c318e97c..9cdc60ad 100644
--- a/src/assets/javascripts/helpers/youtube/youtube.js
+++ b/src/assets/javascripts/helpers/youtube/youtube.js
@@ -3,46 +3,9 @@
 window.browser = window.browser || window.chrome;
 
 import commonHelper from '../common.js'
-import {
-  youtubeListen, getYoutubeListen,
-  invidiousQuality, getInvidiousQuality,
-  invidiousAlwaysProxy, getInvidiousAlwaysProxy,
-  invidiousPlayerStyle, getInvidiousPlayerStyle,
-  invidiousVideoLoop, getInvidiousVideoLoop,
-  invidiousContinueAutoplay, getInvidiousContinueAutoplay,
-  invidiousContinue, getInvidiousContinue,
-  invidiousSpeed, getInvidiousSpeed,
-  invidiousQualityDash, getInvidiousQualityDash,
-  invidiousComments, getInvidiousComments,
-  invidiousCaptions, getInvidiousCaptions,
-  invidiousRelatedVideos, getInvidiousRelatedVideos,
-  invidiousAnnotations, getInvidiousAnnotations,
-  invidiousExtendDesc, getInvidiousExtendDesc,
-  invidiousVrMode, getInvidiousVrMode,
-  invidiousSavePlayerPos, getInvidiousSavePlayerPos,
-  invidiousRegion, getInvidiousRegion,
-  invidiousDarkMode, getInvidiousDarkMode,
-  invidiousThinMode, getInvidiousThinMode,
-  invidiousDefaultHome, getInvidiousDefaultHome,
-  invidiousFeedMenuList, getInvidiousFeedMenuList,
-  getPipedBufferGoal,
-  getPipedComments,
-  getPipedDisableLBRY,
-  getPipedEnabledCodecs,
-  getPipedHomepage,
-  getPipedMinimizeDescription,
-  getPipedProxyLBRY,
-  getPipedQuality,
-  getPipedRegion,
-  getPipedSelectedSkip,
-  getPipedSponsorblock,
-  getPipedDdlTheme,
-  getPipedWatchHistory,
-  volume, getVolume, setVolume,
-  youtubeAutoplay, getAutoplay, setAutoplay,
-  getPipedMaterialSkipToLastPoint,
-  initOptions
-} from './options.js';
+import invidious from './invidious.js'
+import piped from './piped.js';
+import pipedMaterial from './pipedMaterial.js';
 
 const targets = [
   /^https?:\/{2}(www\.|music\.|m\.|)youtube\.com(\/.*|$)/,
@@ -89,164 +52,29 @@ let redirects = {
 
 const getRedirects = () => redirects;
 
-function getCustomRedirects() {
-  return {
-    "invidious": {
-      "normal": [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects],
-      "tor": [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects]
-    },
-    "piped": {
-      "normal": [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects],
-      "tor": [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects]
-    }
-  };
-};
-
-async function setYoutubeSettings(val) {
-  return new Promise(
-    resolve => {
-      browser.storage.local.set(val).then(resolve);
-    }
-  )
-
-}
-
-function setInvidiousRedirects(val) {
-  redirects.invidious = val;
-  browser.storage.local.set({ youtubeRedirects: redirects })
-  console.log("invidiousRedirects: ", val)
-}
-
 let invidiousNormalRedirectsChecks;
-const getInvidiousNormalRedirectsChecks = () => invidiousNormalRedirectsChecks;
-function setInvidiousNormalRedirectsChecks(val) {
-  invidiousNormalRedirectsChecks = val;
-  browser.storage.local.set({ invidiousNormalRedirectsChecks })
-  console.log("invidiousNormalRedirectsChecks: ", val)
-}
-
 let invidiousNormalCustomRedirects = [];
-const getInvidiousNormalCustomRedirects = () => invidiousNormalCustomRedirects;
-function setInvidiousNormalCustomRedirects(val) {
-  invidiousNormalCustomRedirects = val;
-  browser.storage.local.set({ invidiousNormalCustomRedirects })
-  console.log("invidiousNormalCustomRedirects: ", val)
-}
-
 let invidiousTorRedirectsChecks;
-const getInvidiousTorRedirectsChecks = () => invidiousTorRedirectsChecks;
-function setInvidiousTorRedirectsChecks(val) {
-  invidiousTorRedirectsChecks = val;
-  browser.storage.local.set({ invidiousTorRedirectsChecks })
-  console.log("invidiousTorRedirectsChecks: ", val)
-}
-
 let invidiousTorCustomRedirects = [];
-const getInvidiousTorCustomRedirects = () => invidiousTorCustomRedirects;
-function setInvidiousTorCustomRedirects(val) {
-  invidiousTorCustomRedirects = val;
-  browser.storage.local.set({ invidiousTorCustomRedirects })
-  console.log("invidiousTorCustomRedirects: ", val)
-}
 
 let pipedNormalRedirectsChecks;
-const getPipedNormalRedirectsChecks = () => pipedNormalRedirectsChecks;
-function setPipedNormalRedirectsChecks(val) {
-  pipedNormalRedirectsChecks = val;
-  browser.storage.local.set({ pipedNormalRedirectsChecks })
-  console.log("pipedNormalRedirectsChecks: ", val)
-}
-
 let pipedNormalCustomRedirects = [];
-const getPipedNormalCustomRedirects = () => pipedNormalCustomRedirects;
-function setPipedNormalCustomRedirects(val) {
-  pipedNormalCustomRedirects = val;
-  browser.storage.local.set({ pipedNormalCustomRedirects })
-  console.log("pipedNormalCustomRedirects: ", val)
-}
-
 let pipedTorRedirectsChecks;
-const getPipedTorRedirectsChecks = () => pipedTorRedirectsChecks;
-function setPipedTorRedirectsChecks(val) {
-  pipedTorRedirectsChecks = val;
-  browser.storage.local.set({ pipedTorRedirectsChecks })
-  console.log("pipedTorRedirectsChecks: ", val)
-}
-
 let pipedTorCustomRedirects = [];
-const getPipedTorCustomRedirects = () => pipedTorCustomRedirects;
-function setPipedTorCustomRedirects(val) {
-  pipedTorCustomRedirects = val;
-  browser.storage.local.set({ pipedTorCustomRedirects })
-  console.log("pipedTorCustomRedirects: ", val)
-}
-
-function setPipedRedirects(val) {
-  redirects.piped = val;
-  browser.storage.local.set({ youtubeRedirects: redirects })
-  console.log("pipedRedirects: ", val)
-}
 
 let pipedMaterialNormalRedirectsChecks;
-const getPipedMaterialNormalRedirectsChecks = () => pipedMaterialNormalRedirectsChecks;
-function setPipedMaterialNormalRedirectsChecks(val) {
-  pipedMaterialNormalRedirectsChecks = val;
-  browser.storage.local.set({ pipedMaterialNormalRedirectsChecks })
-  console.log("pipedMaterialNormalRedirectsChecks: ", val)
-}
-
 let pipedMaterialNormalCustomRedirects = [];
-const getPipedMaterialNormalCustomRedirects = () => pipedMaterialNormalCustomRedirects;
-function setPipedMaterialNormalCustomRedirects(val) {
-  pipedMaterialNormalCustomRedirects = val;
-  browser.storage.local.set({ pipedMaterialNormalCustomRedirects })
-  console.log("pipedMaterialNormalCustomRedirects: ", val)
-}
-
 let pipedMaterialTorRedirectsChecks;
-const getPipedMaterialTorRedirectsChecks = () => pipedMaterialTorRedirectsChecks;
-function setPipedMaterialTorRedirectsChecks(val) {
-  pipedMaterialTorRedirectsChecks = val;
-  browser.storage.local.set({ pipedMaterialTorRedirectsChecks })
-  console.log("pipedMaterialTorRedirectsChecks: ", val)
-}
-
 let pipedMaterialTorCustomRedirects = [];
-const getPipedMaterialTorCustomRedirects = () => pipedMaterialTorCustomRedirects;
-function setPipedMaterialTorCustomRedirects(val) {
-  pipedMaterialTorCustomRedirects = val;
-  browser.storage.local.set({ pipedMaterialTorCustomRedirects })
-  console.log("pipedMaterialTorCustomRedirects: ", val)
-}
-
-function setPipedMaterialRedirects(val) {
-  redirects.pipedMaterial = val;
-  browser.storage.local.set({ youtubeRedirects: redirects })
-  console.log("pipedMaterialRedirects: ", val)
-}
 
 let disable;
-const getDisable = () => disable;
-function setDisable(val) {
-  disable = val;
-  browser.storage.local.set({ disableYoutube: disable })
-  console.log("disableYoutube: ", disable)
-}
-
-let enableCustomSettings;
-const getEnableCustomSettings = () => enableCustomSettings;
 let protocol;
-const getProtocol = () => protocol;
 let OnlyEmbeddedVideo;
-const getOnlyEmbeddedVideo = () => OnlyEmbeddedVideo;
 let frontend;
-const getFrontend = () => frontend;
 let youtubeEmbedFrontend;
-const getYoutubeEmbedFrontend = () => youtubeEmbedFrontend;
 let bypassWatchOnYoutube;
-const getBypassWatchOnYoutube = () => bypassWatchOnYoutube;
-
 let alwaysUsePreferred;
+
 function redirect(url, details, initiator) {
   if (disable) return null;
 
@@ -373,7 +201,6 @@ function redirect(url, details, initiator) {
 
 function reverse(url) {
   let protocolHost = commonHelper.protocolHost(url);
-
   if (![
     ...redirects.invidious.normal,
     ...redirects.invidious.tor,
@@ -428,13 +255,11 @@ function switchInstance(url) {
     if (protocol == 'normal') instancesList = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects];
     else if (protocol == 'tor') instancesList = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects];
   }
-  else return null;
 
-  console.log("instancesList", instancesList);
   let index = instancesList.indexOf(protocolHost);
   if (index > -1) instancesList.splice(index, 1);
 
-  if (instancesList.length === 0) return null;
+  if (instancesList.length == 0) return null;
   let randomInstance = commonHelper.getRandomInstance(instancesList);
   return `${randomInstance}${url.pathname}${url.search}`;
 }
@@ -481,272 +306,147 @@ function isPipedorInvidious(url, type, frontend) {
   ].includes(protocolHost);
 }
 
-function initPipedLocalStorage(tabId) {
-  if (!disable && frontend == 'piped' && enableCustomSettings)
-    browser.tabs.executeScript(
-      tabId,
-      {
-        file: "/assets/javascripts/helpers/youtube/piped-preferences.js",
-        runAt: "document_start"
-      }
-    );
-}
+async function initDefaults() {
+  console.log('youtube initDefaults')
+  return new Promise(async resolve => {
+    fetch('/instances/data.json').then(response => response.text()).then(async data => {
+      let dataJson = JSON.parse(data);
+      redirects.invidious = dataJson.invidious;
+      await browser.storage.local.set({
+        disableYoutube: false,
+        enableYoutubeCustomSettings: false,
+        OnlyEmbeddedVideo: 'both',
+
+        youtubeRedirects: {
+          'invidious': dataJson.invidious,
+          'piped': redirects.piped,
+          'pipedMaterial': redirects.pipedMaterial
+        },
 
-function initPipedMaterialLocalStorage(tabId) {
-  if (!disable && frontend == 'pipedMaterial' && enableCustomSettings)
-    browser.tabs.executeScript(
-      tabId,
-      {
-        file: "/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js",
-        runAt: "document_start"
-      }
-    );
-}
+        youtubeFrontend: 'invidious',
 
-function initInvidiousCookies() {
-  console.log('initInvidiousCookies()');
-  if (!disable && frontend == 'invidious' && enableCustomSettings) {
-    let checkedInstances;
-    if (protocol == 'normal') checkedInstances = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects];
-    else if (protocol == 'tor') checkedInstances = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects];
-
-    for (const instanceUrl of checkedInstances)
-      browser.cookies.get(
-        {
-          url: instanceUrl,
-          name: "PREFS",
-        },
-        cookie => {
-          let prefs = {};
-          if (cookie) {
-            prefs = JSON.parse(decodeURIComponent(cookie.value));
-            browser.cookies.remove({ url: instanceUrl, name: "PREFS" });
-          }
-
-          prefs.local = invidiousAlwaysProxy;
-          prefs.video_loop = invidiousVideoLoop;
-          prefs.continue_autoplay = invidiousContinueAutoplay;
-          prefs.continue = invidiousContinue;
-          prefs.listen = youtubeListen;
-          prefs.speed = parseFloat(invidiousSpeed);
-          prefs.quality = invidiousQuality;
-          prefs.quality_dash = invidiousQualityDash;
-
-          prefs.comments = invidiousComments;
-          prefs.captions = invidiousCaptions;
-
-          prefs.related_videos = invidiousRelatedVideos;
-          prefs.annotations = invidiousAnnotations
-          prefs.extend_desc = invidiousExtendDesc;
-          prefs.vr_mode = invidiousVrMode;
-          prefs.save_player_pos = invidiousSavePlayerPos;
-
-          prefs.volume = parseInt(volume);
-          prefs.player_style = invidiousPlayerStyle;
-          prefs.autoplay = youtubeAutoplay;
-
-          prefs.region = invidiousRegion;
-          prefs.dark_mode = invidiousDarkMode;
-          prefs.thin_mode = invidiousThinMode;
-          prefs.default_home = invidiousDefaultHome;
-          prefs.feed_menu = invidiousFeedMenuList;
-
-          browser.cookies.set({
-            url: instanceUrl,
-            name: "PREFS",
-            value: encodeURIComponent(JSON.stringify(prefs))
-          })
-        }
-      )
-  }
-}
+        invidiousNormalRedirectsChecks: [...redirects.invidious.normal],
+        invidiousNormalCustomRedirects: [],
 
-let theme;
-async function init() {
-  await initOptions();
-  return new Promise(
-    resolve => {
-      fetch('/instances/data.json').then(response => response.text()).then(data => {
-        let dataJson = JSON.parse(data);
-        browser.storage.local.get(
-          [
-            "theme",
-            "disableYoutube",
-            "enableYoutubeCustomSettings",
-            "OnlyEmbeddedVideo",
-            "youtubeRedirects",
-            "youtubeFrontend",
+        invidiousTorRedirectsChecks: [...redirects.invidious.tor],
+        invidiousTorCustomRedirects: [],
 
-            "invidiousNormalRedirectsChecks",
-            "invidiousNormalCustomRedirects",
+        pipedNormalRedirectsChecks: [...redirects.piped.normal],
+        pipedNormalCustomRedirects: [],
 
-            "invidiousTorRedirectsChecks",
-            "invidiousTorCustomRedirects",
+        pipedTorRedirectsChecks: [...redirects.piped.tor],
+        pipedTorCustomRedirects: [],
 
-            "pipedNormalRedirectsChecks",
-            "pipedNormalCustomRedirects",
+        pipedMaterialNormalRedirectsChecks: [...redirects.pipedMaterial.normal],
+        pipedMaterialNormalCustomRedirects: [],
 
-            "pipedMaterialNormalRedirectsChecks",
-            "pipedMaterialNormalCustomRedirects",
+        pipedMaterialTorRedirectsChecks: [...redirects.pipedMaterial.tor],
+        pipedMaterialTorCustomRedirects: [],
 
-            "pipedMaterialTorRedirectsChecks",
-            "pipedMaterialTorCustomRedirects",
+        alwaysUsePreferred: false,
+        youtubeEmbedFrontend: 'invidious',
+        youtubeProtocol: 'normal',
+        bypassWatchOnYoutube: true,
+      })
+      
+      await invidious.initDefaults();
+      await piped.initDefaults();
+      await pipedMaterial.initDefaults();
+      resolve();
+    }
+    )
+  })
+}
+
+async function init() {
+  return new Promise(
+    resolve => {
+      browser.storage.local.get(
+        [
+          "disableYoutube",
+          "OnlyEmbeddedVideo",
+          "youtubeRedirects",
+          "youtubeFrontend",
 
-            "pipedTorRedirectsChecks",
-            "pipedTorCustomRedirects",
-            "alwaysUsePreferred",
-            "youtubeEmbedFrontend",
+          "invidiousNormalRedirectsChecks",
+          "invidiousNormalCustomRedirects",
 
-            "youtubeProtocol",
+          "invidiousTorRedirectsChecks",
+          "invidiousTorCustomRedirects",
 
-            "bypassWatchOnYoutube"
-          ],
-          r => {
-            redirects.invidious = dataJson.invidious;
-            if (r.youtubeRedirects) redirects = r.youtubeRedirects;
+          "pipedNormalRedirectsChecks",
+          "pipedNormalCustomRedirects",
 
-            disable = r.disableYoutube ?? false;
-            enableCustomSettings = r.enableYoutubeCustomSettings ?? false;
-            protocol = r.youtubeProtocol ?? 'normal';
-            frontend = r.youtubeFrontend ?? 'invidious';
-            youtubeEmbedFrontend = r.youtubeEmbedFrontend ?? 'invidious';
+          "pipedTorRedirectsChecks",
+          "pipedTorCustomRedirects",
 
-            theme = r.theme ?? 'dark';
+          "pipedMaterialNormalRedirectsChecks",
+          "pipedMaterialNormalCustomRedirects",
 
-            OnlyEmbeddedVideo = r.OnlyEmbeddedVideo ?? 'both';
+          "pipedMaterialTorRedirectsChecks",
+          "pipedMaterialTorCustomRedirects",
 
-            invidiousNormalRedirectsChecks = r.invidiousNormalRedirectsChecks ?? [...redirects.invidious.normal];
-            invidiousNormalCustomRedirects = r.invidiousNormalCustomRedirects ?? [];
+          "alwaysUsePreferred",
+          "youtubeEmbedFrontend",
+          "youtubeProtocol",
+          "bypassWatchOnYoutube",
+        ],
+        r => {
 
-            invidiousTorRedirectsChecks = r.invidiousTorRedirectsChecks ?? [...redirects.invidious.tor];
-            invidiousTorCustomRedirects = r.invidiousTorCustomRedirects ?? [];
+          console.log('inited r.youtubeRedirects', r.youtubeRedirects);
+          redirects = r.youtubeRedirects;
 
-            pipedNormalRedirectsChecks = r.pipedNormalRedirectsChecks ?? [...redirects.piped.normal];
-            pipedNormalCustomRedirects = r.pipedNormalCustomRedirects ?? [];
+          disable = r.disableYoutube;
+          protocol = r.youtubeProtocol;
+          frontend = r.youtubeFrontend;
 
-            pipedTorRedirectsChecks = r.pipedTorRedirectsChecks ?? [...redirects.piped.tor];
-            pipedTorCustomRedirects = r.pipedTorCustomRedirects ?? [];
+          invidiousNormalRedirectsChecks = r.invidiousNormalRedirectsChecks;
+          invidiousNormalCustomRedirects = r.invidiousNormalCustomRedirects;
 
-            pipedMaterialNormalRedirectsChecks = r.pipedMaterialNormalRedirectsChecks ?? [...redirects.pipedMaterial.normal];
-            pipedMaterialNormalCustomRedirects = r.pipedMaterialNormalCustomRedirects ?? [];
+          invidiousTorRedirectsChecks = r.invidiousTorRedirectsChecks;
+          invidiousTorCustomRedirects = r.invidiousTorCustomRedirects;
 
-            pipedMaterialTorRedirectsChecks = r.pipedMaterialTorRedirectsChecks ?? [...redirects.pipedMaterial.tor];
-            pipedMaterialTorCustomRedirects = r.pipedMaterialTorCustomRedirects ?? [];
+          pipedNormalRedirectsChecks = r.pipedNormalRedirectsChecks;
+          pipedNormalCustomRedirects = r.pipedNormalCustomRedirects;
 
-            alwaysUsePreferred = r.alwaysUsePreferred ?? false;
+          pipedTorRedirectsChecks = r.pipedTorRedirectsChecks;
+          pipedTorCustomRedirects = r.pipedTorCustomRedirects;
 
-            bypassWatchOnYoutube = r.bypassWatchOnYoutube ?? true;
+          pipedMaterialNormalRedirectsChecks = r.pipedMaterialNormalRedirectsChecks;
+          pipedMaterialNormalCustomRedirects = r.pipedMaterialNormalCustomRedirects;
 
-            initInvidiousCookies();
+          pipedMaterialTorRedirectsChecks = r.pipedMaterialTorRedirectsChecks;
+          pipedMaterialTorCustomRedirects = r.pipedMaterialTorCustomRedirects;
 
-            resolve();
+          youtubeEmbedFrontend = r.youtubeEmbedFrontend;
+          OnlyEmbeddedVideo = r.OnlyEmbeddedVideo;
+          alwaysUsePreferred = r.alwaysUsePreferred;
+          bypassWatchOnYoutube = r.bypassWatchOnYoutube;
 
-          });
-      });
+          resolve();
+        });
     })
 }
 
+let
+  initPipedLocalStorage = piped.initPipedLocalStorage,
+  initPipedMaterialLocalStorage = pipedMaterial.initPipedMaterialLocalStorage,
+  initInvidiousCookies = invidious.initInvidiousCookies;
+
 export default {
-  setYoutubeSettings,
-  getBypassWatchOnYoutube,
   initPipedLocalStorage,
   initPipedMaterialLocalStorage,
-  getFrontend,
-  getYoutubeEmbedFrontend,
+  initInvidiousCookies,
   getRedirects,
-  getCustomRedirects,
-  setInvidiousRedirects,
-  setPipedRedirects,
+
   redirect,
+  reverse,
+
   switchInstance,
-  isPipedorInvidious,
-  initInvidiousCookies,
-  getInvidiousAlwaysProxy,
-  getInvidiousQuality,
-  getInvidiousPlayerStyle,
-  getInvidiousVideoLoop,
-  getInvidiousRegion,
-  getInvidiousDarkMode,
-  getInvidiousThinMode,
-  getInvidiousDefaultHome,
-  getInvidiousFeedMenuList,
-
-  getDisable,
-  setDisable,
 
-  reverse,
+  isPipedorInvidious,
 
-  getEnableCustomSettings,
-  getProtocol,
-  getOnlyEmbeddedVideo,
-  setVolume,
-  getVolume,
-  setAutoplay,
-  getAutoplay,
-  getInvidiousContinueAutoplay,
-  getInvidiousContinue,
-  getYoutubeListen,
-  getInvidiousSpeed,
-  getInvidiousQualityDash,
-  getInvidiousComments,
-  getInvidiousCaptions,
-  getInvidiousRelatedVideos,
-  getInvidiousAnnotations,
-  getInvidiousExtendDesc,
-  getInvidiousVrMode,
-  getInvidiousSavePlayerPos,
-  getPipedBufferGoal,
-  getPipedComments,
-  getPipedDisableLBRY,
-  getPipedEnabledCodecs,
-  getPipedHomepage,
-  getPipedMinimizeDescription,
-  getPipedProxyLBRY,
-  getPipedQuality,
-  getPipedRegion,
-  getPipedSelectedSkip,
-  getPipedSponsorblock,
-  getPipedDdlTheme,
-  getPipedWatchHistory,
-  getPipedMaterialSkipToLastPoint,
-
-  getInvidiousNormalRedirectsChecks,
-  setInvidiousNormalRedirectsChecks,
-
-  getInvidiousNormalCustomRedirects,
-  setInvidiousNormalCustomRedirects,
-
-  getPipedNormalRedirectsChecks,
-  setPipedNormalRedirectsChecks,
-
-  getPipedNormalCustomRedirects,
-  setPipedNormalCustomRedirects,
-
-  getInvidiousTorRedirectsChecks,
-  setInvidiousTorRedirectsChecks,
-
-  getInvidiousTorCustomRedirects,
-  setInvidiousTorCustomRedirects,
-
-  getPipedTorRedirectsChecks,
-  setPipedTorRedirectsChecks,
-
-  getPipedTorCustomRedirects,
-  setPipedTorCustomRedirects,
-
-  getPipedMaterialNormalRedirectsChecks,
-  setPipedMaterialNormalRedirectsChecks,
-
-  getPipedMaterialNormalCustomRedirects,
-  setPipedMaterialNormalCustomRedirects,
-
-  getPipedMaterialTorRedirectsChecks,
-  setPipedMaterialTorRedirectsChecks,
-
-  getPipedMaterialTorCustomRedirects,
-  setPipedMaterialTorCustomRedirects,
-
-  setPipedMaterialRedirects,
+  initDefaults,
 
   init,
 };
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index 88e64890..ae5f9f95 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -22,14 +22,25 @@ import youtubeMusicHelper from "../../assets/javascripts/helpers/youtubeMusic.js
 
 window.browser = window.browser || window.chrome;
 
+
+
 browser.runtime.onInstalled.addListener(async details => {
   if (details.reason == 'install') {
+    await instagramHelper.initDefaults();
     await redditHelper.initDefaults();
+    await youtubeHelper.initDefaults();
     await tiktokHelper.initDefaults();
+    await imgurHelper.initDefaults();
     await wholeInit();
+    browser.storage.local.set({ initDefaults: true })
+    initListener();
   }
 });
 
+function initListener() {
+  browser.storage.onChanged.addListener(wholeInit);
+}
+
 async function wholeInit() {
   await youtubeHelper.init();
   await youtubeMusicHelper.init();
@@ -51,9 +62,15 @@ async function wholeInit() {
   await spotifyHelper.init();
   await generalHelper.init();
 }
-await wholeInit();
 
-browser.storage.onChanged.addListener(wholeInit);
+await browser.storage.local.get(
+  'initDefaults',
+  async r => {
+    if (r.initDefaults == true) {
+      await wholeInit();
+      initListener();
+    }
+  })
 
 let incognitoInit = false;
 browser.tabs.onCreated.addListener(
@@ -79,7 +96,7 @@ browser.webRequest.onBeforeRequest.addListener(
     else if (details.initiator)
       initiator = new URL(details.initiator);
 
-    var newUrl;
+    let newUrl;
 
     if (!newUrl) newUrl = youtubeHelper.redirect(url, details, initiator)
     if (youtubeMusicHelper.isYoutubeMusic(url, initiator)) newUrl = youtubeMusicHelper.redirect(url, details.type)
@@ -94,7 +111,7 @@ browser.webRequest.onBeforeRequest.addListener(
 
     if (!newUrl) newUrl = mediumHelper.redirect(url, details.type, initiator);
 
-    if (imgurHelper.isImgur(url, initiator)) newUrl = imgurHelper.redirect(url, details.type);
+    if (!newUrl) newUrl = imgurHelper.redirect(url, details.type, initiator);
 
     if (!newUrl) newUrl = tiktokHelper.redirect(url, details.type, initiator);
 
@@ -126,11 +143,11 @@ browser.webRequest.onBeforeRequest.addListener(
     if (BYPASSTABs.includes(details.tabId)) newUrl = null;
 
     if (newUrl) {
-      if (newUrl == 'CANCEL') {
+      if (newUrl === 'CANCEL') {
         console.log(`Canceled ${url}`);
         return { cancel: true };
       }
-      else if (newUrl == 'BYPASSTAB') {
+      else if (newUrl === 'BYPASSTAB') {
         console.log(`Bybassed ${details.tabId} ${url}`);
         if (!BYPASSTABs.includes(details.tabId)) BYPASSTABs.push(details.tabId);
         return null;
diff --git a/src/pages/options/imgur/imgur.js b/src/pages/options/imgur/imgur.js
index 11ebcebc..8d4428cf 100644
--- a/src/pages/options/imgur/imgur.js
+++ b/src/pages/options/imgur/imgur.js
@@ -2,18 +2,15 @@ import imgurHelper from "../../../assets/javascripts/helpers/imgur.js";
 import commonHelper from "../../../assets/javascripts/helpers/common.js";
 
 let disableImgurElement = document.getElementById("disable-imgur");
-disableImgurElement.addEventListener("change",
-    (event) => imgurHelper.setDisable(!event.target.checked)
-);
-
 let protocolElement = document.getElementById("protocol")
-protocolElement.addEventListener("change",
-    event => {
-        let protocol = event.target.options[protocolElement.selectedIndex].value
-        imgurHelper.setProtocol(protocol);
-        changeProtocolSettings(protocol);
-    }
-);
+
+document.addEventListener("change", async () => {
+    await browser.storage.local.set({
+        disableImgur: !disableImgurElement.checked,
+        imgurProtocol: protocolElement.value,
+    });
+    init();
+})
 
 function changeProtocolSettings(protocol) {
     let normalDiv = document.getElementsByClassName("normal")[0];
@@ -36,50 +33,45 @@ function changeProtocolSettings(protocol) {
     }
 }
 
-imgurHelper.init().then(() => {
-    disableImgurElement.checked = !imgurHelper.getDisable();
+function init() {
+    imgurHelper.init().then(() => {
+        browser.storage.local.get(
+            [
+                "disableImgur",
+                "imgurProtocol",
+            ],
+            r => {
+                disableImgurElement.checked = !r.disableImgur;
+                protocol.value = r.imgurProtocol;
+                changeProtocolSettings(r.imgurProtocol);
+            }
+        );
 
-    let protocol = imgurHelper.getProtocol();
-    console.log('protocol', protocol);
-    protocolElement.value = protocol;
-    changeProtocolSettings(protocol);
 
-    browser.storage.local.get("rimgoLatency").then(r => {
         commonHelper.processDefaultCustomInstances(
             'rimgo',
             'normal',
             imgurHelper,
-            document,
-            imgurHelper.getRimgoNormalRedirectsChecks,
-            imgurHelper.setRimgoNormalRedirectsChecks,
-            imgurHelper.getRimgoNormalCustomRedirects,
-            imgurHelper.setRimgoNormalCustomRedirects,
-            r.rimgoLatency
+            document
         );
-    });
 
-    commonHelper.processDefaultCustomInstances(
-        'rimgo',
-        'tor',
-        imgurHelper,
-        document,
-        imgurHelper.getRimgoTorRedirectsChecks,
-        imgurHelper.setRimgoTorRedirectsChecks,
-        imgurHelper.getRimgoTorCustomRedirects,
-        imgurHelper.setRimgoTorCustomRedirects
-    );
+        commonHelper.processDefaultCustomInstances(
+            'rimgo',
+            'tor',
+            imgurHelper,
+            document
+        );
+
+        commonHelper.processDefaultCustomInstances(
+            'rimgo',
+            'i2p',
+            imgurHelper,
+            document
+        );
+    });
+}
+init();
 
-    commonHelper.processDefaultCustomInstances(
-        'rimgo',
-        'i2p',
-        imgurHelper,
-        document,
-        imgurHelper.getRimgoI2pRedirectsChecks,
-        imgurHelper.setRimgoI2pRedirectsChecks,
-        imgurHelper.getRimgoI2pCustomRedirects,
-        imgurHelper.setRimgoI2pCustomRedirects
-    );
-});
 
 let latencyElement = document.getElementById("latency");
 let latencyLabel = document.getElementById("latency-label");
diff --git a/src/pages/options/instagram/instagram.js b/src/pages/options/instagram/instagram.js
index 867a5ddc..7dcd5607 100644
--- a/src/pages/options/instagram/instagram.js
+++ b/src/pages/options/instagram/instagram.js
@@ -2,18 +2,15 @@ import instagramHelper from "../../../assets/javascripts/helpers/instagram.js";
 import commonHelper from "../../../assets/javascripts/helpers/common.js";
 
 let disableInstagramElement = document.getElementById("disable-bibliogram");
-disableInstagramElement.addEventListener("change",
-    (event) => instagramHelper.setDisable(!event.target.checked)
-);
+let protocolElement = document.getElementById("protocol");
 
-let protocolElement = document.getElementById("protocol")
-protocolElement.addEventListener("change",
-    (event) => {
-        let protocol = event.target.options[protocolElement.selectedIndex].value
-        instagramHelper.setProtocol(protocol);
-        changeProtocolSettings(protocol);
-    }
-);
+document.addEventListener("change", async () => {
+    await browser.storage.local.set({
+        disableInstagram: disableInstagramElement.checked,
+        instagramProtocol: protocolElement.value,
+    })
+    changeProtocolSettings(protocolElement.value);
+})
 
 function changeProtocolSettings(protocol) {
     let normalDiv = document.getElementsByClassName("normal")[0];
@@ -28,41 +25,23 @@ function changeProtocolSettings(protocol) {
     }
 }
 
-instagramHelper.init().then(() => {
-    disableInstagramElement.checked = !instagramHelper.getDisable();
+browser.storage.local.get(
+    [
+        "disableInstagram",
+        "instagramProtocol"
+    ],
+    r => {
 
-    let protocol = instagramHelper.getProtocol();
-    protocolElement.value = protocol;
-    changeProtocolSettings(protocol);
+        disableInstagramElement.checked = !r.disableInstagram;
 
+        let protocol = r.instagramProtocol;
+        protocolElement.value = protocol;
+        changeProtocolSettings(protocol);
 
-    browser.storage.local.get("bibliogramLatency").then(r => {
-        commonHelper.processDefaultCustomInstances(
-            'bibliogram',
-            'normal',
-            instagramHelper,
-            document,
-            instagramHelper.getBibliogramNormalRedirectsChecks,
-            instagramHelper.setBibliogramNormalRedirectsChecks,
-            instagramHelper.getBibliogramNormalCustomRedirects,
-            instagramHelper.setBibliogramNormalCustomRedirects,
-            r.bibliogramLatency,
-        )
+        commonHelper.processDefaultCustomInstances('bibliogram', 'normal', instagramHelper, document)
+        commonHelper.processDefaultCustomInstances('bibliogram', 'tor', instagramHelper, document)
     })
 
-    commonHelper.processDefaultCustomInstances(
-        'bibliogram',
-        'tor',
-        instagramHelper,
-        document,
-        instagramHelper.getBibliogramTorRedirectsChecks,
-        instagramHelper.setBibliogramTorRedirectsChecks,
-        instagramHelper.getBibliogramTorCustomRedirects,
-        instagramHelper.setBibliogramTorCustomRedirects
-    )
-})
-
-
 let latencyElement = document.getElementById("latency");
 let latencyLabel = document.getElementById("latency-label");
 latencyElement.addEventListener("click",
@@ -76,17 +55,7 @@ latencyElement.addEventListener("click",
         commonHelper.testLatency(latencyLabel, redirects.bibliogram.normal).then(r => {
             browser.storage.local.set({ bibliogramLatency: r });
             latencyLabel.innerHTML = oldHtml;
-            commonHelper.processDefaultCustomInstances(
-                'bibliogram',
-                'normal',
-                instagramHelper,
-                document,
-                instagramHelper.getBibliogramNormalRedirectsChecks,
-                instagramHelper.setBibliogramNormalRedirectsChecks,
-                instagramHelper.getBibliogramNormalCustomRedirects,
-                instagramHelper.setBibliogramNormalCustomRedirects,
-                r,
-            );
+            commonHelper.processDefaultCustomInstances('bibliogram', 'normal', instagramHelper, document);
             latencyElement.removeEventListener("click", reloadWindow);
         });
     }
diff --git a/src/pages/options/reddit/reddit.js b/src/pages/options/reddit/reddit.js
index 91160ecf..47bd1856 100644
--- a/src/pages/options/reddit/reddit.js
+++ b/src/pages/options/reddit/reddit.js
@@ -45,7 +45,6 @@ document.addEventListener("change", async () => {
     init();
 })
 
-
 window.onblur = () => {
     redditHelper.initLibredditCookies();
     redditHelper.initTedditCookies();
@@ -93,100 +92,53 @@ function changeFrontendsSettings(frontend) {
     }
 }
 function init() {
-    redditHelper.init().then(() => {
-        browser.storage.local.get(
-            [
-                "disableReddit",
-                "bypassWatchOnReddit",
-                "redditProtocol",
-                "redditFrontend",
-
-                "enableLibredditCustomSettings",
-
-                "redditTheme",
-                "redditFrontPage",
-                "redditLayout",
-                "redditWide",
-                "redditPostSort",
-                "redditCommentSort",
-                "redditShowNsfw",
-                "redditAutoplayVideos",
-                "redditUseHls",
-                "redditHideHlsNotification",
-            ],
-            r => {
-                disableRedditElement.checked = !r.disableReddit
-                bypassWatchOnRedditElement.checked = r.bypassWatchOnReddit
-                protocolElement.value = r.redditProtocol
-                redditFrontendElement.value = r.redditFrontend
-                enableLibredditSettingsElement.checked = r.enableLibredditCustomSettings
-                changeFrontendsSettings(r.redditFrontend);
-                changeProtocolSettings(r.redditProtocol);
-
-                theme.value = r.redditTheme;
-                front_page.value = r.redditFrontPage;
-                layout.value = r.redditLayout;
-                wide.checked = r.redditWide;
-                post_sort.value = r.redditPostSort;
-                comment_sort.value = r.redditCommentSort;
-                show_nsfw.checked = r.redditShowNsfw;
-                autoplay_videos.checked = r.redditAutoplayVideos;
-                use_hls.checked = r.redditUseHls;
-                hide_hls_notification.checked = r.redditHideHlsNotification;
-            }
-        )
-
-        browser.storage.local.get("libredditLatency").then(r => {
-            commonHelper.processDefaultCustomInstances(
-                'libreddit',
-                'normal',
-                redditHelper,
-                document,
-                redditHelper.getLibredditNormalRedirectsChecks,
-                redditHelper.setLibredditNormalRedirectsChecks,
-                redditHelper.getLibredditNormalCustomRedirects,
-                redditHelper.setLibredditNormalCustomRedirects,
-                r.libredditLatency,
-            )
-        })
-
-        commonHelper.processDefaultCustomInstances(
-            'libreddit',
-            'tor',
-            redditHelper,
-            document,
-            redditHelper.getLibredditTorRedirectsChecks,
-            redditHelper.setLibredditTorRedirectsChecks,
-            redditHelper.getLibredditTorCustomRedirects,
-            redditHelper.setLibredditTorCustomRedirects
-        )
-
-        browser.storage.local.get("tedditLatency").then(r => {
-            commonHelper.processDefaultCustomInstances(
-                'teddit',
-                'normal',
-                redditHelper,
-                document,
-                redditHelper.getTedditNormalRedirectsChecks,
-                redditHelper.setTedditNormalRedirectsChecks,
-                redditHelper.getTedditNormalCustomRedirects,
-                redditHelper.setTedditNormalCustomRedirects,
-                r.tedditLatency,
-            );
-        })
-
-        commonHelper.processDefaultCustomInstances(
-            'teddit',
-            'tor',
-            redditHelper,
-            document,
-            redditHelper.getTedditTorRedirectsChecks,
-            redditHelper.setTedditTorRedirectsChecks,
-            redditHelper.getTedditTorCustomRedirects,
-            redditHelper.setTedditTorCustomRedirects
-        );
-
-    })
+    browser.storage.local.get(
+        [
+            "disableReddit",
+            "bypassWatchOnReddit",
+            "redditProtocol",
+            "redditFrontend",
+
+            "enableLibredditCustomSettings",
+
+            "redditTheme",
+            "redditFrontPage",
+            "redditLayout",
+            "redditWide",
+            "redditPostSort",
+            "redditCommentSort",
+            "redditShowNsfw",
+            "redditAutoplayVideos",
+            "redditUseHls",
+            "redditHideHlsNotification",
+        ],
+        r => {
+            disableRedditElement.checked = !r.disableReddit
+            bypassWatchOnRedditElement.checked = r.bypassWatchOnReddit
+            protocolElement.value = r.redditProtocol
+            redditFrontendElement.value = r.redditFrontend
+            enableLibredditSettingsElement.checked = r.enableLibredditCustomSettings
+            changeFrontendsSettings(r.redditFrontend);
+            changeProtocolSettings(r.redditProtocol);
+
+            theme.value = r.redditTheme;
+            front_page.value = r.redditFrontPage;
+            layout.value = r.redditLayout;
+            wide.checked = r.redditWide;
+            post_sort.value = r.redditPostSort;
+            comment_sort.value = r.redditCommentSort;
+            show_nsfw.checked = r.redditShowNsfw;
+            autoplay_videos.checked = r.redditAutoplayVideos;
+            use_hls.checked = r.redditUseHls;
+            hide_hls_notification.checked = r.redditHideHlsNotification;
+        }
+    )
+
+    commonHelper.processDefaultCustomInstances('libreddit', 'normal', redditHelper, document)
+    commonHelper.processDefaultCustomInstances('libreddit', 'tor', redditHelper, document)
+
+    commonHelper.processDefaultCustomInstances('teddit', 'normal', redditHelper, document);
+    commonHelper.processDefaultCustomInstances('teddit', 'tor', redditHelper, document);
 }
 init();
 
@@ -203,17 +155,7 @@ latencyLibredditElement.addEventListener("click",
         commonHelper.testLatency(latencyLibredditLabel, redirects.libreddit.normal).then(r => {
             browser.storage.local.set({ libredditLatency: r });
             latencyLibredditLabel.innerHTML = oldHtml;
-            commonHelper.processDefaultCustomInstances(
-                'libreddit',
-                'normal',
-                redditHelper,
-                document,
-                redditHelper.getLibredditNormalRedirectsChecks,
-                redditHelper.setLibredditNormalRedirectsChecks,
-                redditHelper.getLibredditNormalCustomRedirects,
-                redditHelper.setLibredditNormalCustomRedirects,
-                r,
-            );
+            commonHelper.processDefaultCustomInstances('libreddit', 'normal', redditHelper, document);
             latencyLibredditElement.removeEventListener("click", reloadWindow);
         });
     }
@@ -232,17 +174,7 @@ latencyTedditElement.addEventListener("click",
         commonHelper.testLatency(latencyTedditLabel, redirects.teddit.normal).then(r => {
             browser.storage.local.set({ tedditLatency: r });
             latencyTedditLabel.innerHTML = oldHtml;
-            commonHelper.processDefaultCustomInstances(
-                'teddit',
-                'normal',
-                redditHelper,
-                document,
-                redditHelper.getTedditNormalRedirectsChecks,
-                redditHelper.setTedditNormalRedirectsChecks,
-                redditHelper.getTedditNormalCustomRedirects,
-                redditHelper.setTedditNormalCustomRedirects,
-                r,
-            );
+            commonHelper.processDefaultCustomInstances('teddit', 'normal', redditHelper, document);
             latencyTedditElement.removeEventListener("click", reloadWindow);
         });
     }
diff --git a/src/pages/options/youtube/invidious.js b/src/pages/options/youtube/invidious.js
index af94c531..d314607e 100644
--- a/src/pages/options/youtube/invidious.js
+++ b/src/pages/options/youtube/invidious.js
@@ -34,21 +34,27 @@ let feed_menu1 = invidious.getElementsByClassName("feed_menu[1]")[0];
 volume.addEventListener("input", () => volumeValue.textContent = `${volume.value}%`);
 
 invidious.addEventListener("change", async _ => {
-    console.log('changed invidious settings');
-    let commentsList = youtubeHelper.getInvidiousComments();
-    commentsList[0] = comments0.value;
-    commentsList[1] = comments1.value;
-
-    let captionsList = youtubeHelper.getInvidiousCaptions();
-    captionsList[0] = captions0.value;
-    captionsList[1] = captions1.value;
-    captionsList[2] = captions2.value;
-
-    let feedMenuList = youtubeHelper.getInvidiousFeedMenuList();
-    feedMenuList[0] = feed_menu0.value;
-    feedMenuList[1] = feed_menu1.value;
-
-    await youtubeHelper.setYoutubeSettings({
+  browser.storage.local.get(
+    [
+      "invidiousComments",
+      "invidiousCaptions",
+      "invidiousFeedMenuList",
+    ],
+    async r => {
+      let commentsList = r.invidiousComments;
+      commentsList[0] = comments0.value;
+      commentsList[1] = comments1.value;
+
+      let captionsList = r.invidiousCaptions;
+      captionsList[0] = captions0.value;
+      captionsList[1] = captions1.value;
+      captionsList[2] = captions2.value;
+
+      let feedMenuList = r.invidiousFeedMenuList;
+      feedMenuList[0] = feed_menu0.value;
+      feedMenuList[1] = feed_menu1.value;
+
+      await browser.storage.local.set({
         invidiousAlwaysProxy: alwaysProxy.checked,
         youtubeAutoplay: autoplay.checked,
         invidiousPlayerStyle: playerStyle.value,
@@ -73,79 +79,85 @@ invidious.addEventListener("change", async _ => {
         invidiousThinMode: thin_mode.checked,
         invidiousDefaultHome: default_home.value,
         invidiousFeedMenuList: feedMenuList,
-    });
-    init();
+      });
+      init();
+    }
+  )
 });
 
 function init() {
-    youtubeHelper.init().then(() => {
-        videoLoop.checked = youtubeHelper.getInvidiousVideoLoop();
-
-        autoplay.checked = youtubeHelper.getAutoplay();
-
-        playerStyle.value = youtubeHelper.getInvidiousPlayerStyle();
-
-        continueAutoplay.checked = youtubeHelper.getInvidiousContinueAutoplay();
-        invidiousContinue.checked = youtubeHelper.getInvidiousContinue();
-        alwaysProxy.checked = youtubeHelper.getInvidiousAlwaysProxy();
-        youtubeListen.checked = youtubeHelper.getYoutubeListen();
-
-        speed.value = youtubeHelper.getInvidiousSpeed();
-        quality.value = youtubeHelper.getInvidiousQuality();
-        qualityDash.value = youtubeHelper.getInvidiousQualityDash();
-
-        volume.value = youtubeHelper.getVolume();
-        volumeValue.textContent = `${youtubeHelper.getVolume()}%`;
-
-        comments0.value = youtubeHelper.getInvidiousComments()[0];
-        comments1.value = youtubeHelper.getInvidiousComments()[1];
-
-        captions0.value = youtubeHelper.getInvidiousCaptions()[0];
-        captions1.value = youtubeHelper.getInvidiousCaptions()[1];
-        captions2.value = youtubeHelper.getInvidiousCaptions()[2];
-
-        relatedVideo.checked = youtubeHelper.getInvidiousRelatedVideos();
-        annotations.checked = youtubeHelper.getInvidiousAnnotations();
-        extendDesc.checked = youtubeHelper.getInvidiousExtendDesc();
-        vrMode.checked = youtubeHelper.getInvidiousVrMode();
-        savePlayerPos.checked = youtubeHelper.getInvidiousSavePlayerPos();
-
-        region.value = youtubeHelper.getInvidiousRegion();
-        darkMode.value = youtubeHelper.getInvidiousDarkMode();
-        thin_mode.checked = youtubeHelper.getInvidiousThinMode();
-        default_home.value = youtubeHelper.getInvidiousDefaultHome();
-
-        feed_menu0.value = youtubeHelper.getInvidiousFeedMenuList()[0];
-        feed_menu1.value = youtubeHelper.getInvidiousFeedMenuList()[1];
-
-        browser.storage.local.get("invidiousLatency").then(r => {
-        commonHelper.processDefaultCustomInstances(
-            'invidious',
-            'normal',
-            youtubeHelper,
-            document,
-            youtubeHelper.getInvidiousNormalRedirectsChecks,
-            youtubeHelper.setInvidiousNormalRedirectsChecks,
-            youtubeHelper.getInvidiousNormalCustomRedirects,
-            youtubeHelper.setInvidiousNormalCustomRedirects,
-            r.invidiousLatency
-          );
-        })
-
-        commonHelper.processDefaultCustomInstances(
-            'invidious',
-            'tor',
-            youtubeHelper,
-            document,
-            youtubeHelper.getInvidiousTorRedirectsChecks,
-            youtubeHelper.setInvidiousTorRedirectsChecks,
-            youtubeHelper.getInvidiousTorCustomRedirects,
-            youtubeHelper.setInvidiousTorCustomRedirects
-        );
-    });
+  browser.storage.local.get(
+    [
+      "youtubeListen",
+      "youtubeVolume",
+      "youtubeAutoplay",
+      "invidiousQuality",
+      "invidiousAlwaysProxy",
+      "invidiousQuality",
+      "invidiousPlayerStyle",
+      "invidiousVideoLoop",
+      "invidiousContinueAutoplay",
+      "invidiousContinue",
+      "invidiousSpeed",
+      "invidiousQualityDash",
+      "invidiousComments",
+      "invidiousCaptions",
+      "invidiousRelatedVideos",
+      "invidiousAnnotations",
+      "invidiousExtendDesc",
+      "invidiousVrMode",
+      "invidiousSavePlayerPos",
+      "invidiousRegion",
+      "invidiousDarkMode",
+      "invidiousThinMode",
+      "invidiousDefaultHome",
+      "invidiousFeedMenuList",
+    ],
+    r => {
+      videoLoop.checked = r.invidiousVideoLoop;
+      autoplay.checked = r.youtubeAutoplay;
+      playerStyle.value = r.invidiousPlayerStyle;
+
+      continueAutoplay.checked = r.invidiousContinueAutoplay;
+      invidiousContinue.checked = r.invidiousContinue;
+      alwaysProxy.checked = r.invidiousAlwaysProxy;
+      youtubeListen.checked = r.youtubeListen;
+
+      speed.value = r.invidiousSpeed;
+      quality.value = r.invidiousQuality;
+      qualityDash.value = r.invidiousQualityDash;
+
+      volume.value = r.youtubeVolume;
+      volumeValue.textContent = `${r.youtubeVolume}%`;
+
+      comments0.value = r.invidiousComments[0];
+      comments1.value = r.invidiousComments[1];
+
+      captions0.value = r.invidiousCaptions[0];
+      captions1.value = r.invidiousCaptions[1];
+      captions2.value = r.invidiousCaptions[2];
+
+      relatedVideo.checked = r.invidiousRelatedVideos;
+      annotations.checked = r.invidiousAnnotations;
+      extendDesc.checked = r.invidiousExtendDesc;
+      vrMode.checked = r.invidiousVrMode;
+      savePlayerPos.checked = r.invidiousSavePlayerPos;
+
+      region.value = r.invidiousRegion;
+      darkMode.value = r.invidiousDarkMode;
+      thin_mode.checked = r.invidiousThinMode;
+      default_home.value = r.invidiousDefaultHome;
+
+      feed_menu0.value = r.invidiousFeedMenuList[0];
+      feed_menu1.value = r.invidiousFeedMenuList[1];
+
+      commonHelper.processDefaultCustomInstances('invidious', 'normal', youtubeHelper, document);
+      commonHelper.processDefaultCustomInstances('invidious', 'tor', youtubeHelper, document);
+    }
+  )
 }
 
-init()
+init();
 
 let latencyInvidiousElement = document.getElementById("latency-invidious");
 let latencyInvidiousLabel = document.getElementById("latency-invidious-label");
@@ -160,17 +172,7 @@ latencyInvidiousElement.addEventListener("click",
     commonHelper.testLatency(latencyInvidiousLabel, redirects.invidious.normal).then(r => {
       browser.storage.local.set({ invidiousLatency: r });
       latencyInvidiousLabel.innerHTML = oldHtml;
-      commonHelper.processDefaultCustomInstances(
-        'invidious',
-        'normal',
-        youtubeHelper,
-        document,
-        youtubeHelper.getInvidiousNormalRedirectsChecks,
-        youtubeHelper.setInvidiousNormalRedirectsChecks,
-        youtubeHelper.getInvidiousNormalCustomRedirects,
-        youtubeHelper.setInvidiousNormalCustomRedirects,
-        r,
-      );
+      commonHelper.processDefaultCustomInstances('invidious', 'normal', youtubeHelper, document);
       latencyInvidiousElement.removeEventListener("click", reloadWindow);
     });
   }
diff --git a/src/pages/options/youtube/piped.js b/src/pages/options/youtube/piped.js
index a0bc45a7..6e30b8e6 100644
--- a/src/pages/options/youtube/piped.js
+++ b/src/pages/options/youtube/piped.js
@@ -44,7 +44,6 @@ function selectSkipModify(value, boolean) {
 }
 let selectSkip = [];
 piped.addEventListener("change", async () => {
-    console.log("changed piped settings");
     let pipedEnabledCodecsResult = [];
     for (const opt of pipedEnabledCodecs.options)
         if (opt.selected) pipedEnabledCodecsResult.push(opt.value);
@@ -59,7 +58,7 @@ piped.addEventListener("change", async () => {
     selectSkipModify('poi_highlight', pipedSelectedSkipPoiHighlight.checked);
     selectSkipModify('filler', pipedSelectedSkipFiller.checked);
 
-    await youtubeHelper.setYoutubeSettings({
+    await browser.storage.local.set({
         pipedQuality: pipedQuality.value,
         pipedBufferGoal: pipedBufferGoal.value,
         pipedRegion: pipedRegion.value,
@@ -80,89 +79,78 @@ piped.addEventListener("change", async () => {
     init();
 });
 
-function init() {
-    youtubeHelper.init().then(() => {
-        pipedSponsorblock.checked = youtubeHelper.getPipedSponsorblock();
-        pipedDdlTheme.value = youtubeHelper.getPipedDdlTheme();
-        selectSkip = youtubeHelper.getPipedSelectedSkip();
-        pipedSelectedSkipSponsor.checked = selectSkip.includes('sponsor');
-        pipedSelectedSkipIntro.checked = selectSkip.includes('intro');
-        pipedSelectedSkipOutro.checked = selectSkip.includes('outro');
-        pipedSelectedSkipPreview.checked = selectSkip.includes('preview');
-        autoplay.checked = youtubeHelper.getAutoplay();
-        pipedSelectedSkipInteraction.checked = selectSkip.includes('interaction');
-        pipedSelectedSkipSelfpromo.checked = selectSkip.includes('selfpromo');
-        pipedSelectedSkipMusicOfftopic.checked = selectSkip.includes('music_offtopic');
-        pipedSelectedSkipPoiHighlight.checked = selectSkip.includes('poi_highlight');
-        pipedSelectedSkipFiller.checked = selectSkip.includes('filler');
-        pipedListen.checked = youtubeHelper.getYoutubeListen();
-        pipedQuality.value = youtubeHelper.getPipedQuality();
-        pipedBufferGoal.value = youtubeHelper.getPipedBufferGoal();
-        pipedRegion.value = youtubeHelper.getPipedRegion();
-        pipedHomepage.value = youtubeHelper.getPipedHomepage();
-        pipedComments.checked = youtubeHelper.getPipedComments();
-        pipedMinimizeDescription.checked = youtubeHelper.getPipedMinimizeDescription();
-        pipedWatchHistory.checked = youtubeHelper.getPipedWatchHistory();
-        pipedEnabledCodecs.value = youtubeHelper.getPipedEnabledCodecs();
-        pipedDisableLBRY.checked = youtubeHelper.getPipedDisableLBRY();
-        pipedProxyLBRY.checked = youtubeHelper.getPipedProxyLBRY();
+async function init() {
+    await browser.storage.local.get(
+        [
+            "youtubeVolume",
+            "youtubeAutoplay",
+            "youtubeListen",
 
-        volume.value = youtubeHelper.getVolume();
-        volumeValue.textContent = `${youtubeHelper.getVolume()}%`;
+            "pipedBufferGoal",
+            "pipedComments",
+            "pipedDisableLBRY",
+            "pipedEnabledCodecs",
+            "pipedHomepage",
+            "pipedMinimizeDescription",
+            "pipedProxyLBRY",
+            "pipedQuality",
+            "pipedRegion",
+            "pipedSelectedSkip",
+            "pipedSponsorblock",
+            "pipedDdlTheme",
+            "pipedWatchHistory",
+        ],
+        r => {
+            pipedSponsorblock.checked = r.pipedSponsorblock;
+            pipedDdlTheme.value = r.pipedDdlTheme;
+            selectSkip = r.pipedSelectedSkip;
+            pipedSelectedSkipSponsor.checked = selectSkip.includes('sponsor');
+            pipedSelectedSkipIntro.checked = selectSkip.includes('intro');
+            pipedSelectedSkipOutro.checked = selectSkip.includes('outro');
+            pipedSelectedSkipPreview.checked = selectSkip.includes('preview');
+            autoplay.checked = r.youtubeAutoplay;
+            pipedSelectedSkipInteraction.checked = selectSkip.includes('interaction');
+            pipedSelectedSkipSelfpromo.checked = selectSkip.includes('selfpromo');
+            pipedSelectedSkipMusicOfftopic.checked = selectSkip.includes('music_offtopic');
+            pipedSelectedSkipPoiHighlight.checked = selectSkip.includes('poi_highlight');
+            pipedSelectedSkipFiller.checked = selectSkip.includes('filler');
+            pipedListen.checked = r.youtubeListen;
+            pipedQuality.value = r.pipedQuality;
+            pipedBufferGoal.value = r.pipedBufferGoal;
+            pipedRegion.value = r.pipedRegion;
+            pipedHomepage.value = r.pipedHomepage;
+            pipedComments.checked = r.pipedComments;
+            pipedMinimizeDescription.checked = r.pipedMinimizeDescription;
+            pipedWatchHistory.checked = r.pipedWatchHistory;
+            pipedEnabledCodecs.value = r.pipedEnabledCodecs;
+            pipedDisableLBRY.checked = r.pipedDisableLBRY;
+            pipedProxyLBRY.checked = r.pipedProxyLBRY;
 
-        browser.storage.local.get("pipedLatency").then(r => {
-            commonHelper.processDefaultCustomInstances(
-                'piped',
-                'normal',
-                youtubeHelper,
-                document,
-                youtubeHelper.getPipedNormalRedirectsChecks,
-                youtubeHelper.setPipedNormalRedirectsChecks,
-                youtubeHelper.getPipedNormalCustomRedirects,
-                youtubeHelper.setPipedNormalCustomRedirects,
-                r.pipedLatency,
-            );
-        });
+            volume.value = r.youtubeVolume;
+            volumeValue.textContent = `${r.youtubeVolume}%`;
 
-        commonHelper.processDefaultCustomInstances(
-            'piped',
-            'tor',
-            youtubeHelper,
-            document,
-            youtubeHelper.getPipedTorRedirectsChecks,
-            youtubeHelper.setPipedTorRedirectsChecks,
-            youtubeHelper.getPipedTorCustomRedirects,
-            youtubeHelper.setPipedTorCustomRedirects
-        );
-    });
+            commonHelper.processDefaultCustomInstances('piped', 'normal', youtubeHelper, document);
+            commonHelper.processDefaultCustomInstances('piped', 'tor', youtubeHelper, document);
+        }
+    );
 }
 init();
 
 let latencyPipedElement = document.getElementById("latency-piped");
 let latencyPipedLabel = document.getElementById("latency-piped-label");
 latencyPipedElement.addEventListener("click",
-  async () => {
-    let reloadWindow = () => location.reload();
-    latencyPipedElement.addEventListener("click", reloadWindow);
-    await youtubeHelper.init();
-    let redirects = youtubeHelper.getRedirects();
-    const oldHtml = latencyPipedLabel.innerHTML;
-    latencyPipedLabel.innerHTML = '...';
-    commonHelper.testLatency(latencyPipedLabel, redirects.piped.normal).then(r => {
-      browser.storage.local.set({ pipedLatency: r });
-      latencyPipedLabel.innerHTML = oldHtml;
-      commonHelper.processDefaultCustomInstances(
-        'piped',
-        'normal',
-        youtubeHelper,
-        document,
-        youtubeHelper.getPipedNormalRedirectsChecks,
-        youtubeHelper.setPipedNormalRedirectsChecks,
-        youtubeHelper.getPipedNormalCustomRedirects,
-        youtubeHelper.setPipedNormalCustomRedirects,
-        r,
-      );
-      latencyPipedElement.removeEventListener("click", reloadWindow);
-    });
-  }
+    async () => {
+        let reloadWindow = () => location.reload();
+        latencyPipedElement.addEventListener("click", reloadWindow);
+        await youtubeHelper.init();
+        let redirects = youtubeHelper.getRedirects();
+        const oldHtml = latencyPipedLabel.innerHTML;
+        latencyPipedLabel.innerHTML = '...';
+        commonHelper.testLatency(latencyPipedLabel, redirects.piped.normal).then(r => {
+            browser.storage.local.set({ pipedLatency: r });
+            latencyPipedLabel.innerHTML = oldHtml;
+            commonHelper.processDefaultCustomInstances('piped', 'normal', youtubeHelper, document);
+            latencyPipedElement.removeEventListener("click", reloadWindow);
+        });
+    }
 );
diff --git a/src/pages/options/youtube/pipedMaterial.js b/src/pages/options/youtube/pipedMaterial.js
index bc31289a..7c647b18 100644
--- a/src/pages/options/youtube/pipedMaterial.js
+++ b/src/pages/options/youtube/pipedMaterial.js
@@ -44,7 +44,7 @@ pipedMaterialElement.addEventListener("change", async () => {
     selectSkipModify('selfpromo', selectedSkipSelfpromoElement.checked);
     selectSkipModify('music_offtopic', selectedSkipMusicOfftopicElement.checked);
 
-    await youtubeHelper.setYoutubeSettings({
+    await browser.storage.local.set({
         youtubeListen: listenElement.checked,
         pipedDisableLBRY: disableLBRYElement.checked,
         pipedProxyLBRY: proxyLBRYElement.checked,
@@ -68,77 +68,61 @@ pipedMaterialElement.addEventListener("change", async () => {
 });
 
 function init() {
-    youtubeHelper.init().then(() => {
-        autoplayElement.checked = youtubeHelper.getAutoplay();
-
-        listenElement.checked = youtubeHelper.getYoutubeListen();
-        disableLBRYElement.checked = youtubeHelper.getPipedDisableLBRY();
-        proxyLBRYElement.checked = youtubeHelper.getPipedProxyLBRY();
-        sponsorblockElement.checked = youtubeHelper.getPipedSponsorblock();
-        skipToLastPointElement.checked = youtubeHelper.getPipedMaterialSkipToLastPoint();
-        selectedSkipSponsorElement.checked = selectSkip.includes('sponsors');
-        selectedSkipIntroElement.checked = selectSkip.includes('intro');
-        selectedSkipOutroElement.checked = selectSkip.includes('outro');
-        selectedSkipPreviewElement.checked = selectSkip.includes('preview');
-        selectedSkipInteractionElement.checked = selectSkip.includes('interaction');
-        selectedSkipSelfpromoElement.checked = selectSkip.includes('selfpromo');
-        selectedSkipMusicOfftopicElement.checked = selectSkip.includes('music_offtopic');
-
-        volumeElement.value = youtubeHelper.getVolume();
-        volumeValueElement.textContent = `${youtubeHelper.getVolume()}%`;
-        browser.storage.local.get("pipedMaterialLatency").then(r => {
-            commonHelper.processDefaultCustomInstances(
-                'pipedMaterial',
-                'normal',
-                youtubeHelper,
-                document,
-                youtubeHelper.getPipedMaterialNormalRedirectsChecks,
-                youtubeHelper.setPipedMaterialNormalRedirectsChecks,
-                youtubeHelper.getPipedMaterialNormalCustomRedirects,
-                youtubeHelper.setPipedMaterialNormalCustomRedirects,
-                r.pipedMaterialLatency,
-            );
-        });
+    browser.storage.local.get(
+        [
+            "youtubeAutoplay",
+            "youtubeVolume",
+            "youtubeListen",
 
-        commonHelper.processDefaultCustomInstances(
-            'pipedMaterial',
-            'tor',
-            youtubeHelper,
-            document,
-            youtubeHelper.getPipedMaterialTorRedirectsChecks,
-            youtubeHelper.setPipedMaterialTorRedirectsChecks,
-            youtubeHelper.getPipedMaterialTorCustomRedirects,
-            youtubeHelper.setPipedMaterialTorCustomRedirects
-        );
-    });
+            "pipedDisableLBRY",
+            "pipedProxyLBRY",
+            "pipedSelectedSkip",
+            "pipedSponsorblock",
+
+            "pipedMaterialSkipToLastPoint",
+        ],
+        r => {
+            autoplayElement.checked = r.youtubeAutoplay;
+
+            listenElement.checked = r.youtubeListen;
+            disableLBRYElement.checked = r.pipedDisableLBRY;
+            proxyLBRYElement.checked = r.pipedProxyLBRY;
+            sponsorblockElement.checked = r.pipedSponsorblock;
+            skipToLastPointElement.checked = r.pipedMaterialSkipToLastPoint;
+
+            selectSkip = r.pipedSelectedSkip;
+            selectedSkipSponsorElement.checked = selectSkip.includes('sponsors');
+            selectedSkipIntroElement.checked = selectSkip.includes('intro');
+            selectedSkipOutroElement.checked = selectSkip.includes('outro');
+            selectedSkipPreviewElement.checked = selectSkip.includes('preview');
+            selectedSkipInteractionElement.checked = selectSkip.includes('interaction');
+            selectedSkipSelfpromoElement.checked = selectSkip.includes('selfpromo');
+            selectedSkipMusicOfftopicElement.checked = selectSkip.includes('music_offtopic');
+
+            volumeElement.value = r.youtubeVolume;
+            volumeValueElement.textContent = `${r.youtubeVolume}%`;
+
+            commonHelper.processDefaultCustomInstances('pipedMaterial', 'normal', youtubeHelper, document);
+            commonHelper.processDefaultCustomInstances('pipedMaterial', 'tor', youtubeHelper, document);
+        });
 }
 init();
 
 let latencyPipedMaterialElement = document.getElementById("latency-pipedMaterial");
 let latencyPipedMaterialLabel = document.getElementById("latency-pipedMaterial-label");
 latencyPipedMaterialElement.addEventListener("click",
-  async () => {
-    let reloadWindow = () => location.reload();
-    latencyPipedMaterialElement.addEventListener("click", reloadWindow);
-    await youtubeHelper.init();
-    let redirects = youtubeHelper.getRedirects();
-    const oldHtml = latencyPipedMaterialLabel.innerHTML;
-    latencyPipedMaterialLabel.innerHTML = '...';
-    commonHelper.testLatency(latencyPipedMaterialLabel, redirects.pipedMaterial.normal).then(r => {
-      browser.storage.local.set({ pipedMaterialLatency: r });
-      latencyPipedMaterialLabel.innerHTML = oldHtml;
-      commonHelper.processDefaultCustomInstances(
-        'pipedMaterial',
-        'normal',
-        youtubeHelper,
-        document,
-        youtubeHelper.getPipedMaterialNormalRedirectsChecks,
-        youtubeHelper.setPipedMaterialNormalRedirectsChecks,
-        youtubeHelper.getPipedMaterialNormalCustomRedirects,
-        youtubeHelper.setPipedMaterialNormalCustomRedirects,
-        r,
-      );
-      latencyPipedMaterialElement.removeEventListener("click", reloadWindow);
-    });
-  }
+    async () => {
+        let reloadWindow = () => location.reload();
+        latencyPipedMaterialElement.addEventListener("click", reloadWindow);
+        await youtubeHelper.init();
+        let redirects = youtubeHelper.getRedirects();
+        const oldHtml = latencyPipedMaterialLabel.innerHTML;
+        latencyPipedMaterialLabel.innerHTML = '...';
+        commonHelper.testLatency(latencyPipedMaterialLabel, redirects.pipedMaterial.normal).then(r => {
+            browser.storage.local.set({ pipedMaterialLatency: r });
+            latencyPipedMaterialLabel.innerHTML = oldHtml;
+            commonHelper.processDefaultCustomInstances('pipedMaterial', 'normal', youtubeHelper, document);
+            latencyPipedMaterialElement.removeEventListener("click", reloadWindow);
+        });
+    }
 );
\ No newline at end of file
diff --git a/src/pages/options/youtube/youtube.js b/src/pages/options/youtube/youtube.js
index 5f915251..71ae4777 100644
--- a/src/pages/options/youtube/youtube.js
+++ b/src/pages/options/youtube/youtube.js
@@ -95,9 +95,8 @@ function changeProtocolSettings(protocol) {
     }
 }
 
-
-document.addEventListener("change", () => {
-    youtubeHelper.setYoutubeSettings({
+document.addEventListener("change", async () => {
+    await browser.storage.local.set({
         disableYoutube: !disableYoutubeElement.checked,
         youtubeFrontend: youtubeFrontendElement.value,
         youtubeEmbedFrontend: youtubeEmbedFrontendElement.value,
@@ -111,24 +110,43 @@ document.addEventListener("change", () => {
     changeFrontendsSettings();
 })
 
-youtubeHelper.init().then(() => {
-    disableYoutubeElement.checked = !youtubeHelper.getDisable();
-    enableYoutubeCustomSettingsElement.checked = youtubeHelper.getEnableCustomSettings();
-    
-    OnlyEmbeddedVideoElement.value = youtubeHelper.getOnlyEmbeddedVideo();
-    bypassWatchOnYoutubeElement.checked = youtubeHelper.getBypassWatchOnYoutube();
-    
-    let frontend = youtubeHelper.getFrontend();
-    youtubeFrontendElement.value = frontend;
-    changeFrontendsSettings();
+browser.storage.local.get(
+    [
+        "disableYoutube",
+        "enableYoutubeCustomSettings",
+        "OnlyEmbeddedVideo",
+        "youtubeRedirects",
+        "youtubeFrontend",
+
+        "alwaysUsePreferred",
+        "youtubeEmbedFrontend",
+        "youtubeProtocol",
+        "bypassWatchOnYoutube",
+    ],
+    r => {
+        disableYoutubeElement.checked = !r.disableYoutube;
+        enableYoutubeCustomSettingsElement.checked = r.enableYoutubeCustomSettings;
+
+        OnlyEmbeddedVideoElement.value = r.OnlyEmbeddedVideo;
+        bypassWatchOnYoutubeElement.checked = r.bypassWatchOnYoutube;
+
+        let frontend = r.youtubeFrontend;
+        youtubeFrontendElement.value = frontend;
+        changeFrontendsSettings();
+
+        let protocol = r.youtubeProtocol;
+        protocolElement.value = protocol;
+        changeProtocolSettings(protocol);
+
+        let youtubeEmbedFrontend = r.youtubeEmbedFrontend;
+        youtubeEmbedFrontendElement.value = youtubeEmbedFrontend
+        if (frontend == "freetube" || frontend == "yatte") {
+            changeYoutubeEmbedFrontendsSettings(youtubeEmbedFrontend)
+        };
+    }
+);
 
-    let protocol = youtubeHelper.getProtocol();
-    protocolElement.value = protocol;
-    changeProtocolSettings(protocol);
 
-    let youtubeEmbedFrontend = youtubeHelper.getYoutubeEmbedFrontend()
-    youtubeEmbedFrontendElement.value = youtubeEmbedFrontend
-    if (frontend == "freetube" || frontend == "yatte") {
-        changeYoutubeEmbedFrontendsSettings(youtubeEmbedFrontend)
-    };
-});
+window.onblur = () => {
+    youtubeHelper.initInvidiousCookies();
+}
\ No newline at end of file