diff --git a/apps/i2ptunnel/jsp/editClient.jsi b/apps/i2ptunnel/jsp/editClient.jsi
index f89f7423c45cbf98147dab0f0b3e2c657be1750f..3c70a586ea593058b4e3cbf714ba14abcb2fde73 100644
--- a/apps/i2ptunnel/jsp/editClient.jsi
+++ b/apps/i2ptunnel/jsp/editClient.jsi
@@ -85,17 +85,11 @@
             <td>
                 <b><%=intl._t("Port")%>:</b>
 <%
-                       String value = editBean.getClientPort(curTunnel);
-                       if (value == null || "".equals(value.trim())) {
-                           out.write(" <span class=\"required\"><font color=\"red\">(");
-                           out.write(intl._t("required"));
-                           out.write(")</font></span>");
-                       }
                       String phelp = intl._t("Specify the local port this service should be accessible from");
                       String ptext = canChangePort ? phelp : bStopFirst;
                       String pdisabled = canChangePort ? "" : " readonly=\"readonly\" ";
 %>
-                <input type="text" size="6" maxlength="5" name="port" title="<%=ptext%>" value="<%=editBean.getClientPort(curTunnel)%>" class="freetext port" placeholder="required" <%=pdisabled%>/>
+                <input type="text" size="6" maxlength="5" name="port" title="<%=ptext%>" value="<%=editBean.getClientPort(curTunnel)%>" class="freetext port" placeholder="<%=intl._t("required")%>" required <%=pdisabled%>/>
             </td>
 <%
             if ("streamrclient".equals(tunnelType)) {
@@ -104,13 +98,8 @@
                 <b><%=intl._t("Host")%>:</b>
 <%
                        String targetHost = editBean.getTargetHost(curTunnel);
-                       if (targetHost == null || "".equals(targetHost.trim())) {
-                           out.write(" <span class=\"required\"><font color=\"red\">(");
-                           out.write(intl._t("required"));
-                           out.write(")</font></span>");
-                       }
 %>
-                <input type="text" size="20" id="targetHost" name="targetHost" title="<%=intl._t("Hostname or IP address of the target server")%>" value="<%=targetHost%>" class="freetext host" placeholder="required" />
+                <input type="text" size="20" id="targetHost" name="targetHost" title="<%=intl._t("Hostname or IP address of the target server")%>" value="<%=targetHost%>" class="freetext host" placeholder="<%=intl._t("required")%>" required />
             </td>
 <%
             } else {
@@ -221,14 +210,7 @@
             </th>
         </tr><tr>
             <td colspan="2">
-                    <% String value2 = editBean.getClientDestination(curTunnel);
-                       if (value2 == null || "".equals(value2.trim())) {
-                           out.write(" <span class=\"required\"><font color=\"red\">(");
-                           out.write(intl._t("required"));
-                           out.write(")</font></span>");
-                       }
-%>
-                <input type="text" size="30" id="targetDestination" name="targetDestination" title="<%=intl._t("Specify the .i2p address or destination (b32 or b64) of the tunnel here.")%>&nbsp;<%=intl._t("For a random selection from a pool, separate with commas e.g. server1.i2p,server2.i2p")%>" value="<%=editBean.getClientDestination(curTunnel)%>" class="freetext destination" placeholder="required" />
+                <input type="text" size="30" id="targetDestination" name="targetDestination" title="<%=intl._t("Specify the .i2p address or destination (b32 or b64) of the tunnel here.")%>&nbsp;<%=intl._t("For a random selection from a pool, separate with commas e.g. server1.i2p,server2.i2p")%>" value="<%=editBean.getClientDestination(curTunnel)%>" class="freetext destination" placeholder="<%=intl._t("required")%>" required />
                 <%=intl._t("name, name:port, or destination")%>
 <%
                         if ("streamrclient".equals(tunnelType)) {
@@ -746,9 +728,15 @@
             </td>
         </tr><tr>
             <td class="buttons" colspan="2">
+                    <a id="controlCancel" class="control" href="list"><%=intl._t("Cancel")%></a>
+<%
+            if (curTunnel >= 0) {
+%>
                     <input type="hidden" value="true" name="removeConfirm" />
-                    <button id="controlCancel" class="control" type="submit" name="action" value=""><%=intl._t("Cancel")%></button>
-                    <button id="controlDelete" class="control delete" type="submit" name="action" value="Delete this proxy" title="<%=intl._t("Delete this Proxy (cannot be undone)")%>"><%=intl._t("Delete")%></button>
+                    <button id="controlDelete" class="control delete" type="submit" name="action" value="Delete this proxy" title="<%=intl._t("Delete this Proxy (cannot be undone)")%>" formnovalidate><%=intl._t("Delete")%></button>
+<%
+            }
+%>
                     <button id="controlSave" class="control" type="submit" name="action" value="Save changes"><%=intl._t("Save")%></button>
             </td>
         </tr>
diff --git a/apps/i2ptunnel/jsp/editServer.jsi b/apps/i2ptunnel/jsp/editServer.jsi
index 51b3dcfc0e1ee181718dc2dc90aacd5fa3f442a6..7f24218fee18b8dda818927e4de1889792a2d2d2 100644
--- a/apps/i2ptunnel/jsp/editServer.jsi
+++ b/apps/i2ptunnel/jsp/editServer.jsi
@@ -89,18 +89,13 @@
 <%          } /* !streamrserver */ %>
             <td>
                 <b><%=intl._t("Port")%>:</b>
-                    <% String value = editBean.getTargetPort(curTunnel);
-                       if (value == null || "".equals(value.trim())) {
-                           out.write(" <span class=\"required\"><font color=\"red\">(");
-                           out.write(intl._t("required"));
-                           out.write(")</font></span>");
-                       }
+<%
                        String asphelp = intl._t("Specify the local port this service should be accessible from");
                        String bsphelp = intl._t("Specify the port the server is running on");
                        String ptext = canChangePort ? (isStreamrServer ? asphelp : bsphelp) : stopFirst;
                        String pdisabled = canChangePort ? "" : " readonly=\"readonly\" ";
 %>
-                <input type="text" size="6" maxlength="5" id="targetPort" name="targetPort" title="<%=ptext%>" value="<%=editBean.getTargetPort(curTunnel)%>" class="freetext port" placeholder="required" <%=pdisabled%>/>
+                <input type="text" size="6" maxlength="5" id="targetPort" name="targetPort" title="<%=ptext%>" value="<%=editBean.getTargetPort(curTunnel)%>" class="freetext port" placeholder="<%=intl._t("required")%>" required <%=pdisabled%> />
 <%          if (!isStreamrServer) { %>
                 <label title="<%=intl._t("To avoid traffic sniffing if connecting to a remote server, you can enable an SSL connection. Note that the target server must be configured to accept SSL connections.")%>"><input value="1" type="checkbox" name="useSSL"<%=(editBean.isSSLEnabled(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />
                 <%=intl._t("Use SSL to connect to target")%></label>
@@ -115,16 +110,11 @@
             <td>
                 <b><%=intl._t("Port")%>:</b>
 
-<%                      String value4 = editBean.getClientPort(curTunnel);
-           	        if (value4 == null || "".equals(value4.trim())) {
-           	            out.write(" <span class=\"required\"><font color=\"red\">(");
-           	            out.write(intl._t("required"));
-           	            out.write(")</font></span>");
-           	        }
+<%
                        String csphelp = intl._t("Port required to access service (this can be a different port to the port the service is hosted on)");
                        String dsphelp = canChangePort ? csphelp : stopFirst;
 %>
-                 <input type="text" size="6" maxlength="5" name="port" title="<%=dsphelp%>" value="<%=editBean.getClientPort(curTunnel)%>" class="freetext port" placeholder="required" <%=pdisabled%>/>
+                 <input type="text" size="6" maxlength="5" name="port" title="<%=dsphelp%>" value="<%=editBean.getClientPort(curTunnel)%>" class="freetext port" placeholder="<%=intl._t("required")%>" required <%=pdisabled%> />
             </td>
 <%          } /* httpbidirserver */
             if (isBidirServer || isStreamrServer) {
@@ -184,17 +174,11 @@
                 <div class="displayText resetScrollLeft" title="<%=intl._t("Read Only: Local Destination (if known)")%>" tabindex="0"><%=editBean.getDestinationBase64(curTunnel)%></div>
             </td><td>
 <%
-                       String value3 = editBean.getPrivateKeyFile(curTunnel);
-                       if (value3 == null || "".equals(value3.trim())) {
-                           out.write(" <span class=\"required\"><font color=\"red\">(");
-                           out.write(intl._t("required"));
-                           out.write(")</font></span>");
-                       }
                        String htext = intl._t("Path to Private Key File");
                        String dtext = canChangeDest ? htext : stopFirst;
                        String ddisabled = canChangeDest ? "" : " readonly=\"readonly\" ";
 %>
-                <input type="text" size="30" id="privKeyFile" name="privKeyFile" title="<%=dtext%>" value="<%=editBean.getPrivateKeyFile(curTunnel)%>" class="freetext" placeholder="required" <%=ddisabled%>/>
+                <input type="text" size="30" id="privKeyFile" name="privKeyFile" title="<%=dtext%>" value="<%=editBean.getPrivateKeyFile(curTunnel)%>" class="freetext" placeholder="<%=intl._t("required")%>" required <%=ddisabled%> />
             </td>
         </tr>
 <%
@@ -1024,9 +1008,15 @@
             </td>
         </tr><tr>
             <td class="buttons" colspan="2">
+                    <a id="controlCancel" class="control" href="list"><%=intl._t("Cancel")%></a>
+<%
+            if (curTunnel >= 0) {
+%>
                     <input type="hidden" value="true" name="removeConfirm" />
-                    <button id="controlCancel" class="control" type="submit" name="action" value=""><%=intl._t("Cancel")%></button>
-                    <button id="controlDelete" class="control delete" type="submit" name="action" value="Delete this proxy" title="<%=intl._t("Delete this Proxy (cannot be undone)")%>"><%=intl._t("Delete")%></button>
+                    <button id="controlDelete" class="control delete" type="submit" name="action" value="Delete this proxy" title="<%=intl._t("Delete this Proxy (cannot be undone)")%>" formnovalidate><%=intl._t("Delete")%></button>
+<%
+            }
+%>
                     <button id="controlSave" class="control" type="submit" name="action" value="Save changes"><%=intl._t("Save")%></button>
             </td>
         </tr>
diff --git a/apps/i2ptunnel/jsp/ssl.jsp b/apps/i2ptunnel/jsp/ssl.jsp
index 296d77de1cdee8eb972b82124f56568e29ce9605..1b91e4a0015ea587ee3dbc0194d5004841088eb9 100644
--- a/apps/i2ptunnel/jsp/ssl.jsp
+++ b/apps/i2ptunnel/jsp/ssl.jsp
@@ -2,8 +2,7 @@
 %><%@page pageEncoding="UTF-8"
 %><%@page contentType="text/html" import="java.io.File,java.io.IOException,net.i2p.crypto.KeyStoreUtil,net.i2p.data.DataHelper,net.i2p.jetty.JettyXmlConfigurationParser"
 %><%@page
-%><?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html>
+%><!DOCTYPE html>
 <%
   /* right now using EditBean instead of IndexBean for getSpoofedHost() */
   /* but might want to POST to it anyway ??? */
@@ -557,14 +556,14 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
 <%--
 <tr><th colspan="4"><%=intl._t("Add Port Routing")%></th></tr>
 <tr><td>
-    <input type="text" size="6" maxlength="5" id="i2pPort" name="i2pPort" title="<%=intl._t("Specify the port the server is running on")%>" value="" class="freetext port" placeholder="required" />
+    <input type="text" size="6" maxlength="5" id="i2pPort" name="i2pPort" title="<%=intl._t("Specify the port the server is running on")%>" value="" class="freetext port" placeholder="<%=intl._t("required")%>" required />
 </td><td>
     <input type="text" size="20" id="websiteName" name="spoofedHost" title="<%=intl._t("Website Hostname e.g. mysite.i2p")%>" value="<%=name%>" class="freetext" />
 </td><td>
     <input value="1" type="checkbox" name="useSSL" class="tickbox" />
 </td><td>
     <input type="text" size="20" name="targetHost" title="<%=intl._t("Hostname or IP address of the target server")%>" value="<%=targetHost%>" class="freetext host" /> :
-    <input type="text" size="6" maxlength="5" id="targetPort" name="targetPort" title="<%=intl._t("Specify the port the server is running on")%>" value="" class="freetext port" placeholder="required" />
+    <input type="text" size="6" maxlength="5" id="targetPort" name="targetPort" title="<%=intl._t("Specify the port the server is running on")%>" value="" class="freetext port" placeholder="<%=intl._t("required")%>" required />
 </td></tr>
 --%>
 <tr><td colspan="4"></td></tr>
diff --git a/apps/i2ptunnel/jsp/themes/dark/i2ptunnel.css b/apps/i2ptunnel/jsp/themes/dark/i2ptunnel.css
index 1cdec3b3fdce5fef3507e6a1201548a5cfc41b15..c425c7deef7a3ad20f7a346128073cd3123ae794 100644
--- a/apps/i2ptunnel/jsp/themes/dark/i2ptunnel.css
+++ b/apps/i2ptunnel/jsp/themes/dark/i2ptunnel.css
@@ -909,30 +909,6 @@ td.blankColumn {
      padding: 0;
 }
 
-.required:not(old) {
-     display: none;
-}
-
-input::-moz-placeholder {
-     color: #f00;
-     font-weight: bold;
-     opacity: 1;
-}
-
-::-webkit-input-placeholder {
-     color: #f00;
-     font-weight: bold;
-     opacity: 1;
-}
-
-input:focus::-moz-placeholder {
-     opacity: 0;
-}
-
-:focus::-webkit-input-placeholder {
-     opacity: 0;
-}
-
 input.tunnelName, input.tunnelDescriptionText, #userAgents {
      width: 80%;
      min-width: 280px;
@@ -1051,16 +1027,6 @@ input.tunnelName, input.tunnelDescriptionText, #userAgents {
      line-height: 140%;
 }
 
-#wizardPanel input::-moz-placeholder {
-     color: #bb7;
-     font-weight: normal;
-}
-
-#wizardPanel ::-webkit-input-placeholder {
-     color: #bb7;
-     font-weight: normal;
-}
-
 #wizardPanel .options {
      padding: 10px;
 }
