diff --git a/apps/routerconsole/java/src/net/i2p/router/web/HelperBase.java b/apps/routerconsole/java/src/net/i2p/router/web/HelperBase.java
index 8515e4df1b62a98628b9c20997826457473f1078..60a2b28930ef2bc5175382c867ab4628e671f1ad 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/HelperBase.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/HelperBase.java
@@ -15,6 +15,7 @@ public abstract class HelperBase {
     public static final String PROP_ADVANCED = "routerconsole.advanced";
     /** @since public since 0.9.33, was package private */
     public static final String CHECKED = " checked=\"checked\" ";
+    public static final String SELECTED = " selected=\"selected\" ";
 
     /**
      * Configure this bean to query a particular router context
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigUIHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigUIHelper.java
index 5aef38ee57ac10001e407db7ff5cb34faa46b0c5..c0fe0090e45aaac42244efd8ebf53fcdd8c0da53 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigUIHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigUIHelper.java
@@ -186,19 +186,23 @@ public class ConfigUIHelper extends HelperBase {
                 current = "en";
         }
         StringBuilder buf = new StringBuilder(512);
+        //buf.append("<fieldset>\n");
+        buf.append("  <select name=\"lang\" id=\"langsettings\">\n");
         for (int i = 0; i < langs.length; i++) {
             String lang = langs[i][0];
             if (lang.equals("xx") && !isAdvanced())
                 continue;
             // we use "lang" so it is set automagically in CSSHelper
-            buf.append("<label for=\"").append(lang).append("\"><div class=\"langselect\"><input type=\"radio\" class=\"optbox\" name=\"lang\" ");
+            buf.append("    <option class=\"optbox\" name=\"lang\" ");
             if (lang.equals(current))
-                buf.append(CHECKED);
-            buf.append("value=\"").append(lang).append("\" id=\"").append(lang).append("\">" +
-                       "<img height=\"48\" width=\"48\" alt=\"\" src=\"/flags.jsp?s=48&amp;c=").append(langs[i][1]).append("\">" +
-                       "<div class=\"ui_lang\">");
+                buf.append(SELECTED);
+
+            buf.append(" value=\"").append(lang).append("\"");
+            buf.append(" id=\"").append(lang).append("\"").append(">");
+            //buf.append(" style=\"").append("background-image:url(/flags.jsp?s=48&amp;c=").append(langs[i][1]).append("\">\n");
             int under = lang.indexOf('_');
             String slang = (under > 0) ? lang.substring(0, under) : lang;
+            //buf.append("        ");
             buf.append(langs[i][2]);
             String name = langs[i][3];
             if (name != null) {
@@ -206,8 +210,10 @@ public class ConfigUIHelper extends HelperBase {
                    .append(name)
                    .append(')');
             }
-            buf.append("</div></div></label>\n");
+            buf.append("</option>\n");
         }
+        buf.append("  </select>\n");
+        //buf.append("</fieldset>\n");
         return buf.toString();
     }
 
diff --git a/apps/routerconsole/jsp/welcome.jsp b/apps/routerconsole/jsp/welcome.jsp
index fdd00f5edc225f2c83d31738e5024d1140950452..c56751ed029d9f439199c50275bba7dbec62d104 100644
--- a/apps/routerconsole/jsp/welcome.jsp
+++ b/apps/routerconsole/jsp/welcome.jsp
@@ -92,7 +92,7 @@
 <%
     }
 %>
-<h2><%=intl._t("New Install Wizard")%> <%=ipg%>/<%=LAST_PAGE%></h2>
+<!--<h2><%=intl._t("New Install Wizard")%> <%=ipg%>/<%=LAST_PAGE%></h2>-->
 <div id="wizard">
 <jsp:useBean class="net.i2p.router.web.helpers.WizardHandler" id="formhandler" scope="request" />
 <%
@@ -112,28 +112,35 @@
 <jsp:setProperty name="uihelper" property="contextId" value="<%=i2pcontextId%>" />
 <%-- needed for CSS: --%><div id="config_ui">
 <%-- needed for lang setting in css.jsi: --%><input type="hidden" name="consoleNonce" value="<%=net.i2p.router.web.CSSHelper.getNonce()%>" >
-<h3 id="langheading"><%=uihelper._t("Router Console Language")%></h3>
-<div id="langsettings">
+<img class="wizard progress" src="/themes/console/images/wizard/logogrey1.png">
+<h3 id="wizardheading" class="wizard"><%=uihelper._t("Router Console Language")%></h3>
+<img class="wizardimg" src="/themes/console/images/wizard/undraw_globe.png">
+<div id="wizlangsettings" class="wizard">
 <jsp:getProperty name="uihelper" property="langSettings" />
-</div></div>
+</div>
+</div>
 <%
 
     } else if (ipg == 2) {
         // I2P Philosophy
         // license info?
 %>
-<h3><%=intl._t("Why I2P?")%></h3>
-<table class="configtable"><tr><td>
+<img class="wizard progress" src="/themes/console/images/wizard/logogrey2.png">
+<h3 id="wizardheading" class="wizard"><%=intl._t("Why I2P?")%></h3>
+<img class="wizardimg" src="/themes/console/images/wizard/undraw_connected_world.png">
+<div class="wizardtext">
 <%=intl._t("I2P is a communication tool for people who value privacy and wish to remain anonymous online.")%>
 <%=intl._t("I2P is a peer to peer network where you can browse and create hidden services.")%>
-</td></tr></table>
+</div>
 <%
 
     } else if (ipg == 3) {
         // Overview of bandwidth test
 %>
-<h3><%=intl._t("Bandwidth Test")%></h3>
-<table class="configtable"><tr><td>
+<img class="wizard progress" src="/themes/console/images/wizard/logogrey3.png">
+<h3 id="wizardheading" class="wizard"><%=intl._t("Bandwidth Test")%></h3>
+<img class="wizardimg" src="/themes/console/images/wizard/undraw_speed_test.png">
+<div class="wizardtext">
 <p>
 <%=intl._t("I2P will now test your internet connection to identify the optimal speed settings.")%>
 <%=intl._t("Bandwidth participation improves the anonymity level of all users on the network and maximizes your download speed.")%>
@@ -145,18 +152,20 @@
 <a href="https://www.measurementlab.net/privacy/" target="_blank"><%=intl._t("M-Lab Privacy Policy")%></a>
 <br><a href="https://github.com/m-lab/mlab-ns/blob/master/MLAB-NS_PRIVACY_POLICY.md" target="_blank"><%=intl._t("M-Lab Name Server Privacy Policy")%></a>
 </p>
-</td></tr></table>
+</div>
 <%
 
     } else if (ipg == 4) {
         // Bandwidth test in progress (w/ AJAX)
 %>
-<h3><%=intl._t("Bandwidth Test in Progress")%></h3>
-<div id="xhr">
+<img class="wizard progress" src="/themes/console/images/wizard/logogrey4.png">
+<h3 id="wizardheading" class="wizard"><%=intl._t("Bandwidth Test in Progress")%></h3>
+<img class="wizardimg" src="themes/console/images/wizard/undraw_in_progress.png">
+<div id="xhr" class="notifcation">
 <!-- for non-script -->
 <%=intl._t("Javascript is disabled - wait 60 seconds for the bandwidth test to complete and then click Next")%>
 </div>
-<div id="xhr2">
+<div id="xhr2" class="notification">
 </div>
 <%
 
@@ -170,8 +179,10 @@
         if (request.getParameter("skipbw") == null) {
             // don't display this if we skipped the test
 %>
-<h3><%=intl._t("Bandwidth Test Results")%></h3>
-<table class="configtable">
+<img class="wizard progress" src="/themes/console/images/wizard/logogrey5.png">
+<h3 id="wizardheading" class="wizard bwtest"><%=intl._t("Bandwidth Test Results")%></h3>
+<img class="wizardimg" src="/themes/console/images/wizard/undraw_startup_life.png">
+<table class="mlabtable">
 <tr><td><%=intl._t("Test running?")%></td><td><%=wizhelper.isNDTRunning()%></td></tr>
 <tr><td><%=intl._t("Test complete?")%></td><td><%=wizhelper.isNDTComplete()%></td></tr>
 <tr><td><%=intl._t("Test server location")%></td><td><%=wizhelper.getServerLocation()%></td></tr>
@@ -191,24 +202,34 @@
 <%
         } // skipbw
 %>
-<h3><%=intl._t("Bandwidth Configuration")%></h3>
-<table id="bandwidthconfig" class="configtable">
+<img class="wizard progress" src="/themes/console/images/wizard/logogrey6.png">
+<h3 id="wizardheading" class="wizard"><%=intl._t("Bandwidth Configuration")%></h3>
+<style>
+.bwtest {
+    display: none;
+}
+</style>
+<img class="wizardimg" src="/themes/console/images/wizard/undraw_metrics.png">
+<table id="bandwidthconfig" class="configtable wizard">
 <tr><td class="infohelp" colspan="2">
 <%=intl._t("I2P will work best if you configure your rates to match the speed of your internet connection.")%>
 </td></tr>
 <tr><td><input style="text-align: right; width: 5em;" name="inboundrate" type="text" size="5" maxlength="5" value="<jsp:getProperty name="wizhelper" property="inboundBurstRate" />" >
 <%=intl._t("KBps In")%>
 </td><td>(<jsp:getProperty name="wizhelper" property="inboundBurstRateBits" />)</td>
-</tr><tr>
+</tr>
+<tr>
 <%-- display burst, set standard, handler will fix up --%>
 <td><input style="text-align: right; width: 5em;" name="outboundrate" type="text" size="5" maxlength="5" value="<jsp:getProperty name="wizhelper" property="outboundBurstRate" />" >
 <%=intl._t("KBps Out")%>
 </td><td>(<jsp:getProperty name="wizhelper" property="outboundBurstRateBits" />)</td>
-</tr><tr>
+</tr>
+<tr>
 <td><jsp:getProperty name="nethelper" property="sharePercentageBox" /> <%=intl._t("Share")%></td>
 <td>(<jsp:getProperty name="wizhelper" property="shareRateBits" />)
 </td></tr>
-<tr><td class="infohelp" colspan="2">
+</table>
+<div id="infodiv">
 <% int share = Math.round(wizhelper.getShareBandwidth() * 1.024f);
     if (share < 12) {
         out.print("<b>");
@@ -226,16 +247,23 @@
 
         out.print(intl._t("The higher the share bandwidth the more you improve your anonymity and help the network."));
     }
-%></td></tr>
-</table>
+%>
+</div>
 <%
 
     } else if (ipg == 6) {
         // Browser setup
 %>
-<h3><%=intl._t("Browser Setup")%></h3>
-<table class="configtable"><tr><td><p>
+<img class="wizard progress" src="/themes/console/images/wizard/logogrey7.png">
+<h3 id="wizardheading" class="wizard"><%=intl._t("Browser Setup")%></h3>
+<img class="wizardimg" src="/themes/console/images/wizard/undraw_High_five.png">
+<div class="wizardtext"><p>
 <%=intl._t("Your browser needs to be configured to work with I2P.")%>
+<%=intl._t("We currently provide an I2P Browser which configures itself automatically")%>
+<a href="https://geti2p.net/browser" target="_blank"><%=intl._t("that you may retrieve from here.")%></a>
+<%=intl._t("Be aware that this product is currently in beta-testing.")%>
+</p><p>
+<%=intl._t("Alternatively, you can configure your browser of choice to use I2P.")%>
 <a href="https://geti2p.net/htproxyports" target="_blank"><%=intl._t("If you want to do this yourself, here are instructions.")%></a>
 <%
         if (net.i2p.util.SystemVersion.isWindows()) {
@@ -248,31 +276,32 @@
 <%
         } //isWindows()
 %>
-</p></td></tr></table>
+</p></div>
 <%
 
     } else if (ipg == LAST_PAGE) {
         // Done
 %>
-<h3><%=intl._t("Welcome to I2P!")%></h3>
-<table class="configtable"><tr><td>
+<h3 id="wizardheading" class="wizard"><%=intl._t("Welcome to I2P!")%></h3>
+<img class="wizardimg" src="/themes/console/images/wizard/undraw_metrics.png">
+<div class="wizardtext">
 <p>
 <%=intl._t("When you start I2P, it may take a few minutes to bootstrap (integrate) your router into the network and find additional peers, so please be patient.")%>
 </p><p>
 <%=intl._t("When I2P starts up, and during normal operation, I2P's tunnel build readiness indicator in the side panel may indicate that I2P is \"Rejecting Tunnels\"; this is normal behavior.")%>
 <%=intl._t("Once green stars are indicated next to your Local Tunnels, there is a wide variety of things you can do with I2P.")%>
 </p>
-</td></tr></table>
+</div>
 <%
 
     } else {
 %>
-<table class="configtable"><tr><td>unknown wizard page</td></tr></table>
+<table class="configtable wizard"><tr><td>unknown wizard page</td></tr></table>
 <%
     }
 %>
-<div class="wizardbuttons">
-<table class="configtable"><tr><td class="optionsave">
+<div class="wizardbuttons wizard">
+<table class="configtable wizard"><tr class="wizard"><td class="optionsave wizard">
 <%
     if (ipg != 1) {
 %>
diff --git a/installer/resources/themes/console/dark/console.css b/installer/resources/themes/console/dark/console.css
index 27b886aa33aec4b7e8dca757d4c1f0bcc29bf69a..737a0bafa88e2b039e01fc2afddb9e73b88824d1 100644
--- a/installer/resources/themes/console/dark/console.css
+++ b/installer/resources/themes/console/dark/console.css
@@ -1245,6 +1245,26 @@ div.widescroll { /* only scroll content, not entire page eg /peers */
 
 /* end topnav */
 
+.messages {
+      margin: 15px 0;
+      padding: 10px 15px;
+      z-index: 999;
+      border-radius: 2px;
+      border: 1px solid #7778bf;
+      background: #eef;
+      background: linear-gradient(to right, #fafaff, #eef);
+      background-size: auto 100%, 100% 100%;
+      box-shadow: inset 0 0 0 1px #fff;
+      filter: drop-shadow(0 0 1px #ccf);
+      font-weight: bold;
+      line-height: 130%;
+      filter: drop-shadow(0 0 1px #ccf);
+      position: absolute;
+      top: 5%;
+      right: 5%;
+      width: 20%;
+ }
+
 div.messages {
      padding: 20px 10px 20px 50px;
      margin: 10px 0 15px 0;
@@ -1879,6 +1899,12 @@ h1 {
      box-shadow: 0 1px 5px #000;
 }
 
+.mlabtable {
+    width: 30%;
+    position: absolute;
+    top: 36%;
+}
+
 span.newtab {
      text-align: right;
      font-size: 8pt;
@@ -2292,6 +2318,7 @@ input[type="submit"], input[type="reset"], select, button {
 input[type="submit"], input[type="reset"], button {
      padding: 5px 8px !important;
      outline: none;
+     font-size: large
 }
 
 .statusnotes {
@@ -2991,7 +3018,6 @@ tr#addnew, tr#addnew:hover {
 p#helptranslate {
      position: relative;
      top: 8px;
-     margin: 0 -7px;
      padding: 15px 10px 15px 50px !important;
      text-align: left !important;
      border-top: 1px solid #494;
@@ -3021,7 +3047,7 @@ p#helptranslate {
      white-space: nowrap;
 }
 
-h3#themeheading, h3#langheading, h3#passwordheading {
+h3#themeheading, h3#passwordheading {
      border-radius: 0;
      border: 1px solid #494;
      padding: 8px 10px;
@@ -3053,15 +3079,15 @@ td#themeselect {
 }
 
 .langselect { /* containing box for lang selection */
-     background: #000;
-     background: linear-gradient(to bottom, #010 0%, #000 80%);
-     width: 120px;
+     width: 40%;
      float: left;
      margin: 4px;
      text-align: center;
-     border: 1px solid #262;
      padding: 8px 4px 0;
      border-radius: 2px;
+     border: none;
+     float: left;
+     margin-left: 15%;
 }
 
 .langselect:hover {
@@ -3202,6 +3228,58 @@ td#themeselect {
 
 /* end flag as radio icons */
 
+#wizardheading {
+    border: none;
+    width: 50%;
+    padding: 2%;
+    margin: 2% 24%;
+    top: 2%;
+    font-size: xx-large;
+    text-transform: uppercase;
+    letter-spacing: 0.08em;
+    word-spacing: 0.1em;
+    color: #41465f;
+    position: absolute;
+    background: none !important;
+    box-shadow: none !important;
+    z-index: 999;
+}
+
+#infodiv {
+    position: absolute;
+    right: 12%;
+    width: 16%;
+    top: 36%;
+    background: linear-gradient(to right, #fafaff, #000);
+    background-size: auto 100%, 100% 100%;
+    box-shadow: inset 0 0 0 1px #fff;
+    filter: drop-shadow(0 0 1px #ccf);
+}
+
+#bandwidthconfig {
+    border: 1px solid #7778bf;
+}
+
+#bandwidthconfig.configtable.wizard {
+    width: 35%;
+    top: 36%;
+    left: 31%;
+    position: absolute;
+    background: none;
+    font-size: larger;
+}
+
+.configtable.wizard {
+    width: 20%;
+    bottom: 5rem;
+    right: 10rem;
+    position: absolute;
+    box-shadow: none !important;
+    white-space: normal;
+    background: none;
+    font-size: larger;
+}
+
 div.ui_lang { /* lang text label */
      text-align: center;
      background: #001000;
@@ -3227,12 +3305,26 @@ h3#langheading {
      margin-bottom: 0;
 }
 
-div#langsettings {
+select#langsettings {
      border: 1px solid #494;
      padding: 8px 7px 12px;
      margin-top: -1px;
      margin-bottom: -12px;
      background: #000;
+     font-size: large;
+     height: 3rem;
+     width: 15rem;
+}
+
+div#langsettings {
+    border: 1px solid #7778bf;
+}
+
+div#wizlangsettings.wizard {
+     border: none;
+     position: absolute;
+     left: 15rem;
+     bottom: 10rem;
 }
 
 #langsettings hr {
@@ -3240,7 +3332,7 @@ div#langsettings {
 }
 
 .formaction#langui {
-     margin: 7px -8px -15px;
+     margin: 5px 0 0;
      padding: 5px;
      border: 1px solid #494;
      background: #000;
@@ -3451,6 +3543,75 @@ p#ipconfig, p#ipv4config, p#udpconfig, p#externaltcp {
      background: #001000;
 }
 
+#bandwidthconfig table.configtable {
+    border: none;
+    bottom: 5rem;
+    right: 10rem;
+}
+
+.configtable tr:last-child td {
+    border-top: 1px solid #7778bf !important;
+}
+
+.configtable.wizard tr:last-child td {
+    border-top: none;
+}
+
+img.wizard.progress {
+    position: absolute;
+    top: 2%;
+    left: 0%;
+    width: 31%;
+    max-width: 31%;
+    -webkit-filter: invert(1);
+    filter: invert(1);
+    z-index: 500;
+}
+
+.wizard {
+    border: none !important;
+    background: none !important;
+    box-shadow: none !important;
+    border-top: none !important;
+}
+
+#bwconfigheader {
+    background: white;
+}
+
+.wizardtext {
+    width: 25%;
+    position: absolute;
+    top: 36%;
+    left: 5%;
+    font-size: larger;
+}
+
+#wizard {
+    z-index: -1;
+    position: absolute;
+    left: 0px;
+    top: 0px;
+    height: 100%;
+    width: 100%;
+    background-color: #000;
+}
+
+.wizardimg {
+    max-width: 100%;
+    max-height: 100vh;
+    margin: auto;
+    -webkit-filter: invert(1);
+    filter: invert(1);
+    z-index: -1;
+    position: absolute;
+    left: 31%;
+}
+
+#bandwidthconfig .configtable tr:last-child td {
+     border: none;
+}
+
 table#bandwidthconfig {
      margin-bottom: 1px;
 }
