diff --git a/helpers/DATA/firefox/aboutabrowser@trisquel.info/LICENSE b/helpers/DATA/firefox/aboutabrowser@trisquel.info/LICENSE
deleted file mode 100644
index 10d1ec67e287a4dbd0d3f25e93b4837b7e027f47..0000000000000000000000000000000000000000
--- a/helpers/DATA/firefox/aboutabrowser@trisquel.info/LICENSE
+++ /dev/null
@@ -1,24 +0,0 @@
-Extension built by Ruben Rodriguez using pieces of torbutton as a template
-
-Copyright (c) 2014, Ruben Rodriguez <ruben@gnu.org>
-Copyright (c) 2013, The Tor Project, Inc.
-Copyright (c) 2006 Scott Squires, Oleg Ivanov
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without limitation
-the rights to use, copy, modify, merge, publish, distribute, sublicense,
-and/or sell copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
diff --git a/helpers/DATA/firefox/aboutabrowser@trisquel.info/chrome.manifest b/helpers/DATA/firefox/aboutabrowser@trisquel.info/chrome.manifest
deleted file mode 100644
index bf104513ecf0a8fa082e9aaedffdb82639fea18d..0000000000000000000000000000000000000000
--- a/helpers/DATA/firefox/aboutabrowser@trisquel.info/chrome.manifest
+++ /dev/null
@@ -1,9 +0,0 @@
-content abrowserhome chrome/content/
-
-locale abrowserhome af chrome/locale/es/
-locale abrowserhome ak chrome/locale/en/
-
-component {a364a9c0-2960-11e4-8c21-0800200c9a66} components/aboutAbrowser.js
-contract @mozilla.org/network/protocol/about;1?what=startpage {a364a9c0-2960-11e4-8c21-0800200c9a66}
-contract @mozilla.org/network/protocol/about;1?what=home {a364a9c0-2960-11e4-8c21-0800200c9a66}
-
diff --git a/helpers/DATA/firefox/aboutabrowser@trisquel.info/chrome/content/aboutAbrowser/aboutAbrowser.xhtml b/helpers/DATA/firefox/aboutabrowser@trisquel.info/chrome/content/aboutAbrowser/aboutAbrowser.xhtml
deleted file mode 100644
index 36d2ca0c384ca06a846b9e71a7499d2a4da46f4c..0000000000000000000000000000000000000000
--- a/helpers/DATA/firefox/aboutabrowser@trisquel.info/chrome/content/aboutAbrowser/aboutAbrowser.xhtml
+++ /dev/null
@@ -1,364 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
-   - License, v. 2.0. If a copy of the MPL was not distributed with this
-   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-
-<!DOCTYPE html [
-  <!ENTITY % htmlDTD
-    PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "DTD/xhtml1-strict.dtd">
-  %htmlDTD;
-  <!ENTITY % globalDTD SYSTEM "chrome://global/locale/global.dtd">
-  %globalDTD;
-  <!ENTITY % aboutHomeDTD SYSTEM "chrome://browser/locale/aboutHome.dtd">
-  %aboutHomeDTD;
-  <!ENTITY % browserDTD SYSTEM "chrome://browser/locale/browser.dtd" >
-  %browserDTD;
-]>
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <title>&abouthome.pageTitle;</title>
-
-    <link rel="icon" type="image/png" id="favicon"
-          href="chrome://branding/content/icon32.png"/>
-    <link rel="stylesheet" type="text/css" media="all"
-          href="chrome://browser/content/abouthome/aboutHome.css"/>
-
-<style>
-
-body{
- margin:0;
- background-color:#f2f2f2;
-}
-#box{
- display: flex;
- flex-flow: column;
- justify-content: space-between;
- align-items: center;
- align-content: center;
- height: 100vh;
-}
-
-#topSection, #box3, #block-horizontal-margin{
- flex: 0 1 auto;
- align-self: auto;
-}
-#topSection {
- margin-top:10vh;
- order:1;
-}
-#block-horizontal-margin{
- order:2;
-}
-#box3{
- order:3;
- width:100vw;
-}
-
-
-label{
-position:relative;
-bottom:2px;
-left:2px;
-}
-
-#addonsform form{
-position:relative;
-left:10px;
-}
-
-em {
-color:#600
-}
-
-a{
-color:#004998
-}
-
-#addonsform{
-background-color:#fff;
-font-size:14px;
-padding:10px 25px 20px 25px;
-border-radius: 5px;
-box-shadow: 0 0px 2px hsla(0,0%,0%,.3) inset;
-}
-
-.block-side-margin {
-  min-width: 16px;
-}
-
-
-ul li {
-list-style:none;
-float:left;
-}
-
-ul li a{
-font-weight:bold;
-text-shadow:0px 1px 0px #fff;
-padding:5px 10px 5px 10px;
-border-radius:3px;
-margin:5px;
-color:#888;
-background:#dcdcdc;
-box-shadow: 0px 2px 0 #ccc ;
-}
-
-ul li a:hover{
-color:#666;
-background:#ccc;
-box-shadow: 0px 2px 0 #aaa;
-
-}
-
-.titlelink{
-font-weight:bold;
-color: #678;
-text-shadow: 0px 1px 0px white;
-}
-
-#footer{
-min-height:50px;
-display: -moz-box;
--moz-box-align: center;
--moz-box-pack: center;
-width: 100%;
-background-color: hsla(0,0%,0%,.03);
-border-top: 1px solid hsla(0,0%,0%,.03);
-box-shadow: 0 -1px 2px hsla(0,0%,0%,.1) inset, 0 -1px 0 hsla(0,0%,100%,.25);
-}
-
-#searchLogoContainer{
-color:#888;
-text-shadow: 0 1px 0 #fff;
-}
-
-</style>
-
-<script type="text/javascript">
-<![CDATA[
-
-Components.utils.import("resource://gre/modules/AddonManager.jsm");
-Components.utils.import("resource://gre/modules/Services.jsm");
-
-function flip(sel){
-  var id = sel.id;
-  var addonObj=-1;
-  AddonManager.getAddonByID(id, function(addon) {
-    addonObj=addon;
-  });
-  var thread = Components.classes["@mozilla.org/thread-manager;1"].getService().currentThread;
-  while (addonObj == null || addonObj == -1)
-  thread.processNextEvent(true);
-  addonObj.userDisabled = addonObj.isActive;
-  if ( addonObj.operationsRequiringRestart != 0)
-      alert("This change will be applied when you restart Abrowser");
-}
-
-function languagesettings(sel){
-  if (sel.checked)
-    Services.prefs.setCharPref(sel.id,sel.value);
-  else
-    Services.prefs.clearUserPref(sel.id);
-}
-
-function fontsettings(sel){
-  if (sel.checked)
-    Services.prefs.setIntPref(sel.id,sel.value);
-  else
-    Services.prefs.clearUserPref(sel.id);
-}
-
-function jssettings(sel){
-  if (sel.checked){
-    Services.prefs.setBoolPref(sel.id, !sel.checked);}
-  else
-    Services.prefs.clearUserPref(sel.id);
-}
-
-function prepare(){
-
-srchsvc = Components.classes["@mozilla.org/browser/search-service;1"].getService(Components.interfaces.nsIBrowserSearchService);
-currentEngine = srchsvc.defaultEngine.name;
-document.getElementById("searchLogoContainer").innerHTML=currentEngine+":"; 
-
-/*try {
-Services.prefs.getCharPref("extensions.abrowserhome.intl.accept_languages");
-}catch(err){
-Services.prefs.setCharPref("intl.accept_languages","en-US, en");
-Services.prefs.setCharPref("extensions.abrowserhome.intl.accept_languages","en-US, en");
-}
-
-try {
-Services.prefs.getIntPref("extensions.abrowserhome.browser.display.use_document_fonts");
-}catch(err){
-Services.prefs.setIntPref("browser.display.use_document_fonts",0);
-Services.prefs.setIntPref("extensions.abrowserhome.browser.display.use_document_fonts",0);
-}*/
-
-  var f = document.createElement("form");
-
-  var extensions=[
-["jid1-KtlZuoiikVfFew@jetpack","Block execution of non-free <a target=\"_blank\" href=\"http://www.gnu.org/software/librejs/\">JavaScript</a> <em>(experimental)</em>"],
-["spyblock@gnu.org","Block privacy <a target=\"_blank\" href=\"https://easylist.adblockplus.org\">trackers</a>"],
-["torproxy@trisquel","Use <a target=\"_blank\" href=\"https://www.torproject.org/about/overview.html.en#overview\">Tor</a> when in Private Mode"],
-["https-everywhere@eff.org","Get redirected to <a target=\"_blank\" href=\"https://www.eff.org/https-everywhere/faq\">HTTPS</a> when possible"],
-]
-
-  for (var i=0; i<extensions.length; ++i) {
-    var ex=extensions[i][0];
-
-    var tmp = document.createElement("input");
-    tmp.setAttribute('type',"checkbox");
-    tmp.setAttribute('id', ex);
-    tmp.setAttribute('onclick','flip(this);');
-
-    var label = document.createElement("label");
-    label.htmlFor =  ex ;
-    label.id = ex+'label';
-    label.appendChild(document.createTextNode(''));
-
-    f.appendChild(tmp);
-    f.appendChild(label);
-
-    document.getElementById("addonsform").appendChild(f);
-  }
-
-  var tmp = document.createElement("input");
-  tmp.setAttribute('type',"checkbox");
-  tmp.setAttribute('id', "intl.accept_languages");
-  tmp.setAttribute('value', "en-US, en");
-  tmp.setAttribute('onclick','languagesettings(this);');
-  value=Services.prefs.getCharPref("intl.accept_languages");
-  tmp.checked=(value=="en-US, en");
-  var label = document.createElement("label");
-  label.htmlFor =  "intl.accept_languages" ;
-  label.id = "intl.accept_languageslabel";
-  label.appendChild(document.createTextNode("Request pages in English"));
-  f.appendChild(tmp);
-  f.appendChild(label);
-  f.appendChild(document.createElement("br"));
-  document.getElementById("addonsform").appendChild(f);
-
-  var tmp = document.createElement("input");
-  tmp.setAttribute('type',"checkbox");
-  tmp.setAttribute('id', "browser.display.use_document_fonts");
-  tmp.setAttribute('value', 0);
-  tmp.setAttribute('onclick','fontsettings(this);');
-  value=Services.prefs.getIntPref("browser.display.use_document_fonts");
-  tmp.checked=(value==0);
-  var label = document.createElement("label");
-  label.htmlFor =  "browser.display.use_document_fonts" ;
-  label.id = "browser.display.use_document_fontslabel";
-  label.appendChild(document.createTextNode("Use system fonts"));
-  f.appendChild(tmp);
-  f.appendChild(label);
-  f.appendChild(document.createElement("br"));
-  document.getElementById("addonsform").appendChild(f);
-
-  var tmp = document.createElement("input");
-  tmp.setAttribute('type',"checkbox");
-  tmp.setAttribute('id', "javascript.enabled");
-  tmp.setAttribute('value', 0);
-  tmp.setAttribute('onclick','jssettings(this);');
-  value=Services.prefs.getBoolPref("javascript.enabled");
-  tmp.checked=(value==0);
-  var label = document.createElement("label");
-  label.htmlFor =  "javascript.enabled" ;
-  label.id = "javascript.enabledlabel";
-  label.appendChild(document.createTextNode("Disable JavaScript"));
-  f.appendChild(tmp);
-  f.appendChild(label);
-  f.appendChild(document.createElement("br"));
-  document.getElementById("addonsform").appendChild(f);
-
-  for (var i=0; i<extensions.length; ++i) {
-    var ex=extensions[i][0];
-    var addonObj=-1;
-
-    AddonManager.getAddonByID(ex, function(addon) {
-    addonObj=addon;
-    });
-
-    var thread = Components.classes["@mozilla.org/thread-manager;1"].getService().currentThread;
-    while ( addonObj == -1)
-    thread.processNextEvent(true);
-    if ( addonObj != null){
-      document.getElementById(ex).checked = addonObj.isActive;
-      //document.getElementById(ex+'label').innerHTML = addonObj.name;
-      document.getElementById(ex+'label').innerHTML = extensions[i][1]+"<br/>";
-    }else{
-      document.getElementById(ex).style.display='none';
-      document.getElementById(ex+'label').style.display='none';
-    }
-  }
-}
-
-function onSearchSubmit(){
-
-  srchsvc = Components.classes["@mozilla.org/browser/search-service;1"].getService(Components.interfaces.nsIBrowserSearchService);
-  currentEngine = srchsvc.defaultEngine;
-  var selectedText=document.getElementById("searchText").value;
-  submission = currentEngine.getSubmission(selectedText,null);
-  window.location = submission.uri.spec;
-
-}
-
-]]>
-</script>
-
-  </head>
-
-  <body dir="&locale.dir;" onload="prepare();">
-
-
-  <div id="box">
-   <div id="box1">
-    <div id="topSection">
-      <img src="chrome://branding/content/about-logo.png"/>
-<br/>
-<br/>
-      <div id="searchContainer">
-        <form name="searchForm" id="searchForm" onsubmit="onSearchSubmit(); return false">
-          <div id="searchLogoContainer"></div>
-          <input type="text" name="q" value="" id="searchText" maxlength="256"
-                 autofocus="autofocus" dir="auto"/>
-          <input id="searchSubmit" type="submit" value="Search"/>
-        </form>
-      </div>
-
-    </div>
-   </div>
-
-
-   <div id="box2">
-<div id="block-horizontal-margin">
-<div class="block-side-margin"></div>
-<div id="addonsform">
-<!--<h3>Enabled privacy features:</h3>-->
-<p><a target="_blank" href="https://trisquel.info/browser">Abrowser</a> protects your <a target="_blank" href="http://www.gnu.org/philosophy/free-sw.html">freedom</a> and your privacy!<br/><small>For a browser with an even bigger focus on privacy, <a href="apt:icecat">install GNU IceCat</a></small></p>
-</div>
-<div class="block-side-margin"></div>
-</div>
-</div>
-
-
-   <div id="box3">
-     <div id="footer">
-       <p ><a class="titlelink" href="https://trisquel.info">Trisquel GNU/Linux</a></p>
-       <ul style="font-size:0.8em">
-       <li><a href="https://trisquel.info/forum">Forum</a></li>
-       <li><a href="https://trisquel.info/wiki">Wiki</a></li>
-       <li><a href="http://store.trisquel.info/">Store</a></li>
-       <li><a href="https://trisquel.info/donate">Donate</a></li>
-       </ul>
-    </div>
-  </div>
-</div>
-
-
-  </body>
-</html>
-
diff --git a/helpers/DATA/firefox/aboutabrowser@trisquel.info/chrome/locale/en/aboutAbrowser.dtd b/helpers/DATA/firefox/aboutabrowser@trisquel.info/chrome/locale/en/aboutAbrowser.dtd
deleted file mode 100644
index 73fd945fb65e76197d3b614ad29e5278d7591da2..0000000000000000000000000000000000000000
--- a/helpers/DATA/firefox/aboutabrowser@trisquel.info/chrome/locale/en/aboutAbrowser.dtd
+++ /dev/null
@@ -1 +0,0 @@
-<!ENTITY aboutAbrowser.title "About Abrowser">
diff --git a/helpers/DATA/firefox/aboutabrowser@trisquel.info/chrome/locale/es/aboutAbrowser.dtd b/helpers/DATA/firefox/aboutabrowser@trisquel.info/chrome/locale/es/aboutAbrowser.dtd
deleted file mode 100644
index cd8f56df719cf57276b4cbf07a57ff16f19bc976..0000000000000000000000000000000000000000
--- a/helpers/DATA/firefox/aboutabrowser@trisquel.info/chrome/locale/es/aboutAbrowser.dtd
+++ /dev/null
@@ -1 +0,0 @@
-<!ENTITY aboutAbrowser.title "Acerca de Abrowser">
diff --git a/helpers/DATA/firefox/aboutabrowser@trisquel.info/components/aboutAbrowser.js b/helpers/DATA/firefox/aboutabrowser@trisquel.info/components/aboutAbrowser.js
deleted file mode 100644
index f81ba7d55a9d7ebfe09c71464c65b36f2b9a1e56..0000000000000000000000000000000000000000
--- a/helpers/DATA/firefox/aboutabrowser@trisquel.info/components/aboutAbrowser.js
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
-
-Copyright (c) 2014, Ruben Rodriguez <ruben@gnu.org>
-Copyright (c) 2013, The Tor Project, Inc.
-Copyright (c) 2006 Scott Squires, Oleg Ivanov
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without limitation
-the rights to use, copy, modify, merge, publish, distribute, sublicense,
-and/or sell copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-*/
-
-// Module specific constants
-const kMODULE_NAME = "about:abrowser";
-const kMODULE_CONTRACTID = "@mozilla.org/network/protocol/about;1?what=abrowser";
-const kMODULE_CID = Components.ID("a364a9c0-2960-11e4-8c21-0800200c9a66");
-
-const kAboutAbrowserURL = "chrome://abrowserhome/content/aboutAbrowser/aboutAbrowser.xhtml";
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cu = Components.utils;
- 
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
- 
-function AboutAbrowser()
-{
-}
-
-
-AboutAbrowser.prototype =
-{
-  QueryInterface: XPCOMUtils.generateQI([Ci.nsIAboutModule]),
-
-  // nsIClassInfo implementation:
-  classDescription: kMODULE_NAME,
-  classID: kMODULE_CID,
-  contractID: kMODULE_CONTRACTID,
-
-  // nsIAboutModule implementation:
-  newChannel: function(aURI)
-  {
-    let ioSvc = Cc["@mozilla.org/network/io-service;1"]
-                  .getService(Ci.nsIIOService);
-    let channel = ioSvc.newChannel(kAboutAbrowserURL, null, null);
-    channel.originalURI = aURI;
-
-    return channel;
-  },
-
-  getURIFlags: function(aURI)
-  {
-    return Ci.nsIAboutModule.ALLOW_SCRIPT;
-  }
-};
-
-
-const NSGetFactory = XPCOMUtils.generateNSGetFactory([AboutAbrowser]);
diff --git a/helpers/DATA/firefox/aboutabrowser@trisquel.info/defaults/preferences/preferences.js b/helpers/DATA/firefox/aboutabrowser@trisquel.info/defaults/preferences/preferences.js
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/helpers/DATA/firefox/aboutabrowser@trisquel.info/install.rdf b/helpers/DATA/firefox/aboutabrowser@trisquel.info/install.rdf
deleted file mode 100644
index 94105d8ad4ae277a562a09730f21143a4373440c..0000000000000000000000000000000000000000
--- a/helpers/DATA/firefox/aboutabrowser@trisquel.info/install.rdf
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-     xmlns:em="http://www.mozilla.org/2004/em-rdf#">
-
-    <Description about="urn:mozilla:install-manifest">
-        <em:name>AbrowserHome</em:name>
-        <em:creator>Ruben Rodriguez</em:creator>
-        <em:id>aboutabrowser@trisquel.info</em:id>
-        <em:version>1.1</em:version>
-        <em:updateURL>https://127.0.0.1/</em:updateURL>
-        <em:multiprocessCompatible>true</em:multiprocessCompatible>
-      <!--  <em:updateKey></em:updateKey> -->
-        <!-- firefox -->
-        <em:targetApplication>
-            <Description>
-                <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
-                <em:minVersion>30.0</em:minVersion>
-                <em:maxVersion>10000.0</em:maxVersion>
-            </Description>
-        </em:targetApplication>
-    </Description>
-</RDF>
diff --git a/helpers/DATA/firefox/abouthome/aboutHome.css b/helpers/DATA/firefox/abouthome/aboutHome.css
index 863523920686bc74d1055ead6f314c7eb3a41f17..c9dff0d80a273c5f45c6f067f30f7e7859052d95 100644
--- a/helpers/DATA/firefox/abouthome/aboutHome.css
+++ b/helpers/DATA/firefox/abouthome/aboutHome.css
@@ -1,8 +1,3 @@
-%if 0
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-%endif
 
 html {
   font: message-box;
@@ -40,8 +35,8 @@ a {
 }
 
 #brandLogo {
-  height: 420px;
-  width: 150px;
+  height: 150px;
+  width: 420px;
   margin: 22px auto 31px;
   background-image: url("chrome://branding/content/about-logo.png");
   background-size: 420px 150px;
@@ -49,90 +44,105 @@ a {
   background-repeat: no-repeat;
 }
 
-#searchForm,
+#searchIconAndTextContainer,
 #snippets {
   width: 470px;
 }
 