diff --git a/apps/i2ptunnel/jsp/themes/light/i2ptunnel.css b/apps/i2ptunnel/jsp/themes/light/i2ptunnel.css
index 9ad8ce61a25af4b7458bb87c8aab66a2e06eeab9..83e949d2c862bf932aec8849648d41de908f8b29 100644
--- a/apps/i2ptunnel/jsp/themes/light/i2ptunnel.css
+++ b/apps/i2ptunnel/jsp/themes/light/i2ptunnel.css
@@ -785,28 +785,6 @@ table#statusMessages textarea, table#statusMessages textarea:active {
      padding: 0;
 }
 
-.required:not(old) {
-     display: none;
-}
-
-input::-moz-placeholder {
-     color: #f00;
-     opacity: 1;
-}
-
-input:focus::-moz-placeholder {
-     opacity: 0;
-}
-
-::-webkit-input-placeholder {
-     color: #f00;
-     opacity: 1;
-}
-
-:focus::-webkit-input-placeholder {
-     opacity: 0;
-}
-
 input.tunnelName, input.tunnelDescriptionText, #userAgents, .freetext.tunnelDescription {
      width: 80%;
      min-width: 280px !important;
@@ -919,16 +897,6 @@ input.tunnelName, input.tunnelDescriptionText, #userAgents, .freetext.tunnelDesc
      text-align: justify;
 }
 