@@ -3460,6 +3621,48 @@ table#bandwidthconfig td:first-child {
      white-space: nowrap;
 }
 
+#bandwidthconfig td:last-child {
+     white-space: normal;
+     background: none;
+     font-size: larger;
+}
+
+#bandwidthconfig.configtable td {
+     white-space: normal;
+     background: none;
+     font-size: larger;
+}
+
+#bandwidthconfig.configtable.wizard td {
+     white-space: normal;
+     background: none;
+     font-size: small;
+}
+
+#xhr.notification {
+    width: 30%;
+    position: absolute;
+    left: 30%;
+    top: 38%;
+    font-size: larger;
+    background: #000;
+    box-shadow: inset 0 0 0 1px #fff;
+    filter: drop-shadow(0 0 1px #ccf);
+}
+
+#xhr2.notification {
+    width: 30%;
+    position: absolute;
+    left: 30%;
+    top: 40%;
+    font-size: larger;
+    background: #000;
+    background: linear-gradient(to right, #fafaff, #000);
+    background-size: auto 100%, 100% 100%;
+    box-shadow: inset 0 0 0 1px #fff;
+    filter: drop-shadow(0 0 1px #ccf);
+}
+
 table#bandwidthconfig {
      padding: 5px 10px !important;
 }
@@ -3695,6 +3898,16 @@ table#tunnelconfig td:first-child {
 
 /* end /configtunnels */
 
