diff --git a/src/scripts/actions.js b/src/scripts/actions.js
index d5fe0e8..28f5491 100644
--- a/src/scripts/actions.js
+++ b/src/scripts/actions.js
@@ -48,13 +48,16 @@ const deleteFromStorage = (elm = null, name = null) => {
 }
 
 const windowMaker = (i, keysLength, keys, json) => {
-    for (; i < keysLength; i++) {
-        let store = json[keys[i]];
-        let urls  = [];
 
-        for (let j = 0; j < store.length; j++) {
-            urls.push(store[j].link);
-        }
-        windowApi.create({ url: urls });
+    for (; i < keysLength; i++) {
+
+        let _store    = json[keys[i]];
+
+        browser.runtime.sendMessage(
+            {
+                action: "new-window",
+                store: _store
+            }
+        )
     }
 }
diff --git a/src/scripts/listener.js b/src/scripts/listener.js
new file mode 100644
index 0000000..c0e5a47
--- /dev/null
+++ b/src/scripts/listener.js
@@ -0,0 +1,75 @@
+const onMessageListener = async (request, sender, sendResponse) => {
+  switch (request.action) {
+        case "new-window": {
+            let store     = request.store;
+            let newWindow = await browser.windows.create({focused: false});
+
+            for (let i = 0; i < store.length; i++) {
+                let createOption = (store[i].link !== "about:newtab") ? 
+                    {
+                        active: false,
+                        discarded: true,
+                        pinned: false,
+                        url: store[i].link,
+                        windowId: newWindow.id,
+                        index: i + 1
+                    }
+                : { };
+
+                browser.tabs.create(createOption).catch( async (e) => { 
+                    createOption.url = returnReplaceURL(
+                        "open_faild",
+                        store[i].title,
+                        store[i].link,
+                        "../images/icons/error.png"
+                    );
+
+                    await browser.tabs.create(createOption);
+                });
+            }
+
+            let tabs = await browser.tabs.query({currentWindow: true});
+
+            browser.tabs.update(tabs.at(-1).id, { active: true });
+            browser.tabs.remove( tabs.at(0).id )
+      }
+  }
+}
+
+
+const returnReplaceURL = (state, title, url, favIconUrl) => {
+    let retUrl =
+        "/pages/replaced.html"
+        + "?state="
+        + encodeURIComponent(state)
+        + "&title="
+        + encodeURIComponent(title)
+        + "&url="
+        + encodeURIComponent(url)
+        + "&favIconUrl=" 
+        + encodeURIComponent(favIconUrl)
+        + "&theme=dark";
+
+    // Reader mode
+    if (url.startsWith("about:reader?url=")) {
+        retUrl =
+          "/pages/replaced.html?state="
+          + encodeURIComponent(state)
+          + "&title="
+          + encodeURIComponent(title)
+          + "&url="
+          + url.slice(17)
+          + "&favIconUrl="
+          + encodeURIComponent(favIconUrl)
+          + "&openInReaderMode=true&theme=dark"
+          + "&theme=dark";
+    }
+
+  return retUrl;
+}
+
+
+
+
+
+browser.runtime.onMessage.addListener(onMessageListener);
\ No newline at end of file
diff --git a/src/scripts/replaced.js b/src/scripts/replaced.js
new file mode 100644
index 0000000..d586cf3
--- /dev/null
+++ b/src/scripts/replaced.js
@@ -0,0 +1,54 @@
+const sanitaize = {
+    encode: str => {
+        str = str || "";
+        return str
+            .replace(/&/g, "&")
+            .replace(//g, ">")
+            .replace(/"/g, """)
+            .replace(/'/g, "'");
+      },
+    decode: str => {
+        str = str || "";
+        return str
+            .replace(/</g, "<")
+            .replace(/>/g, ">")
+            .replace(/"/g, '"')
+            .replace(/'/g, "'")
+            .replace(/&/g, "&");
+      }
+};
+
+let parameter = returnReplaceParameter(location.href);
+
+document.title = parameter.title;
+document.getElementsByClassName("title")[0].innerText = parameter.title;
+document.getElementsByClassName("replacedUrl")[0].value = parameter.url;
+if (parameter.favIconUrl === "" || parameter.favIconUrl === "undefined") {
+    parameter.favIconUrl = "../icons/nofavicon.png";
+}
+document.head.insertAdjacentHTML(
+    "beforeend",
+    `