about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-05-21 16:38:28 +0300
committerManeraKai <manerakai@protonmail.com>2022-05-21 16:38:28 +0300
commit68f9fbb3f7862dd9f854a11bc74525985ddbb9c9 (patch)
treede474998634ef4fd0ed26859ba88653bbd162a90
parentHiding popup buttons when not available (diff)
downloadlibredirect-68f9fbb3f7862dd9f854a11bc74525985ddbb9c9.zip
Fixed buttons in the general tab
-rw-r--r--README.md2
-rw-r--r--src/assets/javascripts/helpers/general.js126
-rw-r--r--src/assets/javascripts/helpers/imgur.js51
-rw-r--r--src/assets/javascripts/helpers/instagram.js21
-rw-r--r--src/assets/javascripts/helpers/lbry.js41
-rw-r--r--src/assets/javascripts/helpers/maps.js359
-rw-r--r--src/assets/javascripts/helpers/medium.js77
-rw-r--r--src/assets/javascripts/helpers/peertube.js146
-rw-r--r--src/assets/javascripts/helpers/reddit.js244
-rw-r--r--src/assets/javascripts/helpers/search.js355
-rw-r--r--src/assets/javascripts/helpers/sendTargets.js165
-rw-r--r--src/assets/javascripts/helpers/tiktok.js71
-rw-r--r--src/assets/javascripts/helpers/translate/translate.js116
-rw-r--r--src/assets/javascripts/helpers/twitter.js117
-rw-r--r--src/assets/javascripts/helpers/utils.js82
-rw-r--r--src/assets/javascripts/helpers/wikipedia.js122
-rw-r--r--src/assets/javascripts/helpers/youtube/youtube.js41
-rw-r--r--src/instances/get_instances.py2
-rw-r--r--src/manifest.json2
-rw-r--r--src/pages/background/background.js35
-rw-r--r--src/pages/background/incognito.html30
-rw-r--r--src/pages/background/incognito.js29
-rw-r--r--src/pages/options/general/general.html4
-rw-r--r--src/pages/options/general/general.js200
-rw-r--r--src/pages/options/general/general.pug2
-rw-r--r--src/pages/options/imgur/imgur.html2
-rw-r--r--src/pages/options/instagram/instagram.html2
-rw-r--r--src/pages/options/lbry/lbry.html2
-rw-r--r--src/pages/options/maps/maps.html2
-rw-r--r--src/pages/options/medium/medium.html2
-rw-r--r--src/pages/options/peertube/peertube.html2
-rw-r--r--src/pages/options/reddit/reddit.html2
-rw-r--r--src/pages/options/search/search.html2
-rw-r--r--src/pages/options/sendTargets/sendTargets.html2
-rw-r--r--src/pages/options/tiktok/tiktok.html2
-rw-r--r--src/pages/options/translate/translate.html2
-rw-r--r--src/pages/options/twitter/twitter.html2
-rw-r--r--src/pages/options/wikipedia/wikipedia.html2
-rw-r--r--src/pages/options/youtube/youtube.html2
-rw-r--r--src/pages/options/youtubeMusic/youtubeMusic.html2
-rw-r--r--src/pages/popup/popup.html39
-rw-r--r--src/pages/popup/popup.js18
-rw-r--r--src/pages/popup/popup.pug30
-rw-r--r--src/pages/popup/style.css13
-rw-r--r--src/pages/widgets/icons.pug5
-rw-r--r--src/pages/widgets/links.pug2
46 files changed, 1241 insertions, 1336 deletions
diff --git a/README.md b/README.md
index 3d9fd705..15d80e15 100644
--- a/README.md
+++ b/README.md
@@ -28,7 +28,7 @@ Reddit => [Libreddit](https://github.com/spikecodes/libreddit#instances), [Teddi
 Imgur => [Rimgo](https://codeberg.org/video-prize-ranch/rimgo)\
 Wikipedia => [Wikiless](https://codeberg.org/orenom/wikiless)\
 Medium => [Scribe](https://sr.ht/~edwardloveall/scribe/)\
-Peertube => [SimpleerTube](https://git.sr.ht/~metalune/simpleweb_peertube)\
+PeerTube => [SimpleerTube](https://git.sr.ht/~metalune/simpleweb_peertube)\
 LBRY/Odysee => [Librarian](https://codeberg.org/librarian/librarian)\
 Search => [SearXNG](https://github.com/searxng/searxng), [SearX](https://searx.github.io/searx/), [Whoogle](https://benbusby.com/projects/whoogle-search/)\
 Translate => [SimplyTranslate](https://git.sr.ht/~metalune/simplytranslate_web), [LingvaTranslate](https://github.com/TheDavidDelta/lingva-translate)\
diff --git a/src/assets/javascripts/helpers/general.js b/src/assets/javascripts/helpers/general.js
index fdc60643..4c70997f 100644
--- a/src/assets/javascripts/helpers/general.js
+++ b/src/assets/javascripts/helpers/general.js
@@ -1,88 +1,49 @@
 "use strict";
 window.browser = window.browser || window.chrome;
 
-let theme;
-const getTheme = () => theme;
-function setTheme(val) {
-    theme = val
-    browser.storage.local.set({ theme, instancesCookies: [] });
-    console.log("theme: ", theme)
-}
-
-let exceptions = {
-    "url": [],
-    "regex": [],
-};
-const getExceptions = () => exceptions;
-function setExceptions(val) {
-    exceptions = val;
-    browser.storage.local.set({ exceptions })
-    console.log("exceptions: ", val)
-}
-
-let autoRedirect;
-const getAutoRedirect = () => autoRedirect;
-function setAutoRedirect(val) {
-    autoRedirect = val;
-    browser.storage.local.set({ autoRedirect })
-    console.log("autoRedirect: ", val)
-}
-
 function isException(url) {
-    for (const item of exceptions.url) {
-        console.log(item, `${url.protocol}//${url.host}`)
-        if (item == `${url.protocol}//${url.host}`) return true;
-    }
-    for (const item of exceptions.regex)
-        if (new RegExp(item).test(url.href)) return true;
-    return false;
-}
-
-async function init() {
-    return new Promise(
-        resolve => browser.storage.local.get(
-            [
-                "exceptions",
-                "theme",
-                "popupFrontends",
-                "autoRedirect"
-            ],
+    return new Promise(resolve => {
+        browser.storage.local.get(
+            'exceptions',
             r => {
-                if (r.exceptions) exceptions = r.exceptions;
-
-                theme = r.theme ?? "DEFAULT"
-
-                popupFrontends = r.popupFrontends ?? [
-                    "youtube",
-                    "twitter",
-                    "instagram",
-                    "tikTok",
-                    "imgur",
-                    "reddit",
-                    "search",
-                    "medium",
-                    "translate",
-                    "maps",
-                ];
-
-                autoRedirect = r.autoRedirect ?? false;
-
-                resolve();
+                for (const item of r.exceptions.url)
+                    if (item == `${url.protocol}//${url.host}`) { resolve(true); return; }
+                for (const item of r.exceptions.regex)
+                    if (new RegExp(item).test(url.href)) { resolve(true); return; }
+                resolve(false); return;
             }
         )
-    )
+    })
 }
 
-
-let popupFrontends;
-const getPopupFrontends = () => popupFrontends;
-function setPopupFrontends(val) {
-    popupFrontends = val;
-    browser.storage.local.set({ popupFrontends })
-    console.log("popupFrontends: ", val)
+function initDefaults() {
+    return new Promise(async resolve => {
+        await browser.storage.local.set({
+            exceptions: {
+                "url": [],
+                "regex": [],
+            },
+            theme: "DEFAULT",
+            popupFrontends: [
+                "youtube",
+                "twitter",
+                "instagram",
+                "tikTok",
+                "imgur",
+                "reddit",
+                "search",
+                "medium",
+                "translate",
+                "maps",
+            ],
+            autoRedirect: false,
+        })
+        resolve();
+    })
 }
 
-let allPopupFrontends = [
+
+const allPopupFrontends = [
     "youtube",
     "youtubeMusic",
     "twitter",
@@ -102,20 +63,7 @@ let allPopupFrontends = [
 
 
 export default {
-    getExceptions,
-    setExceptions,
-
-    getAutoRedirect,
-    setAutoRedirect,
-
-    getPopupFrontends,
-    setPopupFrontends,
-
-    allPopupFrontends,
-
-    getTheme,
-    setTheme,
-
     isException,
-    init,
+    initDefaults,
+    allPopupFrontends,
 }
diff --git a/src/assets/javascripts/helpers/imgur.js b/src/assets/javascripts/helpers/imgur.js
index 9ed16b1d..69159b00 100644
--- a/src/assets/javascripts/helpers/imgur.js
+++ b/src/assets/javascripts/helpers/imgur.js
@@ -167,31 +167,32 @@ function switchInstance(url) {
     })
 }
 
-async function initDefaults() {
-    fetch('/instances/data.json').then(response => response.text()).then(async data => {
-        let dataJson = JSON.parse(data);
-        redirects.rimgo = dataJson.rimgo;
-        browser.storage.local.get('cloudflareList', async r => {
-            rimgoNormalRedirectsChecks = [...redirects.rimgo.normal];
-            for (const instance of r.cloudflareList) {
-                let i;
-
-                i = rimgoNormalRedirectsChecks.indexOf(instance);
-                if (i > -1) rimgoNormalRedirectsChecks.splice(i, 1);
-            }
-            await browser.storage.local.set({
-                disableImgur: false,
-                imgurProtocol: 'normal',
-                imgurRedirects: redirects,
-
-                rimgoNormalRedirectsChecks: rimgoNormalRedirectsChecks,
-                rimgoNormalCustomRedirects: [],
-
-                rimgoTorRedirectsChecks: [...redirects.rimgo.tor],
-                rimgoTorCustomRedirects: [],
-
-                rimgoI2pRedirectsChecks: [...redirects.rimgo.i2p],
-                rimgoI2pCustomRedirects: [],
+function initDefaults() {
+    return new Promise(resolve => {
+        fetch('/instances/data.json').then(response => response.text()).then(async data => {
+            let dataJson = JSON.parse(data);
+            redirects.rimgo = dataJson.rimgo;
+            browser.storage.local.get('cloudflareList', async r => {
+                rimgoNormalRedirectsChecks = [...redirects.rimgo.normal];
+                for (const instance of r.cloudflareList) {
+                    let i = rimgoNormalRedirectsChecks.indexOf(instance);
+                    if (i > -1) rimgoNormalRedirectsChecks.splice(i, 1);
+                }
+                await browser.storage.local.set({
+                    disableImgur: false,
+                    imgurProtocol: 'normal',
+                    imgurRedirects: redirects,
+
+                    rimgoNormalRedirectsChecks: rimgoNormalRedirectsChecks,
+                    rimgoNormalCustomRedirects: [],
+
+                    rimgoTorRedirectsChecks: [...redirects.rimgo.tor],
+                    rimgoTorCustomRedirects: [],
+
+                    rimgoI2pRedirectsChecks: [...redirects.rimgo.i2p],
+                    rimgoI2pCustomRedirects: [],
+                });
+                resolve();
             });
         });
     });
diff --git a/src/assets/javascripts/helpers/instagram.js b/src/assets/javascripts/helpers/instagram.js
index a5f5b81e..8890ec19 100644
--- a/src/assets/javascripts/helpers/instagram.js
+++ b/src/assets/javascripts/helpers/instagram.js
@@ -12,15 +12,18 @@ let redirects = {
   }
 };
 function setRedirects(val) {
-  redirects.bibliogram = val;
-  browser.storage.local.set({ instagramRedirects: redirects })
-  console.log("instagramRedirects: ", val)
-  for (const item of bibliogramNormalRedirectsChecks)
-    if (!redirects.bibliogram.normal.includes(item)) {
-      var index = bibliogramNormalRedirectsChecks.indexOf(item);
-      if (index !== -1) bibliogramNormalRedirectsChecks.splice(index, 1);
+  browser.storage.local.get('cloudflareList', async r => {
+    redirects.bibliogram = val;
+    bibliogramNormalRedirectsChecks = [...redirects.bibliogram.normal];
+    for (const instance of r.cloudflareList) {
+      const a = bibliogramNormalRedirectsChecks.indexOf(instance);
+      if (a > -1) bibliogramNormalRedirectsChecks.splice(a, 1);
     }
-  browser.storage.local.set({ bibliogramNormalRedirectsChecks });
+    browser.storage.local.set({
+      instagramRedirects: redirects,
+      bibliogramNormalRedirectsChecks
+    })
+  })
 }
 
 let bibliogramNormalRedirectsChecks;
@@ -49,7 +52,7 @@ function redirect(url, type, initiator) {
             ...r.instagramRedirects.bibliogram.tor,
             ...r.bibliogramNormalCustomRedirects,
             ...r.bibliogramTorCustomRedirects,
-          ].includes(initiator.origin) || targets.includes(initiator.host))
+          ].includes(initiator.origin))
         ) { resolve('BYPASSTAB'); return; }
 
         if (!targets.includes(url.host)) { resolve(); return; }
diff --git a/src/assets/javascripts/helpers/lbry.js b/src/assets/javascripts/helpers/lbry.js
index 6c51cdda..e3f216d7 100644
--- a/src/assets/javascripts/helpers/lbry.js
+++ b/src/assets/javascripts/helpers/lbry.js
@@ -120,28 +120,31 @@ function redirect(url, type, initiator) {
     })
 }
 
-async function initDefaults() {
-    browser.storage.local.get('cloudflareList', async r => {
-        librarianNormalRedirectsChecks = [...redirects.librarian.normal];
-        for (const instance of r.cloudflareList) {
-            let i;
-
-            i = librarianNormalRedirectsChecks.indexOf(instance);
-            if (i > -1) librarianNormalRedirectsChecks.splice(i, 1);
-        }
-        await browser.storage.local.set({
-            disableLbryTargets: true,
-            lbryTargetsRedirects: {
-                'librarian': redirects.librarian
-            },
+function initDefaults() {
+    return new Promise(resolve => {
+        browser.storage.local.get('cloudflareList', async r => {
+            librarianNormalRedirectsChecks = [...redirects.librarian.normal];
+            for (const instance of r.cloudflareList) {
+                let i;
+
+                i = librarianNormalRedirectsChecks.indexOf(instance);
+                if (i > -1) librarianNormalRedirectsChecks.splice(i, 1);
+            }
+            await browser.storage.local.set({
+                disableLbryTargets: true,
+                lbryTargetsRedirects: {
+                    'librarian': redirects.librarian
+                },
 
-            librarianNormalRedirectsChecks: librarianNormalRedirectsChecks,
-            librarianNormalCustomRedirects: [],
+                librarianNormalRedirectsChecks: librarianNormalRedirectsChecks,
+                librarianNormalCustomRedirects: [],
 
-            librarianTorRedirectsChecks: [...redirects.librarian.tor],
-            librarianTorCustomRedirects: [],
+                librarianTorRedirectsChecks: [...redirects.librarian.tor],
+                librarianTorCustomRedirects: [],
 
-            lbryTargetsProtocol: "normal",
+                lbryTargetsProtocol: "normal",
+            })
+            resolve();
         })
     })
 }
diff --git a/src/assets/javascripts/helpers/maps.js b/src/assets/javascripts/helpers/maps.js
index 357221ab..8d09121b 100644
--- a/src/assets/javascripts/helpers/maps.js
+++ b/src/assets/javascripts/helpers/maps.js
@@ -18,172 +18,180 @@ let redirects = {
   }
 };
 
-let disable; // disableMaps
-let frontend; // mapsFrontend
-
-let facilNormalRedirectsChecks;
-let facilNormalCustomRedirects = [];
-
-async function redirect(url, initiator) {
-  const mapCentreRegex = /@(-?\d[0-9.]*),(-?\d[0-9.]*),(\d{1,2})[.z]/;
-  const dataLatLngRegex = /!3d(-?[0-9]{1,}.[0-9]{1,})!4d(-?[0-9]{1,}.[0-9]{1,})/;
-  const placeRegex = /\/place\/(.*)\//;
-  const travelModes = {
-    driving: "fossgis_osrm_car",
-    walking: "fossgis_osrm_foot",
-    bicycling: "fossgis_osrm_bike",
-    transit: "fossgis_osrm_car", // not implemented on OSM, default to car.
-  };
-  const travelModesFacil = {
-    driving: "car",
-    walking: "pedestrian",
-    bicycling: "bicycle",
-    transit: "car", // not implemented on Facil, default to car.
-  };
-  const osmLayers = {
-    none: "S",
-    transit: "T",
-    traffic: "S", // not implemented on OSM, default to standard.
-    bicycling: "C",
-  };
-
-  async function addressToLatLng(address) {
-    return new Promise(async resolve => {
-      const xmlhttp = new XMLHttpRequest();
-      xmlhttp.onreadystatechange = () => {
-        if (xmlhttp.readyState === XMLHttpRequest.DONE) {
-          if (xmlhttp.status === 200) {
-            const json = JSON.parse(xmlhttp.responseText)[0];
-
-            if (json) {
-              console.log('json', json)
-              resolve([
-                `${json.lat},${json.lon}`,
-                `${json.boundingbox[2]},${json.boundingbox[1]},${json.boundingbox[3]},${json.boundingbox[0]}`,
-              ]);
+function redirect(url, initiator) {
+  return new Promise(
+    resolve => {
+      browser.storage.local.get(
+        [
+          "disableMaps",
+          "mapsFrontend",
+
+          "facilNormalRedirectsChecks",
+          "facilNormalCustomRedirects",
+        ],
+        async r => {
+          const mapCentreRegex = /@(-?\d[0-9.]*),(-?\d[0-9.]*),(\d{1,2})[.z]/;
+          const dataLatLngRegex = /!3d(-?[0-9]{1,}.[0-9]{1,})!4d(-?[0-9]{1,}.[0-9]{1,})/;
+          const placeRegex = /\/place\/(.*)\//;
+          const travelModes = {
+            driving: "fossgis_osrm_car",
+            walking: "fossgis_osrm_foot",
+            bicycling: "fossgis_osrm_bike",
+            transit: "fossgis_osrm_car", // not implemented on OSM, default to car.
+          };
+          const travelModesFacil = {
+            driving: "car",
+            walking: "pedestrian",
+            bicycling: "bicycle",
+            transit: "car", // not implemented on Facil, default to car.
+          };
+          const osmLayers = {
+            none: "S",
+            transit: "T",
+            traffic: "S", // not implemented on OSM, default to standard.
+            bicycling: "C",
+          };
+
+          async function addressToLatLng(address) {
+            return new Promise(async resolve => {
+              const xmlhttp = new XMLHttpRequest();
+              xmlhttp.onreadystatechange = () => {
+                if (xmlhttp.readyState === XMLHttpRequest.DONE) {
+                  if (xmlhttp.status === 200) {
+                    const json = JSON.parse(xmlhttp.responseText)[0];
+
+                    if (json) {
+                      console.log('json', json)
+                      resolve([
+                        `${json.lat},${json.lon}`,
+                        `${json.boundingbox[2]},${json.boundingbox[1]},${json.boundingbox[3]},${json.boundingbox[0]}`,
+                      ]);
+                    }
+                  } else
+                    console.info("Error: Status is " + xmlhttp.status);
+                }
+              };
+              xmlhttp.open(
+                "GET",
+                `https://nominatim.openstreetmap.org/search/${address}?format=json&limit=1`,
+                true
+              );
+              xmlhttp.send();
+            })
+          }
+
+          if (r.disableMaps) { resolve(); return; }
+          if (initiator && initiator.host === "earth.google.com") { resolve(); return; }
+          if (!url.href.match(targets)) { resolve(); return; }
+
+          let randomInstance;
+          if (r.mapsFrontend == 'osm') randomInstance = utils.getRandomInstance(redirects.osm.normal);
+          if (r.mapsFrontend == 'facil') randomInstance = utils.getRandomInstance([...r.facilNormalRedirectsChecks, ...r.facilNormalCustomRedirects]);
+
+          let mapCentre = "#";
+          let prefs = {};
+
+          if (url.pathname.match(mapCentreRegex)) { // Set map centre if present
+            var [, lat, lon, zoom] = url.pathname.match(mapCentreRegex);
+          } else if (url.searchParams.has("center")) {
+            var [lat, lon] = url.searchParams.get("center").split(",");
+            var zoom = url.searchParams.get("zoom") ?? "17";
+          }
+
+          if (lat && lon && zoom) {
+            if (r.mapsFrontend == 'osm') mapCentre = `#map=${zoom}/${lat}/${lon}`;
+            if (r.mapsFrontend == 'facil') mapCentre = `#${zoom}/${lat}/${lon}`;
+          }
+
+          if (url.searchParams.get("layer")) prefs.layers = osmLayers[url.searchParams.get("layer")];
+
+          if (url.pathname.includes("/embed")) { // Handle Google Maps Embed API
+            // https://www.google.com/maps/embed/v1/place?key=AIzaSyD4iE2xVSpkLLOXoyqT-RuPwURN3ddScAI&q=Eiffel+Tower,Paris+France
+            console.log("embed life");
+
+            let query = "";
+            if (url.searchParams.has("q")) query = url.searchParams.get("q");
+            else if (url.searchParams.has("query")) query = url.searchParams.has("query");
+
+            else if (url.searchParams.has("pb"))
+              try { query = url.searchParams.get("pb").split(/!2s(.*?)!/)[1]; }
+              catch (error) { console.error(error); } // Unable to find map marker in URL.
+
+            let [coords, boundingbox] = await addressToLatLng(query);
+            prefs.bbox = boundingbox;
+            prefs.marker = coords;
+            prefs.layer = "mapnik";
+            let prefsEncoded = new URLSearchParams(prefs).toString();
+            if (r.mapsFrontend == 'osm') { resolve(`${randomInstance}/export/embed.html?${prefsEncoded}`); return; }
+
+            if (r.mapsFrontend == 'facil') { resolve(`${randomInstance}/#q=${query}`); return; }
+
+          } else if (url.pathname.includes("/dir")) {   // Handle Google Maps Directions
+            // https://www.google.com/maps/dir/?api=1&origin=Space+Needle+Seattle+WA&destination=Pike+Place+Market+Seattle+WA&travelmode=bicycling
+
+            let travMod = url.searchParams.get("travelmode");
+            if (url.searchParams.has("travelmode")) prefs.engine = travelModes[travMod];
+
+            let orgVal = url.searchParams.get("origin");
+            let destVal = url.searchParams.get("destination");
+
+            let org; addressToLatLng(orgVal, a => org = a);
+            let dest; addressToLatLng(destVal, a => dest = a);
+            prefs.route = `${org};${dest}`;
+
+            let prefsEncoded = new URLSearchParams(prefs).toString();
+            if (r.mapsFrontend == 'osm') { resolve(`${randomInstance}/directions?${prefsEncoded}${mapCentre}`); return; }
+            if (r.mapsFrontend == 'facil') { resolve(`${randomInstance}/#q=${orgVal}%20to%20${destVal}%20by%20${travelModesFacil[travMod]}`); return; }
+
+          } else if (url.pathname.includes("data=") && url.pathname.match(dataLatLngRegex)) {  // Get marker from data attribute
+            // https://www.google.com/maps/place/41%C2%B001'58.2%22N+40%C2%B029'18.2%22E/@41.032833,40.4862063,17z/data=!3m1!4b1!4m6!3m5!1s0x0:0xf64286eaf72fc49d!7e2!8m2!3d41.0328329!4d40.4883948
+            console.log("data life");
+
+            let [, mlat, mlon] = url.pathname.match(dataLatLngRegex);
+
+            if (r.mapsFrontend == 'osm') { resolve(`${randomInstance}/search?query=${mlat}%2C${mlon}`); return; }
+            if (r.mapsFrontend == 'facil') { resolve(`${randomInstance}/#q=${mlat}%2C${mlon}`); return; }
+
+          } else if (url.searchParams.has("ll")) { // Get marker from ll param
+            // https://maps.google.com/?ll=38.882147,-76.99017
+            console.log("ll life");
+
+            const [mlat, mlon] = url.searchParams.get("ll").split(",");
+
+            if (r.mapsFrontend == 'osm') { resolve(`${randomInstance}/search?query=${mlat}%2C${mlon}`); return; }
+            if (r.mapsFrontend == 'facil') { resolve(`${randomInstance}/#q=${mlat}%2C${mlon}`); return; }
+          } else if (url.searchParams.has("viewpoint")) { // Get marker from viewpoint param.
+            // https://www.google.com/maps/@?api=1&map_action=pano&viewpoint=48.857832,2.295226&heading=-45&pitch=38&fov=80
+            console.log("viewpoint life");
+
+            const [mlat, mlon] = url.searchParams.get("viewpoint").split(",");
+
+            if (r.mapsFrontend == 'osm') { resolve(`${randomInstance}/search?query=${mlat}%2C${mlon}`); return; }
+            if (r.mapsFrontend == 'facil') { resolve(`${randomInstance}/#q=${mlat}%2C${mlon}`); return; }
+          } else { // Use query as search if present.
+            console.log("normal life");
+
+            let query;
+            if (url.searchParams.has("q")) query = url.searchParams.get("q");
+            else if (url.searchParams.has("query")) query = url.searchParams.get("query");
+            else if (url.pathname.match(placeRegex)) query = url.pathname.match(placeRegex)[1];
+
+            let prefsEncoded = new URLSearchParams(prefs).toString();
+            if (query) {
+              if (r.mapsFrontend == 'osm') { resolve(`${randomInstance}/search?query="${query}${mapCentre}&${prefsEncoded}`); return; }
+              if (r.mapsFrontend == 'facil') { resolve(`${randomInstance}/${mapCentre}/Mpnk/${query}`); return; }
             }
-          } else
-            console.info("Error: Status is " + xmlhttp.status);
+          }
+
+          let prefsEncoded = new URLSearchParams(prefs).toString();
+          console.log("mapCentre", mapCentre);
+          console.log("prefs", prefs);
+          console.log("prefsEncoded", prefsEncoded);
+          if (r.mapsFrontend == 'osm') { resolve(`${randomInstance}/${mapCentre}&${prefsEncoded}`); return; }
+          if (r.mapsFrontend == 'facil') { resolve(`${randomInstance}/${mapCentre}/Mpnk`); return; }
         }
-      };
-      xmlhttp.open(
-        "GET",
-        `https://nominatim.openstreetmap.org/search/${address}?format=json&limit=1`,
-        true
-      );
-      xmlhttp.send();
+      )
     })
-  }
-
-  if (disable) return;
-  if (initiator && initiator.host === "earth.google.com") return;
-  if (!url.href.match(targets)) return;
-
-  let randomInstance;
-  if (frontend == 'osm') randomInstance = utils.getRandomInstance(redirects.osm.normal);
-  if (frontend == 'facil') randomInstance = utils.getRandomInstance([...facilNormalRedirectsChecks, ...facilNormalCustomRedirects]);
-
-  let mapCentre = "#";
-  let prefs = {};
-
-  if (url.pathname.match(mapCentreRegex)) { // Set map centre if present
-    var [, lat, lon, zoom] = url.pathname.match(mapCentreRegex);
-  } else if (url.searchParams.has("center")) {
-    var [lat, lon] = url.searchParams.get("center").split(",");
-    var zoom = url.searchParams.get("zoom") ?? "17";
-  }
-
-  if (lat && lon && zoom) {
-    if (frontend == 'osm') mapCentre = `#map=${zoom}/${lat}/${lon}`;
-    if (frontend == 'facil') mapCentre = `#${zoom}/${lat}/${lon}`;
-  }
-
-  if (url.searchParams.get("layer")) prefs.layers = osmLayers[url.searchParams.get("layer")];
-
-  if (url.pathname.includes("/embed")) { // Handle Google Maps Embed API
-    // https://www.google.com/maps/embed/v1/place?key=AIzaSyD4iE2xVSpkLLOXoyqT-RuPwURN3ddScAI&q=Eiffel+Tower,Paris+France
-    console.log("embed life");
-
-    let query = "";
-    if (url.searchParams.has("q")) query = url.searchParams.get("q");
-    else if (url.searchParams.has("query")) query = url.searchParams.has("query");
-
-    else if (url.searchParams.has("pb"))
-      try { query = url.searchParams.get("pb").split(/!2s(.*?)!/)[1]; }
-      catch (error) { console.error(error); } // Unable to find map marker in URL.
-
-    let [coords, boundingbox] = await addressToLatLng(query);
-    prefs.bbox = boundingbox;
-    prefs.marker = coords;
-    prefs.layer = "mapnik";
-    let prefsEncoded = new URLSearchParams(prefs).toString();
-    if (frontend == 'osm') return `${randomInstance}/export/embed.html?${prefsEncoded}`;
-
-    if (frontend == 'facil') return `${randomInstance}/#q=${query}`;
-
-  } else if (url.pathname.includes("/dir")) {   // Handle Google Maps Directions
-    // https://www.google.com/maps/dir/?api=1&origin=Space+Needle+Seattle+WA&destination=Pike+Place+Market+Seattle+WA&travelmode=bicycling
-
-    let travMod = url.searchParams.get("travelmode");
-    if (url.searchParams.has("travelmode")) prefs.engine = travelModes[travMod];
-
-    let orgVal = url.searchParams.get("origin");
-    let destVal = url.searchParams.get("destination");
-
-    let org; addressToLatLng(orgVal, a => org = a);
-    let dest; addressToLatLng(destVal, a => dest = a);
-    prefs.route = `${org};${dest}`;
-
-    let prefsEncoded = new URLSearchParams(prefs).toString();
-    if (frontend == 'osm') return `${randomInstance}/directions?${prefsEncoded}${mapCentre}`;
-    if (frontend == 'facil') return `${randomInstance}/#q=${orgVal}%20to%20${destVal}%20by%20${travelModesFacil[travMod]}`;
-
-  } else if (url.pathname.includes("data=") && url.pathname.match(dataLatLngRegex)) {  // Get marker from data attribute
-    // https://www.google.com/maps/place/41%C2%B001'58.2%22N+40%C2%B029'18.2%22E/@41.032833,40.4862063,17z/data=!3m1!4b1!4m6!3m5!1s0x0:0xf64286eaf72fc49d!7e2!8m2!3d41.0328329!4d40.4883948
-    console.log("data life");
-
-    let [, mlat, mlon] = url.pathname.match(dataLatLngRegex);
-
-    if (frontend == 'osm') return `${randomInstance}/search?query=${mlat}%2C${mlon}`;
-    if (frontend == 'facil') return `${randomInstance}/#q=${mlat}%2C${mlon}`;
-
-  } else if (url.searchParams.has("ll")) { // Get marker from ll param
-    // https://maps.google.com/?ll=38.882147,-76.99017
-    console.log("ll life");
-
-    const [mlat, mlon] = url.searchParams.get("ll").split(",");
-
-    if (frontend == 'osm') return `${randomInstance}/search?query=${mlat}%2C${mlon}`;
-    if (frontend == 'facil') return `${randomInstance}/#q=${mlat}%2C${mlon}`;
-  } else if (url.searchParams.has("viewpoint")) { // Get marker from viewpoint param.
-    // https://www.google.com/maps/@?api=1&map_action=pano&viewpoint=48.857832,2.295226&heading=-45&pitch=38&fov=80
-    console.log("viewpoint life");
-
-    const [mlat, mlon] = url.searchParams.get("viewpoint").split(",");
-
-    if (frontend == 'osm') return `${randomInstance}/search?query=${mlat}%2C${mlon}`;
-    if (frontend == 'facil') return `${randomInstance}/#q=${mlat}%2C${mlon}`;
-  } else { // Use query as search if present.
-    console.log("normal life");
-
-    let query;
-    if (url.searchParams.has("q")) query = url.searchParams.get("q");
-    else if (url.searchParams.has("query")) query = url.searchParams.get("query");
-    else if (url.pathname.match(placeRegex)) query = url.pathname.match(placeRegex)[1];
-
-    let prefsEncoded = new URLSearchParams(prefs).toString();
-    if (query) {
-      if (frontend == 'osm') return `${randomInstance}/search?query="${query}${mapCentre}&${prefsEncoded}`;
-      if (frontend == 'facil') return `${randomInstance}/${mapCentre}/Mpnk/${query}`
-    }
-  }
-
-  let prefsEncoded = new URLSearchParams(prefs).toString();
-  console.log("mapCentre", mapCentre);
-  console.log("prefs", prefs);
-  console.log("prefsEncoded", prefsEncoded);
-  if (frontend == 'osm') return `${randomInstance}/${mapCentre}&${prefsEncoded}`
-  if (frontend == 'facil') return `${randomInstance}/${mapCentre}/Mpnk`
 }
 
 async function initDefaults() {
@@ -198,32 +206,7 @@ async function initDefaults() {
   })
 }
 
-async function init() {
-  return new Promise(
-    resolve => {
-      browser.storage.local.get(
-        [
-          "disableMaps",
-          "mapsFrontend",
-
-          "facilNormalRedirectsChecks",
-          "facilNormalCustomRedirects",
-        ],
-        r => {
-          disable = r.disableMaps;
-          frontend = r.mapsFrontend;
-
-          facilNormalRedirectsChecks = r.facilNormalRedirectsChecks;
-          facilNormalCustomRedirects = r.facilNormalCustomRedirects;
-
-          resolve();
-        }
-      );
-    });
-}
-
 export default {
   redirect,
-  init,
   initDefaults,
 };
diff --git a/src/assets/javascripts/helpers/medium.js b/src/assets/javascripts/helpers/medium.js
index 788096c5..aabb32bf 100644
--- a/src/assets/javascripts/helpers/medium.js
+++ b/src/assets/javascripts/helpers/medium.js
@@ -35,25 +35,18 @@ let redirects = {
   }
 };
 function setRedirects(val) {
-  redirects.scribe = val;
-  browser.storage.local.set({ mediumRedirects: redirects })
-  for (const item of scribeNormalRedirectsChecks) if (!redirects.scribe.normal.includes(item)) {
-    var index = scribeNormalRedirectsChecks.indexOf(item);
-    if (index !== -1) scribeNormalRedirectsChecks.splice(index, 1);
-  }
-  browser.storage.local.set({ scribeNormalRedirectsChecks })
-
-  for (const item of scribeNormalRedirectsChecks) if (!redirects.scribe.normal.includes(item)) {
-    var index = scribeNormalRedirectsChecks.indexOf(item);
-    if (index !== -1) scribeNormalRedirectsChecks.splice(index, 1);
-  }
-  browser.storage.local.set({ scribeNormalRedirectsChecks })
-
-  for (const item of scribeTorRedirectsChecks) if (!redirects.scribe.normal.includes(item)) {
-    var index = scribeTorRedirectsChecks.indexOf(item);
-    if (index !== -1) scribeTorRedirectsChecks.splice(index, 1);
-  }
-  browser.storage.local.set({ scribeTorRedirectsChecks })
+  browser.storage.local.get('cloudflareList', r => {
+    redirects.scribe = val;
+    scribeNormalRedirectsChecks = [...redirects.scribe.normal];
+    for (const instance of r.cloudflareList) {
+      const a = scribeNormalRedirectsChecks.indexOf(instance);
+      if (a > -1) scribeNormalRedirectsChecks.splice(a, 1);
+    }
+    browser.storage.local.set({
+      mediumRedirects: redirects,
+      scribeNormalRedirectsChecks
+    })
+  })
 }
 
 let scribeNormalRedirectsChecks;
@@ -133,27 +126,31 @@ function switchInstance(url) {
 }
 
 function initDefaults() {
-  fetch('/instances/data.json').then(response => response.text()).then(data => {
-    let dataJson = JSON.parse(data);
-    redirects.scribe = dataJson.scribe;
-    browser.storage.local.get('cloudflareList', r => {
-      scribeNormalRedirectsChecks = [...redirects.scribe.normal];
-      for (const instance of r.cloudflareList) {
-        let i = scribeNormalRedirectsChecks.indexOf(instance);
-        if (i > -1) scribeNormalRedirectsChecks.splice(i, 1);
-      }
-      browser.storage.local.set({
-        disableMedium: false,
-        mediumRedirects: redirects,
-
-        scribeNormalRedirectsChecks: scribeNormalRedirectsChecks,
-        scribeNormalCustomRedirects: [],
-
-        scribeTorRedirectsChecks: [...redirects.scribe.tor],
-        scribeTorCustomRedirects: [],
-
-        mediumProtocol: "normal",
-      })
+  return new Promise(resolve => {
+    fetch('/instances/data.json').then(response => response.text()).then(data => {
+      let dataJson = JSON.parse(data);
+      redirects.scribe = dataJson.scribe;
+      browser.storage.local.get('cloudflareList',
+        async r => {
+          scribeNormalRedirectsChecks = [...redirects.scribe.normal];
+          for (const instance of r.cloudflareList) {
+            let i = scribeNormalRedirectsChecks.indexOf(instance);
+            if (i > -1) scribeNormalRedirectsChecks.splice(i, 1);
+          }
+          await browser.storage.local.set({
+            disableMedium: false,
+            mediumRedirects: redirects,
+
+            scribeNormalRedirectsChecks: scribeNormalRedirectsChecks,
+            scribeNormalCustomRedirects: [],
+
+            scribeTorRedirectsChecks: [...redirects.scribe.tor],
+            scribeTorCustomRedirects: [],
+
+            mediumProtocol: "normal",
+          })
+          resolve();
+        })
     })
   })
 }
diff --git a/src/assets/javascripts/helpers/peertube.js b/src/assets/javascripts/helpers/peertube.js
index f741f9c0..ba06b8d8 100644
--- a/src/assets/javascripts/helpers/peertube.js
+++ b/src/assets/javascripts/helpers/peertube.js
@@ -2,8 +2,6 @@ window.browser = window.browser || window.chrome;
 
 import utils from './utils.js'
 
-let targets = [];
-
 let redirects = {
     "simpleertube": {
         "normal": [
@@ -19,7 +17,6 @@ let redirects = {
 function setRedirects(val) {
     redirects.simpleertube = val;
     browser.storage.local.set({ peertubeTargetsRedirects: redirects })
-    console.log("peertubeTargetsRedirects: ", val)
     for (const item of simpleertubeNormalRedirectsChecks)
         if (!redirects.simpleertube.normal.includes(item)) {
             var index = simpleertubeNormalRedirectsChecks.indexOf(item);
@@ -34,15 +31,10 @@ function setRedirects(val) {
         }
     browser.storage.local.set({ simpleertubeTorRedirectsChecks })
 }
+let
+    simpleertubeNormalRedirectsChecks,
+    simpleertubeTorRedirectsChecks;
 
-let simpleertubeNormalRedirectsChecks;
-let simpleertubeTorRedirectsChecks;
-
-let simpleertubeNormalCustomRedirects = [];
-let simpleertubeTorCustomRedirects = [];
-
-let disable;
-let protocol;
 
 async function switchInstance(url) {
     return new Promise(resolve => {
@@ -82,92 +74,82 @@ async function switchInstance(url) {
 }
 
 function redirect(url, type, initiator) {
-    if (disable) return null;
-    if (
-        initiator &&
-        (
+    return new Promise(resolve => {
+        browser.storage.local.get(
             [
-                ...redirects.simpleertube.normal,
-                ...simpleertubeNormalCustomRedirects
-            ].includes(initiator.origin) ||
-            targets.includes(initiator.host)
-        )
-    ) return null;
-    let protocolHost = utils.protocolHost(url);
-    if (!targets.includes(protocolHost)) return null;
-
-    if (type != "main_frame") return null;
-
-    let instancesList;
-    if (protocol == 'normal') instancesList = [...simpleertubeNormalRedirectsChecks, ...simpleertubeNormalCustomRedirects];
-    if (protocol == 'tor') instancesList = [...simpleertubeTorRedirectsChecks, ...simpleertubeTorCustomRedirects];
-    if (instancesList.length === 0) return null;
-    let randomInstance = utils.getRandomInstance(instancesList);
+                "disablePeertubeTargets",
 
-    if (url.host == 'search.joinpeertube.org') return randomInstance;
+                "peertubeRedirects",
 
-    return `${randomInstance}/${url.host}${url.pathname}${url.search}`;
-}
+                "simpleertubeNormalRedirectsChecks",
+                "simpleertubeNormalCustomRedirects",
 
-async function initDefaults() {
-    fetch('/instances/data.json').then(response => response.text()).then(async data => {
-        let dataJson = JSON.parse(data);
-        browser.storage.local.get('cloudflareList', async r => {
-            simpleertubeNormalRedirectsChecks = [...redirects.simpleertube.normal];
-            for (const instance of r.cloudflareList) {
-                let i = simpleertubeNormalRedirectsChecks.indexOf(instance);
-                if (i > -1) simpleertubeNormalRedirectsChecks.splice(i, 1);
-            }
-            await browser.storage.local.set({
-                peerTubeTargets: ['https://search.joinpeertube.org', ...dataJson.peertube],
-                disablePeertubeTargets: true,
-                peertubeRedirects: redirects,
+                "simpleertubeTorRedirectsChecks",
+                "simpleertubeTorCustomRedirects",
 
-                simpleertubeNormalRedirectsChecks: simpleertubeNormalRedirectsChecks,
-                simpleertubeNormalCustomRedirects: [],
+                "peerTubeTargets",
+                "peertubeTargetsProtocol"
+            ],
+            r => {
+                if (r.disablePeertubeTargets) { resolve(); return; }
+                if (
+                    initiator &&
+                    (
+                        [
+                            ...r.peertubeRedirects.simpleertube.normal,
+                            ...r.simpleertubeNormalCustomRedirects
+                        ].includes(initiator.origin) ||
+                        r.peerTubeTargets.includes(initiator.host)
+                    )
+                ) { resolve(); return; }
+                let protocolHost = utils.protocolHost(url);
+                if (!r.peerTubeTargets.includes(protocolHost)) { resolve(); return; }
+                if (type != "main_frame") { resolve(); return; }
 
-                simpleertubeTorRedirectsChecks: [...redirects.simpleertube.tor],
-                simpleertubeTorCustomRedirects: [],
+                let instancesList;
+                if (r.peertubeTargetsProtocol == 'normal') instancesList = [...r.simpleertubeNormalRedirectsChecks, ...r.simpleertubeNormalCustomRedirects];
+                if (r.peertubeTargetsProtocol == 'tor') instancesList = [...r.simpleertubeTorRedirectsChecks, ...r.simpleertubeTorCustomRedirects];
+                if (instancesList.length === 0) { resolve(); return; }
+                let randomInstance = utils.getRandomInstance(instancesList);
+                if (url.host == 'search.joinpeertube.org') { resolve(randomInstance); return; }
 
-                peertubeTargetsProtocol: "normal",
+                resolve(`${randomInstance}/${url.host}${url.pathname}${url.search}`);
+            }
+        )
+    })
+}
+async function initDefaults() {
+    return new Promise(resolve => {
+        fetch('/instances/data.json').then(response => response.text()).then(async data => {
+            let dataJson = JSON.parse(data);
+            browser.storage.local.get('cloudflareList', async r => {
+                simpleertubeNormalRedirectsChecks = [...redirects.simpleertube.normal];
+                for (const instance of r.cloudflareList) {
+                    let i = simpleertubeNormalRedirectsChecks.indexOf(instance);
+                    if (i > -1) simpleertubeNormalRedirectsChecks.splice(i, 1);
+                }
+                await browser.storage.local.set({
+                    peerTubeTargets: ['https://search.joinpeertube.org', ...dataJson.peertube],
+                    disablePeertubeTargets: true,
+                    peertubeRedirects: redirects,
+
+                    simpleertubeNormalRedirectsChecks: simpleertubeNormalRedirectsChecks,
+                    simpleertubeNormalCustomRedirects: [],
+
+                    simpleertubeTorRedirectsChecks: [...redirects.simpleertube.tor],
+                    simpleertubeTorCustomRedirects: [],
+
+                    peertubeTargetsProtocol: "normal",
+                })
+                resolve();
             })
         })
     })
 }
 
-async function init() {
-    await browser.storage.local.get(
-        [
-            "disablePeertubeTargets",
-            "simpleertubeNormalRedirectsChecks",
-            "simpleertubeNormalCustomRedirects",
-
-            "simpleertubeTorRedirectsChecks",
-            "simpleertubeTorCustomRedirects",
-
-            "peerTubeTargets",
-            "peertubeTargetsProtocol"
-        ],
-        r => {
-            disable = r.disablePeertubeTargets;
-            protocol = r.peertubeTargetsProtocol;
-            targets = r.peerTubeTargets;
-
-            simpleertubeNormalRedirectsChecks = r.simpleertubeNormalRedirectsChecks;
-            simpleertubeNormalCustomRedirects = r.simpleertubeNormalCustomRedirects;
-
-            simpleertubeTorRedirectsChecks = r.simpleertubeTorRedirectsChecks;
-            simpleertubeTorCustomRedirects = r.simpleertubeTorCustomRedirects;
-        }
-    )
-}
-
 export default {
     setRedirects,
-
     switchInstance,
-
     redirect,
     initDefaults,
-    init,
 };
diff --git a/src/assets/javascripts/helpers/reddit.js b/src/assets/javascripts/helpers/reddit.js
index e768b205..3b5c7d88 100644
--- a/src/assets/javascripts/helpers/reddit.js
+++ b/src/assets/javascripts/helpers/reddit.js
@@ -16,50 +16,29 @@ let redirects = {
     "tor": []
   },
 };
-function setLibredditRedirects(val) {
-  redirects.libreddit = val;
-  browser.storage.local.set({ redditRedirects: redirects })
-  console.log("libredditRedirects:", val)
-  for (const item of libredditNormalRedirectsChecks)
-    if (!redirects.libreddit.normal.includes(item)) {
-      var index = libredditNormalRedirectsChecks.indexOf(item);
-      if (index !== -1) libredditNormalRedirectsChecks.splice(index, 1);
+function setRedirects(val) {
+  browser.storage.local.get('cloudflareList', r => {
+    redirects = val;
+    libredditNormalRedirectsChecks = [...redirects.libreddit.normal];
+    tedditNormalRedirectsChecks = [...redirects.teddit.normal]
+    for (const instance of r.cloudflareList) {
+      const a = libredditNormalRedirectsChecks.indexOf(instance);
+      if (a > -1) libredditNormalRedirectsChecks.splice(a, 1);
+
+      const b = tedditNormalRedirectsChecks.indexOf(instance);
+      if (b > -1) tedditNormalRedirectsChecks.splice(b, 1);
     }
-  browser.storage.local.set({ libredditNormalRedirectsChecks })
-
-  for (const item of libredditTorRedirectsChecks)
-    if (!redirects.libreddit.normal.includes(item)) {
-      var index = libredditTorRedirectsChecks.indexOf(item);
-      if (index !== -1) libredditTorRedirectsChecks.splice(index, 1);
-    }
-  browser.storage.local.set({ libredditTorRedirectsChecks })
-}
-
-function setTedditRedirects(val) {
-  redirects.teddit = val;
-  browser.storage.local.set({ redditRedirects: redirects })
-  console.log("tedditRedirects:", val)
-  for (const item of tedditNormalRedirectsChecks)
-    if (!redirects.teddit.normal.includes(item)) {
-      var index = tedditNormalRedirectsChecks.indexOf(item);
-      if (index !== -1) tedditNormalRedirectsChecks.splice(index, 1);
-    }
-  browser.storage.local.set({ tedditNormalRedirectsChecks })
-
-  for (const item of tedditTorRedirectsChecks)
-    if (!redirects.teddit.normal.includes(item)) {
-      var index = tedditTorRedirectsChecks.indexOf(item);
-      if (index !== -1) tedditTorRedirectsChecks.splice(index, 1);
-    }
-  browser.storage.local.set({ tedditTorRedirectsChecks })
+    browser.storage.local.set({
+      redditRedirects: redirects,
+      libredditNormalRedirectsChecks,
+      tedditNormalRedirectsChecks
+    })
+  })
 }
 
 let
   libredditNormalRedirectsChecks,
-  libredditTorRedirectsChecks,
-
-  tedditNormalRedirectsChecks,
-  tedditTorRedirectsChecks;
+  tedditNormalRedirectsChecks;
 
 function initLibredditCookies(test, from) {
   return new Promise(resolve => {
@@ -105,35 +84,38 @@ function initLibredditCookies(test, from) {
 }
 
 function setLibredditCookies() {
-  browser.storage.local.get(
-    [
-      "redditProtocol",
-      "disableReddit",
-      "redditFrontend",
-      "libredditNormalRedirectsChecks",
-      "libredditNormalCustomRedirects",
-      "libredditTorRedirectsChecks",
-      "libredditTorCustomRedirects",
-    ],
-    r => {
-      if (r.disableReddit || r.redditFrontend != 'libreddit' || r.redditProtocol === undefined) return;
-      let checkedInstances;
-      if (r.redditProtocol == 'normal') checkedInstances = [...r.libredditNormalRedirectsChecks, ...r.libredditNormalCustomRedirects]
-      else if (r.redditProtocol == 'tor') checkedInstances = [...r.libredditTorRedirectsChecks, ...r.libredditTorCustomRedirects]
-      for (const to of checkedInstances) {
-        utils.getCookiesFromStorage('libreddit', to, "theme");
-        utils.getCookiesFromStorage('libreddit', to, "front_page");
-        utils.getCookiesFromStorage('libreddit', to, "layout");
-        utils.getCookiesFromStorage('libreddit', to, "wide");
-        utils.getCookiesFromStorage('libreddit', to, "post_sort");
-        utils.getCookiesFromStorage('libreddit', to, "comment_sort");
-        utils.getCookiesFromStorage('libreddit', to, "show_nsfw");
-        utils.getCookiesFromStorage('libreddit', to, "autoplay_videos");
-        utils.getCookiesFromStorage('libreddit', to, "use_hls");
-        utils.getCookiesFromStorage('libreddit', to, "hide_hls_notification");
+  return new Promise(resolve => {
+    browser.storage.local.get(
+      [
+        "redditProtocol",
+        "disableReddit",
+        "redditFrontend",
+        "libredditNormalRedirectsChecks",
+        "libredditNormalCustomRedirects",
+        "libredditTorRedirectsChecks",
+        "libredditTorCustomRedirects",
+      ],
+      r => {
+        if (r.disableReddit || r.redditFrontend != 'libreddit' || r.redditProtocol === undefined) { resolve(); return; }
+        let checkedInstances;
+        if (r.redditProtocol == 'normal') checkedInstances = [...r.libredditNormalRedirectsChecks, ...r.libredditNormalCustomRedirects]
+        else if (r.redditProtocol == 'tor') checkedInstances = [...r.libredditTorRedirectsChecks, ...r.libredditTorCustomRedirects]
+        for (const to of checkedInstances) {
+          utils.getCookiesFromStorage('libreddit', to, "theme");
+          utils.getCookiesFromStorage('libreddit', to, "front_page");
+          utils.getCookiesFromStorage('libreddit', to, "layout");
+          utils.getCookiesFromStorage('libreddit', to, "wide");
+          utils.getCookiesFromStorage('libreddit', to, "post_sort");
+          utils.getCookiesFromStorage('libreddit', to, "comment_sort");
+          utils.getCookiesFromStorage('libreddit', to, "show_nsfw");
+          utils.getCookiesFromStorage('libreddit', to, "autoplay_videos");
+          utils.getCookiesFromStorage('libreddit', to, "use_hls");
+          utils.getCookiesFromStorage('libreddit', to, "hide_hls_notification");
+        }
+        resolve();
       }
-    }
-  )
+    )
+  })
 }
 
 function initTedditCookies(test, from) {
@@ -181,37 +163,40 @@ function initTedditCookies(test, from) {
 }
 
 function setTedditCookies() {
-  browser.storage.local.get(
-    [
-      "redditProtocol",
-      "disableReddit",
-      "redditFrontend",
-      "tedditNormalRedirectsChecks",
-      "tedditNormalCustomRedirects",
-      "tedditTorRedirectsChecks",
-      "tedditTorCustomRedirects",
-    ],
-    r => {
-      if (r.disableReddit || r.redditFrontend != 'teddit' || r.redditProtocol === undefined) return;
-      let checkedInstances;
-      if (r.redditProtocol == 'normal') checkedInstances = [...r.tedditNormalRedirectsChecks, ...r.tedditNormalCustomRedirects]
-      else if (r.redditProtocol == 'tor') checkedInstances = [...r.tedditTorRedirectsChecks, ...r.tedditTorCustomRedirects]
-      for (const to of checkedInstances) {
-        utils.getCookiesFromStorage('teddit', to, 'collapse_child_comments')
-        utils.getCookiesFromStorage('teddit', to, 'domain_instagram')
-        utils.getCookiesFromStorage('teddit', to, 'domain_twitter')
-        utils.getCookiesFromStorage('teddit', to, 'domain_youtube')
-        utils.getCookiesFromStorage('teddit', to, 'flairs')
-        utils.getCookiesFromStorage('teddit', to, 'highlight_controversial')
-        utils.getCookiesFromStorage('teddit', to, 'nsfw_enabled')
-        utils.getCookiesFromStorage('teddit', to, 'post_media_max_height')
-        utils.getCookiesFromStorage('teddit', to, 'show_upvoted_percentage')
-        utils.getCookiesFromStorage('teddit', to, 'show_upvotes')
-        utils.getCookiesFromStorage('teddit', to, 'theme')
-        utils.getCookiesFromStorage('teddit', to, 'videos_muted')
+  return new Promise(resolve => {
+    browser.storage.local.get(
+      [
+        "redditProtocol",
+        "disableReddit",
+        "redditFrontend",
+        "tedditNormalRedirectsChecks",
+        "tedditNormalCustomRedirects",
+        "tedditTorRedirectsChecks",
+        "tedditTorCustomRedirects",
+      ],
+      r => {
+        if (r.disableReddit || r.redditFrontend != 'teddit' || r.redditProtocol === undefined) { resolve(); return; }
+        let checkedInstances;
+        if (r.redditProtocol == 'normal') checkedInstances = [...r.tedditNormalRedirectsChecks, ...r.tedditNormalCustomRedirects]
+        else if (r.redditProtocol == 'tor') checkedInstances = [...r.tedditTorRedirectsChecks, ...r.tedditTorCustomRedirects]
+        for (const to of checkedInstances) {
+          utils.getCookiesFromStorage('teddit', to, 'collapse_child_comments')
+          utils.getCookiesFromStorage('teddit', to, 'domain_instagram')
+          utils.getCookiesFromStorage('teddit', to, 'domain_twitter')
+          utils.getCookiesFromStorage('teddit', to, 'domain_youtube')
+          utils.getCookiesFromStorage('teddit', to, 'flairs')
+          utils.getCookiesFromStorage('teddit', to, 'highlight_controversial')
+          utils.getCookiesFromStorage('teddit', to, 'nsfw_enabled')
+          utils.getCookiesFromStorage('teddit', to, 'post_media_max_height')
+          utils.getCookiesFromStorage('teddit', to, 'show_upvoted_percentage')
+          utils.getCookiesFromStorage('teddit', to, 'show_upvotes')
+          utils.getCookiesFromStorage('teddit', to, 'theme')
+          utils.getCookiesFromStorage('teddit', to, 'videos_muted')
+        }
+        resolve();
       }
-    }
-  )
+    )
+  })
 }
 
 function redirect(url, type, initiator) {
@@ -403,48 +388,49 @@ function switchInstance(url) {
 }
 
 function initDefaults() {
-  fetch('/instances/data.json').then(response => response.text()).then(async data => {
-    let dataJson = JSON.parse(data);
-    redirects.teddit = dataJson.teddit;
-    redirects.libreddit = dataJson.libreddit;
-    browser.storage.local.get('cloudflareList', async r => {
-      libredditNormalRedirectsChecks = [...redirects.libreddit.normal];
-      tedditNormalRedirectsChecks = [...redirects.teddit.normal]
-      for (const instance of r.cloudflareList) {
-        let i;
-
-        i = libredditNormalRedirectsChecks.indexOf(instance);
-        if (i > -1) libredditNormalRedirectsChecks.splice(i, 1);
-
-        i = tedditNormalRedirectsChecks.indexOf(instance);
-        if (i > -1) tedditNormalRedirectsChecks.splice(i, 1);
-      }
-      await browser.storage.local.set({
-        disableReddit: false,
-        redditProtocol: 'normal',
-        redditFrontend: 'libreddit',
-        redditRedirects: redirects,
+  return new Promise(resolve => {
+    fetch('/instances/data.json').then(response => response.text()).then(async data => {
+      let dataJson = JSON.parse(data);
+      redirects.teddit = dataJson.teddit;
+      redirects.libreddit = dataJson.libreddit;
+      browser.storage.local.get('cloudflareList', async r => {
+        libredditNormalRedirectsChecks = [...redirects.libreddit.normal];
+        tedditNormalRedirectsChecks = [...redirects.teddit.normal]
+        for (const instance of r.cloudflareList) {
+          let i;
+
+          i = libredditNormalRedirectsChecks.indexOf(instance);
+          if (i > -1) libredditNormalRedirectsChecks.splice(i, 1);
+
+          i = tedditNormalRedirectsChecks.indexOf(instance);
+          if (i > -1) tedditNormalRedirectsChecks.splice(i, 1);
+        }
+        await browser.storage.local.set({
+          disableReddit: false,
+          redditProtocol: 'normal',
+          redditFrontend: 'libreddit',
+          redditRedirects: redirects,
 
-        libredditNormalRedirectsChecks: libredditNormalRedirectsChecks,
-        libredditNormalCustomRedirects: [],
+          libredditNormalRedirectsChecks: libredditNormalRedirectsChecks,
+          libredditNormalCustomRedirects: [],
 
-        libredditTorRedirectsChecks: [...redirects.libreddit.tor],
-        libredditTorCustomRedirects: [],
+          libredditTorRedirectsChecks: [...redirects.libreddit.tor],
+          libredditTorCustomRedirects: [],
 
-        tedditNormalRedirectsChecks: tedditNormalRedirectsChecks,
-        tedditNormalCustomRedirects: [],
+          tedditNormalRedirectsChecks: tedditNormalRedirectsChecks,
+          tedditNormalCustomRedirects: [],
 
-        tedditTorRedirectsChecks: [...redirects.teddit.tor],
-        tedditTorCustomRedirects: [],
+          tedditTorRedirectsChecks: [...redirects.teddit.tor],
+          tedditTorCustomRedirects: [],
+        });
+        resolve();
       });
     });
   });
 }
 
 export default {
-  setTedditRedirects,
-  setLibredditRedirects,
-
+  setRedirects,
   initLibredditCookies,
   setLibredditCookies,
   initTedditCookies,
diff --git a/src/assets/javascripts/helpers/search.js b/src/assets/javascripts/helpers/search.js
index 56f0f025..511fc53b 100644
--- a/src/assets/javascripts/helpers/search.js
+++ b/src/assets/javascripts/helpers/search.js
@@ -8,7 +8,7 @@ const targets = [
 
   /^https?:\/{2}yandex(\.[a-z]{2,3}){1,2}/,
 
-  /^https?:\/{2}libredirect\.invalid/,
+  /^https?:\/{2}search\.libredirect\.invalid/,
 ];
 let redirects = {
   "searx": {
@@ -28,87 +28,35 @@ let redirects = {
   }
 };
 
-function setSearxRedirects(val) {
-  redirects.searx = val;
-  browser.storage.local.set({ searchRedirects: redirects })
-  console.log("searxRedirects:", val)
-  for (const item of searxNormalRedirectsChecks) if (!redirects.searx.normal.includes(item)) {
-    var index = searxNormalRedirectsChecks.indexOf(item);
-    if (index !== -1) searxNormalRedirectsChecks.splice(index, 1);
-  }
-  browser.storage.local.set({ searxNormalRedirectsChecks });
-
-  for (const item of searxTorRedirectsChecks) if (!redirects.searx.tor.includes(item)) {
-    var index = searxTorRedirectsChecks.indexOf(item);
-    if (index !== -1) searxTorRedirectsChecks.splice(index, 1);
-  }
-  browser.storage.local.set({ searxTorRedirectsChecks })
-
-  for (const item of searxI2pRedirectsChecks) if (!redirects.searx.i2p.includes(item)) {
-    var index = searxI2pRedirectsChecks.indexOf(item);
-    if (index !== -1) searxI2pRedirectsChecks.splice(index, 1);
-  }
-  browser.storage.local.set({ searxI2pRedirectsChecks });
-}
-
-function setSearxngRedirects(val) {
-  redirects.searxng = val;
-  browser.storage.local.set({ searchRedirects: redirects })
-  console.log("searxngRedirects:", val)
-  for (const item of searxngNormalRedirectsChecks) if (!redirects.searxng.normal.includes(item)) {
-    var index = searxngNormalRedirectsChecks.indexOf(item);
-    if (index !== -1) searxngNormalRedirectsChecks.splice(index, 1);
-  }
-  browser.storage.local.set({ searxngNormalRedirectsChecks })
-
-  for (const item of searxngTorRedirectsChecks) if (!redirects.searxng.tor.includes(item)) {
-    var index = searxngTorRedirectsChecks.indexOf(item);
-    if (index !== -1) searxngTorRedirectsChecks.splice(index, 1);
-  }
-  browser.storage.local.set({ searxngTorRedirectsChecks });
-
-  for (const item of searxngI2pRedirectsChecks) if (!redirects.searxng.i2p.includes(item)) {
-    var index = searxngI2pRedirectsChecks.indexOf(item);
-    if (index !== -1) searxngI2pRedirectsChecks.splice(index, 1);
-  }
-  browser.storage.local.set({ searxngI2pRedirectsChecks })
-}
-
-function setWhoogleRedirects(val) {
-  redirects.whoogle = val;
-  browser.storage.local.set({ searchRedirects: redirects })
-  console.log("whoogleRedirects:", val)
-  for (const item of whoogleNormalRedirectsChecks) if (!redirects.whoogle.normal.includes(item)) {
-    var index = whoogleNormalRedirectsChecks.indexOf(item);
-    if (index !== -1) whoogleNormalRedirectsChecks.splice(index, 1);
-  }
-  browser.storage.local.set({ whoogleNormalRedirectsChecks })
-
-  for (const item of whoogleTorRedirectsChecks) if (!redirects.whoogle.tor.includes(item)) {
-    var index = whoogleTorRedirectsChecks.indexOf(item);
-    if (index !== -1) whoogleTorRedirectsChecks.splice(index, 1);
-  }
-  browser.storage.local.set({ whoogleTorRedirectsChecks })
-
-  for (const item of whoogleI2pRedirectsChecks) if (!redirects.whoogle.i2p.includes(item)) {
-    var index = whoogleI2pRedirectsChecks.indexOf(item);
-    if (index !== -1) whoogleI2pRedirectsChecks.splice(index, 1);
-  }
-  browser.storage.local.set({ whoogleI2pRedirectsChecks })
+function setRedirects(val) {
+  browser.storage.local.get('cloudflareList', r => {
+    redirects = val;
+    searxNormalRedirectsChecks = [...redirects.searx.normal];
+    searxngNormalRedirectsChecks = [...redirects.searxng.normal];
+    whoogleNormalRedirectsChecks = [...redirects.whoogle.normal];
+    for (const instance of r.cloudflareList) {
+      const a = searxNormalRedirectsChecks.indexOf(instance);
+      if (a > -1) searxNormalRedirectsChecks.splice(a, 1);
+
+      const b = searxngNormalRedirectsChecks.indexOf(instance);
+      if (b > -1) searxngNormalRedirectsChecks.splice(b, 1);
+
+      const c = whoogleNormalRedirectsChecks.indexOf(instance);
+      if (c > -1) whoogleNormalRedirectsChecks.splice(c, 1);
+    }
+    browser.storage.local.set({
+      searchRedirects: redirects,
+      searxNormalRedirectsChecks,
+      searxngNormalRedirectsChecks,
+      whoogleNormalRedirectsChecks,
+    });
+  })
 }
 
 let
   searxNormalRedirectsChecks,
-  searxI2pRedirectsChecks,
-  searxTorRedirectsChecks,
-
   searxngNormalRedirectsChecks,
-  searxngI2pRedirectsChecks,
-  searxngTorRedirectsChecks,
-
-  whoogleNormalRedirectsChecks,
-  whoogleI2pRedirectsChecks,
-  whoogleTorRedirectsChecks;
+  whoogleNormalRedirectsChecks;
 
 function initSearxCookies(test, from) {
   return new Promise(resolve => {
@@ -165,42 +113,45 @@ function initSearxCookies(test, from) {
 }
 
 function setSearxCookies() {
-  browser.storage.local.get(
-    [
-      "disableSearch",
-      "searchProtocol",
-      "searchFrontend",
-      "searxNormalRedirectsChecks",
-      "searxNormalCustomRedirects",
-      "searxTorRedirectsChecks",
-      "searxTorCustomRedirects",
-    ],
-    r => {
-      if (r.disableSearch || r.searchFrontend != 'searx', r.searchProtocol === undefined) return;
-      let checkedInstances;
-      if (r.searchProtocol == 'normal') checkedInstances = [...r.searxNormalRedirectsChecks, ...r.searxNormalCustomRedirects]
-      else if (r.searchProtocol == 'tor') checkedInstances = [...r.searxTorRedirectsChecks, ...r.searxTorCustomRedirects]
-      for (const to of checkedInstances) {
-        utils.getCookiesFromStorage('searx', to, 'advanced_search');
-        utils.getCookiesFromStorage('searx', to, 'autocomplete');
-        utils.getCookiesFromStorage('searx', to, 'categories');
-        utils.getCookiesFromStorage('searx', to, 'disabled_engines');
-        utils.getCookiesFromStorage('searx', to, 'disabled_plugins');
-        utils.getCookiesFromStorage('searx', to, 'doi_resolver');
-        utils.getCookiesFromStorage('searx', to, 'enabled_engines');
-        utils.getCookiesFromStorage('searx', to, 'enabled_plugins');
-        utils.getCookiesFromStorage('searx', to, 'image_proxy');
-        utils.getCookiesFromStorage('searx', to, 'language');
-        utils.getCookiesFromStorage('searx', to, 'locale');
-        utils.getCookiesFromStorage('searx', to, 'method');
-        utils.getCookiesFromStorage('searx', to, 'oscar-style');
-        utils.getCookiesFromStorage('searx', to, 'results_on_new_tab');
-        utils.getCookiesFromStorage('searx', to, 'safesearch');
-        utils.getCookiesFromStorage('searx', to, 'theme');
-        utils.getCookiesFromStorage('searx', to, 'tokens');
+  return new Promise(resolve => {
+    browser.storage.local.get(
+      [
+        "disableSearch",
+        "searchProtocol",
+        "searchFrontend",
+        "searxNormalRedirectsChecks",
+        "searxNormalCustomRedirects",
+        "searxTorRedirectsChecks",
+        "searxTorCustomRedirects",
+      ],
+      r => {
+        if (r.disableSearch || r.searchFrontend != 'searx', r.searchProtocol === undefined) { resolve(); return; }
+        let checkedInstances;
+        if (r.searchProtocol == 'normal') checkedInstances = [...r.searxNormalRedirectsChecks, ...r.searxNormalCustomRedirects]
+        else if (r.searchProtocol == 'tor') checkedInstances = [...r.searxTorRedirectsChecks, ...r.searxTorCustomRedirects]
+        for (const to of checkedInstances) {
+          utils.getCookiesFromStorage('searx', to, 'advanced_search');
+          utils.getCookiesFromStorage('searx', to, 'autocomplete');
+          utils.getCookiesFromStorage('searx', to, 'categories');
+          utils.getCookiesFromStorage('searx', to, 'disabled_engines');
+          utils.getCookiesFromStorage('searx', to, 'disabled_plugins');
+          utils.getCookiesFromStorage('searx', to, 'doi_resolver');
+          utils.getCookiesFromStorage('searx', to, 'enabled_engines');
+          utils.getCookiesFromStorage('searx', to, 'enabled_plugins');
+          utils.getCookiesFromStorage('searx', to, 'image_proxy');
+          utils.getCookiesFromStorage('searx', to, 'language');
+          utils.getCookiesFromStorage('searx', to, 'locale');
+          utils.getCookiesFromStorage('searx', to, 'method');
+          utils.getCookiesFromStorage('searx', to, 'oscar-style');
+          utils.getCookiesFromStorage('searx', to, 'results_on_new_tab');
+          utils.getCookiesFromStorage('searx', to, 'safesearch');
+          utils.getCookiesFromStorage('searx', to, 'theme');
+          utils.getCookiesFromStorage('searx', to, 'tokens');
+        }
+        resolve();
       }
-    }
-  )
+    )
+  })
 }
 
 function initSearxngCookies(test, from) {
@@ -260,44 +211,47 @@ function initSearxngCookies(test, from) {
 }
 
 function setSearxngCookies() {
-  browser.storage.local.get(
-    [
-      "searchProtocol",
-      "disableSearch",
-      "searchFrontend",
-      "searxngNormalRedirectsChecks",
-      "searxngNormalCustomRedirects",
-      "searxngTorRedirectsChecks",
-      "searxngTorCustomRedirects",
-    ],
-    r => {
-      if (r.disableSearch || r.searchFrontend != 'searxng', r.searchProtocol === undefined) return;
-      let checkedInstances;
-      if (r.searchProtocol == 'normal') checkedInstances = [...r.searxngNormalRedirectsChecks, ...r.searxngNormalCustomRedirects]
-      else if (r.searchProtocol == 'tor') checkedInstances = [...r.searxngTorRedirectsChecks, ...r.searxngTorCustomRedirects]
-      for (const to of checkedInstances) {
-        utils.getCookiesFromStorage('searxng', to, 'autocomplete');
-        utils.getCookiesFromStorage('searxng', to, 'categories');
-        utils.getCookiesFromStorage('searxng', to, 'disabled_engines');
-        utils.getCookiesFromStorage('searxng', to, 'disabled_plugins');
-        utils.getCookiesFromStorage('searxng', to, 'doi_resolver');
-        utils.getCookiesFromStorage('searxng', to, 'enabled_plugins');
-        utils.getCookiesFromStorage('searxng', to, 'enabled_engines');
-        utils.getCookiesFromStorage('searxng', to, 'image_proxy');
-        utils.getCookiesFromStorage('searxng', to, 'infinite_scroll');
-        utils.getCookiesFromStorage('searxng', to, 'language');
-        utils.getCookiesFromStorage('searxng', to, 'locale');
-        utils.getCookiesFromStorage('searxng', to, 'maintab');
-        utils.getCookiesFromStorage('searxng', to, 'method');
-        utils.getCookiesFromStorage('searxng', to, 'query_in_title');
-        utils.getCookiesFromStorage('searxng', to, 'results_on_new_tab');
-        utils.getCookiesFromStorage('searxng', to, 'safesearch');
-        utils.getCookiesFromStorage('searxng', to, 'simple_style');
-        utils.getCookiesFromStorage('searxng', to, 'theme');
-        utils.getCookiesFromStorage('searxng', to, 'tokens');
+  return new Promise(resolve => {
+    browser.storage.local.get(
+      [
+        "searchProtocol",
+        "disableSearch",
+        "searchFrontend",
+        "searxngNormalRedirectsChecks",
+        "searxngNormalCustomRedirects",
+        "searxngTorRedirectsChecks",
+        "searxngTorCustomRedirects",
+      ],
+      r => {
+        if (r.disableSearch || r.searchFrontend != 'searxng', r.searchProtocol === undefined) { resolve(); return; }
+        let checkedInstances;
+        if (r.searchProtocol == 'normal') checkedInstances = [...r.searxngNormalRedirectsChecks, ...r.searxngNormalCustomRedirects]
+        else if (r.searchProtocol == 'tor') checkedInstances = [...r.searxngTorRedirectsChecks, ...r.searxngTorCustomRedirects]
+        for (const to of checkedInstances) {
+          utils.getCookiesFromStorage('searxng', to, 'autocomplete');
+          utils.getCookiesFromStorage('searxng', to, 'categories');
+          utils.getCookiesFromStorage('searxng', to, 'disabled_engines');
+          utils.getCookiesFromStorage('searxng', to, 'disabled_plugins');
+          utils.getCookiesFromStorage('searxng', to, 'doi_resolver');
+          utils.getCookiesFromStorage('searxng', to, 'enabled_plugins');
+          utils.getCookiesFromStorage('searxng', to, 'enabled_engines');
+          utils.getCookiesFromStorage('searxng', to, 'image_proxy');
+          utils.getCookiesFromStorage('searxng', to, 'infinite_scroll');
+          utils.getCookiesFromStorage('searxng', to, 'language');
+          utils.getCookiesFromStorage('searxng', to, 'locale');
+          utils.getCookiesFromStorage('searxng', to, 'maintab');
+          utils.getCookiesFromStorage('searxng', to, 'method');
+          utils.getCookiesFromStorage('searxng', to, 'query_in_title');
+          utils.getCookiesFromStorage('searxng', to, 'results_on_new_tab');
+          utils.getCookiesFromStorage('searxng', to, 'safesearch');
+          utils.getCookiesFromStorage('searxng', to, 'simple_style');
+          utils.getCookiesFromStorage('searxng', to, 'theme');
+          utils.getCookiesFromStorage('searxng', to, 'tokens');
+        }
+        resolve();
       }
-    }
-  )
+    )
+  })
 }
 
 function redirect(url) {
@@ -381,7 +335,7 @@ function redirect(url) {
           (
             url.hostname.includes('google') ||
             url.hostname.includes('bing') ||
-            url.hostname.includes('libredirect.invalid')
+            url.hostname.includes('search.libredirect.invalid')
           ) &&
           url.searchParams.has('q')
         ) searchQuery = `?q=${url.searchParams.get('q')}`;
@@ -485,71 +439,72 @@ async function switchInstance(url) {
   })
 }
 
-async function initDefaults() {
-  await fetch('/instances/data.json').then(response => response.text()).then(async data => {
-    let dataJson = JSON.parse(data);
-    redirects.searx = dataJson.searx;
-    redirects.searxng = dataJson.searxng;
-    redirects.whoogle = dataJson.whoogle;
-
-    browser.storage.local.get('cloudflareList', async r => {
-      whoogleNormalRedirectsChecks = [...redirects.whoogle.normal];
-      searxNormalRedirectsChecks = [...redirects.searx.normal];
-      searxngNormalRedirectsChecks = [...redirects.searxng.normal];
-      for (const instance of r.cloudflareList) {
-        let i;
-
-        i = whoogleNormalRedirectsChecks.indexOf(instance);
-        if (i > -1) whoogleNormalRedirectsChecks.splice(i, 1);
-
-        i = searxNormalRedirectsChecks.indexOf(instance);
-        if (i > -1) searxNormalRedirectsChecks.splice(i, 1);
-
-        i = searxngNormalRedirectsChecks.indexOf(instance);
-        if (i > -1) searxngNormalRedirectsChecks.splice(i, 1);
-      }
-      await browser.storage.local.set({
-        disableSearch: false,
-        searchFrontend: 'searxng',
-        searchRedirects: redirects,
-        searxngCustomSettings: false,
-        searchProtocol: 'normal',
+function initDefaults() {
+  return new Promise(async resolve => {
+    fetch('/instances/data.json').then(response => response.text()).then(async data => {
+      let dataJson = JSON.parse(data);
+      redirects.searx = dataJson.searx;
+      redirects.searxng = dataJson.searxng;
+      redirects.whoogle = dataJson.whoogle;
+
+      browser.storage.local.get('cloudflareList', async r => {
+        whoogleNormalRedirectsChecks = [...redirects.whoogle.normal];
+        searxNormalRedirectsChecks = [...redirects.searx.normal];
+        searxngNormalRedirectsChecks = [...redirects.searxng.normal];
+        for (const instance of r.cloudflareList) {
+          let i;
+
+          i = whoogleNormalRedirectsChecks.indexOf(instance);
+          if (i > -1) whoogleNormalRedirectsChecks.splice(i, 1);
+
+          i = searxNormalRedirectsChecks.indexOf(instance);
+          if (i > -1) searxNormalRedirectsChecks.splice(i, 1);
+
+          i = searxngNormalRedirectsChecks.indexOf(instance);
+          if (i > -1) searxngNormalRedirectsChecks.splice(i, 1);
+        }
+        await browser.storage.local.set({
+          disableSearch: false,
+          searchFrontend: 'searxng',
+          searchRedirects: redirects,
+          searxngCustomSettings: false,
+          searchProtocol: 'normal',
 
-        whoogleNormalRedirectsChecks: whoogleNormalRedirectsChecks,
-        whoogleNormalCustomRedirects: [],
+          whoogleNormalRedirectsChecks: whoogleNormalRedirectsChecks,
+          whoogleNormalCustomRedirects: [],
 
-        whoogleTorRedirectsChecks: [...redirects.whoogle.tor],
-        whoogleTorCustomRedirects: [],
+          whoogleTorRedirectsChecks: [...redirects.whoogle.tor],
+          whoogleTorCustomRedirects: [],
 
-        whoogleI2pRedirectsChecks: [...redirects.whoogle.i2p],
-        whoogleI2pCustomRedirects: [],
+          whoogleI2pRedirectsChecks: [...redirects.whoogle.i2p],
+          whoogleI2pCustomRedirects: [],
 
-        searxNormalRedirectsChecks: searxNormalRedirectsChecks,
-        searxNormalCustomRedirects: [],
+          searxNormalRedirectsChecks: searxNormalRedirectsChecks,
+          searxNormalCustomRedirects: [],
 
-        searxTorRedirectsChecks: [...redirects.searx.tor],
-        searxTorCustomRedirects: [],
+          searxTorRedirectsChecks: [...redirects.searx.tor],
+          searxTorCustomRedirects: [],
 
-        searxI2pRedirectsChecks: [...redirects.searx.i2p],
-        searxI2pCustomRedirects: [],
+          searxI2pRedirectsChecks: [...redirects.searx.i2p],
+          searxI2pCustomRedirects: [],
 
-        searxngNormalRedirectsChecks: searxngNormalRedirectsChecks,
-        searxngNormalCustomRedirects: [],
+          searxngNormalRedirectsChecks: searxngNormalRedirectsChecks,
+          searxngNormalCustomRedirects: [],
 
-        searxngTorRedirectsChecks: [...redirects.searxng.tor],
-        searxngTorCustomRedirects: [],
+          searxngTorRedirectsChecks: [...redirects.searxng.tor],
+          searxngTorCustomRedirects: [],
 
-        searxngI2pRedirectsChecks: [...redirects.searxng.i2p],
-        searxngI2pCustomRedirects: [],
+          searxngI2pRedirectsChecks: [...redirects.searxng.i2p],
+          searxngI2pCustomRedirects: [],
+        })
+        resolve();
       })
     })
   })
 }
 
 export default {
-  setSearxRedirects,
-  setSearxngRedirects,
-  setWhoogleRedirects,
+  setRedirects,
 
   initSearxCookies,
   setSearxCookies,
diff --git a/src/assets/javascripts/helpers/sendTargets.js b/src/assets/javascripts/helpers/sendTargets.js
index c593913c..be99e0d9 100644
--- a/src/assets/javascripts/helpers/sendTargets.js
+++ b/src/assets/javascripts/helpers/sendTargets.js
@@ -3,7 +3,7 @@ window.browser = window.browser || window.chrome;
 import utils from './utils.js'
 
 const targets = [
-    /^https?:\/{2}send.invalid\/$/,
+    /^https?:\/{2}send\.libredirect\.invalid\/$/,
     /^ https ?: \/\/send\.firefox\.com\/$/,
     /^https?:\/{2}sendfiles\.online\/$/
 ];
@@ -15,33 +15,23 @@ let redirects = {
     }
 }
 function setRedirects(val) {
-    redirects.send = val;
-    browser.storage.local.set({ sendTargetsRedirects: redirects })
-    console.log("sendTargetsRedirects: ", val)
-    for (const item of sendNormalRedirectsChecks)
-        if (!redirects.send.normal.includes(item)) {
-            var index = sendNormalRedirectsChecks.indexOf(item);
-            if (index !== -1) sendNormalRedirectsChecks.splice(index, 1);
+    browser.storage.local.get('cloudflareList', r => {
+        redirects.send = val;
+        sendNormalRedirectsChecks = [...redirects.send.normal];
+        for (const instance of r.cloudflareList) {
+            const a = sendNormalRedirectsChecks.indexOf(instance);
+            if (a > -1) sendNormalRedirectsChecks.splice(a, 1);
         }
-    browser.storage.local.set({ sendNormalRedirectsChecks })
-
-    for (const item of sendTorRedirectsChecks)
-        if (!redirects.send.normal.includes(item)) {
-            var index = sendTorRedirectsChecks.indexOf(item);
-            if (index !== -1) sendTorRedirectsChecks.splice(index, 1);
-        }
-    browser.storage.local.set({ sendTorRedirectsChecks })
+        browser.storage.local.set({
+            sendTargetsRedirects: redirects,
+            sendNormalRedirectsChecks,
+        })
+    })
 }
 
 let sendNormalRedirectsChecks;
-let sendTorRedirectsChecks;
-let sendNormalCustomRedirects = [];
-let sendTorCustomRedirects = [];
-
-let disable; // disableSendTarget
-let protocol; // sendTargetsProtocol
 
-async function switchInstance(url) {
+function switchInstance(url) {
     return new Promise(resolve => {
         browser.storage.local.get(
             [
@@ -82,85 +72,80 @@ async function switchInstance(url) {
 }
 
 function redirect(url, type, initiator) {
-    if (disable) return null;
-    if (type != "main_frame") return null;
-    if (initiator && (
-        [...redirects.send.normal,
-        ...sendNormalCustomRedirects
-        ].includes(initiator.origin) ||
-        targets.includes(initiator.host)
-    )) return null;
-    if (!targets.some(rx => rx.test(url.href))) return null;
-
-    let instancesList;
-    if (protocol == 'normal') instancesList = [...sendNormalRedirectsChecks, ...sendNormalCustomRedirects];
-    if (protocol == 'tor') instancesList = [...sendTorRedirectsChecks, ...sendTorCustomRedirects];
-    if (instancesList.length === 0) return null;
-    let randomInstance = utils.getRandomInstance(instancesList);
-
-    return randomInstance;
-}
+    return new Promise(resolve => {
+        browser.storage.local.get(
+            [
+                "disableSendTarget",
+                "sendTargetsRedirects",
 
-async function initDefaults() {
-    fetch('/instances/data.json').then(response => response.text()).then(async data => {
-        let dataJson = JSON.parse(data);
-        redirects.send = dataJson.send;
-        browser.storage.local.get('cloudflareList', async r => {
-            sendNormalRedirectsChecks = [...redirects.send.normal];
-            for (const instance of r.cloudflareList) {
-                let i = sendNormalRedirectsChecks.indexOf(instance);
-                if (i > -1) sendNormalRedirectsChecks.splice(i, 1);
-            }
-            await browser.storage.local.set({
-                disableSendTarget: false,
-                sendTargetsRedirects: redirects,
+                "sendNormalRedirectsChecks",
+                "sendNormalCustomRedirects",
 
-                sendNormalRedirectsChecks: sendNormalRedirectsChecks,
-                sendNormalCustomRedirects: [],
+                "sendTorRedirectsChecks",
+                "sendTorCustomRedirects",
 
-                sendTorRedirectsChecks: [...redirects.send.tor],
-                sendTorCustomRedirects: [],
+                "sendTargetsProtocol"
+            ],
+            r => {
+                if (r.disableSendTarget) { resolve(); return; }
+                if (type != "main_frame") { resolve(); return; }
+                if (
+                    initiator && (
+                        [
+                            ...r.sendTargetsRedirects.send.normal,
+                            ...r.sendTargetsRedirects.send.tor,
+                            ...r.sendNormalCustomRedirects,
+                            ...r.sendTorRedirectsChecks
+                        ].includes(initiator.origin) ||
+                        targets.includes(initiator.host)
+                    )
+                ) { resolve(); return; }
+                if (!targets.some(rx => rx.test(url.href))) { resolve(); return; }
 
-                sendTargetsProtocol: "normal",
-            })
-        })
+                let instancesList;
+                if (r.sendTargetsProtocol == 'normal') instancesList = [...r.sendNormalRedirectsChecks, ...r.sendNormalCustomRedirects];
+                if (r.sendTargetsProtocol == 'tor') instancesList = [...r.sendTorRedirectsChecks, ...r.sendTorCustomRedirects];
+                if (instancesList.length === 0) { resolve(); return; }
+
+                let randomInstance = utils.getRandomInstance(instancesList);
+                resolve(randomInstance);
+            }
+        )
     })
 }
 
-async function init() {
-    browser.storage.local.get(
-        [
-            "disableSendTarget",
-            "sendTargetsRedirects",
-
-            "sendNormalRedirectsChecks",
-            "sendNormalCustomRedirects",
-
-            "sendTorRedirectsChecks",
-            "sendTorCustomRedirects",
-
-            "sendTargetsProtocol"
-        ],
-        r => {
-            disable = r.disableSendTarget;
-            protocol = r.sendTargetsProtocol;
-            redirects = r.sendTargetsRedirects;
-
-            sendNormalRedirectsChecks = r.sendNormalRedirectsChecks;
-            sendNormalCustomRedirects = r.sendNormalCustomRedirects;
-
-            sendTorRedirectsChecks = r.sendTorRedirectsChecks;
-            sendTorCustomRedirects = r.sendTorCustomRedirects;
-        }
-    )
+function initDefaults() {
+    return new Promise(resolve => {
+        fetch('/instances/data.json').then(response => response.text()).then(async data => {
+            let dataJson = JSON.parse(data);
+            redirects.send = dataJson.send;
+            browser.storage.local.get('cloudflareList', async r => {
+                sendNormalRedirectsChecks = [...redirects.send.normal];
+                for (const instance of r.cloudflareList) {
+                    let i = sendNormalRedirectsChecks.indexOf(instance);
+                    if (i > -1) sendNormalRedirectsChecks.splice(i, 1);
+                }
+                await browser.storage.local.set({
+                    disableSendTarget: false,
+                    sendTargetsRedirects: redirects,
+
+                    sendNormalRedirectsChecks: sendNormalRedirectsChecks,
+                    sendNormalCustomRedirects: [],
+
+                    sendTorRedirectsChecks: [...redirects.send.tor],
+                    sendTorCustomRedirects: [],
+
+                    sendTargetsProtocol: "normal",
+                })
+                resolve();
+            })
+        })
+    })
 }
 
 export default {
     setRedirects,
-
     redirect,
     switchInstance,
-
     initDefaults,
-    init,
 };
diff --git a/src/assets/javascripts/helpers/tiktok.js b/src/assets/javascripts/helpers/tiktok.js
index f85b9986..897baf0a 100644
--- a/src/assets/javascripts/helpers/tiktok.js
+++ b/src/assets/javascripts/helpers/tiktok.js
@@ -13,22 +13,18 @@ let redirects = {
     }
 }
 function setRedirects(val) {
-    redirects.proxiTok = val;
-    browser.storage.local.set({ tiktokRedirects: redirects })
-    console.log("tiktokRedirects: ", val)
-    for (const item of proxiTokNormalRedirectsChecks)
-        if (!redirects.proxiTok.normal.includes(item)) {
-            var index = proxiTokNormalRedirectsChecks.indexOf(item);
-            if (index !== -1) proxiTokNormalRedirectsChecks.splice(index, 1);
+    browser.storage.local.get('cloudflareList', r => {
+        redirects.proxiTok = val;
+        proxiTokNormalRedirectsChecks = [...redirects.proxiTok.normal];
+        for (const instance of r.cloudflareList) {
+            const a = proxiTokNormalRedirectsChecks.indexOf(instance);
+            if (a > -1) proxiTokNormalRedirectsChecks.splice(a, 1);
         }
-    browser.storage.local.set({ proxiTokNormalRedirectsChecks })
-
-    for (const item of proxiTokTorRedirectsChecks)
-        if (!redirects.proxiTok.normal.includes(item)) {
-            var index = proxiTokTorRedirectsChecks.indexOf(item);
-            if (index !== -1) proxiTokTorRedirectsChecks.splice(index, 1);
-        }
-    browser.storage.local.set({ proxiTokTorRedirectsChecks })
+        browser.storage.local.set({
+            tiktokRedirects: redirects,
+            proxiTokNormalRedirectsChecks
+        })
+    })
 }
 
 let proxiTokNormalRedirectsChecks;
@@ -57,7 +53,7 @@ function initProxiTokCookies(test, from) {
                     ...r.proxiTokTorRedirectsChecks,
                     ...r.proxiTokTorCustomRedirects,
                 ].includes(protocolHost)) resolve();
-                
+
                 if (!test) {
                     let checkedInstances;
                     if (r.tiktokProtocol == 'normal') checkedInstances = [...r.proxiTokNormalRedirectsChecks, ...r.proxiTokNormalCustomRedirects]
@@ -74,26 +70,29 @@ function initProxiTokCookies(test, from) {
 }
 
 function setProxiTokCookies() {
-    browser.storage.local.get(
-        [
-            "tiktokProtocol",
-            "disableTiktok",
-            "proxiTokNormalRedirectsChecks",
-            "proxiTokNormalCustomRedirects",
-            "proxiTokTorRedirectsChecks",
-            "proxiTokTorCustomRedirects",
-        ],
-        r => {
-            if (r.disableTiktok || r.tiktokProtocol === undefined) return;
-            let checkedInstances;
-            if (r.tiktokProtocol == 'normal') checkedInstances = [...r.proxiTokNormalRedirectsChecks, ...r.proxiTokNormalCustomRedirects]
-            else if (r.tiktokProtocol == 'tor') checkedInstances = [...r.proxiTokTorRedirectsChecks, ...r.proxiTokTorCustomRedirects]
-            for (const to of checkedInstances) {
-                utils.getCookiesFromStorage('proxitok', to, 'theme');
-                utils.getCookiesFromStorage('proxitok', to, 'api-legacy');
+    return new Promise(resolve => {
+        browser.storage.local.get(
+            [
+                "tiktokProtocol",
+                "disableTiktok",
+                "proxiTokNormalRedirectsChecks",
+                "proxiTokNormalCustomRedirects",
+                "proxiTokTorRedirectsChecks",
+                "proxiTokTorCustomRedirects",
+            ],
+            r => {
+                if (r.disableTiktok || r.tiktokProtocol === undefined) { resolve(); return; }
+                let checkedInstances;
+                if (r.tiktokProtocol == 'normal') checkedInstances = [...r.proxiTokNormalRedirectsChecks, ...r.proxiTokNormalCustomRedirects]
+                else if (r.tiktokProtocol == 'tor') checkedInstances = [...r.proxiTokTorRedirectsChecks, ...r.proxiTokTorCustomRedirects]
+                for (const to of checkedInstances) {
+                    utils.getCookiesFromStorage('proxitok', to, 'theme');
+                    utils.getCookiesFromStorage('proxitok', to, 'api-legacy');
+                }
+                resolve();
             }
-        }
-    )
+        )
+    })
 }
 
 function redirect(url, type, initiator) {
@@ -163,7 +162,7 @@ async function reverse(url) {
     })
 }
 
-async function initDefaults() {
+function initDefaults() {
     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/translate/translate.js b/src/assets/javascripts/helpers/translate/translate.js
index 8ce8a2c2..7ad1f33a 100644
--- a/src/assets/javascripts/helpers/translate/translate.js
+++ b/src/assets/javascripts/helpers/translate/translate.js
@@ -22,12 +22,11 @@ let
   lingvaNormalRedirectsChecks;
 
 function setRedirects(val) {
-  browser.storage.local.get('cloudflareList', async r => {
+  browser.storage.local.get('cloudflareList', r => {
     redirects = val;
     simplyTranslateNormalRedirectsChecks = [...redirects.simplyTranslate.normal];
     lingvaNormalRedirectsChecks = [...redirects.lingva.normal]
     for (const instance of r.cloudflareList) {
-      let i;
       const a = simplyTranslateNormalRedirectsChecks.indexOf(instance);
       if (a > -1) simplyTranslateNormalRedirectsChecks.splice(a, 1);
 
@@ -149,29 +148,32 @@ function initSimplyTranslateCookies(test, from) {
 }
 
 function setSimplyTranslateCookies() {
-  browser.storage.local.get(
-    [
-      "translateProtocol",
-      "translateDisable",
-      "translateFrontend",
-      "simplyTranslateNormalRedirectsChecks",
-      "simplyTranslateNormalCustomRedirects",
-      "simplyTranslateTorRedirectsChecks",
-      "simplyTranslateTorCustomRedirects",
-    ],
-    r => {
-      if (r.translateDisable || r.translateFrontend != 'simplyTranslate') return;
-      let checkedInstances;
-      if (r.translateProtocol == 'normal') checkedInstances = [...r.simplyTranslateNormalRedirectsChecks, ...r.simplyTranslateNormalCustomRedirects]
-      else if (r.translateProtocol == 'tor') checkedInstances = [...r.simplyTranslateTorRedirectsChecks, ...r.simplyTranslateTorCustomRedirects]
-      for (const to of checkedInstances) {
-        utils.getCookiesFromStorage('simplyTranslate', to, 'from_lang');
-        utils.getCookiesFromStorage('simplyTranslate', to, 'to_lang');
-        utils.getCookiesFromStorage('simplyTranslate', to, 'tts_enabled');
-        utils.getCookiesFromStorage('simplyTranslate', to, 'use_text_fields');
+  return new Promise(resolve => {
+    browser.storage.local.get(
+      [
+        "translateProtocol",
+        "translateDisable",
+        "translateFrontend",
+        "simplyTranslateNormalRedirectsChecks",
+        "simplyTranslateNormalCustomRedirects",
+        "simplyTranslateTorRedirectsChecks",
+        "simplyTranslateTorCustomRedirects",
+      ],
+      r => {
+        if (r.translateDisable || r.translateFrontend != 'simplyTranslate') { resolve(); return; }
+        let checkedInstances;
+        if (r.translateProtocol == 'normal') checkedInstances = [...r.simplyTranslateNormalRedirectsChecks, ...r.simplyTranslateNormalCustomRedirects]
+        else if (r.translateProtocol == 'tor') checkedInstances = [...r.simplyTranslateTorRedirectsChecks, ...r.simplyTranslateTorCustomRedirects]
+        for (const to of checkedInstances) {
+          utils.getCookiesFromStorage('simplyTranslate', to, 'from_lang');
+          utils.getCookiesFromStorage('simplyTranslate', to, 'to_lang');
+          utils.getCookiesFromStorage('simplyTranslate', to, 'tts_enabled');
+          utils.getCookiesFromStorage('simplyTranslate', to, 'use_text_fields');
+        }
+        resolve();
       }
-    }
-  )
+    )
+  })
 }
 
 function redirect(url) {
@@ -285,39 +287,41 @@ function switchInstance(url) {
 }
 
 function initDefaults() {
-  fetch('/instances/data.json').then(response => response.text()).then(data => {
-    let dataJson = JSON.parse(data);
-    redirects.simplyTranslate = dataJson.simplyTranslate;
-    redirects.lingva = dataJson.lingva;
-    browser.storage.local.get(
-      'cloudflareList',
-      r => {
-        simplyTranslateNormalRedirectsChecks = [...redirects.simplyTranslate.normal];
-        lingvaNormalRedirectsChecks = [...redirects.lingva.normal]
-        for (const instance of r.cloudflareList) {
-          const a = simplyTranslateNormalRedirectsChecks.indexOf(instance);
-          if (a > -1) simplyTranslateNormalRedirectsChecks.splice(a, 1);
-
-          const b = lingvaNormalRedirectsChecks.indexOf(instance);
-          if (b > -1) lingvaNormalRedirectsChecks.splice(b, 1);
-        }
-        browser.storage.local.set({
-          translateDisable: false,
-          translateFrontend: "simplyTranslate",
-          translateProtocol: 'normal',
-          translateRedirects: redirects,
-
-          simplyTranslateNormalRedirectsChecks: simplyTranslateNormalRedirectsChecks,
-          simplyTranslateNormalCustomRedirects: [],
-          simplyTranslateTorRedirectsChecks: [...redirects.simplyTranslate.tor],
-          simplyTranslateTorCustomRedirects: [],
-
-          lingvaNormalRedirectsChecks: lingvaNormalRedirectsChecks,
-          lingvaNormalCustomRedirects: [],
-          lingvaTorRedirectsChecks: [...redirects.lingva.tor],
-          lingvaTorCustomRedirects: [],
+  return new Promise(async resolve => {
+    fetch('/instances/data.json').then(response => response.text()).then(data => {
+      let dataJson = JSON.parse(data);
+      redirects.simplyTranslate = dataJson.simplyTranslate;
+      redirects.lingva = dataJson.lingva;
+      browser.storage.local.get('cloudflareList',
+        async r => {
+          simplyTranslateNormalRedirectsChecks = [...redirects.simplyTranslate.normal];
+          lingvaNormalRedirectsChecks = [...redirects.lingva.normal]
+          for (const instance of r.cloudflareList) {
+            const a = simplyTranslateNormalRedirectsChecks.indexOf(instance);
+            if (a > -1) simplyTranslateNormalRedirectsChecks.splice(a, 1);
+
+            const b = lingvaNormalRedirectsChecks.indexOf(instance);
+            if (b > -1) lingvaNormalRedirectsChecks.splice(b, 1);
+          }
+          await browser.storage.local.set({
+            translateDisable: false,
+            translateFrontend: "simplyTranslate",
+            translateProtocol: 'normal',
+            translateRedirects: redirects,
+
+            simplyTranslateNormalRedirectsChecks: simplyTranslateNormalRedirectsChecks,
+            simplyTranslateNormalCustomRedirects: [],
+            simplyTranslateTorRedirectsChecks: [...redirects.simplyTranslate.tor],
+            simplyTranslateTorCustomRedirects: [],
+
+            lingvaNormalRedirectsChecks: lingvaNormalRedirectsChecks,
+            lingvaNormalCustomRedirects: [],
+            lingvaTorRedirectsChecks: [...redirects.lingva.tor],
+            lingvaTorCustomRedirects: [],
+          })
+          resolve();
         })
-      })
+    })
   })
 }
 
diff --git a/src/assets/javascripts/helpers/twitter.js b/src/assets/javascripts/helpers/twitter.js
index 811edc1d..89077fb9 100644
--- a/src/assets/javascripts/helpers/twitter.js
+++ b/src/assets/javascripts/helpers/twitter.js
@@ -56,10 +56,11 @@ async function redirect(url, initiator) {
 
         if (
           initiator &&
-          [...r.twitterRedirects.nitter.normal,
-          ...r.twitterRedirects.nitter.tor,
-          ...r.nitterTorCustomRedirects,
-          ...r.nitterNormalCustomRedirects
+          [
+            ...r.twitterRedirects.nitter.normal,
+            ...r.twitterRedirects.nitter.tor,
+            ...r.nitterTorCustomRedirects,
+            ...r.nitterNormalCustomRedirects
           ].includes(initiator.origin)
         ) { resolve('BYPASSTAB'); return; }
 
@@ -228,61 +229,67 @@ function initNitterCookies(test, from) {
 }
 
 function setNitterCookies() {
-  browser.storage.local.get(
-    [
-      "twitterProtocol",
-      "disableTwitter",
-      "youtubeFrontend",
-      "nitterNormalRedirectsChecks",
-      "nitterNormalCustomRedirects",
-      "nitterTorRedirectsChecks",
-      "nitterTorCustomRedirects",
-    ],
-    r => {
-      if (r.disableYoutube || r.youtubeFrontend != 'nitter' || r.twitterProtocol === undefined) return;
-      let checkedInstances;
-      if (r.youtubeProtocol == 'normal') checkedInstances = [...r.nitterNormalRedirectsChecks, ...r.nitterNormalCustomRedirects]
-      else if (r.youtubeProtocol == 'tor') checkedInstances = [...r.nitterTorRedirectsChecks, ...r.nitterTorCustomRedirects]
-      for (const to of checkedInstances) {
-        utils.getCookiesFromStorage('nitter', to, 'theme');
-        utils.getCookiesFromStorage('nitter', to, 'infiniteScroll');
-        utils.getCookiesFromStorage('nitter', to, 'stickyProfile');
-        utils.getCookiesFromStorage('nitter', to, 'bidiSupport');
-        utils.getCookiesFromStorage('nitter', to, 'hideTweetStats');
-        utils.getCookiesFromStorage('nitter', to, 'hideBanner');
-        utils.getCookiesFromStorage('nitter', to, 'hidePins');
-        utils.getCookiesFromStorage('nitter', to, 'hideReplies');
-        utils.getCookiesFromStorage('nitter', to, 'squareAvatars');
-        utils.getCookiesFromStorage('nitter', to, 'mp4Playback');
-        utils.getCookiesFromStorage('nitter', to, 'hlsPlayback');
-        utils.getCookiesFromStorage('nitter', to, 'proxyVideos');
-        utils.getCookiesFromStorage('nitter', to, 'muteVideos');
-        utils.getCookiesFromStorage('nitter', to, 'autoplayGifs');
+  return new Promise(resolve => {
+    browser.storage.local.get(
+      [
+        "twitterProtocol",
+        "disableTwitter",
+        "youtubeFrontend",
+        "nitterNormalRedirectsChecks",
+        "nitterNormalCustomRedirects",
+        "nitterTorRedirectsChecks",
+        "nitterTorCustomRedirects",
+      ],
+      r => {
+        if (r.disableYoutube || r.youtubeFrontend != 'nitter' || r.twitterProtocol === undefined) { resolve(); return; }
+        let checkedInstances;
+        if (r.youtubeProtocol == 'normal') checkedInstances = [...r.nitterNormalRedirectsChecks, ...r.nitterNormalCustomRedirects]
+        else if (r.youtubeProtocol == 'tor') checkedInstances = [...r.nitterTorRedirectsChecks, ...r.nitterTorCustomRedirects]
+        for (const to of checkedInstances) {
+          utils.getCookiesFromStorage('nitter', to, 'theme');
+          utils.getCookiesFromStorage('nitter', to, 'infiniteScroll');
+          utils.getCookiesFromStorage('nitter', to, 'stickyProfile');
+          utils.getCookiesFromStorage('nitter', to, 'bidiSupport');
+          utils.getCookiesFromStorage('nitter', to, 'hideTweetStats');
+          utils.getCookiesFromStorage('nitter', to, 'hideBanner');
+          utils.getCookiesFromStorage('nitter', to, 'hidePins');
+          utils.getCookiesFromStorage('nitter', to, 'hideReplies');
+          utils.getCookiesFromStorage('nitter', to, 'squareAvatars');
+          utils.getCookiesFromStorage('nitter', to, 'mp4Playback');
+          utils.getCookiesFromStorage('nitter', to, 'hlsPlayback');
+          utils.getCookiesFromStorage('nitter', to, 'proxyVideos');
+          utils.getCookiesFromStorage('nitter', to, 'muteVideos');
+          utils.getCookiesFromStorage('nitter', to, 'autoplayGifs');
+        }
+        resolve();
       }
-    }
-  )
+    )
+  })
 }
 
 function initDefaults() {
-  fetch('/instances/data.json').then(response => response.text()).then(data => {
-    let dataJson = JSON.parse(data);
-    redirects.nitter = dataJson.nitter;
-    browser.storage.local.get('cloudflareList', r => {
-      nitterNormalRedirectsChecks = [...redirects.nitter.normal];
-      for (const instance of r.cloudflareList) {
-        let i = nitterNormalRedirectsChecks.indexOf(instance);
-        if (i > -1) nitterNormalRedirectsChecks.splice(i, 1);
-      }
-      browser.storage.local.set({
-        disableTwitter: false,
-        twitterRedirects: redirects,
-        twitterProtocol: "normal",
-
-        nitterNormalRedirectsChecks,
-        nitterNormalCustomRedirects: [],
-
-        nitterTorRedirectsChecks: [...redirects.nitter.tor],
-        nitterTorCustomRedirects: [],
+  return new Promise(resolve => {
+    fetch('/instances/data.json').then(response => response.text()).then(data => {
+      let dataJson = JSON.parse(data);
+      redirects.nitter = dataJson.nitter;
+      browser.storage.local.get('cloudflareList', async r => {
+        nitterNormalRedirectsChecks = [...redirects.nitter.normal];
+        for (const instance of r.cloudflareList) {
+          let i = nitterNormalRedirectsChecks.indexOf(instance);
+          if (i > -1) nitterNormalRedirectsChecks.splice(i, 1);
+        }
+        await browser.storage.local.set({
+          disableTwitter: false,
+          twitterRedirects: redirects,
+          twitterProtocol: "normal",
+
+          nitterNormalRedirectsChecks,
+          nitterNormalCustomRedirects: [],
+
+          nitterTorRedirectsChecks: [...redirects.nitter.tor],
+          nitterTorCustomRedirects: [],
+        })
+        resolve();
       })
     })
   })
diff --git a/src/assets/javascripts/helpers/utils.js b/src/assets/javascripts/helpers/utils.js
index 59fff19e..38c35364 100644
--- a/src/assets/javascripts/helpers/utils.js
+++ b/src/assets/javascripts/helpers/utils.js
@@ -28,60 +28,31 @@ async function initCloudflareList() {
   });
 }
 
-async function wholeInit() {
-  await sendTargetsHelper.init();
-  await tiktokHelper.init();
-  await initCloudflareList();
-}
-
-async function updateInstances() {
-  let http = new XMLHttpRequest();
-  http.open('GET', 'https://raw.githubusercontent.com/libredirect/libredirect/master/src/instances/data.json', false);
-  http.send(null);
-
-  if (http.status === 200) {
-    await wholeInit();
-    const instances = JSON.parse(http.responseText);
-
-    browser.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);
-
-    instagramHelper.setRedirects(instances.bibliogram);
-
-    redditHelper.setTedditRedirects(instances.teddit);
-    redditHelper.setLibredditRedirects(instances.libreddit);
-
-    translateHelper.setRedirects({ "simplyTranslate": instances.simplyTranslate, "lingva": instances.lingva });
-
-    searchHelper.setSearxRedirects(instances.searx);
-    searchHelper.setSearxngRedirects(instances.searxng);
-    searchHelper.setWhoogleRedirects(instances.whoogle);
-
-    wikipediaHelper.setRedirects(instances.wikiless);
-
-    mediumHelper.setRedirects(instances.scribe);
-
-    sendTargetsHelper.setRedirects(instances.send);
-
-    tiktokHelper.setRedirects(instances.proxiTok);
-
-    console.info("Successfully updated Instances");
-    return true;
-  }
-  return false;
+function updateInstances() {
+  return new Promise(async resolve => {
+    let http = new XMLHttpRequest();
+    http.open('GET', 'https://raw.githubusercontent.com/libredirect/libredirect/master/src/instances/data.json', false);
+    http.send(null);
+    if (http.status === 200) {
+      await initCloudflareList();
+      const instances = JSON.parse(http.responseText);
+
+      youtubeHelper.setRedirects({ 'invidious': instances.invidious, 'piped': instances.piped, })
+      twitterHelper.setRedirects(instances.nitter);
+      instagramHelper.setRedirects(instances.bibliogram);
+      redditHelper.setRedirects({ 'libreddit': instances.libreddit, 'teddit': instances.teddit });
+      translateHelper.setRedirects({ "simplyTranslate": instances.simplyTranslate, "lingva": instances.lingva });
+      searchHelper.setRedirects({ 'searx': instances.searx, 'searxng': instances.searxng, 'whoogle': instances.whoogle });
+      wikipediaHelper.setRedirects(instances.wikiless);
+      mediumHelper.setRedirects(instances.scribe);
+      sendTargetsHelper.setRedirects(instances.send);
+      tiktokHelper.setRedirects(instances.proxiTok);
+
+      console.info("Successfully updated Instances");
+      resolve(true); return;
+    }
+    resolve()
+  })
 }
 
 function protocolHost(url) {
@@ -436,8 +407,6 @@ function switchInstance(test) {
         if (!newUrl) newUrl = await imgurHelper.switchInstance(url);
         if (!newUrl) newUrl = await wikipediaHelper.switchInstance(url);
 
-        console.log('newUrl', newUrl);
-        console.log('test');
         if (newUrl) {
           if (!test)
             browser.tabs.update({ url: newUrl });
@@ -446,7 +415,6 @@ function switchInstance(test) {
       }
     })
   })
-  return false;
 }
 
 function latency(name, frontend, document, location, splitNames) {
diff --git a/src/assets/javascripts/helpers/wikipedia.js b/src/assets/javascripts/helpers/wikipedia.js
index 81324221..fa6fd8fc 100644
--- a/src/assets/javascripts/helpers/wikipedia.js
+++ b/src/assets/javascripts/helpers/wikipedia.js
@@ -12,35 +12,21 @@ let redirects = {
   }
 };
 function setRedirects(val) {
-  redirects.wikiless = val;
-  browser.storage.local.set({ wikipediaRedirects: redirects })
-  console.log("wikipediaRedirects: ", val)
-  for (const item of wikilessNormalRedirectsChecks)
-    if (!redirects.wikiless.normal.includes(item)) {
-      var index = wikilessNormalRedirectsChecks.indexOf(item);
-      if (index !== -1) wikilessNormalRedirectsChecks.splice(index, 1);
+  browser.storage.local.get('cloudflareList', r => {
+    redirects.wikiless = val;
+    wikilessNormalRedirectsChecks = [...redirects.wikiless.normal];
+    for (const instance of r.cloudflareList) {
+      const a = wikilessNormalRedirectsChecks.indexOf(instance);
+      if (a > -1) wikilessNormalRedirectsChecks.splice(a, 1);
     }
-  browser.storage.local.set({ wikilessNormalRedirectsChecks })
-
-  for (const item of wikilessTorRedirectsChecks)
-    if (!redirects.wikiless.tor.includes(item)) {
-      var index = wikilessTorRedirectsChecks.indexOf(item);
-      if (index !== -1) wikilessTorRedirectsChecks.splice(index, 1);
-    }
-  browser.storage.local.set({ wikilessTorRedirectsChecks })
-
-  for (const item of wikilessI2pRedirectsChecks)
-    if (!redirects.wikiless.i2p.includes(item)) {
-      var index = wikilessI2pRedirectsChecks.indexOf(item);
-      if (index !== -1) wikilessI2pRedirectsChecks.splice(index, 1);
-    }
-  browser.storage.local.set({ wikilessI2pRedirectsChecks })
+    browser.storage.local.set({
+      wikipediaRedirects: redirects,
+      wikilessNormalRedirectsChecks
+    })
+  })
 }
 
-let
-  wikilessNormalRedirectsChecks,
-  wikilessTorRedirectsChecks,
-  wikilessI2pRedirectsChecks;
+let wikilessNormalRedirectsChecks;
 
 function initWikilessCookies(test, from) {
   return new Promise(resolve => {
@@ -83,26 +69,29 @@ function initWikilessCookies(test, from) {
 }
 
 function setWikilessCookies() {
-  browser.storage.local.get(
-    [
-      "disableWikipedia",
-      "wikipediaProtocol",
-      "wikilessNormalRedirectsChecks",
-      "wikilessNormalCustomRedirects",
-      "wikilessTorRedirectsChecks",
-      "wikilessTorCustomRedirects",
-    ],
-    r => {
-      if (r.disableWikipedia || r.wikipediaProtocol === undefined) return;
-      let checkedInstances;
-      if (r.wikipediaProtocol == 'normal') checkedInstances = [...r.wikilessNormalRedirectsChecks, ...r.wikilessNormalCustomRedirects]
-      else if (r.wikipediaProtocol == 'tor') checkedInstances = [...r.wikilessTorRedirectsChecks, ...r.wikilessTorCustomRedirects]
-      for (const to of checkedInstances) {
-        utils.getCookiesFromStorage('wikiless', to, 'theme');
-        utils.getCookiesFromStorage('wikiless', to, 'default_lang');
+  return new Promise(resolve => {
+    browser.storage.local.get(
+      [
+        "disableWikipedia",
+        "wikipediaProtocol",
+        "wikilessNormalRedirectsChecks",
+        "wikilessNormalCustomRedirects",
+        "wikilessTorRedirectsChecks",
+        "wikilessTorCustomRedirects",
+      ],
+      r => {
+        if (r.disableWikipedia || r.wikipediaProtocol === undefined) { resolve(); return; }
+        let checkedInstances;
+        if (r.wikipediaProtocol == 'normal') checkedInstances = [...r.wikilessNormalRedirectsChecks, ...r.wikilessNormalCustomRedirects]
+        else if (r.wikipediaProtocol == 'tor') checkedInstances = [...r.wikilessTorRedirectsChecks, ...r.wikilessTorCustomRedirects]
+        for (const to of checkedInstances) {
+          utils.getCookiesFromStorage('wikiless', to, 'theme');
+          utils.getCookiesFromStorage('wikiless', to, 'default_lang');
+        }
+        resolve();
       }
-    }
-  )
+    )
+  })
 }
 
 function redirect(url) {
@@ -206,26 +195,29 @@ function switchInstance(url) {
   })
 }
 
-async function initDefaults() {
-  fetch('/instances/data.json').then(response => response.text()).then(async data => {
-    let dataJson = JSON.parse(data);
-    redirects.wikiless = dataJson.wikiless;
-    browser.storage.local.get('cloudflareList', async r => {
-      wikilessNormalRedirectsChecks = [...redirects.wikiless.normal];
-      for (const instance of r.cloudflareList) {
-        let i = wikilessNormalRedirectsChecks.indexOf(instance);
-        if (i > -1) wikilessNormalRedirectsChecks.splice(i, 1);
-      }
-      await browser.storage.local.set({
-        disableWikipedia: true,
-        wikipediaRedirects: redirects,
-        wikipediaProtocol: "normal",
-        wikilessNormalRedirectsChecks: wikilessNormalRedirectsChecks,
-        wikilessTorRedirectsChecks: [...redirects.wikiless.tor],
-        wikilessI2pRedirectsChecks: [...redirects.wikiless.i2p],
-        wikilessNormalCustomRedirects: [],
-        wikilessTorCustomRedirects: [],
-        wikilessI2pCustomRedirects: [],
+function initDefaults() {
+  return new Promise(resolve => {
+    fetch('/instances/data.json').then(response => response.text()).then(async data => {
+      let dataJson = JSON.parse(data);
+      redirects.wikiless = dataJson.wikiless;
+      browser.storage.local.get('cloudflareList', async r => {
+        wikilessNormalRedirectsChecks = [...redirects.wikiless.normal];
+        for (const instance of r.cloudflareList) {
+          let i = wikilessNormalRedirectsChecks.indexOf(instance);
+          if (i > -1) wikilessNormalRedirectsChecks.splice(i, 1);
+        }
+        await browser.storage.local.set({
+          disableWikipedia: true,
+          wikipediaRedirects: redirects,
+          wikipediaProtocol: "normal",
+          wikilessNormalRedirectsChecks: wikilessNormalRedirectsChecks,
+          wikilessTorRedirectsChecks: [...redirects.wikiless.tor],
+          wikilessI2pRedirectsChecks: [...redirects.wikiless.i2p],
+          wikilessNormalCustomRedirects: [],
+          wikilessTorCustomRedirects: [],
+          wikilessI2pCustomRedirects: [],
+        })
+        resolve();
       })
     })
   })
diff --git a/src/assets/javascripts/helpers/youtube/youtube.js b/src/assets/javascripts/helpers/youtube/youtube.js
index dce03680..060d149f 100644
--- a/src/assets/javascripts/helpers/youtube/youtube.js
+++ b/src/assets/javascripts/helpers/youtube/youtube.js
@@ -396,25 +396,28 @@ function initInvidiousCookies(test, from) {
 }
 
 function setInvidiousCookies() {
-  browser.storage.local.get(
-    [
-      "disableYoutube",
-      "youtubeProtocol",
-      "youtubeFrontend",
-      "invidiousNormalRedirectsChecks",
-      "invidiousNormalCustomRedirects",
-      "invidiousTorRedirectsChecks",
-      "invidiousTorCustomRedirects",
-    ],
-    r => {
-      if (r.disableYoutube || r.youtubeFrontend != 'invidious' || r.youtubeProtocol === undefined) return;
-      let checkedInstances;
-      if (r.youtubeProtocol == 'normal') checkedInstances = [...r.invidiousNormalRedirectsChecks, ...r.invidiousNormalCustomRedirects]
-      else if (r.youtubeProtocol == 'tor') checkedInstances = [...r.invidiousTorRedirectsChecks, ...r.invidiousTorCustomRedirects]
-      for (const to of checkedInstances)
-        utils.getCookiesFromStorage('invidious', to, 'PREFS');
-    }
-  )
+  return new Promise(resolve => {
+    browser.storage.local.get(
+      [
+        "disableYoutube",
+        "youtubeProtocol",
+        "youtubeFrontend",
+        "invidiousNormalRedirectsChecks",
+        "invidiousNormalCustomRedirects",
+        "invidiousTorRedirectsChecks",
+        "invidiousTorCustomRedirects",
+      ],
+      r => {
+        if (r.disableYoutube || r.youtubeFrontend != 'invidious' || r.youtubeProtocol === undefined) { resolve(); return; }
+        let checkedInstances;
+        if (r.youtubeProtocol == 'normal') checkedInstances = [...r.invidiousNormalRedirectsChecks, ...r.invidiousNormalCustomRedirects]
+        else if (r.youtubeProtocol == 'tor') checkedInstances = [...r.invidiousTorRedirectsChecks, ...r.invidiousTorCustomRedirects]
+        for (const to of checkedInstances)
+          utils.getCookiesFromStorage('invidious', to, 'PREFS');
+        resolve();
+      }
+    )
+  })
 }
 
 function initPipedLocalStorage(test, url, tabId) {
diff --git a/src/instances/get_instances.py b/src/instances/get_instances.py
index facbca61..b47433ba 100644
--- a/src/instances/get_instances.py
+++ b/src/instances/get_instances.py
@@ -349,7 +349,7 @@ def peertube():
         myList.append('https://'+k['host'])
 
     mightyList['peertube'] = myList
-    print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'Peertube')
+    print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'PeerTube')
 
 
 def isValid(url):  # This code is contributed by avanitrachhadiya2155
diff --git a/src/manifest.json b/src/manifest.json
index 51012112..c0d5621d 100644
--- a/src/manifest.json
+++ b/src/manifest.json
@@ -49,7 +49,7 @@
       "name": "__MSG_extensionName__",
       "keyword": "libredirect",
       "favicon_url": "https://raw.githubusercontent.com/libredirect/libredirect/master/src/assets/images/libredirect-16.png",
-      "search_url": "https://libredirect.invalid/?q={searchTerms}",
+      "search_url": "https://search.libredirect.invalid/?q={searchTerms}",
       "encoding": "UTF-8",
       "is_default": false
     }
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index d8f0bb3f..9eedc308 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -1,6 +1,8 @@
 "use strict";
 
 import generalHelper from "../../assets/javascripts/helpers/general.js";
+import utils from "../../assets/javascripts/helpers/utils.js";
+
 import youtubeHelper from "../../assets/javascripts/helpers/youtube/youtube.js";
 import youtubeMusicHelper from "../../assets/javascripts/helpers/youtubeMusic.js";
 import twitterHelper from "../../assets/javascripts/helpers/twitter.js";
@@ -16,7 +18,7 @@ import tiktokHelper from "../../assets/javascripts/helpers/tiktok.js";
 import sendTargetsHelper from "../../assets/javascripts/helpers/sendTargets.js";
 import peertubeHelper from "../../assets/javascripts/helpers/peertube.js";
 import lbryHelper from "../../assets/javascripts/helpers/lbry.js";
-import utils from "../../assets/javascripts/helpers/utils.js";
+
 
 window.browser = window.browser || window.chrome;
 
@@ -35,6 +37,7 @@ browser.runtime.onInstalled.addListener(
     if (details.reason == 'install') {
       fetch('/instances/blocklist.json').then(response => response.text()).then(async data => {
         await browser.storage.local.set({ cloudflareList: JSON.parse(data) })
+        generalHelper.initDefaults();
         youtubeHelper.initDefaults();
         youtubeMusicHelper.initDefaults();
         twitterHelper.initDefaults();
@@ -56,10 +59,6 @@ browser.runtime.onInstalled.addListener(
 )
 
 async function wholeInit() {
-  await mapsHelper.init();
-  await sendTargetsHelper.init();
-  await peertubeHelper.init();
-  await generalHelper.init();
 }
 
 let incognitoInit = false;
@@ -104,10 +103,10 @@ browser.webRequest.onBeforeRequest.addListener(
 
     if (
       details.frameAncestors && details.frameAncestors.length > 0 &&
-      generalHelper.isException(new URL(details.frameAncestors[0].url))
+      await generalHelper.isException(new URL(details.frameAncestors[0].url))
     ) newUrl = null;
 
-    if (generalHelper.isException(url)) newUrl = 'BYPASSTAB';
+    if (await generalHelper.isException(url)) newUrl = 'BYPASSTAB';
 
     if (BYPASSTABs.includes(details.tabId)) newUrl = null;
 
@@ -117,7 +116,7 @@ browser.webRequest.onBeforeRequest.addListener(
         return { cancel: true };
       }
       else if (newUrl === 'BYPASSTAB') {
-        console.log(`Bybassed ${details.tabId} ${url}`);
+        console.log(`Bypassed ${details.tabId} ${url}`);
         if (!BYPASSTABs.includes(details.tabId)) BYPASSTABs.push(details.tabId);
         return null;
       }
@@ -180,9 +179,21 @@ async function redirectOfflineInstance(url, tabId) {
   }
 }
 let counter = 0;
+
+function isAutoRedirect() {
+  return new Promise(resolve => {
+    browser.storage.local.get('autoRedirect',
+      r => {
+        if (r.autoRedirect == true) resolve(true)
+        else resolve(false)
+      }
+    )
+  })
+}
+
 browser.webRequest.onResponseStarted.addListener(
-  details => {
-    if (!generalHelper.getAutoRedirect()) return null;
+  async details => {
+    if (!await isAutoRedirect()) return null;
 
     if (details.type == 'main_frame' && (details.statusCode == 502 || details.statusCode == 503 || details.statusCode == 504)) {
       // if (details.type == 'main_frame' && details.statusCode >= 200) {
@@ -195,8 +206,8 @@ browser.webRequest.onResponseStarted.addListener(
 )
 
 browser.webRequest.onErrorOccurred.addListener(
-  details => {
-    if (!generalHelper.getAutoRedirect()) return;
+  async details => {
+    if (!await isAutoRedirect()) return;
     if (details.type == 'main_frame') {
       const url = new URL(details.url);
       redirectOfflineInstance(url, details.tabId);
diff --git a/src/pages/background/incognito.html b/src/pages/background/incognito.html
index 57d0bfdb..a618cdb6 100644
--- a/src/pages/background/incognito.html
+++ b/src/pages/background/incognito.html
@@ -3,7 +3,35 @@
 
 <head>
     <meta charset="utf-8" />
-    <script type="module" src="incognito.js"></script>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1" />
+    <title data-localise="__MSG_instanceIsOff__">Initializing Cookies</title>
+    <link href="../stylesheets/styles.css" rel="stylesheet" />
+    <style>
+        body {
+            margin: 0;
+            padding: 0;
+            height: 100vh;
+            width: 100vw;
+            flex-wrap: wrap;
+            justify-content: center;
+            align-items: center;
+            font-size: 30px;
+            display: flex;
+        }
+
+        div {
+            text-align: center;
+        }
+    </style>
 </head>
 
+<body>
+    <div>
+        <p>Initializing Cookies</p>
+    </div>
+    <script type="module" src="incognito.js"></script>
+</body>
+
 </html>
\ No newline at end of file
diff --git a/src/pages/background/incognito.js b/src/pages/background/incognito.js
index 16eccf74..600591d3 100644
--- a/src/pages/background/incognito.js
+++ b/src/pages/background/incognito.js
@@ -1,30 +1,21 @@
-"use strict";
-
 import youtubeHelper from "../../assets/javascripts/helpers/youtube/youtube.js";
 import twitterHelper from "../../assets/javascripts/helpers/twitter.js";
-import instagramHelper from "../../assets/javascripts/helpers/instagram.js";
 import redditHelper from "../../assets/javascripts/helpers/reddit.js";
 import searchHelper from "../../assets/javascripts/helpers/search.js";
 import translateHelper from "../../assets/javascripts/helpers/translate/translate.js";
-import mapsHelper from "../../assets/javascripts/helpers/maps.js";
 import wikipediaHelper from "../../assets/javascripts/helpers/wikipedia.js";
-import mediumHelper from "../../assets/javascripts/helpers/medium.js";
-import imgurHelper from "../../assets/javascripts/helpers/imgur.js";
 import tiktokHelper from "../../assets/javascripts/helpers/tiktok.js";
-import sendTargetsHelper from "../../assets/javascripts/helpers/sendTargets.js";
-import peertubeHelper from "../../assets/javascripts/helpers/peertube.js";
-import lbryHelper from "../../assets/javascripts/helpers/lbry.js";
-import generalHelper from "../../assets/javascripts/helpers/general.js";
-import youtubeMusicHelper from "../../assets/javascripts/helpers/youtubeMusic.js";
 
 window.browser = window.browser || window.chrome;
 
-async function wholeInit() {
-  await youtubeMusicHelper.init();
-  await mapsHelper.init();
-  await sendTargetsHelper.init();
-  await peertubeHelper.init();
-  await generalHelper.init();
-}
-await wholeInit();
+await youtubeHelper.setInvidiousCookies();
+await translateHelper.setSimplyTranslateCookies();
+await twitterHelper.setNitterCookies();
+await wikipediaHelper.setWikilessCookies();
+await searchHelper.setSearxCookies();
+await searchHelper.setSearxngCookies();
+await redditHelper.setLibredditCookies();
+await redditHelper.setTedditCookies();
+await tiktokHelper.setProxiTokCookies();
+
 window.close()
\ No newline at end of file
diff --git a/src/pages/options/general/general.html b/src/pages/options/general/general.html
index cb0c11ff..8239f7c8 100644
--- a/src/pages/options/general/general.html
+++ b/src/pages/options/general/general.html
@@ -30,7 +30,7 @@
             <ellipse cx="1682" cy="502" rx="88" ry="424"></ellipse>
           </svg><a href="../medium/medium.html" data-localise="__MSG_medium__">Medium</a>
       </div>
-      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">Peertube</a></div>
+      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">PeerTube</a></div>
       <div class="title"> <img src="../../../assets/images/lbry-icon.png"><a href="../lbry/lbry.html" data-localise="__MSG_lbry__">LBRY/Odysee</a></div>
       <div class="title"> 
           <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
@@ -180,7 +180,7 @@
         <input id="medium" type="checkbox">
       </div>
       <div> 
-        <div> <img src="../../../assets/images/peertube-icon.svg">Peertube</div>
+        <div> <img src="../../../assets/images/peertube-icon.svg">PeerTube</div>
         <input id="peertube" type="checkbox">
       </div>
       <div> 
diff --git a/src/pages/options/general/general.js b/src/pages/options/general/general.js
index c8a600ce..f2690209 100644
--- a/src/pages/options/general/general.js
+++ b/src/pages/options/general/general.js
@@ -4,7 +4,21 @@ window.browser = window.browser || window.chrome;
 import utils from "../../../assets/javascripts/helpers/utils.js";
 import generalHelper from "../../../assets/javascripts/helpers/general.js";
 
-
+import youtubeHelper from "../../../assets/javascripts/helpers/youtube/youtube.js";
+import youtubeMusicHelper from "../../../assets/javascripts/helpers/youtubeMusic.js";
+import twitterHelper from "../../../assets/javascripts/helpers/twitter.js";
+import instagramHelper from "../../../assets/javascripts/helpers/instagram.js";
+import redditHelper from "../../../assets/javascripts/helpers/reddit.js";
+import searchHelper from "../../../assets/javascripts/helpers/search.js";
+import translateHelper from "../../../assets/javascripts/helpers/translate/translate.js";
+import mapsHelper from "../../../assets/javascripts/helpers/maps.js";
+import wikipediaHelper from "../../../assets/javascripts/helpers/wikipedia.js";
+import mediumHelper from "../../../assets/javascripts/helpers/medium.js";
+import imgurHelper from "../../../assets/javascripts/helpers/imgur.js";
+import tiktokHelper from "../../../assets/javascripts/helpers/tiktok.js";
+import sendTargetsHelper from "../../../assets/javascripts/helpers/sendTargets.js";
+import peertubeHelper from "../../../assets/javascripts/helpers/peertube.js";
+import lbryHelper from "../../../assets/javascripts/helpers/lbry.js";
 
 let updateInstancesElement = document.getElementById("update-instances");
 updateInstancesElement.addEventListener("click", () => {
@@ -68,21 +82,41 @@ function importError() {
 
 let resetSettingsElement = document.getElementById("reset-settings");
 resetSettingsElement.addEventListener("click",
-  () => {
+  async () => {
     console.log("reset");
-    browser.storage.local.clear();
-    location.reload();
+    await browser.storage.local.clear();
+    fetch('/instances/blocklist.json').then(response => response.text()).then(async data => {
+      await browser.storage.local.set({ cloudflareList: JSON.parse(data) })
+      await generalHelper.initDefaults();
+      await youtubeHelper.initDefaults();
+      await youtubeMusicHelper.initDefaults();
+      await twitterHelper.initDefaults();
+      await instagramHelper.initDefaults();
+      await mapsHelper.initDefaults();
+      await searchHelper.initDefaults();
+      await translateHelper.initDefaults();
+      await mediumHelper.initDefaults();
+      await redditHelper.initDefaults();
+      await wikipediaHelper.initDefaults();
+      await imgurHelper.initDefaults();
+      await tiktokHelper.initDefaults();
+      await sendTargetsHelper.initDefaults();
+      await peertubeHelper.initDefaults();
+      await lbryHelper.initDefaults();
+      location.reload();
+    })
   }
 );
 
 let autoRedirectElement = document.getElementById("auto-redirect")
 autoRedirectElement.addEventListener("change",
-  event => generalHelper.setAutoRedirect(event.target.checked)
+  event => browser.storage.local.set({ autoRedirect: event.target.checked })
 );
+
 let themeElement = document.getElementById("theme");
 themeElement.addEventListener("change", event => {
   const value = event.target.options[theme.selectedIndex].value;
-  generalHelper.setTheme(value);
+  browser.storage.local.set({ theme: value });
 })
 
 let nameCustomInstanceInput = document.getElementById("exceptions-custom-instance");
@@ -99,84 +133,94 @@ for (const frontend of generalHelper.allPopupFrontends)
         var index = popupFrontends.indexOf(frontend);
         if (index !== -1) popupFrontends.splice(index, 1);
       }
-      generalHelper.setPopupFrontends(popupFrontends);
+      browser.storage.local.set({ popupFrontends })
     }
   )
 
-generalHelper.init().then(() => {
-  autoRedirectElement.checked = generalHelper.getAutoRedirect();
-  themeElement.value = generalHelper.getTheme();
-  instanceTypeElement.addEventListener("change",
-    event => {
-      instanceType = event.target.options[instanceTypeElement.selectedIndex].value
-      if (instanceType == 'url') {
-        nameCustomInstanceInput.setAttribute("type", "url");
-        nameCustomInstanceInput.setAttribute("placeholder", "https://www.google.com");
-      }
-      else if (instanceType == 'regex') {
-        nameCustomInstanceInput.setAttribute("type", "text");
-        nameCustomInstanceInput.setAttribute("placeholder", "https?:\/\/(www\.|)youtube\.com\/");
+
+browser.storage.local.get(
+  [
+    'theme',
+    'autoRedirect',
+    'exceptions'
+  ],
+  r => {
+    autoRedirectElement.checked = r.autoRedirect;
+    themeElement.value = r.theme;
+    instanceTypeElement.addEventListener("change",
+      event => {
+        instanceType = event.target.options[instanceTypeElement.selectedIndex].value
+        if (instanceType == 'url') {
+          nameCustomInstanceInput.setAttribute("type", "url");
+          nameCustomInstanceInput.setAttribute("placeholder", "https://www.google.com");
+        }
+        else if (instanceType == 'regex') {
+          nameCustomInstanceInput.setAttribute("type", "text");
+          nameCustomInstanceInput.setAttribute("placeholder", "https?:\/\/(www\.|)youtube\.com\/");
+        }
       }
-    }
-  )
-  let exceptionsCustomInstances = generalHelper.getExceptions();
-  function calcExceptionsCustomInstances() {
-    document.getElementById("exceptions-custom-checklist").innerHTML =
-      [...exceptionsCustomInstances.url, ...exceptionsCustomInstances.regex].map(
-        (x) => `<div>
-                  ${x}
-                  <button class="add" id="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 x of [...exceptionsCustomInstances.url, ...exceptionsCustomInstances.regex]) {
-      document.getElementById(`clear-${x}`).addEventListener("click",
-        () => {
-          console.log(x);
-          let index;
-          index = exceptionsCustomInstances.url.indexOf(x);
-          if (index > -1)
-            exceptionsCustomInstances.url.splice(index, 1);
-          else {
-            index = exceptionsCustomInstances.regex.indexOf(x);
+    )
+    let exceptionsCustomInstances = r.exceptions;
+    function calcExceptionsCustomInstances() {
+      document.getElementById("exceptions-custom-checklist").innerHTML =
+        [...exceptionsCustomInstances.url, ...exceptionsCustomInstances.regex].map(
+          (x) => `<div>
+                      ${x}
+                      <button class="add" id="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 x of [...exceptionsCustomInstances.url, ...exceptionsCustomInstances.regex]) {
+        document.getElementById(`clear-${x}`).addEventListener("click",
+          () => {
+            console.log(x);
+            let index;
+            index = exceptionsCustomInstances.url.indexOf(x);
             if (index > -1)
-              exceptionsCustomInstances.regex.splice(index, 1);
-          }
-          generalHelper.setExceptions(exceptionsCustomInstances);
-          calcExceptionsCustomInstances();
-        });
-    }
-  }
-  calcExceptionsCustomInstances();
-  document.getElementById("custom-exceptions-instance-form").addEventListener("submit", (event) => {
-    event.preventDefault();
-
-    let val
-    if (instanceType == 'url') {
-      if (nameCustomInstanceInput.validity.valid) {
-        let url = new URL(nameCustomInstanceInput.value);
-        val = `${url.protocol}//${url.host}`
-        if (!exceptionsCustomInstances.url.includes(val)) exceptionsCustomInstances.url.push(val)
+              exceptionsCustomInstances.url.splice(index, 1);
+            else {
+              index = exceptionsCustomInstances.regex.indexOf(x);
+              if (index > -1)
+                exceptionsCustomInstances.regex.splice(index, 1);
+            }
+            browser.storage.local.set({ exceptions: exceptionsCustomInstances })
+            calcExceptionsCustomInstances();
+          });
       }
-    } else if (instanceType == 'regex') {
-      val = nameCustomInstanceInput.value
-      if (val.trim() != '' && !exceptionsCustomInstances.regex.includes(val)) exceptionsCustomInstances.regex.push(val)
-    }
-    if (val) {
-      generalHelper.setExceptions(exceptionsCustomInstances);
-      console.log("exceptionsCustomInstances", exceptionsCustomInstances)
-      nameCustomInstanceInput.value = '';
     }
     calcExceptionsCustomInstances();
-  })
+    document.getElementById("custom-exceptions-instance-form").addEventListener("submit", (event) => {
+      event.preventDefault();
 
-  popupFrontends = generalHelper.getPopupFrontends();
-  for (const frontend of generalHelper.allPopupFrontends)
-    document.getElementById(frontend).checked = popupFrontends.includes(frontend);
-})
\ No newline at end of file
+      let val
+      if (instanceType == 'url') {
+        if (nameCustomInstanceInput.validity.valid) {
+          let url = new URL(nameCustomInstanceInput.value);
+          val = `${url.protocol}//${url.host}`
+          if (!exceptionsCustomInstances.url.includes(val)) exceptionsCustomInstances.url.push(val)
+        }
+      } else if (instanceType == 'regex') {
+        val = nameCustomInstanceInput.value
+        if (val.trim() != '' && !exceptionsCustomInstances.regex.includes(val)) exceptionsCustomInstances.regex.push(val)
+      }
+      if (val) {
+        browser.storage.local.set({ exceptions: exceptionsCustomInstances })
+        nameCustomInstanceInput.value = '';
+      }
+      calcExceptionsCustomInstances();
+    })
+
+    browser.storage.local.get('popupFrontends',
+      r => {
+        popupFrontends = r.popupFrontends;
+        for (const frontend of generalHelper.allPopupFrontends)
+          document.getElementById(frontend).checked = popupFrontends.includes(frontend);
+      }
+    )
+  })
diff --git a/src/pages/options/general/general.pug b/src/pages/options/general/general.pug
index 6a3b1370..0cef8025 100644
--- a/src/pages/options/general/general.pug
+++ b/src/pages/options/general/general.pug
@@ -151,7 +151,7 @@ body.option(dir="auto")
             div 
                 div 
                     img(src="../../../assets/images/peertube-icon.svg")
-                    |Peertube
+                    |PeerTube
                 input#peertube(type="checkbox")
 
             div 
diff --git a/src/pages/options/imgur/imgur.html b/src/pages/options/imgur/imgur.html
index d537acff..6194fbb3 100644
--- a/src/pages/options/imgur/imgur.html
+++ b/src/pages/options/imgur/imgur.html
@@ -31,7 +31,7 @@
             <ellipse cx="1682" cy="502" rx="88" ry="424"></ellipse>
           </svg><a href="../medium/medium.html" data-localise="__MSG_medium__">Medium</a>
       </div>
-      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">Peertube</a></div>
+      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">PeerTube</a></div>
       <div class="title"> <img src="../../../assets/images/lbry-icon.png"><a href="../lbry/lbry.html" data-localise="__MSG_lbry__">LBRY/Odysee</a></div>
       <div class="title"> 
           <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
diff --git a/src/pages/options/instagram/instagram.html b/src/pages/options/instagram/instagram.html
index b03040b7..dfb58722 100644
--- a/src/pages/options/instagram/instagram.html
+++ b/src/pages/options/instagram/instagram.html
@@ -31,7 +31,7 @@
             <ellipse cx="1682" cy="502" rx="88" ry="424"></ellipse>
           </svg><a href="../medium/medium.html" data-localise="__MSG_medium__">Medium</a>
       </div>
-      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">Peertube</a></div>
+      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">PeerTube</a></div>
       <div class="title"> <img src="../../../assets/images/lbry-icon.png"><a href="../lbry/lbry.html" data-localise="__MSG_lbry__">LBRY/Odysee</a></div>
       <div class="title"> 
           <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
diff --git a/src/pages/options/lbry/lbry.html b/src/pages/options/lbry/lbry.html
index 4e3c1316..3802a149 100644
--- a/src/pages/options/lbry/lbry.html
+++ b/src/pages/options/lbry/lbry.html
@@ -31,7 +31,7 @@
             <ellipse cx="1682" cy="502" rx="88" ry="424"></ellipse>
           </svg><a href="../medium/medium.html" data-localise="__MSG_medium__">Medium</a>
       </div>
-      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">Peertube</a></div>
+      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">PeerTube</a></div>
       <div class="title"> <img src="../../../assets/images/lbry-icon.png"><a class="selected" href="../lbry/lbry.html" data-localise="__MSG_lbry__">LBRY/Odysee</a></div>
       <div class="title"> 
           <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
diff --git a/src/pages/options/maps/maps.html b/src/pages/options/maps/maps.html
index d7961b31..af7d0729 100644
--- a/src/pages/options/maps/maps.html
+++ b/src/pages/options/maps/maps.html
@@ -31,7 +31,7 @@
             <ellipse cx="1682" cy="502" rx="88" ry="424"></ellipse>
           </svg><a href="../medium/medium.html" data-localise="__MSG_medium__">Medium</a>
       </div>
-      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">Peertube</a></div>
+      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">PeerTube</a></div>
       <div class="title"> <img src="../../../assets/images/lbry-icon.png"><a href="../lbry/lbry.html" data-localise="__MSG_lbry__">LBRY/Odysee</a></div>
       <div class="title"> 
           <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
diff --git a/src/pages/options/medium/medium.html b/src/pages/options/medium/medium.html
index 136081d7..87aff725 100644
--- a/src/pages/options/medium/medium.html
+++ b/src/pages/options/medium/medium.html
@@ -31,7 +31,7 @@
             <ellipse cx="1682" cy="502" rx="88" ry="424"></ellipse>
           </svg><a class="selected" href="../medium/medium.html" data-localise="__MSG_medium__">Medium</a>
       </div>
-      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">Peertube</a></div>
+      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">PeerTube</a></div>
       <div class="title"> <img src="../../../assets/images/lbry-icon.png"><a href="../lbry/lbry.html" data-localise="__MSG_lbry__">LBRY/Odysee</a></div>
       <div class="title"> 
           <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
diff --git a/src/pages/options/peertube/peertube.html b/src/pages/options/peertube/peertube.html
index d5ded94c..1ddc26ac 100644
--- a/src/pages/options/peertube/peertube.html
+++ b/src/pages/options/peertube/peertube.html
@@ -31,7 +31,7 @@
             <ellipse cx="1682" cy="502" rx="88" ry="424"></ellipse>
           </svg><a href="../medium/medium.html" data-localise="__MSG_medium__">Medium</a>
       </div>
-      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a class="selected" href="../peertube/peertube.html" data-localise="__MSG_peertube__">Peertube</a></div>
+      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a class="selected" href="../peertube/peertube.html" data-localise="__MSG_peertube__">PeerTube</a></div>
       <div class="title"> <img src="../../../assets/images/lbry-icon.png"><a href="../lbry/lbry.html" data-localise="__MSG_lbry__">LBRY/Odysee</a></div>
       <div class="title"> 
           <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
diff --git a/src/pages/options/reddit/reddit.html b/src/pages/options/reddit/reddit.html
index 876369f9..754314eb 100644
--- a/src/pages/options/reddit/reddit.html
+++ b/src/pages/options/reddit/reddit.html
@@ -31,7 +31,7 @@
             <ellipse cx="1682" cy="502" rx="88" ry="424"></ellipse>
           </svg><a href="../medium/medium.html" data-localise="__MSG_medium__">Medium</a>
       </div>
-      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">Peertube</a></div>
+      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">PeerTube</a></div>
       <div class="title"> <img src="../../../assets/images/lbry-icon.png"><a href="../lbry/lbry.html" data-localise="__MSG_lbry__">LBRY/Odysee</a></div>
       <div class="title"> 
           <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
diff --git a/src/pages/options/search/search.html b/src/pages/options/search/search.html
index 46914d19..8b22e43a 100644
--- a/src/pages/options/search/search.html
+++ b/src/pages/options/search/search.html
@@ -31,7 +31,7 @@
             <ellipse cx="1682" cy="502" rx="88" ry="424"></ellipse>
           </svg><a href="../medium/medium.html" data-localise="__MSG_medium__">Medium</a>
       </div>
-      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">Peertube</a></div>
+      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">PeerTube</a></div>
       <div class="title"> <img src="../../../assets/images/lbry-icon.png"><a href="../lbry/lbry.html" data-localise="__MSG_lbry__">LBRY/Odysee</a></div>
       <div class="title"> 
           <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
diff --git a/src/pages/options/sendTargets/sendTargets.html b/src/pages/options/sendTargets/sendTargets.html
index 7a684175..f372b3b0 100644
--- a/src/pages/options/sendTargets/sendTargets.html
+++ b/src/pages/options/sendTargets/sendTargets.html
@@ -31,7 +31,7 @@
             <ellipse cx="1682" cy="502" rx="88" ry="424"></ellipse>
           </svg><a href="../medium/medium.html" data-localise="__MSG_medium__">Medium</a>
       </div>
-      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">Peertube</a></div>
+      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">PeerTube</a></div>
       <div class="title"> <img src="../../../assets/images/lbry-icon.png"><a href="../lbry/lbry.html" data-localise="__MSG_lbry__">LBRY/Odysee</a></div>
       <div class="title"> 
           <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
diff --git a/src/pages/options/tiktok/tiktok.html b/src/pages/options/tiktok/tiktok.html
index 9b5932fc..89a14ba6 100644
--- a/src/pages/options/tiktok/tiktok.html
+++ b/src/pages/options/tiktok/tiktok.html
@@ -31,7 +31,7 @@
             <ellipse cx="1682" cy="502" rx="88" ry="424"></ellipse>
           </svg><a href="../medium/medium.html" data-localise="__MSG_medium__">Medium</a>
       </div>
-      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">Peertube</a></div>
+      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">PeerTube</a></div>
       <div class="title"> <img src="../../../assets/images/lbry-icon.png"><a href="../lbry/lbry.html" data-localise="__MSG_lbry__">LBRY/Odysee</a></div>
       <div class="title"> 
           <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
diff --git a/src/pages/options/translate/translate.html b/src/pages/options/translate/translate.html
index 249ce0b1..c62ea5a6 100644
--- a/src/pages/options/translate/translate.html
+++ b/src/pages/options/translate/translate.html
@@ -31,7 +31,7 @@
             <ellipse cx="1682" cy="502" rx="88" ry="424"></ellipse>
           </svg><a href="../medium/medium.html" data-localise="__MSG_medium__">Medium</a>
       </div>
-      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">Peertube</a></div>
+      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">PeerTube</a></div>
       <div class="title"> <img src="../../../assets/images/lbry-icon.png"><a href="../lbry/lbry.html" data-localise="__MSG_lbry__">LBRY/Odysee</a></div>
       <div class="title"> 
           <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
diff --git a/src/pages/options/twitter/twitter.html b/src/pages/options/twitter/twitter.html
index 95e0a0bf..2a477e60 100644
--- a/src/pages/options/twitter/twitter.html
+++ b/src/pages/options/twitter/twitter.html
@@ -31,7 +31,7 @@
             <ellipse cx="1682" cy="502" rx="88" ry="424"></ellipse>
           </svg><a href="../medium/medium.html" data-localise="__MSG_medium__">Medium</a>
       </div>
-      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">Peertube</a></div>
+      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">PeerTube</a></div>
       <div class="title"> <img src="../../../assets/images/lbry-icon.png"><a href="../lbry/lbry.html" data-localise="__MSG_lbry__">LBRY/Odysee</a></div>
       <div class="title"> 
           <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
diff --git a/src/pages/options/wikipedia/wikipedia.html b/src/pages/options/wikipedia/wikipedia.html
index c8475f02..ba22bc31 100644
--- a/src/pages/options/wikipedia/wikipedia.html
+++ b/src/pages/options/wikipedia/wikipedia.html
@@ -31,7 +31,7 @@
             <ellipse cx="1682" cy="502" rx="88" ry="424"></ellipse>
           </svg><a href="../medium/medium.html" data-localise="__MSG_medium__">Medium</a>
       </div>
-      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">Peertube</a></div>
+      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">PeerTube</a></div>
       <div class="title"> <img src="../../../assets/images/lbry-icon.png"><a href="../lbry/lbry.html" data-localise="__MSG_lbry__">LBRY/Odysee</a></div>
       <div class="title"> 
           <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
diff --git a/src/pages/options/youtube/youtube.html b/src/pages/options/youtube/youtube.html
index 20d13bd3..6a2036a1 100644
--- a/src/pages/options/youtube/youtube.html
+++ b/src/pages/options/youtube/youtube.html
@@ -31,7 +31,7 @@
             <ellipse cx="1682" cy="502" rx="88" ry="424"></ellipse>
           </svg><a href="../medium/medium.html" data-localise="__MSG_medium__">Medium</a>
       </div>
-      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">Peertube</a></div>
+      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">PeerTube</a></div>
       <div class="title"> <img src="../../../assets/images/lbry-icon.png"><a href="../lbry/lbry.html" data-localise="__MSG_lbry__">LBRY/Odysee</a></div>
       <div class="title"> 
           <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
diff --git a/src/pages/options/youtubeMusic/youtubeMusic.html b/src/pages/options/youtubeMusic/youtubeMusic.html
index 9910630e..845ec44a 100644
--- a/src/pages/options/youtubeMusic/youtubeMusic.html
+++ b/src/pages/options/youtubeMusic/youtubeMusic.html
@@ -31,7 +31,7 @@
             <ellipse cx="1682" cy="502" rx="88" ry="424"></ellipse>
           </svg><a href="../medium/medium.html" data-localise="__MSG_medium__">Medium</a>
       </div>
-      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">Peertube</a></div>
+      <div class="title"> <img src="../../../assets/images/peertube-icon.svg"><a href="../peertube/peertube.html" data-localise="__MSG_peertube__">PeerTube</a></div>
       <div class="title"> <img src="../../../assets/images/lbry-icon.png"><a href="../lbry/lbry.html" data-localise="__MSG_lbry__">LBRY/Odysee</a></div>
       <div class="title"> 
           <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
diff --git a/src/pages/popup/popup.html b/src/pages/popup/popup.html
index 48f6f116..ffc1c864 100644
--- a/src/pages/popup/popup.html
+++ b/src/pages/popup/popup.html
@@ -35,7 +35,7 @@
         <h4>Reddit</h4></a>
       <input id="disable-reddit" type="checkbox">
     </div>
-    <div class="some-block" id="wikipedia"><a class="title" href="https://wikipedia.com"><img src="../../assets/images/wikipedia-icon.png">
+    <div class="some-block" id="wikipedia"><a class="title" href="https://wikipedia.com"><img src="../../assets/images/wikipedia-icon.svg">
         <h4>Wikipedia</h4></a>
       <input id="disable-wikipedia" type="checkbox">
     </div>
@@ -48,15 +48,15 @@
         <h4>Medium</h4></a>
       <input id="disable-medium" type="checkbox">
     </div>
-    <div class="some-block" id="peertube"><a class="title" href="https://peertube.com"><img src="../../assets/images/peertube-icon.png">
-        <h4>Peertube</h4></a>
+    <div class="some-block" id="peertube"><a class="title" href="https://peertube.com"><img src="../../assets/images/peertube-icon.svg">
+        <h4>PeerTube</h4></a>
       <input id="disable-peertube" type="checkbox">
     </div>
     <div class="some-block" id="lbry"><a class="title" href="https://lbry.com"><img src="../../assets/images/lbry-icon.png">
         <h4>LBRY</h4></a>
       <input id="disable-lbry" type="checkbox">
     </div>
-    <div class="some-block" id="search"><a class="title" href="https://libredirect.invalid">
+    <div class="some-block" id="search"><a class="title" href="https://search.libredirect.invalid">
         <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
           <path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path>
         </svg>
@@ -77,34 +77,35 @@
         <h4>Maps</h4></a>
       <input id="disable-osm" type="checkbox">
     </div>
-    <div class="some-block" id="sendTargets"><a class="title" href="https://send.invalid">
+    <div class="some-block" id="sendTargets"><a class="title" href="https://send.libredirect.invalid">
         <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
           <path d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z"></path>
         </svg>
         <h4>Send Files</h4></a>
       <input id="disable-sendTargets" type="checkbox">
     </div>
+    <hr>
     <div class="some-block" id="change_instance_div"><a class="title button" id="change_instance">
+        <h4>Change Instance</h4>
         <svg xmlns="http://www.w3.org/2000/svg" height="26px" viewBox="0 0 24 24" width="26px" fill="currentColor">
           <path d="M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z"></path>
-        </svg>
-        <h4>Change Instance</h4></a></div>
-    <div class="some-block"><a class="title button" id="more-options">
-        <svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="26px" viewBox="0 0 24 24" width="26px" fill="currentColor">
-          <path d="M19.14,12.94c0.04-0.3,0.06-0.61,0.06-0.94c0-0.32-0.02-0.64-0.07-0.94l2.03-1.58c0.18-0.14,0.23-0.41,0.12-0.61 l-1.92-3.32c-0.12-0.22-0.37-0.29-0.59-0.22l-2.39,0.96c-0.5-0.38-1.03-0.7-1.62-0.94L14.4,2.81c-0.04-0.24-0.24-0.41-0.48-0.41 h-3.84c-0.24,0-0.43,0.17-0.47,0.41L9.25,5.35C8.66,5.59,8.12,5.92,7.63,6.29L5.24,5.33c-0.22-0.08-0.47,0-0.59,0.22L2.74,8.87 C2.62,9.08,2.66,9.34,2.86,9.48l2.03,1.58C4.84,11.36,4.8,11.69,4.8,12s0.02,0.64,0.07,0.94l-2.03,1.58 c-0.18,0.14-0.23,0.41-0.12,0.61l1.92,3.32c0.12,0.22,0.37,0.29,0.59,0.22l2.39-0.96c0.5,0.38,1.03,0.7,1.62,0.94l0.36,2.54 c0.05,0.24,0.24,0.41,0.48,0.41h3.84c0.24,0,0.44-0.17,0.47-0.41l0.36-2.54c0.59-0.24,1.13-0.56,1.62-0.94l2.39,0.96 c0.22,0.08,0.47,0,0.59-0.22l1.92-3.32c0.12-0.22,0.07-0.47-0.12-0.61L19.14,12.94z M12,15.6c-1.98,0-3.6-1.62-3.6-3.6 s1.62-3.6,3.6-3.6s3.6,1.62,3.6,3.6S13.98,15.6,12,15.6z"></path>
-        </svg>
-        <h4>Settings</h4></a></div>
+        </svg></a></div>
     <div class="some-block" id="copy_raw_div" title="Copy the original redirected link">        <a class="title button" id="copy_raw">
+        <h4>Copy Raw</h4>
         <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
           <path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"></path>
-        </svg>
-        <h4>Copy Raw</h4></a></div>
+        </svg></a></div>
     <div class="some-block" id="unify_div" title="Unify cookies across all selected instances"><a class="title button" id="unify">
-        <svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
-          <rect fill="none" height="24" width="24"></rect>
-          <path d="M18,2H9C7.9,2,7,2.9,7,4v12c0,1.1,0.9,2,2,2h9c1.1,0,2-0.9,2-2V4C20,2.9,19.1,2,18,2z M18,16H9V4h9V16z M3,15v-2h2v2H3z M3,9.5h2v2H3V9.5z M10,20h2v2h-2V20z M3,18.5v-2h2v2H3z M5,22c-1.1,0-2-0.9-2-2h2V22z M8.5,22h-2v-2h2V22z M13.5,22L13.5,22l0-2h2 v0C15.5,21.1,14.6,22,13.5,22z M5,6L5,6l0,2H3v0C3,6.9,3.9,6,5,6z"></path>
-        </svg>
-        <h4>Unify Settings</h4></a></div>
+        <h4>Unify Settings</h4>
+        <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
+          <path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"></path>
+        </svg></a></div>
+    <div class="some-block"><a class="title button" id="more-options">
+        <h4>Settings</h4>
+        <svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="26px" viewBox="0 0 24 24" width="26px" fill="currentColor">
+          <path d="M19.14,12.94c0.04-0.3,0.06-0.61,0.06-0.94c0-0.32-0.02-0.64-0.07-0.94l2.03-1.58c0.18-0.14,0.23-0.41,0.12-0.61 l-1.92-3.32c-0.12-0.22-0.37-0.29-0.59-0.22l-2.39,0.96c-0.5-0.38-1.03-0.7-1.62-0.94L14.4,2.81c-0.04-0.24-0.24-0.41-0.48-0.41 h-3.84c-0.24,0-0.43,0.17-0.47,0.41L9.25,5.35C8.66,5.59,8.12,5.92,7.63,6.29L5.24,5.33c-0.22-0.08-0.47,0-0.59,0.22L2.74,8.87 C2.62,9.08,2.66,9.34,2.86,9.48l2.03,1.58C4.84,11.36,4.8,11.69,4.8,12s0.02,0.64,0.07,0.94l-2.03,1.58 c-0.18,0.14-0.23,0.41-0.12,0.61l1.92,3.32c0.12,0.22,0.37,0.29,0.59,0.22l2.39-0.96c0.5,0.38,1.03,0.7,1.62,0.94l0.36,2.54 c0.05,0.24,0.24,0.41,0.48,0.41h3.84c0.24,0,0.44-0.17,0.47-0.41l0.36-2.54c0.59-0.24,1.13-0.56,1.62-0.94l2.39,0.96 c0.22,0.08,0.47,0,0.59-0.22l1.92-3.32c0.12-0.22,0.07-0.47-0.12-0.61L19.14,12.94z M12,15.6c-1.98,0-3.6-1.62-3.6-3.6 s1.62-3.6,3.6-3.6s3.6,1.62,3.6,3.6S13.98,15.6,12,15.6z"></path>
+        </svg></a></div>
+    <div class="space"></div>
     <script type="module" src="../options/init.js"></script>
     <script type="module" src="./popup.js"></script>
     <script src="../../assets/javascripts/localise.js"></script>
diff --git a/src/pages/popup/popup.js b/src/pages/popup/popup.js
index b9c75791..824f178b 100644
--- a/src/pages/popup/popup.js
+++ b/src/pages/popup/popup.js
@@ -98,14 +98,14 @@ utils.unify(true).then(r => {
   }
 })
 
-
 document.getElementById("more-options").addEventListener("click", () => browser.runtime.openOptionsPage());
 
-generalHelper.init().then(() => {
-  let popupFrontends = generalHelper.getPopupFrontends();
-  for (const frontend of generalHelper.allPopupFrontends)
-    if (!popupFrontends.includes(frontend))
-      document.getElementById(frontend).classList.add("hide")
-    else
-      document.getElementById(frontend).classList.remove("hide")
-});
\ No newline at end of file
+browser.storage.local.get(
+  'popupFrontends',
+  r => {
+    for (const frontend of generalHelper.allPopupFrontends)
+      if (!r.popupFrontends.includes(frontend))
+        document.getElementById(frontend).classList.add("hide")
+      else
+        document.getElementById(frontend).classList.remove("hide")
+  });
\ No newline at end of file
diff --git a/src/pages/popup/popup.pug b/src/pages/popup/popup.pug
index 35234b15..5e067f3f 100644
--- a/src/pages/popup/popup.pug
+++ b/src/pages/popup/popup.pug
@@ -52,7 +52,7 @@ html(lang="en")
 
         #wikipedia.some-block
             a.title(href="https://wikipedia.com")
-                img(src="../../assets/images/wikipedia-icon.png")
+                img(src="../../assets/images/wikipedia-icon.svg")
                 h4 Wikipedia
             input#disable-wikipedia(type="checkbox")
 
@@ -64,8 +64,8 @@ html(lang="en")
 
         #peertube.some-block
             a.title(href="https://peertube.com")
-                img(src="../../assets/images/peertube-icon.png")
-                h4 Peertube
+                img(src="../../assets/images/peertube-icon.svg")
+                h4 PeerTube
             input#disable-peertube(type="checkbox")
 
         #lbry.some-block
@@ -75,7 +75,7 @@ html(lang="en")
             input#disable-lbry(type="checkbox")
 
         #search.some-block
-            a.title(href="https://libredirect.invalid")
+            a.title(href="https://search.libredirect.invalid")
                 +search
                 h4 Search
             input#disable-search(type="checkbox")
@@ -93,30 +93,34 @@ html(lang="en")
             input#disable-osm(type="checkbox")
 
         #sendTargets.some-block
-            a.title(href="https://send.invalid")
+            a.title(href="https://send.libredirect.invalid")
                 +send
                 h4 Send Files
             input#disable-sendTargets(type="checkbox")
 
+        hr
+
         #change_instance_div.some-block
             a#change_instance.title.button
-                +change_instance
                 h4 Change Instance
-
-        .some-block
-            a#more-options.title.button
-                +settings
-                h4 Settings
+                +change_instance
 
         #copy_raw_div.some-block(title="Copy the original redirected link")         
             a#copy_raw.title.button
-                +copy_raw
                 h4 Copy Raw
+                +copy_raw
 
         #unify_div.some-block(title="Unify cookies across all selected instances")
             a#unify.title.button
-                +unify
                 h4 Unify Settings
+                +unify
+
+        .some-block
+            a#more-options.title.button
+                h4 Settings
+                +settings
+
+        .space
 
         script(type="module" src="../options/init.js")
         script(type="module" src="./popup.js")
diff --git a/src/pages/popup/style.css b/src/pages/popup/style.css
index 4cc56145..8136237a 100644
--- a/src/pages/popup/style.css
+++ b/src/pages/popup/style.css
@@ -1,5 +1,5 @@
 body {
-    width: 240px;
+    width: 230px;
     min-height: auto;
 }
 
@@ -9,4 +9,15 @@ html, body {
 
 .hide {
     display: none !important;
+}
+
+.button {
+    display: flex;
+    margin: 0 auto;
+    justify-content: space-between;
+    width: 100%;
+}
+
+.space {
+    height: 10px;
 }
\ No newline at end of file
diff --git a/src/pages/widgets/icons.pug b/src/pages/widgets/icons.pug
index 4ef8d6b2..60186693 100644
--- a/src/pages/widgets/icons.pug
+++ b/src/pages/widgets/icons.pug
@@ -39,6 +39,5 @@ mixin general
 
 
 mixin unify
-    svg(xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor")
-        rect(fill="none" height="24" width="24")
-        path(d="M18,2H9C7.9,2,7,2.9,7,4v12c0,1.1,0.9,2,2,2h9c1.1,0,2-0.9,2-2V4C20,2.9,19.1,2,18,2z M18,16H9V4h9V16z M3,15v-2h2v2H3z M3,9.5h2v2H3V9.5z M10,20h2v2h-2V20z M3,18.5v-2h2v2H3z M5,22c-1.1,0-2-0.9-2-2h2V22z M8.5,22h-2v-2h2V22z M13.5,22L13.5,22l0-2h2 v0C15.5,21.1,14.6,22,13.5,22z M5,6L5,6l0,2H3v0C3,6.9,3.9,6,5,6z")
\ No newline at end of file
+    svg(xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor")
+        path(d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z")
\ No newline at end of file
diff --git a/src/pages/widgets/links.pug b/src/pages/widgets/links.pug
index 4d6fdd74..97601966 100644
--- a/src/pages/widgets/links.pug
+++ b/src/pages/widgets/links.pug
@@ -44,7 +44,7 @@ mixin links(service)
 
         .title 
             img(src="../../../assets/images/peertube-icon.svg")
-            a(href="../peertube/peertube.html" data-localise="__MSG_peertube__" class=service == "peertube" ? "selected" : "") Peertube
+            a(href="../peertube/peertube.html" data-localise="__MSG_peertube__" class=service == "peertube" ? "selected" : "") PeerTube
 
         .title 
             img(src="../../../assets/images/lbry-icon.png")