+input.cancel, button.cancel {
+    padding: 5px 7px 5px 22px;
+    /*font-size: large;*/
+}
+
+input.go, button.go, input[value="GO"] {
+    padding: 5px 7px 5px 22px;
+    /*font-size: large;*/
+}
+
 /* /configupdate */
 
 #i2pupdates {
@@ -5695,8 +5908,8 @@ textarea#advancedsettings {
      padding: 15px 15px 15px 50px !important;
      text-align: justify;
      line-height: 130% !important;
-     border-bottom: 1px solid #494;
-     border-top: 1px solid #494;
+     /*border-bottom: 1px solid #494;
+     border-top: 1px solid #494;*/
      white-space: normal !important;
      font-weight: normal !important;
      background-size: 28px 28px !important;
@@ -5728,7 +5941,7 @@ td.optionsave {
      padding: 5px !important;
      white-space: nowrap;
 /*     width: 50px;*/
-     background: #000;
+     background: none;
 }
 
 #floodfillconfig form, #plugininstall form, #plugininstall2 form, #updateplugins form, .configtable form {
diff --git a/installer/resources/themes/console/images/wizard/logogrey1.png b/installer/resources/themes/console/images/wizard/logogrey1.png
new file mode 100644
index 0000000000000000000000000000000000000000..84992adcb80ea3c8707a09bf86e9bc601ab891d8
Binary files /dev/null and b/installer/resources/themes/console/images/wizard/logogrey1.png differ
diff --git a/installer/resources/themes/console/images/wizard/logogrey2.png b/installer/resources/themes/console/images/wizard/logogrey2.png
new file mode 100644
index 0000000000000000000000000000000000000000..97592514b866fa922e31b7e26b72a2eff0656b56
Binary files /dev/null and b/installer/resources/themes/console/images/wizard/logogrey2.png differ
diff --git a/installer/resources/themes/console/images/wizard/logogrey3.png b/installer/resources/themes/console/images/wizard/logogrey3.png
new file mode 100644
index 0000000000000000000000000000000000000000..ee57f61431dd8711cd577459361df40473b7f8d4
Binary files /dev/null and b/installer/resources/themes/console/images/wizard/logogrey3.png differ
diff --git a/installer/resources/themes/console/images/wizard/logogrey4.png b/installer/resources/themes/console/images/wizard/logogrey4.png
new file mode 100644
index 0000000000000000000000000000000000000000..0b8da82d1c9c90c9292bdf9cff2c034ead68ca6b
Binary files /dev/null and b/installer/resources/themes/console/images/wizard/logogrey4.png differ
diff --git a/installer/resources/themes/console/images/wizard/logogrey5.png b/installer/resources/themes/console/images/wizard/logogrey5.png
new file mode 100644
index 0000000000000000000000000000000000000000..9ae0190e0973c271bab05efce563bab3b15cc3ca
Binary files /dev/null and b/installer/resources/themes/console/images/wizard/logogrey5.png differ
diff --git a/installer/resources/themes/console/images/wizard/logogrey6.png b/installer/resources/themes/console/images/wizard/logogrey6.png
new file mode 100644
index 0000000000000000000000000000000000000000..d36f09b30829865208f8c71e0cd834143b94014b
Binary files /dev/null and b/installer/resources/themes/console/images/wizard/logogrey6.png differ
diff --git a/installer/resources/themes/console/images/wizard/logogrey7.png b/installer/resources/themes/console/images/wizard/logogrey7.png
new file mode 100644
index 0000000000000000000000000000000000000000..1a5ba08e81491d7ef7283951b4f5f956a6cd957b
Binary files /dev/null and b/installer/resources/themes/console/images/wizard/logogrey7.png differ
diff --git a/installer/resources/themes/console/images/wizard/undraw_High_five.png b/installer/resources/themes/console/images/wizard/undraw_High_five.png
new file mode 100644
index 0000000000000000000000000000000000000000..bb7598ff5f985273746d15ccd068be825e067b47
Binary files /dev/null and b/installer/resources/themes/console/images/wizard/undraw_High_five.png differ
diff --git a/installer/resources/themes/console/images/wizard/undraw_connected_world.png b/installer/resources/themes/console/images/wizard/undraw_connected_world.png
new file mode 100644
index 0000000000000000000000000000000000000000..431ff7af5bc639fc3420fc8dfe0fe960f8748acf
Binary files /dev/null and b/installer/resources/themes/console/images/wizard/undraw_connected_world.png differ
diff --git a/installer/resources/themes/console/images/wizard/undraw_globe.png b/installer/resources/themes/console/images/wizard/undraw_globe.png
new file mode 100644
index 0000000000000000000000000000000000000000..a17f90e0c145a38ba6708bea34a5146a6a3035db
Binary files /dev/null and b/installer/resources/themes/console/images/wizard/undraw_globe.png differ
diff --git a/installer/resources/themes/console/images/wizard/undraw_in_progress.png b/installer/resources/themes/console/images/wizard/undraw_in_progress.png
new file mode 100644
index 0000000000000000000000000000000000000000..99ff40dbc857574aab9f66488bf36ba8f94bdb99
Binary files /dev/null and b/installer/resources/themes/console/images/wizard/undraw_in_progress.png differ
diff --git a/installer/resources/themes/console/images/wizard/undraw_metrics.png b/installer/resources/themes/console/images/wizard/undraw_metrics.png
new file mode 100644
index 0000000000000000000000000000000000000000..587f93f782ecde995ba9574059415ca4c609edb2
Binary files /dev/null and b/installer/resources/themes/console/images/wizard/undraw_metrics.png differ
diff --git a/installer/resources/themes/console/images/wizard/undraw_speed_test.png b/installer/resources/themes/console/images/wizard/undraw_speed_test.png
new file mode 100644
index 0000000000000000000000000000000000000000..c5f01c65bcda4ddcf8fb2a31bec9de6392e5ffea
Binary files /dev/null and b/installer/resources/themes/console/images/wizard/undraw_speed_test.png differ
diff --git a/installer/resources/themes/console/images/wizard/undraw_startup_life.png b/installer/resources/themes/console/images/wizard/undraw_startup_life.png
new file mode 100644
index 0000000000000000000000000000000000000000..5b9f2ee98ff336b77ffdc980a6bfa365e80532a3
Binary files /dev/null and b/installer/resources/themes/console/images/wizard/undraw_startup_life.png differ
diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css
index 880af67661a822ebaf4cb772535280491ff0a572..241700c637b037d33f800268988a427cd5b5c1c2 100644
--- a/installer/resources/themes/console/light/console.css
+++ b/installer/resources/themes/console/light/console.css
@@ -1881,7 +1881,13 @@ h3#passwordheading {
      filter: none;
 }
 