-#searchForm {
+#searchIconAndTextContainer {
   display: -moz-box;
+  height: 36px;
+  position: relative;
 }
 
-#searchLogoContainer {
-  display: -moz-box;
-  -moz-box-align: center;
-  padding-top: 2px;
-  -moz-padding-end: 8px;
-}
-
-#searchLogoContainer[hidden] {
-  display: none;
-}
-
-#searchEngineLogo {
-  display: inline-block;
-  height: 28px;
-  width: 70px;
-  min-width: 70px;
+#searchIcon {
+  border: 1px transparent;
+  padding: 0;
+  margin: 0;
+  width: 36px;
+  height: 36px;
+  background: url("chrome://browser/skin/search-indicator-magnifying-glass.svg") center center no-repeat;
+  position: absolute;
 }
 
 #searchText {
+  margin-left: 0;
   -moz-box-flex: 1;
-  padding: 6px 8px;
+  padding-top: 6px;
+  padding-bottom: 6px;
+  padding-inline-start: 34px;
+  padding-inline-end: 8px;
   background: hsla(0,0%,100%,.9) padding-box;
   border: 1px solid;
+  border-radius: 2px 0 0 2px;
   border-color: hsla(210,54%,20%,.15) hsla(210,54%,20%,.17) hsla(210,54%,20%,.2);
   box-shadow: 0 1px 0 hsla(210,65%,9%,.02) inset,
               0 0 2px hsla(210,65%,9%,.1) inset,
               0 1px 0 hsla(0,0%,100%,.2);