-#wizardPanel input::-moz-placeholder {
-     color: #999;
-     font-weight: normal;
-}
-
-#wizardPanel ::-webkit-input-placeholder {
-     color: #999;
-     font-weight: normal;
-}
-
 #wizardPanel .options {
      padding: 10px;
 }
diff --git a/apps/i2ptunnel/jsp/wizard.jsp b/apps/i2ptunnel/jsp/wizard.jsp
index 2c2739b1043d345c5e28036089544ad4198d98cb..7640243e31fd736b2c8b7a644bac5853c5e08bc5 100644
--- a/apps/i2ptunnel/jsp/wizard.jsp
+++ b/apps/i2ptunnel/jsp/wizard.jsp
@@ -1,8 +1,7 @@
 <%@include file="headers.jsi"
 %><%@page pageEncoding="UTF-8"
 %><%@page contentType="text/html" import="net.i2p.i2ptunnel.web.EditBean"
-%><?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html>
+%><!DOCTYPE html>
 <jsp:useBean class="net.i2p.i2ptunnel.web.EditBean" id="editBean" scope="request" />
 <jsp:useBean class="net.i2p.i2ptunnel.ui.Messages" id="intl" scope="request" />
 <% String pageStr = request.getParameter("page");
@@ -49,11 +48,8 @@
     <link href="<%=editBean.getTheme()%>i2ptunnel.css?<%=net.i2p.CoreVersion.VERSION%>" rel="stylesheet" type="text/css" />
 </head>
 <body id="tunnelWizardPage">