-h3#langheading, h3#themeheading, h3#pluginmanage, h3#pconfig, h3#webappconfig, h3#advancedclientconfig, h3#i2pclientconfig, #config_stats h3 {
+.mlabtable {
+    width: 30%;
+    position: absolute;
+    top: 36%;
+}
+
+h3#themeheading, h3#pluginmanage, h3#pconfig, h3#webappconfig, h3#advancedclientconfig, h3#i2pclientconfig, #config_stats h3 {
      border: 1px solid #7778bf;
      border-radius: 0;
      box-shadow: inset 0 0 0 1px #fff;
@@ -2152,15 +2158,20 @@ h3#graphdisplay {
 .messages {
      margin: 15px 0;
      padding: 10px 15px;
+     z-index: 999;
      border-radius: 2px;
      border: 1px solid #7778bf;
      background: #eef;
      background: linear-gradient(to right, #fafaff, #eef);
      background-size: auto 100%, 100% 100%;
-     font-weight: bold;
      box-shadow: inset 0 0 0 1px #fff;
-     line-height: 130%;
      filter: drop-shadow(0 0 1px #ccf);
+     font-weight: bold;
+     line-height: 130%;
+     position: absolute;
+     top: 5%;
+     right: 5%;
+     width: 20%;
 }
 
 .main#config_update .messages {
@@ -2233,11 +2244,11 @@ table {
 td.optionsave {
      text-align: right;
      padding: 5px !important;
-     background: #fafaff;
-     border-top: 1px solid #7778bf !important;
+     background: none;
+     /*border-top: 1px solid #7778bf !important;*/
 }
 
-td.optionsave, .formaction, form[action="configpeer"] tr:last-child td, table#addkeyring tr:last-child td {
+.formaction, form[action="configpeer"] tr:last-child td, table#addkeyring tr:last-child td {
      background: linear-gradient(to bottom, #fafaff 50%, rgba(220,220,255,0.3)), repeating-linear-gradient(135deg, rgba(255,255,255,0.5) 2px, rgba(221, 221, 255, 0.3) 3px, #fff 5px) !important;
 }
 
@@ -2249,6 +2260,13 @@ td.optionsave, .formaction, form[action="configpeer"] tr:last-child td, table#ad
 
 .configtable {
      box-shadow: none !important;
+     white-space: normal;
+}
+
+#bandwidthconfig table.configtable {
+    border: none;
+    bottom: 5rem;
+    right: 10rem;
 }
 
 .configtable td {
@@ -2256,15 +2274,24 @@ td.optionsave, .formaction, form[action="configpeer"] tr:last-child td, table#ad
 }
 
 .configtable tr:last-child td {
-     border-top: 1px solid #7778bf !important;
+    border-top: 1px solid #7778bf;
+}
+
+.wizard tr:last-child td {
+    border-top: none !important;
+}
+
+#bandwidthconfig .configtable tr:last-child td {
+     border: none;
 }
 
 td.infohelp, #help tr:hover td.infohelp, #eventlog tr:hover .infohelp {
      background: #fff url(/themes/console/images/info/infohelp.png) 12px center no-repeat;
      background: url(/themes/console/images/info/infohelp.png) 12px center no-repeat, linear-gradient(135deg, #fafaff, #f8f8ff);
      padding: 15px 15px 15px 50px;
-     border-bottom: 1px solid #7778bf !important;
-     border-top: 1px solid #7778bf !important;
+     /*border-bottom: 1px solid #7778bf !important;
+     border-top: 1px solid #7778bf !important;*/
+     border: unset;
      text-align: justify;
 }
 
@@ -2549,6 +2576,57 @@ td {
      margin-left: 3px !important;
 }
 
+#wizardheading {
+    border: none;
+    width: 50%;
+    padding: 2%;
+    margin: 2% 24%;
+    top: 2%;
+    font-size: xx-large;
+    text-transform: uppercase;
+    letter-spacing: 0.08em;
+    word-spacing: 0.1em;
+    color: #41465f;
+    position: absolute;
+    background: none !important;
+    box-shadow: none !important;
+}
+
+#infodiv {
+    position: absolute;
+    right: 12%;
+    width: 16%;
+    top: 36%;
+    background: #eef linear-gradient(to right, #fafaff, #eef);
+    background-size: auto 100%, 100% 100%;
+    box-shadow: inset 0 0 0 1px #fff;
+    filter: drop-shadow(0 0 1px #ccf);
+}
+
+#bandwidthconfig {
+    border: 1px solid #7778bf;
+}
+
+#bandwidthconfig.configtable.wizard {
+    width: 35%;
+    top: 36%;
+    left: 31%;
+    position: absolute;
+    background: none;
+    font-size: larger;
+}
+
+.configtable.wizard {
+    width: 20%;
+    bottom: 5rem;
+    right: 10rem;
+    position: absolute;
+    box-shadow: none !important;
+    white-space: normal;
+    background: none;
+    font-size: larger;
+}
+
 #bandwidthconfig td:first-child {
      width: 200px;
      white-space: nowrap;