-  border-radius: 2.5px 0 0 2.5px;
+  color: inherit;
+  unicode-bidi: plaintext;
+}
+
+#searchText:dir(rtl) {
+  border-radius: 0 2px 2px 0;
 }
 
-#searchText:-moz-dir(rtl) {
-  border-radius: 0 2.5px 2.5px 0;
+#searchText[aria-expanded="true"] {
+  border-radius: 2px 0 0 0;
 }
 
+#searchText[aria-expanded="true"]:dir(rtl) {
+  border-radius: 0 2px 0 0;
+}
+
+#searchText[keepfocus],
 #searchText:focus,
 #searchText[autofocus] {
   border-color: hsla(206,100%,60%,.6) hsla(206,76%,52%,.6) hsla(204,100%,40%,.6);
 }
 
 #searchSubmit {
-  -moz-margin-start: -1px;
-  background: linear-gradient(hsla(0,0%,100%,.8), hsla(0,0%,100%,.1)) padding-box;
-  padding: 0 9px;
+  margin-inline-start: -1px;
+  color: transparent;
+  background: url("chrome://browser/skin/search-arrow-go.svg") center center no-repeat, linear-gradient(hsla(0,0%,100%,.8), hsla(0,0%,100%,.1)) padding-box;
+  -moz-context-properties: fill;
+  fill: #616366;
+  padding: 0;
   border: 1px solid;
-  border-color: hsla(210,54%,20%,.15) hsla(210,54%,20%,.17) hsla(210,54%,20%,.2);
-  -moz-border-start: 1px solid transparent;
-  border-radius: 0 2.5px 2.5px 0;
+  border-color: hsla(210,54%,20%,.15) hsla(210,54%,20%,.17) hsla(210,54%,20%,.2) transparent;
+  border-radius: 0 2px 2px 0;
   box-shadow: 0 0 2px hsla(0,0%,100%,.5) inset,
               0 1px 0 hsla(0,0%,100%,.2);
   cursor: pointer;
   transition-property: background-color, border-color, box-shadow;
   transition-duration: 150ms;
+  width: 50px;
 }
 
-#searchSubmit:-moz-dir(rtl) {
-  border-radius: 2.5px 0 0 2.5px;
+#searchSubmit:dir(rtl) {
+  transform: scaleX(-1);
 }
 
 #searchText:focus + #searchSubmit,
+#searchText[keepfocus] + #searchSubmit,
 #searchText + #searchSubmit:hover,
 #searchText[autofocus] + #searchSubmit {
   border-color: #59b5fc #45a3e7 #3294d5;
-  color: white;
 }
 
 #searchText:focus + #searchSubmit,
+#searchText[keepfocus] + #searchSubmit,
 #searchText[autofocus] + #searchSubmit {
-  background-image: linear-gradient(#4cb1ff, #1793e5);
+  background-image: url("chrome://browser/skin/search-arrow-go.svg"), linear-gradient(#4cb1ff, #1793e5);
+  fill: white;
   box-shadow: 0 1px 0 hsla(0,0%,100%,.2) inset,
               0 0 0 1px hsla(0,0%,100%,.1) inset,
               0 1px 0 hsla(210,54%,20%,.03);
 }
 
 #searchText + #searchSubmit:hover {
-  background-image: linear-gradient(#66bdff, #0d9eff);
+  background-image: url("chrome://browser/skin/search-arrow-go.svg"), linear-gradient(#66bdff, #0d9eff);
+  fill: white;
   box-shadow: 0 1px 0 hsla(0,0%,100%,.2) inset,
               0 0 0 1px hsla(0,0%,100%,.1) inset,
               0 1px 0 hsla(210,54%,20%,.03),
@@ -150,19 +160,19 @@ a {
 #rightsSnippet {
   display: block;
   min-height: 38px;
-  background: 30px center no-repeat;
+  background: 0 center no-repeat;
   padding: 6px 0;
-  -moz-padding-start: 79px;
+  padding-inline-start: 49px;
 }
 
 #rightsSnippet[hidden] {
   display: none;
 }
 
-#defaultSnippet1:-moz-dir(rtl),
-#defaultSnippet2:-moz-dir(rtl),
-#rightsSnippet:-moz-dir(rtl) {
-  background-position: right 30px center;
+#defaultSnippet1:dir(rtl),
+#defaultSnippet2:dir(rtl),
+#rightsSnippet:dir(rtl) {
+  background-position: right 0 center;
 }
 
 #defaultSnippet1 {
@@ -217,7 +227,7 @@ body[narrow] #launcher[session] {
   white-space: normal;
   background: transparent padding-box;
   border: 1px solid transparent;
-  border-radius: 2.5px;
+  border-radius: 2px;
   color: #525c66;
   font-size: 75%;
   cursor: pointer;
@@ -299,10 +309,6 @@ body[narrow] #restorePreviousSession {
   content: url("chrome://browser/content/abouthome/history.png");
 }
 
-#apps::before {
-  content: url("chrome://browser/content/abouthome/apps.png");
-}
-
 #addons::before {
   content: url("chrome://browser/content/abouthome/addons.png");
 }
@@ -322,10 +328,10 @@ body[narrow] #restorePreviousSession {
   display: inline-block; /* display on same line as text label */
   vertical-align: middle;
   margin-bottom: 0;
-  -moz-margin-end: 8px;
+  margin-inline-end: 8px;
 }
 
-#restorePreviousSession:-moz-dir(rtl)::before {
+#restorePreviousSession:dir(rtl)::before {
   transform: scaleX(-1);
 }
 
@@ -339,21 +345,21 @@ body[narrow] #restorePreviousSession::before {
   display: block;
   position: relative; /* pin wordmark to edge of document, not of viewport */
   -moz-box-ordinal-group: 0;
-  opacity: .5;
+  opacity: .2;
   transition: opacity 150ms;
 }
 
 #aboutMozilla:hover {
-  opacity: 1;
+  opacity: .6;
 }
 
 #aboutMozilla::before {
-  content: url("chrome://browser/content/abouthome/mozilla.png");
+  content: url("chrome://browser/content/abouthome/mozilla.svg");
   display: block;
   position: absolute;
   top: 12px;
-  right: 12px;
-  width: 69px;
+  offset-inline-end: 12px;
+  width: 67px;
   height: 19px;
 }
 
@@ -362,9 +368,6 @@ body[narrow] #restorePreviousSession::before {
  * rather than upscaling the original-size ones (bug 818940).
  */
 @media not all and (max-resolution: 1dppx) {
-  #brandLogo {
-    background-image: url("chrome://branding/content/about-logo@2x.png");
-  }
 
   #defaultSnippet1,
   #defaultSnippet2,
@@ -380,12 +383,15 @@ body[narrow] #restorePreviousSession::before {
     background-image: url("chrome://browser/content/abouthome/snippet2@2x.png");
   }
 
-  .launchButton::before,
-  #aboutMozilla::before {
+  .launchButton::before {
     transform: scale(.5);
     transform-origin: 0 0;
   }
 
+  .launchButton:dir(rtl)::before {
+    transform: scale(.5) translateX(32px);
+  }
+
   #downloads::before {
     content: url("chrome://browser/content/abouthome/downloads@2x.png");
   }
@@ -398,10 +404,6 @@ body[narrow] #restorePreviousSession::before {
     content: url("chrome://browser/content/abouthome/history@2x.png");
   }
 
-  #apps::before {
-    content: url("chrome://browser/content/abouthome/apps@2x.png");
-  }
-
   #addons::before {
     content: url("chrome://browser/content/abouthome/addons@2x.png");
   }
@@ -422,8 +424,8 @@ body[narrow] #restorePreviousSession::before {
     content: url("chrome://browser/content/abouthome/restore@2x.png");
   }
 