-
     <form method="post" action="<%=(curPage == 7 ? "list" : "wizard") %>">
-
         <div id="wizardPanel" class="panel">
-
                 <%
                 if (curPage == 1) {
                   %><h2><%=intl._t("Server or client tunnel?")%></h2><%
@@ -73,8 +69,60 @@
                 <input type="hidden" name="page" value="<%=curPage%>" />
                 <input type="hidden" name="tunnel" value="null" />
                 <input type="hidden" name="nonce" value="<%=net.i2p.i2ptunnel.web.IndexBean.getNextNonce()%>" />
-
-
+                <%
+                /* hidden form data from other pages */
+                if (curPage != 1) {
+                    %><input type="hidden" name="isClient" value="<%=tunnelIsClient%>" /><%
+                }
+                if (curPage != 2) {
+                    %><input type="hidden" name="type" value="<%=tunnelType%>" /><%
+                }
+                if (curPage != 3) {
+                    String name = net.i2p.data.DataHelper.stripHTML(request.getParameter("nofilter_name"));
+                    if (name.length() == 0)
+                        name = "New tunnel";
+                    %><input type="hidden" name="nofilter_name" value="<%=name%>" />
+                      <input type="hidden" name="nofilter_description" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("nofilter_description"))%>" /><%
+                }
+                if (curPage != 4 && tunnelIsClient &&
+                    ("httpclient".equals(tunnelType) || "connectclient".equals(tunnelType) || "sockstunnel".equals(tunnelType) || "socksirctunnel".equals(tunnelType))) {
+                    %><input type="hidden" name="targetDestination" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("targetDestination"))%>" />
+                      <input type="hidden" name="proxyList" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("proxyList"))%>" /><%
+                }
+                if (curPage != 5) {
+                    if (tunnelIsClient) {
+                        %><input type="hidden" name="port" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("port"))%>" />
+                          <input type="hidden" name="reachableBy" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("reachableBy"))%>" /><%
+                    } else {
+                        String ip = net.i2p.data.DataHelper.stripHTML(request.getParameter("targetHost"));
+                        if (ip.length() == 0)
+                            ip = "127.0.0.1";
+                        %><input type="hidden" name="targetHost" value="<%=ip%>" />
+                          <input type="hidden" name="targetPort" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("targetPort"))%>" /><%
+                    }
+                }
+                if (curPage != 6 &&
+                    "1".equals(request.getParameter("startOnLoad"))) {
+                    %><input type="hidden" name="startOnLoad" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("startOnLoad"))%>" /><%
+                }
+                if (curPage == 7) {
+                    /* defaults */
+                    %><input type="hidden" name="tunnelDepth" value="3" />
+                      <input type="hidden" name="tunnelVariance" value="0" />
+                      <input type="hidden" name="tunnelQuantity" value="2" />
+                      <input type="hidden" name="tunnelBackupQuantity" value="0" />
+                      <input type="hidden" name="clientHost" value="internal" />
+                      <input type="hidden" name="clientport" value="internal" />
+                      <input type="hidden" name="reduceCount" value="1" />
+                      <input type="hidden" name="reduceTime" value="20" /><%
+                    if (tunnelIsClient) { /* Client-only defaults */
+                        %><input type="hidden" name="newDest" value="0" />
+                           <input type="hidden" name="closeTime" value="30" /><%
+                    } else { /* Server-only defaults */
+                        %><input type="hidden" name="privKeyFile" value="<%=editBean.getPrivateKeyFile(-1)%>" /><%
+                    }
+                }
+                %>
 <table>
             <% /* Page 1 - Whether to make a client or server tunnel */
 