@@ -2557,6 +2635,44 @@ td {
 
 #bandwidthconfig td:last-child {
      white-space: normal;
+     background: none;
+     font-size: larger;
+}
+
+#bandwidthconfig.configtable td {
+     white-space: normal;
+     background: none;
+     font-size: larger;
+}
+
+#bandwidthconfig.configtable.wizard td {
+     white-space: normal;
+     background: none;
+     font-size: small;
+}
+
+#xhr.notification {
+    width: 30%;
+    position: absolute;
+    left: 30%;
+    top: 38%;
+    font-size: larger;
+    background: #eef;
+    box-shadow: inset 0 0 0 1px #fff;
+    filter: drop-shadow(0 0 1px #ccf);
+}
+
+#xhr2.notification {
+    width: 30%;
+    position: absolute;
+    left: 30%;
+    top: 40%;
+    font-size: larger;
+    background: #eef;
+    background: linear-gradient(to right, #fafaff, #eef);
+    background-size: auto 100%, 100% 100%;
+    box-shadow: inset 0 0 0 1px #fff;
+    filter: drop-shadow(0 0 1px #ccf);
 }
 
 /* begin home page */
@@ -3758,6 +3874,7 @@ button:active, input[type="submit"]:active, input[type="reset"]:active {
 input.accept, button.accept {
      background: url(/themes/console/images/buttons/yes.png) no-repeat 6px center, linear-gradient(to bottom, #fff, #efefff);
      padding: 5px 7px 5px 22px;
+     font-size: large;
 }
 
 input.accept:hover, button.accept:hover, input.accept:focus, button.accept:focus {
@@ -3797,6 +3914,7 @@ input.accept[value^="Filter"]:focus, button.accept[value^="Filter"]:focus {
 input.add, button.add {
      background: url(/themes/console/images/buttons/add.png) no-repeat 6px center, linear-gradient(to bottom, #fff, #efefff);
      padding: 5px 7px 5px 22px;
+     font-size: large;
 }
 
 input.add:hover, button.add:hover,
@@ -3817,6 +3935,7 @@ input.add[value^="Adjust"]:focus, button.add[value^="Adjust"]:focus {
 input.cancel, button.cancel {
      background: url(/themes/console/images/buttons/no.png) no-repeat 6px center, linear-gradient(to bottom, #fff, #efefff);
      padding: 5px 7px 5px 22px;
+     font-size: large;
 }
 
 input.cancel:hover, button.cancel:hover,
@@ -3873,6 +3992,7 @@ input.check[value$="updates"]:focus, button.check[value$="updates"]:focus {
 input.delete, button.delete {
      background: url(/themes/console/images/buttons/delete.png) no-repeat 6px center, linear-gradient(to bottom, #fff, #efefff);
      padding: 5px 7px 5px 22px;
+     font-size: large;
 }
 
 input.delete:hover, button.delete:hover,
@@ -3893,6 +4013,7 @@ input.delete[value^="Ban"]:focus, button.delete[value^="Ban"]:focus {
 input.download, button.download {
      background: url(/themes/console/images/buttons/download.png) no-repeat 6px center, linear-gradient(to bottom, #fff, #efefff);
      padding: 5px 7px 5px 22px;
+     font-size: large;
 }
 
 input.download:hover, button.download:hover,
@@ -3936,6 +4057,7 @@ input.download[value^="Dump"]:focus, button.download[value^="Dump"]:focus {
 input.go, button.go, input[value="GO"] {
      background: url(/themes/console/images/buttons/go.png) no-repeat 6px center, linear-gradient(to bottom, #fff, #efefff);
      padding: 5px 7px 5px 22px;
+     font-size: large;
 }
 
 input.go:hover, button.go:hover, input[value="GO"]:hover,
@@ -3966,6 +4088,7 @@ input.back:focus {
 input.reload, button.reload {
      background: url(/themes/console/images/buttons/restore.png) no-repeat 6px center, linear-gradient(to bottom, #fff, #efefff);
      padding: 5px 7px 5px 22px;
+     font-size: large;
 }
 
 input.reload:hover, button.reload:hover,
@@ -4595,13 +4718,20 @@ body.iframed {
 
 /* Theme choice & Language selection in /configui */
 
-#themeui.formaction, #langui.formaction {
+#themeui.formaction {
      border: none;
      border-top: 1px solid #7778bf;
      background: none;
      margin: 5px -5px 0;
 }
 
+#langui.formaction {
+     border: none;
+     border-top: 1px solid #7778bf;
+     background: none;
+     margin: 5px 0 0;
+}
+
 #consolepass.formaction {
      margin-top: -6px;
      margin-bottom: -3px;
@@ -4704,8 +4834,8 @@ body.iframed {
 p#helptranslate {
      position: relative;
      top: 4px;
-     padding: 15px 10px 15px 50px !important;
      text-align: left !important;
+     padding: 15px 10px 15px 50px !important;
      border-top: 1px solid #7778bf;
      background: url(/themes/console/images/info/notice.png) left 14px center no-repeat, #fff;
      background: url(/themes/console/images/info/notice.png) left 14px center no-repeat, linear-gradient(135deg, #fafaff, #f8f8ff);
@@ -4771,34 +4901,87 @@ div#themesettings {
      background: repeating-linear-gradient(135deg, rgba(255,255,255,0.5) 2px, rgba(248, 248, 255, 0.3) 3px, #fafaff 5px);
 }
 
-div#langsettings {
+select#langsettings {
      padding: 4px 5px 0;
-     border: 1px solid #7778bf;
-     margin: -16px 0 0;
-     background: #fafaff;
-     background: repeating-linear-gradient(135deg, rgba(255,255,255,0.5) 2px, rgba(248, 248, 255, 0.3) 3px, #fafaff 5px);
+     font-size: large;
+     height: 3rem;
+     width: 15rem;
+}
+
+div#langsettings {
+    border: 1px solid #7778bf;
+}
+
+div#wizlangsettings.wizard {
+     position: absolute;
+     left: 15rem;
+     bottom: 10rem;
 }
 
 #themesettings hr, #langsettings hr {
      display: none;
 }
 
+img.wizard.progress {
+    position: absolute;
+    top: 2%;
+    left: 0%;
+    width: 31%;
+    max-width: 31%;
+    mix-blend-mode: multiply;
+}
+
+.wizard {
+    border: none !important;
+    background: none !important;
+    box-shadow: none !important;
+    border-top: none !important;
+}
+
+#bwconfigheader {
+    background: white;
+}
+
+.wizardtext {
+    width: 25%;
+    position: absolute;
+    top: 36%;
+    left: 5%;
+    font-size: larger;
+}
+
+#wizard {
+    z-index: -1;
+    position: absolute;
+    left: 0px;
+    top: 0px;
+    height: 100%;
+    width: 100%;
+    background-color: #f8f9fa;
+}
+
 .langselect { /* containing box for lang selection */
-     width: 115px;
+     width: 40%;
      min-height: 64px;
      float: left;
      margin: 4px;
      text-align: center;
-     border: 1px solid #7778bf;
      padding: 4px 4px 0;
-     border-radius: 2px;
-     background: #fff;
-     background: linear-gradient(to bottom, #fff, #ddf);
+     background-color: white;
+     border: none;
+     float: left;
+     margin-left: 15%;
      transition: transform 0.3s ease 0s;
-     box-shadow: inset 0 0 0 1px #fff;
      filter: drop-shadow(0 0 1px #ccf);
 }
 
+.wizardimg {
+    max-width: 100%;
+    max-height: 100vh;
+    margin: auto;
+    mix-blend-mode: multiply;
+}
+
 .langselect:hover {
      border: 1px solid #f60;
      background: #fff;
@@ -4964,7 +5147,6 @@ p#helptranslate {
      clear: both;
      padding: 5px 10px 10px;
      text-align: right;
-     margin: 0 -5px;
 }
 
 /* configui password*/