-  #aboutMozilla::before {
-    content: url("chrome://browser/content/abouthome/mozilla@2x.png");
+  #restorePreviousSession:dir(rtl)::before {
+    transform: scale(-0.5, 0.5) translateX(24px);
+    transform-origin: top center;
   }
 }
-
diff --git a/helpers/DATA/firefox/abouthome/aboutHome.js b/helpers/DATA/firefox/abouthome/aboutHome.js
index d3b4aa955b9a6c4afaa9649ab0bbadc89d87e92c..58718edd20904340f77914d6be14db4968a0722b 100644
--- a/helpers/DATA/firefox/abouthome/aboutHome.js
+++ b/helpers/DATA/firefox/abouthome/aboutHome.js
@@ -2,158 +2,37 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-const SEARCH_ENGINES = {
-  "Google": {
-    // This is the "2x" image designed for OS X retina resolution, Windows at 192dpi, etc.;
-    // it will be scaled down as necessary on lower-dpi displays.
-    image: "data:image/png;base64," +
-           "iVBORw0KGgoAAAANSUhEUgAAAIwAAAA4CAYAAAAvmxBdAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ" +
-           "bWFnZVJlYWR5ccllPAAAGrFJREFUeNrtfHt4VdW172+utZOASLJ5+BaIFrUeXkFsa0Fl++gDnznV" +
-           "VlvFxt7aqvUUarXtse3Bau35ak/rZ9XT26NtfOvV6wFET+FYCQEKWqsQIT5RCAgSXnlnrzXneNw/" +
-           "1lphJSSQ8BB7bub3zW+LO3uN+fiNMcf4jTEX0N/6W3/rb/2tv30smtnXB3zmRi2FQakxQNKX3WkW" +
-           "9S/tgW3HLpmQM543A0BWVSHMYGIwOTDxzxrOf3/RQQfMZ2/SLAvKhTFVBGUqKFONH2QAzwOMF38a" +
-           "wHhYZAxWAqhe/iszp3+b970d/sInc57vz/J8L2eMB2MAEYkBQ6DQ3dRw4dq7AUjcP3rAfPZmLWXC" +
-           "LHKoIAcQAUxaB5EaEfc6AEBhjDEwmcx43/fO9HxT4vkReBIAAZgjgodW3NcPnn1sHgD/iHknn+0d" +
-           "6s8XEUhsXXac/34WAAGw8afuT8GZ3X055YeSJcIsG+pMZwFn0UihezRofPt3G54f/0E8cNMN+Myo" +
-           "8jVTCgYd823PLzrPeIBnABiUQ1F+UoWsVOYb33mkoKp/7/dKyT0AGc47X4s0sjBEoLxbBqAQAMfW" +
-           "Rfe38B4BM+VHUkYOs8mi1FrABbK4dcvK73zwp1M3xYPOxANKBqbpCdXNGb0UwPKRF74xpfDQ0t+K" +
-           "54+IvlKoahmAhaO/mv/ZmicG3tqPgT61ZM2dZMQJOYhIdByRM/F3dCCOox4Bc3oEliqyyNoQCPPu" +
-           "sXceKZqRsigu7pwaWBowiRb46+f9Q1V2wl1nDx09/R7jF30x9adNlN8yPx4DHwht+B/cBIBoRqeI" +
-           "E4hE/oshTcB0wNbT6/o/zrhFyohR5ZxmrVWE+fDxdx4puhGAH4OkPe5B6pykeJAc/7cDEMZ/095Y" +
-           "870P339m+BXs2v4kbCFsm9u2vnpJ3bzR7wAo2B/R2v+PjSnyXcRxtOLUSXFxwAFz5i2SZUIVO82S" +
-           "BWye/vLOIwNvjL8OYqCEfXCmJAZPHkC7sK1REbj2+lmbq86qTVmmfuuyN2cTiREWKCvACgml9kDL" +
-           "7HQksehsZmSdA6yVpsa6P38v3swg7m4vN1dGXrThKGP8yS5fP33j/LEvxKDbl2f2A0YFCtkZQDOa" +
-           "PjLAnP4jrmBGjh1AVhG2ttxfX33++vjY2eeNXf/siLUAzgEwMJZrY2vF/Vu/t4BRqCqgCmj07wMV" +
-           "HXUCzJQfUlZE72ICnANcqNj21h8eiK1AX46gXh29KT9H+rd9XxBjYGCgig7QHOgjPgMAKigXQZYp" +
-           "si4uCOc3v35zY2wF9ufGSgxA7fdd9g8ho9ol4P4ojiQWnSUMMANECrJNy1NWYH8eGfsEvJbLv1IK" +
-           "1XIAUwEtA0xplJMwjcaYlTDeShg8dOgjj6/cJxNYfWIWkHJoh5yyjkSZ8RbB89YBZq4/pXafGeuz" +
-           "b9WciXJxo2B2houqgAjABJCLOwFMqFv57+bBxMIAJm1det3avnl1OYCLAeSgWhofaY1QXQSRuYc+" +
-           "/OiD3QLmUzNdqTBKhRVMADsF5beuToXJB90KtFz+lVIVniXOVUAUqjpXVB4WwPjGTPB8/0zjeTnj" +
-           "ezl43szmKy6vNkDF4MeeXNc3oJyUhfAMkJsJkSxUVrLos6o6z/O8Ucb3phrPzyHKeVTwkpPXseg3" +
-           "Cqe+1SfG+swfaw6KGTAoJ5eyGF3IBeEIJB2AcXxb0FI/L45uFQBMGiu6Z3ai9eqrclBUClFWVatV" +
-           "5GERNT5wEVQnQLUcIuVNX75kFjn60rA5c1d0AoywlkcxfdwZ2LSgbOmBZAv70povu7RcyFUqcZYd" +
-           "Pbxix44fnLv8pbYUOWh+P3ZM9uJRo34xoLDgq8b3YTxvqhqsaPzyJTdmn36msjdyqPqkMhWqBFGZ" +
-           "MtV8uDX4zMjp2zemyEoPgGn4zyOvGzy48A54GcD3Sz1jFrqqE+4uOOvdmb0ASlYEs5mQE9afUdhy" +
-           "0yv3lHzwya/8ZcjgI0+5yssU3QKYkgQ4Ivp60LL1n8kBQfOWuvdnj6uLldgHQKoKxU7HV/eg2y1X" +
-           "XXmXEs1U0ZVb29o//4k5c5P5eQB+s+68aVeUFBTcCxUoS6kRWfjhueecc9SfX3ytA9QTr7eVACqY" +
-           "FDYEwnbB2qcHHg6gLY6ODhpomi77coUyVaojhKH9+ZHzF/wqXiztEg34APxNX/jCvQOLCi83fpy8" +
-           "UsCJXHLYnGdn785S0uKTyyBUBXJZcW5x4bSN56ciyLQcD4Bf/+ThVwwbUvRb+JkoswqAWX5b9Lm1" +
-           "M3uSM/UnUiaCKiZk2blvvnxX0ePxuBNAmpMur51wyLBPzjVeBBoVwIXBk6vuP+SG+LkcuwkWAA96" +
-           "/JjZKnKxkACkkFb5Nztz220xX9bJlWi+6opKFalQlpqlmzZNu6B6SaJ0knKJ/DW5qd8p8TO3x6AB" +
-           "qza1EE06cdmy9wDAY5LjmBTMkQnUnZ42H0ywNF52aU6FK4UY5NySI+cv+E3MCnMM5HyqtwFoO3rB" +
-           "gmuDMFjGjiCOIEQwzH9c+7lzju+JTaYlJ2ehUqXMWWFqeurFxqsAFMVf25Ss9kTOEZdvebClJbxT" +
-           "yUGZoEzwlL/b9tzRX+pOztSfSBZApSqyIrL45buKnkaUJEzLCN5+csxr+ab6fyILkI2OIZYBlx9/" +
-           "2bYvpLgw2+EqKLKdwoceVKJp+tfuEpYKZcaW1tZbLqheEsbj3GV+oxdV3x0GwQZrHUIiWKIST3Vm" +
-           "DG54zFrKrBBWiGgSyx9Uv6Xh0n/MKlGlOII4h80trQ+kuJt8HGklZHg6FZF/Y/uOb7O1YOvAzkGt" +
-           "Kxmoehe6SYNEpkErwZIFC4I2fuLKf2tLtDOPzumPhA6wAPJDLt1yuzjaAEcAMUCMApXfvPP7IcO6" +
-           "gkYFs4RRpgy49qanUsAPu/T8W48e/YwL6S/kYtBYwM8U/yu6KVlQUShr9CkKyK7b1vDVy0qVeaYy" +
-           "gaxbdeK85/8a/z7sYR3zgXM1gXUInEPoCEw8PR6z8YQxaidQPh6RrgrPEOZS4chKjFuydEEKFD1x" +
-           "QgrAnfO3V98Jw/B5dhFgmByU+MK/nnrq6K6gcQtPyqlIubJAibCxPv/fsVVNgCI9yGEAQdBq71NH" +
-           "UEdQIoBo5PBBeklazuQfSpYFM0UAFsDmd2yMf9+1XkUT3otc8AiRwpFChCBCI0detGbSLtYr5uw6" +
-           "tk26XctZwgxhRt65ZSmr1t389M1Jk85wzKcHRAiJkCfasDnI/0sMGN+jlLMrAigMhp0+f+TBBIw4" +
-           "milEYOcQBHZZAoZeEIgKgIIgeJbD2MqEFhxaDAFmdAWMisxQFigzlAUnX9e4rA9yeHuTna3koBQB" +
-           "RogxwOPvxNbQAAA7VHQEFKSQKEFIu4lA5d3HiiuFNB4XQZlhUHBK11QO0oRdD7ouROVCkeJZG7ak" +
-           "/KBOYHlz4sTy1WVlVY5oYego2+bs82+3tFw6YcVrp01dteqpxNfyhKQuGlxCMSsKBh570ABT/8XP" +
-           "5dhRVpyDWAd2Ns0O9yrhWdfcMpvCEByEoNCCwhBgvgBdM+PM5TH5FPW+1ZLo8de2viehe12dhVoH" +
-           "OAtDPO61O4o+kYCTnE5wVuGsxlzKHul7BUDKdomKgwpB2QHAyNiP2Dl+0Z2WRXZ9YP0F55WJczvX" +
-           "0jp09U3fLiurWD1+/NqQaHZIVNbu3O1vt7aM+fSqVRWXvPvu0pRldwAkQ5brjO+NMh0kgMIvGjYZ" +
-           "wIKETPxIrYt1U5M8iThKJil9yZGc++ab298dP36Jb8wZohqhQHRErKEeAA6fG5FT5yIlYYI6tzfO" +
-           "vtiQni3MYDw0ChqEgUMyejyAdwGwDeW4ZI9FAGQOmwzgv/cERmZbDXhnKBNUGMJkUhGVduSSJJ1P" +
-           "6rw8HIalJo7ilBkchgCgL48fVzLceDc4kZnWUdap1AQi10x+660n4jXyk1M7ZXEZgHhMUkMO4Njp" +
-           "hQGMf8h56Fx++ZE1a+1xZC2Szjs3sk9uUEhUbSMvP3LeyOGZ0tKJiearo1J1DHVRPYmS7JUcG2g1" +
-           "pxxUsooBnpmQWAOb10YbKGygcKFCZOC0XqxrRKokCBQG5euX77In2k1P+2hhWEZBAAoCuCCEcW7E" +
-           "2xMn/m6oYo0jyjnmuc3Off6UN96YMvmtt5LILSmQ61r3xAA0I+xqPBiIejAd1f7e2MPPfvm4LQs/" +
-           "89a+bP6nZuSzfsaU+T7g+UBixYQVRFGS01kFO22srRy0EgA4CEvFRHS3MANMY/fGbybmlQqAFSBV" +
-           "sCp8kWwCGA5dqefFShnnRV77ecHYU37iXuqLoB0tsuIo34v3NfJR1GlJsrnOuiXGy1y8k+rwxh57" +
-           "3srSD/6rbLdra7yMqgjUCGAULR8uWr0LJPYAGApCeCbKNygLPKIxJ65YOSU+YpLUUCYGiqBzQVy3" +
-           "Ft1zbevnJl60UARqACgcVDo9ZZr63Mqua68QxlpmrWJC1FmrmLSKCFVktcpZrbKhzg4D26E5Lgjg" +
-           "8vnoMwwh1hU/dvTRo/qcDyJqcESw5Dp6o3XNHVrqLDSubAdFjuXwwWZcX+Wc9APboKxQUoiLurXa" +
-           "IYfCpjlCDsoxZ6OCouLRt+xpbY3nA8aDMR6E2+9vffOWxl02cQ+Bbdjevt7l83D5ABRaKNHYO484" +
-           "YmgMkoJ4jElCOL8Lz9NN87YumrRDxc2DElQZKgIVhZcZcO1hZ74wtK/H0thvtuXGXdM2S0S/ziQ1" +
-           "FPJiG7pHwvbgDhtKnQ0VNhCEeUHQLmiuf2fymieGvJGY8DCfX+yCEC5xWIlwtO+P6+s4VESJGS4+" +
-           "liwxKjZ/2FGRZvPhYgktxEZdHWOAr2P34ihWIQWTgJ2CnWJbo9Ymz1g/5+h1QsF9wgKJ19Z4hV87" +
-           "4fKNE3cnx8v4V8H4UOjqhvce+zW6qdWVlOvSjQsDlw/WUT4A5QNQGIJDizMPHXR+CiRBb4GSzlYr" +
-           "26Z7vYKSC42nUOPBqA9VU1I0ZOJPEYWj1NvVW/3AoEUAFgO4IzZ1hYk2jf9WUw7IjCIXHUVhXrFp" +
-           "/sQtKZPIoXXr/PjoSkZeoHo6gP/bFyeciECqcHG3IrXp37a2SF3xQNPxRAXgq5nS1bHsDWCYALYA" +
-           "u+h0W/impI8Pad9ec/vAoWVTjV84Nsn5FAwcvmDMN5rOqf1jyatdHzjuGjvThloKYH3b5qVXt775" +
-           "44ZuN1QEKknF3a6ImfDee4tWjBrV6R5Qoeq1AP6Avaxx8gDolhdPXAh2qzQmZFQ4ZhALrj/mvLpT" +
-           "+qhxya0BP5VVZQBkA6jNR0AJ2xUUcjKGjsx4k3PVYUwaJU6rJ3reLiHlHppjBjF3fLYSzU/noEZ8" +
-           "3611VusoVJBVsFWAdezim/3jemSFe+SNIsvCpAhCXf7TBZI+PnTr4nO2t2xcME3ZroYKIouEEqDo" +
-           "xfHfav/GxOttFgBOucGWll0XVqrqXYDWNLz3aG7bsovWp4i2TvkhScLqNBezq/M/zxLBxV2Yx/75" +
-           "yCPP6usc04CJ+B3bcLMwQTiK+0UIwgz1ip8+4pyaYX0x0SnWMkjnYGygkm9nBO0MGzoI2TTDyQBw" +
-           "7ubNawPmeZYZNt5wZhrxX8OHX9yXSTJzGcVgIWasbs8/hc7XRzXM670cg0Vs5H+MHm6u74ucrb/K" +
-           "lAlFPoySoqFFn+rm+OCGV762df2cYWe4fP0M5qDWhoowRIm1/h+s1YZx3wrVOV1LDhXMaGzfXntF" +
-           "46vXtMQRS/clsqRRT9SNd0GMBo6edRStZbKeg4D//ciQIcP2CTDbqsdVKQePq1JMFkXxv4qO9AaM" +
-           "fPGoaeuG9kXp0LkU0wGgMFC1gYAdAeyg0m3IrE3W3mtTvodjRpHq9X3xL4h5Qsq63P/z9ra6LqSc" +
-           "vvmBPkwOTex2lnf4wNee/47fa99NGGVJ8Zl1qP3UPfwkdr15mDDV+Y3Pf+Kh9c9kz9pee89J7dve" +
-           "vaRt+7qLbVv47y5UUKggp3BB/okNz0/aHI8332OaIgELxWDpptQtt6X+Qcu03nVYGQYxjxzl+7/e" +
-           "GyvjdYrCtv31JiW7QTjy6qWj83jF4AeP/MLaodiHRtZBXAihEEIWkq4eSgGmvKGhqpX5d1YEVhiW" +
-           "BaI6Zf6QITN7s5ELhw4tZZavkwhIZMOC1rZfo5s64nPv4+1NzXot2/hYiqKckglH4/7eRojCOosp" +
-           "St6u2ijfS1Hv3I0SdVy5aam9ecumBeOqN8w7aRkxSlMVdRDmRHa4m5xWPKPEusUA6maIrcy/cCKw" +
-           "InASKaCoXrlo2LAH+xpMpAEjLauu2ObaNnxVmZqUHaI8SaR+KnIhTPHCo6ZtOn6vk4qUPNNGnV2P" +
-           "J0ptENweMq92zHBMcMwwIrfMLS6etKdJEnMlCYOZm9YE4dUPkWvsIUckJ/+SZwd5PCEOEBc5rh7j" +
-           "grqf+VfvSc7mO/xZSihVAra3YMY/PqqrUhZVe7C8yRHTBqAVQJuQN5idgJ2ASQAz4PJjptWevKc0" +
-           "RZQ0TQATRWDd/dmFDQ2VeaLH0z4dRVTK9EXZ7IqFJSXH7W6eLw0blntp2NAydGOSqPGVs/5mW9Zc" +
-           "JGKbRSxELIRDCFuIuAmiBa8eMW37rcdc1JDtM+3PYdSp43k9/ulPgmDrsnz+vFBktRWBZYEVKSlU" +
-           "feH5wYPP7u5Hfy4uzi4oLq50IjkSaXrf2vIfBPnV6PlKiwKg0XfyNe2BPkmJ8+oUGeh/bLjNu7En" +
-           "0Gy+w5sppLcyKRra9IZJ98hTvciop9MPSSFUwGTnEjHICsgpyKHYHzjquWMvrJ+wewUENPFjCIAx" +
-           "k3uStyIMbw5FVieWJvJpBE5kgqq+X1VcPGdRcfHMxSUluSUlJbmlUZ+1tKRkLRGVnrZ9Rw12rSLt" +
-           "sDpFg8vmfbpw0HH3wcuMMSaiao2XAbwMjPFhPL/ReN6DfsY8tHHekN0WXR929vqsCpWruFshPEqF" +
-           "o3IyADuWTxgea1rYTbRVeEMmc+SnCwp+OcB4l3kmLq0D4BnzkA/MMUBjvDMXC1DBqlkCFr9N9E//" +
-           "HIZpPyDsQVuTFwsMfP273k8GFeLbvo9izwe8DGA8VMPgIc/D2piALlPFDGWUMqNuazOun/RbeQU7" +
-           "L/zl0cfC+SPOXjG84NBRawCvJNoSE7PiBgr5Xx/MKf7jLnzIbUPKlHVF5C11KgJfD9+shY8Vxjd3" +
-           "0780rEvP8bFDDvnVQGO+lU5MeTDwzM5aTbOzNyrw/XNbWx9JFLknk+sjqjobUHJq9XS/cNj3jZcZ" +
-           "Ac9PwBIDyAeMD2O8RhhvpTFYqYpGqMQOM2UhlFOhsvjfgNJ6ofxyoZaXbHPt8mDNjDU9ACYBbyGA" +
-           "AT/KZEZ/MpO5qciYyRlgROeJGSh0nQCL21Ufmx4EL8dMpqScRt4DFVAAYMCtORx+0Rhz7aFF+GJB" +
-           "BmNM/JKklGo1KlBtHZ474U79P9hZOZcQYb0unD/mwu05qADCZwE4C8Y7I3kTk4kFx+mUuzfMKf5e" +
-           "+rn+rUMq4PR4hFII0gw0xpdvGAWGoDqHf9m8IuV8m2Qtf1pQMPok37+50JhpHlC8EzwRcAzwOqs+" +
-           "Vkv06I+da04nInd3RvuxgCIAhcUTF5zvFQ79oucP+Cy8zIjE6qQnt5Pviu5IqAogVKNCNSrBUte6" +
-           "blnrqi/Vo3O9rI3Pc7cbP6sgGQcAf7rvl3zK908uBKjAGK5jrrmNKKHj/RS3E6L3V2USLUzkZAB4" +
-           "i75pTivwwQMyoKYQ685+QOtScvzUHPbIlJ54ZVsuDPTrZDmnQqUQggo1qkoNRDyFeJ6XGQfjF0fW" +
-           "3O9YWxW6adNzw36Dzm/JKEJ0k7QgtfiSygd1vSrkdZ3jlb6fneT7Y+MN1xrmVX9gbkw9q1MdsemF" +
-           "U5wkpwqSRSw49gfZAcPPHOsVlIww/sBjjPEVnqfGZEQlWKVCjWK31TW/dv56pCruU126TGxPl+US" +
-           "IrAgNQ7TQ+pNukQqfalLNimApvMt6CZMTvsiu3VOJ17XnrNWZ9m85oK8Qmz4sFB+CeXrF29dfOqG" +
-           "1PwKs6fOKyvKjrnb8wrHGD8TWfCOEoX85zb96dgXY9leN2NM+y3SJZG4u7XsSldIykFPz09NHxbR" +
-           "T2U3M11AsKf8aRqtnBqQoG91oWkGOS0/XaQo2Pf3u5mUDK9LukD7Mv5Tv9teSQ4VzipsINUtW9Zc" +
-           "t/mFiRu7WbcOuQNP+MXQ4hGX3mEKBl1mjB9bbwAqSz6cf+TZ8Qaabta/u6hM92ItpZs5dvyor5R/" +
-           "dwvp9QAa6eFzfxRlpVMk2mXh93czeyPn1Bn5ShWtYAJsyEve+OPgC7Hzmgx3USDtejQedlbtDX7h" +
-           "0Ns6HChV5LcvP7rpb1+qx/690dHrtewL05c2c7ZLtrM91fOpDGjXyvT9+WYBPQAg3NPcey1n4vVt" +
-           "FUJSIfGNjJZNy2ekkqzpazIJOefSoTaA9q1VY+5Wbvs9NAoYVBkFh5Sesi9lJ/u6lt5+WETpoi2M" +
-           "PpZU/k9szmKGtVGRWBjQ6g3zP78pxfSGKb+tJ4LPAsi31S/+uXCUlVZmCIc+DlI15L4Cpr/1FA1d" +
-           "0VLqAilzgcCGChdQc5eoTXqpkNS66hv1YLsUElURiG1sOZj7lunf3v3fwlBKjRfX9EjEHKcscV98" +
-           "D40zRKIqgEpz4yvTVnfjU/VbmL/r4yhwTTbPCNsZNi8g50/OnvbCsXu5wQqVURCBuOb7seu98n7A" +
-           "/L23Tc8NX8mW6pL73UoOhYPH/GJv/I7Dzlqbg5pRUG1q++A//+Ng+4f9gDlATVzLHfErZiHioKrn" +
-           "H37uhgeG597sdYnIYeeszypQqQawre9dHNbd0Yj9/5KnfsB8DJpuXXj8Q+ryj3dUZglD1Uz3MsWv" +
-           "HX7uh1fv6QGHn7upAmrWQpEV2zSt+bVptamw+6C9VaP/hcoHrvkABgydUjPLywy6Oboh6HW6PgLj" +
-           "LYqStqYRQHKDMQflMhXOQrnata27tvGvufrEn8ZBfmdPP2AO7NpmAAw85B8qTyjKlt1svAHTjPGL" +
-           "k4w0jAcTAyllnBoh9Kxw/tEdS8cuT0WyH4vX1PYD5qMBzQDE2eFDxz09zsscWuwVHX6a8YwaFAiM" +
-           "NAkHr4vdUdf82rQN6JwnSl4N4vAxeKdxP2A+mjXuKTvcXcY9TdOnyxPk4zKZ/vbRAqe75C3QfZZY" +
-           "0P/y6/7299z+H4QrdGsoib8JAAAAAElFTkSuQmCC"
-  }
-};
+"use strict";
+
+/* import-globals-from ../contentSearchUI.js */
 
 // The process of adding a new default snippet involves:
 //   * add a new entity to aboutHome.dtd
 //   * add a <span/> for it in aboutHome.xhtml
 //   * add an entry here in the proper ordering (based on spans)
 // The <a/> part of the snippet will be linked to the corresponding url.