@@ -106,8 +154,6 @@
     </tr>
 
             <%
-            } else {
-            %><input type="hidden" name="isClient" value="<%=tunnelIsClient%>" /><%
             } /* curPage 1 */
 
                /* End page 1 */ %>
@@ -197,8 +243,6 @@
         </td>
     </tr>
             <%
-            } else {
-            %><input type="hidden" name="type" value="<%=tunnelType%>" /><%
             } /* curPage 2 */
 
                /* End page 2 */ %>
@@ -218,19 +262,16 @@
     <tr>
         <td>
             <span class="tag"><%=intl._t("Name")%>:</span>
-                <input type="text" size="30" maxlength="50" name="nofilter_name" id="name" placeholder="New Tunnel" title="<%=intl._t("Name of tunnel to be displayed on Tunnel Manager home page and the router console sidebar")%>" value="<%=(!"null".equals(request.getParameter("nofilter_name")) ? net.i2p.data.DataHelper.stripHTML(request.getParameter("nofilter_name")) : "" ) %>" class="freetext" />
+                <input type="text" size="30" maxlength="50" name="nofilter_name" id="name" title="<%=intl._t("Name of tunnel to be displayed on Tunnel Manager home page and the router console sidebar")%>" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("nofilter_name"))%>" class="freetext" />
         </td>
     </tr>
     <tr>
         <td>
             <span class="tag"><%=intl._t("Description")%>:</span>
-                <input type="text" size="60" maxlength="80" name="nofilter_description"  id="description" title="<%=intl._t("Description of tunnel to be displayed on Tunnel Manager home page")%>" value="<%=(!"null".equals(request.getParameter("nofilter_description")) ? net.i2p.data.DataHelper.stripHTML(request.getParameter("nofilter_description")) : "" ) %>" class="freetext" />
+                <input type="text" size="60" maxlength="80" name="nofilter_description"  id="description" title="<%=intl._t("Description of tunnel to be displayed on Tunnel Manager home page")%>" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("nofilter_description"))%>" class="freetext" />
         </td>
     </tr>
             <%
-            } else {
-            %><input type="hidden" name="nofilter_name" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("nofilter_name"))%>" />
-            <input type="hidden" name="nofilter_description" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("nofilter_description"))%>" /><%
             } /* curPage 3 */
 
                /* End page 3 */ %>
@@ -252,12 +293,10 @@
     <tr>
         <td>
             <span class="tag"><%=intl._t("Outproxies")%>:</span>
-                <input type="text" size="30" id="proxyList" name="proxyList" title="<%=intl._t("List of I2P outproxy destinations, separated with commas (e.g. proxy1.i2p,proxy2.i2p)")%>" value="<%=(!"null".equals(request.getParameter("proxyList")) ? net.i2p.data.DataHelper.stripHTML(request.getParameter("proxyList")) : "" ) %>" class="freetext" />
+                <input type="text" size="30" id="proxyList" name="proxyList" title="<%=intl._t("List of I2P outproxy destinations, separated with commas (e.g. proxy1.i2p,proxy2.i2p)")%>" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("proxyList"))%>" class="freetext" />
         </td>
     </tr>
             <%
-                } else {
-            %><input type="hidden" name="proxyList" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("proxyList"))%>" /><%
                 } /* curPage 4 */
               } else if ("client".equals(tunnelType) || "ircclient".equals(tunnelType)) {
                 if (curPage == 4) {
@@ -273,14 +312,12 @@
     <tr>
         <td>
             <span class="tag"><%=intl._t("Tunnel Destination")%>:</span>
-                <input type="text" size="30" id="targetDestination" name="targetDestination" title="<%=intl._t("Enter a b64 or .i2p address here")%>" value="<%=(!"null".equals(request.getParameter("targetDestination")) ? net.i2p.data.DataHelper.stripHTML(request.getParameter("targetDestination")) : "" ) %>" class="freetext" />
+                <input type="text" size="30" id="targetDestination" name="targetDestination" title="<%=intl._t("Enter a b64 or .i2p address here")%>" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("targetDestination")) %>" class="freetext" placeholder="<%=intl._t("required")%>" required />
             &nbsp;(<%=intl._t("name, name:port, or destination")%>
                      )
         </td>
     </tr>
             <%
-                } else {
-            %><input type="hidden" name="targetDestination" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("targetDestination"))%>" /><%
                 } /* curPage 4 */
               }
             } /* tunnelIsClient */