-const DEFAULT_SNIPPETS_URLS = [ "" ];
+const DEFAULT_SNIPPETS_URLS = [];
 
-const SNIPPETS_UPDATE_INTERVAL_MS = 86400000; // 1 Day.
+const SNIPPETS_UPDATE_INTERVAL_MS = 14400000; // 4 hours.
 
 // IndexedDB storage constants.
 const DATABASE_NAME = "abouthome";
 const DATABASE_VERSION = 1;
+const DATABASE_STORAGE = "persistent";
 const SNIPPETS_OBJECTSTORE_NAME = "snippets";
+var searchText;
 
 // This global tracks if the page has been set up before, to prevent double inits
-let gInitialized = false;
-let gObserver = new MutationObserver(function (mutations) {
+var gInitialized = false;
+var gObserver = new MutationObserver(function(mutations) {
   for (let mutation of mutations) {
-    if (mutation.attributeName == "searchEngineName") {
-      setupSearchEngine();
+    // The addition of the restore session button changes our width:
+    if (mutation.attributeName == "session") {
+      fitToWidth();
+    }
+    if (mutation.attributeName == "snippetsVersion") {
       if (!gInitialized) {
-//        ensureSnippetsMapThen(loadSnippets);
+        ensureSnippetsMapThen(loadSnippets);
         gInitialized = true;
       }
       return;
@@ -161,15 +40,17 @@ let gObserver = new MutationObserver(function (mutations) {
   }
 });
 
-window.addEventListener("pageshow", function () {
+window.addEventListener("pageshow", function() {
   // Delay search engine setup, cause browser.js::BrowserOnAboutPageLoad runs
   // later and may use asynchronous getters.
   window.gObserver.observe(document.documentElement, { attributes: true });
+  window.gObserver.observe(document.getElementById("launcher"), { attributes: true });
   fitToWidth();
+  setupSearch();
   window.addEventListener("resize", fitToWidth);
 
   // Ask chrome to update snippets.
-  var event = new CustomEvent("AboutHomeLoad", {bubbles:true});
+  var event = new CustomEvent("AboutHomeLoad", {bubbles: true});
   document.dispatchEvent(event);
 });
 
@@ -178,11 +59,39 @@ window.addEventListener("pagehide", function() {
   window.removeEventListener("resize", fitToWidth);
 });
 
+window.addEventListener("keypress", ev => {
+  if (ev.defaultPrevented) {
+    return;
+  }
+
+  // don't focus the search-box on keypress if something other than the
+  // body or document element has focus - don't want to steal input from other elements
+  // Make an exception for <a> and <button> elements (and input[type=button|submit])
+  // which don't usefully take keypresses anyway.
+  // (except space, which is handled below)
+  if (document.activeElement && document.activeElement != document.body &&
+      document.activeElement != document.documentElement &&
+      !["a", "button"].includes(document.activeElement.localName) &&
+      !document.activeElement.matches("input:-moz-any([type=button],[type=submit])")) {
+    return;
+  }
+
+  let modifiers = ev.ctrlKey + ev.altKey + ev.metaKey;
+  // ignore Ctrl/Cmd/Alt, but not Shift
+  // also ignore Tab, Insert, PageUp, etc., and Space
+  if (modifiers != 0 || ev.charCode == 0 || ev.charCode == 32)
+    return;
+
+  searchText.focus();
+  // need to send the first keypress outside the search-box manually to it
+  searchText.value += ev.key;
+});
+
 // This object has the same interface as Map and is used to store and retrieve
 // the snippets data.  It is lazily initialized by ensureSnippetsMapThen(), so
 // be sure its callback returned before trying to use it.
-let gSnippetsMap;
-let gSnippetsMapCallbacks = [];
+var gSnippetsMap;
+var gSnippetsMapCallbacks = [];
 
 /**
  * Ensure the snippets map is properly initialized.
@@ -192,9 +101,7 @@ let gSnippetsMapCallbacks = [];
  * @note Snippets should never directly manage the underlying storage, since
  *       it may change inadvertently.
  */
-function ensureSnippetsMapThen(aCallback)
-{
-return;
+function ensureSnippetsMapThen(aCallback) {
   if (gSnippetsMap) {
     aCallback(gSnippetsMap);
     return;
@@ -207,7 +114,7 @@ return;
     return;
   }
 
-  let invokeCallbacks = function () {
+  let invokeCallbacks = function() {
     if (!gSnippetsMap) {
       gSnippetsMap = Object.freeze(new Map());
     }
@@ -218,43 +125,52 @@ return;
     gSnippetsMapCallbacks.length = 0;
   }
 
-  let openRequest = indexedDB.open(DATABASE_NAME, DATABASE_VERSION);
+  let openRequest = indexedDB.open(DATABASE_NAME, {version: DATABASE_VERSION,
+                                                   storage: DATABASE_STORAGE});
 
-  openRequest.onerror = function (event) {
+  openRequest.onerror = function(event) {
     // Try to delete the old database so that we can start this process over
     // next time.
     indexedDB.deleteDatabase(DATABASE_NAME);
     invokeCallbacks();
   };
 
-  openRequest.onupgradeneeded = function (event) {
+  openRequest.onupgradeneeded = function(event) {
     let db = event.target.result;
     if (!db.objectStoreNames.contains(SNIPPETS_OBJECTSTORE_NAME)) {
       db.createObjectStore(SNIPPETS_OBJECTSTORE_NAME);
     }
   }
 
-  openRequest.onsuccess = function (event) {
+  openRequest.onsuccess = function(event) {
     let db = event.target.result;
 
-    db.onerror = function (event) {
+    db.onerror = function() {
       invokeCallbacks();
     }
 
-    db.onversionchange = function (event) {
-      event.target.close();
+    db.onversionchange = function(versionChangeEvent) {
+      versionChangeEvent.target.close();
       invokeCallbacks();
     }
 
     let cache = new Map();
-    let cursorRequest = db.transaction(SNIPPETS_OBJECTSTORE_NAME)
-                          .objectStore(SNIPPETS_OBJECTSTORE_NAME).openCursor();
-    cursorRequest.onerror = function (event) {
+    let cursorRequest;
+    try {
+      cursorRequest = db.transaction(SNIPPETS_OBJECTSTORE_NAME)
+                        .objectStore(SNIPPETS_OBJECTSTORE_NAME).openCursor();
+    } catch (ex) {
+      console.error(ex);
       invokeCallbacks();
+      return;
     }
 
-    cursorRequest.onsuccess = function(event) {
-      let cursor = event.target.result;
+    cursorRequest.onerror = function() {
+      invokeCallbacks();
+    }
+
+    cursorRequest.onsuccess = function(cursorRequestEvent) {
+      let cursor = cursorRequestEvent.target.result;
 
       // Populate the cache from the persistent storage.
       if (cursor) {
@@ -265,24 +181,24 @@ return;
 
       // The cache has been filled up, create the snippets map.
       gSnippetsMap = Object.freeze({
-        get: function (aKey) cache.get(aKey),
-        set: function (aKey, aValue) {
+        get: (aKey) => cache.get(aKey),
+        set(aKey, aValue) {
           db.transaction(SNIPPETS_OBJECTSTORE_NAME, "readwrite")
             .objectStore(SNIPPETS_OBJECTSTORE_NAME).put(aValue, aKey);
           return cache.set(aKey, aValue);
         },
-        has: function (aKey) cache.has(aKey),
-        delete: function (aKey) {
+        has: (aKey) => cache.has(aKey),
+        delete(aKey) {
           db.transaction(SNIPPETS_OBJECTSTORE_NAME, "readwrite")
             .objectStore(SNIPPETS_OBJECTSTORE_NAME).delete(aKey);
           return cache.delete(aKey);
         },
-        clear: function () {
+        clear() {
           db.transaction(SNIPPETS_OBJECTSTORE_NAME, "readwrite")
             .objectStore(SNIPPETS_OBJECTSTORE_NAME).clear();
           return cache.clear();
         },
-        get size() cache.size
+        get size() { return cache.size; },
       });
 
       setTimeout(invokeCallbacks, 0);
@@ -290,61 +206,39 @@ return;
   }
 }
 
-function onSearchSubmit(aEvent)
-{
-  let searchTerms = document.getElementById("searchText").value;
-  let engineName = document.documentElement.getAttribute("searchEngineName");
-
-  if (engineName && searchTerms.length > 0) {
-    // Send an event that will perform a search and Firefox Health Report will
-    // record that a search from about:home has occurred.
-    let eventData = JSON.stringify({
-      engineName: engineName,
-      searchTerms: searchTerms
-    });
-    let event = new CustomEvent("AboutHomeSearchEvent", {detail: eventData});
-    document.dispatchEvent(event);
-  }
-
-  aEvent.preventDefault();
+function onSearchSubmit(aEvent) {
+  gContentSearchController.search(aEvent);
 }
 
 
-function setupSearchEngine()
-{
+var gContentSearchController;
+
+function setupSearch() {
+  // Set submit button label for when CSS background are disabled (e.g.
+  // high contrast mode).
+  document.getElementById("searchSubmit").value =
+    document.body.getAttribute("dir") == "ltr" ? "\u25B6" : "\u25C0";
+
   // The "autofocus" attribute doesn't focus the form element
   // immediately when the element is first drawn, so the
   // attribute is also used for styling when the page first loads.
-  let searchText = document.getElementById("searchText");
-  searchText.addEventListener("blur", function searchText_onBlur() {
-    searchText.removeEventListener("blur", searchText_onBlur);
+  searchText = document.getElementById("searchText");
+  searchText.addEventListener("blur", function() {
     searchText.removeAttribute("autofocus");
-  });
- 
-  let searchEngineName = document.documentElement.getAttribute("searchEngineName");
-  let searchEngineInfo = SEARCH_ENGINES[searchEngineName];
-  let logoElt = document.getElementById("searchEngineLogo");
-
-  // Add search engine logo.
-  if (searchEngineInfo && searchEngineInfo.image) {
-    logoElt.parentNode.hidden = false;
-    logoElt.src = searchEngineInfo.image;
-    logoElt.alt = searchEngineName;
-    searchText.placeholder = "";
-  }
-  else {
-    logoElt.parentNode.hidden = true;
-    searchText.placeholder = searchEngineName;
-  }
+  }, {once: true});
 
+  if (!gContentSearchController) {
+    gContentSearchController =
+      new ContentSearchUIController(searchText, searchText.parentNode,
+                                    "abouthome", "homepage");
+  }
 }
 
 /**
  * Inform the test harness that we're done loading the page.
  */
-function loadSucceeded()
-{
-  var event = new CustomEvent("AboutHomeLoadSnippetsSucceeded", {bubbles:true});
+function loadCompleted() {
+  var event = new CustomEvent("AboutHomeLoadSnippetsCompleted", {bubbles: true});
   document.dispatchEvent(event);
 }
 
@@ -352,14 +246,13 @@ function loadSucceeded()
  * Update the local snippets from the remote storage, then show them through
  * showSnippets.
  */
-function loadSnippets()
-{
-return;
+function loadSnippets() {
+  return();
   if (!gSnippetsMap)
     throw new Error("Snippets map has not properly been initialized");
 
   // Allow tests to modify the snippets map before using it.
-  var event = new CustomEvent("AboutHomeLoadSnippets", {bubbles:true});
+  var event = new CustomEvent("AboutHomeLoadSnippets", {bubbles: true});
   document.dispatchEvent(event);
 
   // Check cached snippets version.
@@ -378,32 +271,28 @@ return;
   if (updateURL && shouldUpdate) {
     // Try to update from network.
     let xhr = new XMLHttpRequest();
-    try {
-      xhr.open("GET", updateURL, true);
-    } catch (ex) {
-      showSnippets();
-      loadSucceeded();
-      return;
-    }
+    xhr.timeout = 5000;
     // Even if fetching should fail we don't want to spam the server, thus
     // set the last update time regardless its results.  Will retry tomorrow.
     gSnippetsMap.set("snippets-last-update", Date.now());
-    xhr.onerror = function (event) {
-      showSnippets();
-    };
-    xhr.onload = function (event)
-    {
+    xhr.onloadend = function() {
       if (xhr.status == 200) {
         gSnippetsMap.set("snippets", xhr.responseText);
         gSnippetsMap.set("snippets-cached-version", currentVersion);
       }
       showSnippets();
-      loadSucceeded();
+      loadCompleted();
     };
-    xhr.send(null);
+    try {
+      xhr.open("GET", updateURL, true);
+      xhr.send(null);
+    } catch (ex) {
+      showSnippets();
+      loadCompleted();
+    }
   } else {
     showSnippets();
-    loadSucceeded();
+    loadCompleted();
   }
 }
 
@@ -413,10 +302,8 @@ return;
  * @note: snippets should never invoke showSnippets(), or they may cause
  *        a "too much recursion" exception.
  */
-let _snippetsShown = false;
-function showSnippets()
-{
-return;
+var _snippetsShown = false;
+function showSnippets() {
   let snippetsElt = document.getElementById("snippets");
 
   // Show about:rights notification, if needed.
@@ -445,12 +332,13 @@ return;
   if (snippets) {
     // Injecting snippets can throw if they're invalid XML.
     try {
+      // eslint-disable-next-line no-unsanitized/property
       snippetsElt.innerHTML = snippets;
       // Scripts injected by innerHTML are inactive, so we have to relocate them
       // through DOM manipulation to activate their contents.
       Array.forEach(snippetsElt.getElementsByTagName("script"), function(elt) {
         let relocatedScript = document.createElement("script");
-        relocatedScript.type = "text/javascript;version=1.8";
+        relocatedScript.type = "text/javascript";
         relocatedScript.text = elt.text;
         elt.parentNode.replaceChild(relocatedScript, elt);
       });
@@ -466,9 +354,7 @@ return;
 /**
  * Clear snippets element contents and show default snippets.
  */
-function showDefaultSnippets()
-{
-return;
+function showDefaultSnippets() {
   // Clear eventual contents...
   let snippetsElt = document.getElementById("snippets");
   snippetsElt.innerHTML = "";
@@ -493,7 +379,7 @@ return;
 }
 
 function fitToWidth() {
-  if (window.scrollMaxX) {
+  if (document.documentElement.scrollWidth > window.innerWidth) {
     document.body.setAttribute("narrow", "true");
   } else if (document.body.hasAttribute("narrow")) {
     document.body.removeAttribute("narrow");
diff --git a/helpers/DATA/firefox/abouthome/aboutHome.xhtml b/helpers/DATA/firefox/abouthome/aboutHome.xhtml
index ac1c0e945b47ef2d48a8c49eb820fc1f27257679..8612da6d5b309540b013cc2955eccca50933037f 100644
--- a/helpers/DATA/firefox/abouthome/aboutHome.xhtml
+++ b/helpers/DATA/firefox/abouthome/aboutHome.xhtml
@@ -24,126 +24,41 @@
     <link rel="icon" type="image/png" id="favicon"
           href="chrome://branding/content/icon32.png"/>
     <link rel="stylesheet" type="text/css" media="all"
+          href="chrome://browser/content/contentSearchUI.css"/>
+    <link rel="stylesheet" type="text/css" media="all" defer="defer"
           href="chrome://browser/content/abouthome/aboutHome.css"/>
 
-<style>
-
-body{
- margin:0;
- background-color:#f2f2f2;
-}
-#box{   
- display: flex;
- flex-flow: column;
- justify-content: space-between;
- align-items: center;
- align-content: center;
- height: 100vh;
-}
-
-#topSection, #box3, #block-horizontal-margin{
- flex: 0 1 auto;
- align-self: auto;
-}
-#topSection {
- margin-top:10vh;
- order:1;
-}
-#block-horizontal-margin{
- order:2;
-}
-#box3{
- order:3;
- width:100vw;
-}
-
-
-label{
-position:relative;
-bottom:2px;
-left:2px;
-}
-
-em {
-color:#600
-}
-
-a{
-color:#004998
-}
-
-.block-side-margin {
-  min-width: 16px;
-  -moz-box-flex: 1;
-}
-
-#block-horizontal-margin {
-  display: -moz-box;
-  -moz-box-flex: 1;
-}
-
-ul li {
-list-style:none;
-background:#ddd;
-border-radius:3px;
-padding:3px 5px 3px 5px;
-margin:5px;
-box-shadow: 0px 2px 0 #ccc ;
-float:left;
-}
-
-ul li a{
-font-weight:bold;
-color:#666;
-text-shadow:0px 1px 0px #fff;
-}
-
-.titlelink {
-font-weight:bold;
-color:#56728C;
-text-shadow:0px 1px 0px #fff;
-}
-
-#footer{
-min-height:100px;
-}
-
-</style>
-
+    <script type="text/javascript"
+            src="chrome://browser/content/abouthome/aboutHome.js"/>
+    <script type="text/javascript"
+            src="chrome://browser/content/contentSearchUI.js"/>
   </head>
 
   <body dir="&locale.dir;">
-
-  <div id="box">
-   <div id="box1">
+    <div class="spacer"/>
     <div id="topSection">
-      <img src="chrome://branding/content/about-logo.png"/>
-
-      <div id="searchContainer">
-        <form name="searchForm" id="searchForm" action="https://duckduckgo.com/">
-          <input type="hidden" name="t" value="trisquel"/>
-          <input type="text" name="q" value="" id="searchText" maxlength="256"
-                 autofocus="autofocus"/>
-          <input id="searchSubmit" type="submit" value="Search"/>
-        </form>
+      <div id="brandLogo"></div>
+
+      <div id="searchIconAndTextContainer">
+        <div id="searchIcon"/>
+        <input type="text" name="q" value="" id="searchText" maxlength="256"
+               aria-label="&contentSearchInput.label;" autofocus="autofocus"/>
+        <input id="searchSubmit" type="button" onclick="onSearchSubmit(event)"
+               title="&contentSearchSubmit.tooltip;"/>
       </div>
-
     </div>
-   </div>
-
-   <div id="box2">
-<div id="footer" style="  display: -moz-box;   -moz-box-align: center;   -moz-box-pack: center;   width: 100%;   background-color: hsla(0,0%,0%,.03);   border-top: 1px solid hsla(0,0%,0%,.03);   box-shadow: 0 2px 5px hsla(0,0%,0%,.1) inset,              0 -1px 0 hsla(0,0%,100%,.25);">
-<p ><a class="titlelink" href="https://trisquel.info">Trisquel GNU/Linux</a>:</p>
-<ul style="font-size:0.8em">
-<li><a href="https://trisquel.info/forum">Forum</a></li>
-<li><a href="https://trisquel.info/wiki">Wiki</a></li>
-<li><a href="http://store.trisquel.info/">Store</a></li>
-<li><a href="https://trisquel.info/donate">Donate</a></li>
-</ul>
-</div>
-</div>
-</div>
+    <div class="spacer"/>
+
+    <div id="launcher">
+      <button class="launchButton" id="downloads">&abouthome.downloadsButton.label;</button>
+      <button class="launchButton" id="bookmarks">&abouthome.bookmarksButton.label;</button>
+      <button class="launchButton" id="history">&abouthome.historyButton.label;</button>
+      <button class="launchButton" id="addons">&abouthome.addonsButton.label;</button>
+      <button class="launchButton" id="sync">&abouthome.syncButton.label;</button>
+      <button class="launchButton" id="settings">&abouthome.preferencesButtonUnix.label;</button>
+      <div id="restorePreviousSessionSeparator"/>
+      <button class="launchButton" id="restorePreviousSession">&historyRestoreLastSession.label;</button>
+    </div>
 
   </body>
 </html>
-
diff --git a/helpers/DATA/firefox/abouthome/mozilla.svg b/helpers/DATA/firefox/abouthome/mozilla.svg
new file mode 100644
index 0000000000000000000000000000000000000000..ecf470ee1038b0a562ed3b3c055cf46e3d1bdd0a
--- /dev/null
+++ b/helpers/DATA/firefox/abouthome/mozilla.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 134 38">
+<path d="M54.2,21.8c0,3.2-1.6,5.2-4.1,5.2s-3.9-2.2-3.9-5.1,1.5-4.9,3.9-4.9S54.2,18.4,54.2,21.8Zm61.1,3.5a1.7,1.7,0,0,0,2,1.9c1.7,0,3.5-1.2,3.6-4l-2.4-.2C116.8,23,115.3,23.4,115.3,25.3ZM134,0V38H0V0ZM39.2,26.6H37V19a5.4,5.4,0,0,0-5.7-5.8,5.6,5.6,0,0,0-5.4,3.6,5.4,5.4,0,0,0-5.4-3.6,5.5,5.5,0,0,0-5.1,2.8V13.6h-7v3.6h2.2v9.4H8.4v3.6H18.6V26.6H15.4V20.8c0-2.3.9-3.9,3.2-3.9s2.8,1.1,2.8,4v9.4h7V26.6H26.2V20.8c0-2.3.9-3.9,3.2-3.9s2.8,1.1,2.8,4v9.4h7Zm19.9-4.7c0-4.6-2.9-8.7-8.9-8.7s-8.9,4-8.9,8.9,3.5,8.4,8.7,8.4S59.1,27.2,59.1,21.9Zm18.7,2.5L74,24l-.8,2.6H67.9l9.2-10.5-.4-2.5H62.1l-.6,5.8,3.4.4.7-2.6h5.2L61.8,27.7l.5,2.5H76.8Zm8.5-.1h-5v6h5Zm0-10.7h-5v6h5ZM94,30.2l7.2-25.4H96.6L89.4,30.2Zm9.7,0,7.2-25.4h-4.7L99,30.2Zm23.8-.4V27.3h-.7c-.8,0-1.1-.3-1.1-1.3V18.9c0-3.8-3-5.6-6.6-5.6a16,16,0,0,0-7.1,1.5l-.6,3.8,3.8.4.5-1.9a5.2,5.2,0,0,1,2.5-.5c2.7,0,2.7,2,2.7,3.7v.6h-2.7c-3.8,0-7.7,1-7.7,5.1s2.7,4.8,5.1,4.8a6,6,0,0,0,5.3-3.3,3.4,3.4,0,0,0,3.6,3.3A6.4,6.4,0,0,0,127.5,29.8Z"/>
+</svg>
diff --git a/helpers/DATA/firefox/branding/content/about-logo.png b/helpers/DATA/firefox/branding/content/about-logo.png
index de2af008a99e2b8f063a30a1a4a852efb7e1d6f4..b518914bba2a5d5bfa2d8fa9a08d107a890142be 100644
Binary files a/helpers/DATA/firefox/branding/content/about-logo.png and b/helpers/DATA/firefox/branding/content/about-logo.png differ
diff --git a/helpers/DATA/firefox/branding/mozicon128.png b/helpers/DATA/firefox/branding/mozicon128.png
index 09547088a1a92670f45c4ae7b145a9ca2ebc4051..9c462371218ffbfbf6e5fc52f0e6713b6102844f 100644
Binary files a/helpers/DATA/firefox/branding/mozicon128.png and b/helpers/DATA/firefox/branding/mozicon128.png differ
diff --git a/helpers/DATA/firefox/settings.js b/helpers/DATA/firefox/settings.js
index 43475ff9c5b6267d1e93f90e49be41b38a8578ca..409b9ff4d110615859d8d317794e22058e2a3719 100644
--- a/helpers/DATA/firefox/settings.js
+++ b/helpers/DATA/firefox/settings.js
@@ -123,7 +123,7 @@ pref("browser.newtabpage.directory.source", "");
 pref("browser.newtabpage.directory.ping", "");
 pref("browser.newtabpage.introShown", true);
 // Disable home snippets
-pref("browser.aboutHomeSnippets.updateUrl", "data:text/html");
+pref("browser.aboutHomeSnippets.updateUrl", "");
 
 // Services
 pref("gecko.handlerService.schemes.mailto.0.name", "");
diff --git a/helpers/make-firefox b/helpers/make-firefox
index 119834bceac9d413f47d070b6b386ea0f81f1dec..56c3ae8baf906ead45fc90a351ad28690781791c 100644
--- a/helpers/make-firefox
+++ b/helpers/make-firefox
@@ -176,9 +176,11 @@ cp $DATA/bookmarks.html.in browser/locales/generic/profile/bookmarks.html.in
 cp $DATA/searchplugins/*.xml debian/searchplugins/en-US/
 cp $DATA/searchplugins/searchplugins.conf debian/config/
 
-# install aboutabrowser extension
-cp $DATA/aboutabrowser@trisquel.info -r debian
-echo "debian/aboutabrowser@trisquel.info @MOZ_ADDONDIR@/extensions/" >> debian/abrowser.install.in
+# install extensions
+for extension in $(ls -1 $DATA/extensions/); do
+  cp $DATA/extensions/$extension -r debian
+  echo "debian/$extension @MOZ_ADDONDIR@/extensions/" >> debian/abrowser.install.in
+done
 
 # Disable newtab "What is this" popup and config button
 cat << EOF >> browser/themes/linux/newtab/newTab.css