@@ -303,18 +340,9 @@
     <tr>
         <td>
             <span class="tag"><%=intl._t("Host")%>:</span>
-                <input type="text" size="20" id="targetHost" name="targetHost" title="<%=intl._t("Hostname or IP address of the target server")%>" placeholder="127.0.0.1" value="<%=(!"null".equals(request.getParameter("targetHost")) ? net.i2p.data.DataHelper.stripHTML(request.getParameter("targetHost")) : "127.0.0.1" ) %>" class="freetext" />
+                <input type="text" size="20" id="targetHost" name="targetHost" title="<%=intl._t("Hostname or IP address of the target server")%>" placeholder="<%=intl._t("required")%>" required value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("targetHost"))%>" class="freetext" />
         </td>
     </tr>
-            <%
-              } else {
-            %><input type="hidden" name="targetHost" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("targetHost"))%>" /><%
-              } /* curPage 5 */
-            } /* streamrclient or !streamrserver */ %>
-            <%
-            if (!tunnelIsClient) {
-              if (curPage == 5) {
-            %>
     <tr>
         <td>
             <p>
@@ -325,12 +353,10 @@
     <tr>
         <td>
             <span class="tag"><%=intl._t("Port")%>:</span>
-                <input type="text" size="6" maxlength="5" id="targetPort" name="targetPort" title="<%=intl._t("Specify the port the server is running on")%>" value="<%=(!"null".equals(request.getParameter("targetPort")) ? net.i2p.data.DataHelper.stripHTML(request.getParameter("targetPort")) : "" ) %>" class="freetext" />
+                <input type="text" size="6" maxlength="5" id="targetPort" name="targetPort" title="<%=intl._t("Specify the port the server is running on")%>" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("targetPort"))%>" class="freetext" placeholder="<%=intl._t("required")%>" required />
         </td>
     </tr>
             <%
-              } else {
-            %><input type="hidden" name="targetPort" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("targetPort"))%>" /><%
               } /* curPage 5 */
             } /* !tunnelIsClient */ %>
             <%
@@ -347,18 +373,9 @@
     <tr>
         <td>
             <span class="tag"><%=intl._t("Port")%>:</span>
-                <input type="text" size="6" maxlength="5" id="port" name="port" title="<%=intl._t("Specify the local port this service should be accessible from")%>" value="<%=(!"null".equals(request.getParameter("port")) ? net.i2p.data.DataHelper.stripHTML(request.getParameter("port")) : "" ) %>" class="freetext" />
+                <input type="text" size="6" maxlength="5" id="port" name="port" title="<%=intl._t("Specify the local port this service should be accessible from")%>" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("port"))%>" class="freetext" placeholder="<%=intl._t("required")%>" required />
         </td>
     </tr>
-            <%
-              } else {
-            %><input type="hidden" name="port" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("port"))%>" /><%
-              } /* curPage 5 */
-            } /* tunnelIsClient or httpbidirserver */ %>
-            <%
-            if (tunnelIsClient) {
-              if (curPage == 5) {
-            %>
     <tr>
         <td>
             <p>
@@ -375,7 +392,7 @@
                 <select id="reachableBy" name="reachableBy" title="<%=intl._t("Listening interface (IP address) for client access (normally 127.0.0.1)")%>" class="selectbox">
               <%
                     String clientInterface = request.getParameter("reachableBy");
-                    if ("null".equals(clientInterface)) {
+                    if (null == clientInterface) {
                       clientInterface = "127.0.0.1";
                     }
                     for (String ifc : editBean.interfaceSet()) {
@@ -393,10 +410,8 @@
         </td>
     </tr>
                <%
-              } else {
-            %><input type="hidden" name="reachableBy" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("reachableBy"))%>" /><%
               } /* curPage 5 */
-            } /* (tunnelIsClient && !streamrclient) ||  httpbidirserver || streamrserver */
+            } /* tunnelIsClient */
 
                /* End page 5 */ %>
 
@@ -419,10 +434,6 @@
         </td>
     </tr>
             <%
-            } else {
-              if ("1".equals(request.getParameter("startOnLoad"))) {
-            %><input type="hidden" name="startOnLoad" value="<%=net.i2p.data.DataHelper.stripHTML(request.getParameter("startOnLoad"))%>" /><%
-              }
             } /* curPage 6 */
 
                /* End page 6 */ %>
@@ -486,15 +497,11 @@
                 <%
                 if (!tunnelIsClient) { %>
                     <tr><td><%=intl._t("Binding address")%></td><td>
-                    <%=net.i2p.data.DataHelper.stripHTML(request.getParameter("targetHost"))%></td></tr><%
-                }
-                if (!tunnelIsClient) { %>
+                    <%=net.i2p.data.DataHelper.stripHTML(request.getParameter("targetHost"))%></td></tr>
                     <tr><td><%=intl._t("Tunnel port")%></td><td><%=net.i2p.data.DataHelper.stripHTML(request.getParameter("targetPort"))%></td></tr><%
                 }
                 if (tunnelIsClient) { %>
-                    <tr><td><%=intl._t("Port")%></td><td><%=net.i2p.data.DataHelper.stripHTML(request.getParameter("port"))%></td></tr><%
-                }
-                if (tunnelIsClient) { %>
+                    <tr><td><%=intl._t("Port")%></td><td><%=net.i2p.data.DataHelper.stripHTML(request.getParameter("port"))%></td></tr>
                     <tr><td><%=intl._t("Reachable by")%></td><td><%=net.i2p.data.DataHelper.stripHTML(request.getParameter("reachableBy"))%></td></tr><%
                 } %>
                 <tr><td><%=intl._t("Tunnel auto-start")%></td><td><%
@@ -513,25 +520,9 @@
                 <%=intl._t("Alongside these basic settings, there are a number of advanced options for tunnel configuration.")%>
                 <%=intl._t("The wizard will set reasonably sensible default values for these, but you can view and/or edit these by clicking on the tunnel's name in the main I2PTunnel page.")%>
             </p>
-
-            <input type="hidden" name="tunnelDepth" value="3" />
-            <input type="hidden" name="tunnelVariance" value="0" />
-            <input type="hidden" name="tunnelQuantity" value="2" />
-            <input type="hidden" name="tunnelBackupQuantity" value="0" />
-            <input type="hidden" name="clientHost" value="internal" />
-            <input type="hidden" name="clientport" value="internal" />
-            <input type="hidden" name="reduceCount" value="1" />
-            <input type="hidden" name="reduceTime" value="20" /><%
-
-              if (tunnelIsClient) { /* Client-only defaults */
-            %><input type="hidden" name="newDest" value="0" />
-            <input type="hidden" name="closeTime" value="30" /><%
-              } else { /* Server-only defaults */
-            %><input type="hidden" name="privKeyFile" value="<%=editBean.getPrivateKeyFile(-1)%>" />
         </td>
     </tr>
             <%
-              } /* tunnelIsClient */
             } /* curPage 7 */
 
                /* End page 7 */ %>
@@ -539,7 +530,7 @@
         <td class="buttons">
                     <a class="control" title="<%=intl._t("Cancel the wizard and return to Tunnel Manager home page")%>" href="list"><%=intl._t("Cancel")%></a>
                     <% if (curPage != 1 && curPage != 7) {
-                    %><button id="controlPrevious" class="control" type="submit" name="action" value="Previous page" title="<%=intl._t("Return to previous page")%>"><%=intl._t("Previous")%></button><%
+                    %><button id="controlPrevious" class="control" type="submit" name="action" value="Previous page" title="<%=intl._t("Return to previous page")%>" formnovalidate><%=intl._t("Previous")%></button><%
                     } %>
                     <% if (curPage == 7) {
                     %><button id="controlSave" class="control" type="submit" name="action" value="Save changes" title="<%=intl._t("Save tunnel configuration")%>"><%=intl._t("Save Tunnel")%></button><%
@@ -552,8 +543,6 @@
     </tr>
 </table>
         </div>
-
     </form>
-
 </body>
 </html>