diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java
index ccdfb146088768dca9080a5fd75183e57bf2f370..234ba80e1ca3b80dee8863155230c2d44dd048d3 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java
@@ -698,11 +698,12 @@ public class SnarkManager implements Snark.CompleteListener {
 //       , "Orion", "http://gKik1lMlRmuroXVGTZ~7v4Vez3L3ZSpddrGZBrxVriosCQf7iHu6CIk8t15BKsj~P0JJpxrofeuxtm7SCUAJEr0AIYSYw8XOmp35UfcRPQWyb1LsxUkMT4WqxAT3s1ClIICWlBu5An~q-Mm0VFlrYLIPBWlUFnfPR7jZ9uP5ZMSzTKSMYUWao3ejiykr~mtEmyls6g-ZbgKZawa9II4zjOy-hdxHgP-eXMDseFsrym4Gpxvy~3Fv9TuiSqhpgm~UeTo5YBfxn6~TahKtE~~sdCiSydqmKBhxAQ7uT9lda7xt96SS09OYMsIWxLeQUWhns-C~FjJPp1D~IuTrUpAFcVEGVL-BRMmdWbfOJEcWPZ~CBCQSO~VkuN1ebvIOr9JBerFMZSxZtFl8JwcrjCIBxeKPBmfh~xYh16BJm1BBBmN1fp2DKmZ2jBNkAmnUbjQOqWvUcehrykWk5lZbE7bjJMDFH48v3SXwRuDBiHZmSbsTY6zhGY~GkMQHNGxPMMSIAAAA.i2p/bt/announce.php=http://orion.i2p/bt/"
 //       , "anonymity", "http://8EoJZIKrWgGuDrxA3nRJs1jsPfiGwmFWL91hBrf0HA7oKhEvAna4Ocx47VLUR9retVEYBAyWFK-eZTPcvhnz9XffBEiJQQ~kFSCqb1fV6IfPiV3HySqi9U5Caf6~hC46fRd~vYnxmaBLICT3N160cxBETqH3v2rdxdJpvYt8q4nMk9LUeVXq7zqCTFLLG5ig1uKgNzBGe58iNcsvTEYlnbYcE930ABmrzj8G1qQSgSwJ6wx3tUQNl1z~4wSOUMan~raZQD60lRK70GISjoX0-D0Po9WmPveN3ES3g72TIET3zc3WPdK2~lgmKGIs8GgNLES1cXTolvbPhdZK1gxddRMbJl6Y6IPFyQ9o4-6Rt3Lp-RMRWZ2TG7j2OMcNSiOmATUhKEFBDfv-~SODDyopGBmfeLw16F4NnYednvn4qP10dyMHcUASU6Zag4mfc2-WivrOqeWhD16fVAh8MoDpIIT~0r9XmwdaVFyLcjbXObabJczxCAW3fodQUnvuSkwzAAAA.i2p/anonymityTracker/announce.php=http://anonymityweb.i2p/anonymityTracker/"
 //       , "The freak's tracker", "http://mHKva9x24E5Ygfey2llR1KyQHv5f8hhMpDMwJDg1U-hABpJ2NrQJd6azirdfaR0OKt4jDlmP2o4Qx0H598~AteyD~RJU~xcWYdcOE0dmJ2e9Y8-HY51ie0B1yD9FtIV72ZI-V3TzFDcs6nkdX9b81DwrAwwFzx0EfNvK1GLVWl59Ow85muoRTBA1q8SsZImxdyZ-TApTVlMYIQbdI4iQRwU9OmmtefrCe~ZOf4UBS9-KvNIqUL0XeBSqm0OU1jq-D10Ykg6KfqvuPnBYT1BYHFDQJXW5DdPKwcaQE4MtAdSGmj1epDoaEBUa9btQlFsM2l9Cyn1hzxqNWXELmx8dRlomQLlV4b586dRzW~fLlOPIGC13ntPXogvYvHVyEyptXkv890jC7DZNHyxZd5cyrKC36r9huKvhQAmNABT2Y~pOGwVrb~RpPwT0tBuPZ3lHYhBFYmD8y~AOhhNHKMLzea1rfwTvovBMByDdFps54gMN1mX4MbCGT4w70vIopS9yAAAA.i2p/bytemonsoon/announce.php"
-       "welterde", "http://BGKmlDOoH3RzFbPRfRpZV2FjpVj8~3moFftw5-dZfDf2070TOe8Tf2~DAVeaM6ZRLdmFEt~9wyFL8YMLMoLoiwGEH6IGW6rc45tstN68KsBDWZqkTohV1q9XFgK9JnCwE~Oi89xLBHsLMTHOabowWM6dkC8nI6QqJC2JODqLPIRfOVrDdkjLwtCrsckzLybNdFmgfoqF05UITDyczPsFVaHtpF1sRggOVmdvCM66otyonlzNcJbn59PA-R808vUrCPMGU~O9Wys0i-NoqtIbtWfOKnjCRFMNw5ex4n9m5Sxm9e20UkpKG6qzEuvKZWi8vTLe1NW~CBrj~vG7I3Ok4wybUFflBFOaBabxYJLlx4xTE1zJIVxlsekmAjckB4v-cQwulFeikR4LxPQ6mCQknW2HZ4JQIq6hL9AMabxjOlYnzh7kjOfRGkck8YgeozcyTvcDUcUsOuSTk06L4kdrv8h2Cozjbloi5zl6KTbj5ZTciKCxi73Pn9grICn-HQqEAAAA.i2p/a=http://tracker.welterde.i2p/stats?mode=top5"
 //       , "mastertracker", "http://VzXD~stRKbL3MOmeTn1iaCQ0CFyTmuFHiKYyo0Rd~dFPZFCYH-22rT8JD7i-C2xzYFa4jT5U2aqHzHI-Jre4HL3Ri5hFtZrLk2ax3ji7Qfb6qPnuYkuiF2E2UDmKUOppI8d9Ye7tjdhQVCy0izn55tBaB-U7UWdcvSK2i85sauyw3G0Gfads1Rvy5-CAe2paqyYATcDmGjpUNLoxbfv9KH1KmwRTNH6k1v4PyWYYnhbT39WfKMbBjSxVQRdi19cyJrULSWhjxaQfJHeWx5Z8Ev4bSPByBeQBFl2~4vqy0S5RypINsRSa3MZdbiAAyn5tr5slWR6QdoqY3qBQgBJFZppy-3iWkFqqKgSxCPundF8gdDLC5ddizl~KYcYKl42y9SGFHIukH-TZs8~em0~iahzsqWVRks3zRG~tlBcX2U3M2~OJs~C33-NKhyfZT7-XFBREvb8Szmd~p66jDxrwOnKaku-G6DyoQipJqIz4VHmY9-y5T8RrUcJcM-5lVoMpAAAA.i2p/announce.php=http://tracker.mastertracker.i2p/"
 //       , "Galen", "http://5jpwQMI5FT303YwKa5Rd38PYSX04pbIKgTaKQsWbqoWjIfoancFdWCShXHLI5G5ofOb0Xu11vl2VEMyPsg1jUFYSVnu4-VfMe3y4TKTR6DTpetWrnmEK6m2UXh91J5DZJAKlgmO7UdsFlBkQfR2rY853-DfbJtQIFl91tbsmjcA5CGQi4VxMFyIkBzv-pCsuLQiZqOwWasTlnzey8GcDAPG1LDcvfflGV~6F5no9mnuisZPteZKlrv~~TDoXTj74QjByWc4EOYlwqK8sbU9aOvz~s31XzErbPTfwiawiaZ0RUI-IDrKgyvmj0neuFTWgjRGVTH8bz7cBZIc3viy6ioD-eMQOrXaQL0TCWZUelRwHRvgdPiQrxdYQs7ixkajeHzxi-Pq0EMm5Vbh3j3Q9kfUFW3JjFDA-MLB4g6XnjCbM5J1rC0oOBDCIEfhQkszru5cyLjHiZ5yeA0VThgu~c7xKHybv~OMXION7V8pBKOgET7ZgAkw1xgYe3Kkyq5syAAAA.i2p/tr/announce.php=http://galen.i2p/tr/"
-       , "crstrack", "http://b4G9sCdtfvccMAXh~SaZrPqVQNyGQbhbYMbw6supq2XGzbjU4NcOmjFI0vxQ8w1L05twmkOvg5QERcX6Mi8NQrWnR0stLExu2LucUXg1aYjnggxIR8TIOGygZVIMV3STKH4UQXD--wz0BUrqaLxPhrm2Eh9Hwc8TdB6Na4ShQUq5Xm8D4elzNUVdpM~RtChEyJWuQvoGAHY3ppX-EJJLkiSr1t77neS4Lc-KofMVmgI9a2tSSpNAagBiNI6Ak9L1T0F9uxeDfEG9bBSQPNMOSUbAoEcNxtt7xOW~cNOAyMyGydwPMnrQ5kIYPY8Pd3XudEko970vE0D6gO19yoBMJpKx6Dh50DGgybLQ9CpRaynh2zPULTHxm8rneOGRcQo8D3mE7FQ92m54~SvfjXjD2TwAVGI~ae~n9HDxt8uxOecAAvjjJ3TD4XM63Q9TmB38RmGNzNLDBQMEmJFpqQU8YeuhnS54IVdUoVQFqui5SfDeLXlSkh4vYoMU66pvBfWbAAAA.i2p/tracker/announce.php=http://crstrack.i2p/tracker/"
-       , "PaTracker", "http://tracker2.postman.i2p/announce.php=http://tracker2.postman.i2p/"
+       "POSTMAN", "http://tracker2.postman.i2p/announce.php=http://tracker2.postman.i2p/"
+       ,"WELTERDE", "http://BGKmlDOoH3RzFbPRfRpZV2FjpVj8~3moFftw5-dZfDf2070TOe8Tf2~DAVeaM6ZRLdmFEt~9wyFL8YMLMoLoiwGEH6IGW6rc45tstN68KsBDWZqkTohV1q9XFgK9JnCwE~Oi89xLBHsLMTHOabowWM6dkC8nI6QqJC2JODqLPIRfOVrDdkjLwtCrsckzLybNdFmgfoqF05UITDyczPsFVaHtpF1sRggOVmdvCM66otyonlzNcJbn59PA-R808vUrCPMGU~O9Wys0i-NoqtIbtWfOKnjCRFMNw5ex4n9m5Sxm9e20UkpKG6qzEuvKZWi8vTLe1NW~CBrj~vG7I3Ok4wybUFflBFOaBabxYJLlx4xTE1zJIVxlsekmAjckB4v-cQwulFeikR4LxPQ6mCQknW2HZ4JQIq6hL9AMabxjOlYnzh7kjOfRGkck8YgeozcyTvcDUcUsOuSTk06L4kdrv8h2Cozjbloi5zl6KTbj5ZTciKCxi73Pn9grICn-HQqEAAAA.i2p/a=http://tracker.welterde.i2p/stats?mode=top5"
+       , "CRSTRACK", "http://b4G9sCdtfvccMAXh~SaZrPqVQNyGQbhbYMbw6supq2XGzbjU4NcOmjFI0vxQ8w1L05twmkOvg5QERcX6Mi8NQrWnR0stLExu2LucUXg1aYjnggxIR8TIOGygZVIMV3STKH4UQXD--wz0BUrqaLxPhrm2Eh9Hwc8TdB6Na4ShQUq5Xm8D4elzNUVdpM~RtChEyJWuQvoGAHY3ppX-EJJLkiSr1t77neS4Lc-KofMVmgI9a2tSSpNAagBiNI6Ak9L1T0F9uxeDfEG9bBSQPNMOSUbAoEcNxtt7xOW~cNOAyMyGydwPMnrQ5kIYPY8Pd3XudEko970vE0D6gO19yoBMJpKx6Dh50DGgybLQ9CpRaynh2zPULTHxm8rneOGRcQo8D3mE7FQ92m54~SvfjXjD2TwAVGI~ae~n9HDxt8uxOecAAvjjJ3TD4XM63Q9TmB38RmGNzNLDBQMEmJFpqQU8YeuhnS54IVdUoVQFqui5SfDeLXlSkh4vYoMU66pvBfWbAAAA.i2p/tracker/announce.php=http://crstrack.i2p/tracker/"
+
     };
     
     /** comma delimited list of name=announceURL=baseURL for the trackers to be displayed */
diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
index 9b5513d4955d4d7c26bf959358d08ac610fe35c2..c98827d18debc754cef6b361857779afa22dce98 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
@@ -82,8 +82,8 @@ public class I2PSnarkServlet extends HttpServlet {
         // we want it to go to the base URI so we don't refresh with some funky action= value
         out.write("<meta http-equiv=\"refresh\" content=\"60;" + req.getRequestURI() + peerString + "\">\n");
         out.write(HEADER);
-        
-out.write("<div class=\"page\"><table border=\"0\" width=\"100%\"><tr><td align=\"center\" valign=\"top\" class=\"snarkTitle\">I2PSnark<br>Anonymous BitTorrent Client for I2P<hr /></hr></td></tr>");
+        out.write("</head><body>");
+        out.write("<div class=\"page\"><table border=\"0\" width=\"100%\"><tr><td align=\"center\" valign=\"top\" class=\"snarkTitle\">I2PSnark<br>Anonymous BitTorrent Client for I2P<hr /></hr></td></tr>");
         out.write("<tr><td align=\"center\"><a href=\"" + req.getRequestURI() + peerString + "\" class=\"snarkRefresh\">Refresh</a>");
         out.write(" | <a href=\"http://forum.i2p/viewforum.php?f=21\" class=\"snarkRefresh\">Forum</a>\n");
         Map trackers = _manager.getTrackers();
@@ -98,13 +98,13 @@ out.write("<div class=\"page\"><table border=\"0\" width=\"100%\"><tr><td align=
             out.write(" | <a href=\"" + baseURL + "\" class=\"snarkRefresh\">" + name + "</a>");
         }
         out.write("</table>\n");
-        out.write("<div class=\"snarkMessages\"><table><tr><td valign=\"top\" align=\"left\"><pre>");
+        out.write("<div class=\"section\"><div class=\"snarkMessages\"><table><tr><td valign=\"top\" align=\"left\"><pre>");
         List msgs = _manager.getMessages();
         for (int i = msgs.size()-1; i >= 0; i--) {
             String msg = (String)msgs.get(i);
             out.write(msg + "\n");
         }
-        out.write("</pre></td></tr></table></div>\n");
+        out.write("</pre></td></tr></table></div>");
 
         List snarks = getSortedSnarks(req);
         String uri = req.getRequestURI();
@@ -653,14 +653,14 @@ out.write("<div class=\"page\"><table border=\"0\" width=\"100%\"><tr><td align=
         // *not* enctype="multipart/form-data", so that the input type=file sends the filename, not the file
         out.write("<form action=\"" + uri + "\" method=\"POST\">\n");
         out.write("<input type=\"hidden\" name=\"nonce\" value=\"" + _nonce + "\" />\n");
-        out.write("<span class=\"snarkConfigTitle\">Add Torrent:</span><br />\n");
+        out.write("<div class=\"section\"><span class=\"snarkConfigTitle\">Add Torrent:</span><br />\n");
         out.write("From URL&nbsp;: <input type=\"text\" name=\"newURL\" size=\"80\" value=\"" + newURL + "\" /> \n");
         // not supporting from file at the moment, since the file name passed isn't always absolute (so it may not resolve)
         //out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br />\n");
         out.write("<input type=\"submit\" value=\"Add torrent\" name=\"action\" /><br />\n");
         out.write("<span class=\"snarkAddInfo\">Alternately, you can copy .torrent files to " + _manager.getDataDir().getAbsolutePath() + "<br />\n");
         out.write("Removing that .torrent file will cause the torrent to stop.<br /></span>\n");
-        out.write("</form>\n</span>\n");  
+        out.write("</form>\n</span></div>");  
     }
     
     private void writeSeedForm(PrintWriter out, HttpServletRequest req) throws IOException {
@@ -669,7 +669,7 @@ out.write("<div class=\"page\"><table border=\"0\" width=\"100%\"><tr><td align=
         if (baseFile == null)
             baseFile = "";
         
-        out.write("<span class=\"snarkNewTorrent\"><hr />\n");
+        out.write("<div class=\"section\"><span class=\"snarkNewTorrent\">\n");
         // *not* enctype="multipart/form-data", so that the input type=file sends the filename, not the file
         out.write("<form action=\"" + uri + "\" method=\"POST\">\n");
         out.write("<input type=\"hidden\" name=\"nonce\" value=\"" + _nonce + "\" />\n");
@@ -693,7 +693,7 @@ out.write("<div class=\"page\"><table border=\"0\" width=\"100%\"><tr><td align=
         out.write("or <input type=\"text\" name=\"announceURLOther\" size=\"50\" value=\"http://\" " +
                   "title=\"Custom tracker URL\" /> ");
         out.write("<input type=\"submit\" value=\"Create torrent\" name=\"action\" />\n");
-        out.write("</form>\n</span>\n");        
+        out.write("</form>\n</span></div>");        
     }
     
     private void writeConfigForm(PrintWriter out, HttpServletRequest req) throws IOException {
@@ -705,7 +705,7 @@ out.write("<div class=\"page\"><table border=\"0\" width=\"100%\"><tr><td align=
         //int seedPct = 0;
        
         out.write("<form action=\"" + uri + "\" method=\"POST\">\n");
-        out.write("<span class=\"snarkConfig\"><hr />\n");
+        out.write("<div class=\"section\"><span class=\"snarkConfig\">\n");
         out.write("<input type=\"hidden\" name=\"nonce\" value=\"" + _nonce + "\" />\n");
         out.write("<span class=\"snarkConfigTitle\">Configuration:</span><br />\n");
         out.write("Data directory: <input type=\"text\" size=\"40\" name=\"dataDir\" value=\"" + dataDir + "\" ");
@@ -743,7 +743,7 @@ out.write("<div class=\"page\"><table border=\"0\" width=\"100%\"><tr><td align=
         out.write("Announce URLs: <input type=\"text\" name=\"openTrackers\" value=\""
                   + openTrackers + "\" size=\"50\" /><br />\n");
 
-        //out.write("<hr />\n");
+        //out.write("\n");
         out.write("EepProxy host: <input type=\"text\" name=\"eepHost\" value=\""
                   + _manager.util().getEepProxyHost() + "\" size=\"15\" /> ");
         out.write("port: <input type=\"text\" name=\"eepPort\" value=\""
@@ -764,7 +764,7 @@ out.write("<div class=\"page\"><table border=\"0\" width=\"100%\"><tr><td align=
                   + opts.toString() + "\" /><br />\n");
         out.write("<input type=\"submit\" value=\"Save configuration\" name=\"action\" />\n");
         out.write("</span>\n");
-        out.write("</form>\n");
+        out.write("</form></div>");
     }
     
     // rounding makes us look faster :)
@@ -781,7 +781,7 @@ out.write("<div class=\"page\"><table border=\"0\" width=\"100%\"><tr><td align=
     
     private static final String HEADER_BEGIN = "<html>\n" +
                                                "<head>\n" +
-                                               "<title>I2PSnark - anonymous bittorrent</title>\n";
+                                               "<title>I2PSnark - Anonymous BitTorrent Client</title>\n";
                                          
     private static final String HEADER = "<link href=\"../themes/console/snark.css\" rel=\"stylesheet\" type=\"text/css\" />";
                                        
@@ -800,11 +800,11 @@ out.write("<div class=\"page\"><table border=\"0\" width=\"100%\"><tr><td align=
     
    private static final String TABLE_EMPTY  = "<tr class=\"snarkTorrentEven\">" +
                                               "<td class=\"snarkTorrentEven\" align=\"center\"" +
-                                              "    valign=\"top\" colspan=\"8\"><i>No torrents</i></td></tr>\n";
+                                              "    valign=\"top\" colspan=\"8\"><i>No torrents loaded.</i></td></tr>\n";
 
-    private static final String TABLE_FOOTER = "</table>\n";
+    private static final String TABLE_FOOTER = "</table></div>\n";
     
-    private static final String FOOTER = "</div></div></body></html>";
+    private static final String FOOTER = "</div></div></div></body></html>";
 
 /** inner class, don't bother reindenting */
 private static class FetchAndAdd implements Runnable {
diff --git a/apps/i2psnark/snark.css b/apps/i2psnark/snark.css
deleted file mode 100644
index 40817a68d9746d2be26f15416a6d877afafe0b17..0000000000000000000000000000000000000000
--- a/apps/i2psnark/snark.css
+++ /dev/null
@@ -1,93 +0,0 @@
-body {
-	background-color: #eef;
-	color:#001;
-	font-family:"Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
-}
-
-.snarkTitle {
-	text-align: left;
-	float: left;
-	margin: 0px 0px 5px 5px;
-	display: inline;
-	font-size: 16pt;
-	font-weight: bold;
-}
-.snarkRefresh {
-                  font-size: 10pt;
-}
-.snarkMessages {
-	border: none;
-  background-color: #ddf;
-  font-family: monospace;
-  font-size: 10pt;
-  font-weight: 100;
-  width: 100%;
-  text-align: left;
-  margin: 0px 0px 15px 15px;
-  border: 0px;
-  padding: 5px;
-  border-width: 0px;
-  border-spacing: 0px;
-  -moz-border-radius: 4px;
-  -khtml-border-radius: 4px;
-  border-radius: 4px;
-  border: 1px solid #001;
-}
-table {
-	margin: 0px 0px 0px 0px;
-	border: 0px;
-	padding: 0px;
-	border-width: 0px;
-	border-spacing: 0px;
-}
-th {
-	background-color: #C7D5D5;
-	padding: 5px;
-  font-size: 9pt;
-}
-td {
-	padding: 5px;
-}
-.snarkTorrentEven {
-	background-color: #E7E7E7;
-}
-.snarkTorrentOdd {
-	background-color: #DDDDCC;
-}
-.snarkNewTorrent {
-	font-size: 10pt;
-}
-.snarkAddInfo {
-	font-size: 10pt;
-  line-height: 130% !important;
-}
-.snarkConfigTitle {
-	font-size: 11pt;
-                  font-weight: bold;
-}
-.snarkConfig {
-                  font-size: 10pt;
-}
-
-.page {
-	background-color: #fff;
-	color:#001;
-  margin: 20px;
-  padding: 20px 20px 0 20px;
-  -moz-border-radius: 4px;
-  -khtml-border-radius: 4px;
-  border-radius: 4px;
-  border: 1px solid #001;
-  font-size: 9pt !important;
-  line-height: 160% !important;
-  -moz-box-shadow: inset 0px 0px 1px 0px #002;
-  text-align: center;
-}
-
-form {
-  line-height: 300%
-}
-
-p { 
-  line-height: 150%
-}
\ No newline at end of file
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHelper.java
index d73b75765802cb92f95e224723f261790d086336..5c1462b576370e3cbdf18abee04ef9858e7ef5c9 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHelper.java
@@ -75,19 +75,20 @@ public class ConfigTunnelsHelper extends HelperBase {
             out.getQuantity() + out.getBackupQuantity() >= WARN_QUANTITY)
             buf.append("<tr><th colspan=\"3\"><font color=\"red\">PERFORMANCE WARNING - Settings include high tunnel quantities</font></th></tr>");
 
+buf.append("<tr><th></th><th><img src=\"/themes/console/images/inbound.png\" alt=\"Inbound\" title=\"Inbound Tunnels\"/>&nbsp;&nbsp;Inbound</th><th><img src=\"/themes/console/images/outbound.png\" alt=\"Outbound Tunnels\" title=\"Outbound\"/>&nbsp;&nbsp;Outbound</th></tr>\n");
 
-        buf.append("<tr><th></th><th>Inbound</th><th>Outbound</th></tr>\n");
+//        buf.append("<tr><th></th><th>Inbound</th><th>Outbound</th></tr>\n");
         
         // tunnel depth
-        buf.append("<tr><td>Depth</td>\n");
-        buf.append("<td><select name=\"").append(index).append(".depthInbound\">\n");
+        buf.append("<tr><td align=\"right\">Depth</td>\n");
+        buf.append("<td align=\"center\"><select name=\"").append(index).append(".depthInbound\">\n");
         int now = in.getLength();
         renderOptions(buf, 0, MAX_LENGTH, now, "", "hop");
         if (now > MAX_LENGTH)
             renderOptions(buf, now, now, now, "", "hop");
         buf.append("</select></td>\n");
 
-        buf.append("<td><select name=\"").append(index).append(".depthOutbound\">\n");
+        buf.append("<td align=\"center\"><select name=\"").append(index).append(".depthOutbound\">\n");
         now = out.getLength();
         renderOptions(buf, 0, MAX_LENGTH, now, "", "hop");
         if (now > MAX_LENGTH)
@@ -96,8 +97,8 @@ public class ConfigTunnelsHelper extends HelperBase {
         buf.append("</tr>\n");
 
         // tunnel depth variance
-        buf.append("<tr><td>Randomization</td>\n");
-        buf.append("<td><select name=\"").append(index).append(".varianceInbound\">\n");
+        buf.append("<tr><td align=\"right\">Randomization</td>\n");
+        buf.append("<td align=\"center\"><select name=\"").append(index).append(".varianceInbound\">\n");
         now = in.getLengthVariance();
         renderOptions(buf, 0, 0, now, "", "hop");
         renderOptions(buf, 1, MAX_VARIANCE, now, "+ 0-", "hop");
@@ -108,7 +109,7 @@ public class ConfigTunnelsHelper extends HelperBase {
             renderOptions(buf, now, now, now, "+/- 0", "hop");
         buf.append("</select></td>\n");
 
-        buf.append("<td><select name=\"").append(index).append(".varianceOutbound\">\n");
+        buf.append("<td align=\"center\"><select name=\"").append(index).append(".varianceOutbound\">\n");
         now = out.getLengthVariance();
         renderOptions(buf, 0, 0, now, "", "hop");
         renderOptions(buf, 1, MAX_VARIANCE, now, "+ 0-", "hop");
@@ -120,15 +121,15 @@ public class ConfigTunnelsHelper extends HelperBase {
         buf.append("</select></td>\n");
 
         // tunnel quantity
-        buf.append("<tr><td>Quantity</td>\n");
-        buf.append("<td><select name=\"").append(index).append(".quantityInbound\">\n");
+        buf.append("<tr><td align=\"right\">Quantity</td>\n");
+        buf.append("<td align=\"center\"><select name=\"").append(index).append(".quantityInbound\">\n");
         now = in.getQuantity();
         renderOptions(buf, 1, MAX_QUANTITY, now, "", "tunnel");
         if (now > MAX_QUANTITY)
             renderOptions(buf, now, now, now, "", "tunnel");
         buf.append("</select></td>\n");
 
-        buf.append("<td><select name=\"").append(index).append(".quantityOutbound\">\n");
+        buf.append("<td align=\"center\"><select name=\"").append(index).append(".quantityOutbound\">\n");
         now = out.getQuantity();
         renderOptions(buf, 1, MAX_QUANTITY, now, "", "tunnel");
         if (now > MAX_QUANTITY)
@@ -137,15 +138,15 @@ public class ConfigTunnelsHelper extends HelperBase {
         buf.append("</tr>\n");
 
         // tunnel backup quantity
-        buf.append("<tr><td>Backup quantity</td>\n");
-        buf.append("<td><select name=\"").append(index).append(".backupInbound\">\n");
+        buf.append("<tr><td align=\"right\">Backup quantity</td>\n");
+        buf.append("<td align=\"center\"><select name=\"").append(index).append(".backupInbound\">\n");
         now = in.getBackupQuantity();
         renderOptions(buf, 0, MAX_BACKUP_QUANTITY, now, "", "tunnel");
         if (now > MAX_BACKUP_QUANTITY)
             renderOptions(buf, now, now, now, "", "tunnel");
         buf.append("</select></td>\n");
 
-        buf.append("<td><select name=\"").append(index).append(".backupOutbound\">\n");
+        buf.append("<td align=\"center\"><select name=\"").append(index).append(".backupOutbound\">\n");
         now = out.getBackupQuantity();
         renderOptions(buf, 0, MAX_BACKUP_QUANTITY, now, "", "tunnel");
         if (now > MAX_BACKUP_QUANTITY)
@@ -154,9 +155,9 @@ public class ConfigTunnelsHelper extends HelperBase {
         buf.append("</tr>\n");
 
         // custom options
-        buf.append("<tr><td>Inbound options:</td>\n");
-        buf.append("<td colspan=\"2\"><input name=\"").append(index);
-        buf.append(".inboundOptions\" type=\"text\" size=\"40\" ");
+        buf.append("<tr><td align=\"right\">Inbound options:</td>\n");
+        buf.append("<td colspan=\"2\" align=\"center\"><input name=\"").append(index);
+        buf.append(".inboundOptions\" type=\"text\" size=\"32\" ");
         buf.append("value=\"");
         Properties props = in.getUnknownOptions();
         for (Iterator iter = props.keySet().iterator(); iter.hasNext(); ) {
@@ -165,9 +166,9 @@ public class ConfigTunnelsHelper extends HelperBase {
             buf.append(prop).append("=").append(val).append(" ");
         }
         buf.append("\"/></td></tr>\n");
-        buf.append("<tr><td>Outbound options:</td>\n");
-        buf.append("<td colspan=\"2\"><input name=\"").append(index);
-        buf.append(".outboundOptions\" type=\"text\" size=\"40\" ");
+        buf.append("<tr><td align=\"right\">Outbound options:</td>\n");
+        buf.append("<td colspan=\"2\" align=\"center\"><input name=\"").append(index);
+        buf.append(".outboundOptions\" type=\"text\" size=\"32\" ");
         buf.append("value=\"");
         props = in.getUnknownOptions();
         for (Iterator iter = props.keySet().iterator(); iter.hasNext(); ) {
@@ -176,7 +177,7 @@ public class ConfigTunnelsHelper extends HelperBase {
             buf.append(prop).append("=").append(val).append(" ");
         }
         buf.append("\"/></td></tr>\n");
-        buf.append("<tr><td colspan=\"3\"><hr /></td></tr>\n");
+//        buf.append("<tr><td colspan=\"3\"><hr /></td></tr>\n");
     }
 
     private void renderOptions(StringBuilder buf, int min, int max, int now, String prefix, String name) {
diff --git a/apps/routerconsole/jsp/configui.jsp b/apps/routerconsole/jsp/configui.jsp
index ae5fa56364567f08442f19665d1ce229ea0f482a..3835db33b7d8fa16312fa780f475aec279e9a987 100644
--- a/apps/routerconsole/jsp/configui.jsp
+++ b/apps/routerconsole/jsp/configui.jsp
@@ -38,7 +38,8 @@
 <input type="submit" name="shouldsave" value="Apply" /> <input type="reset" value="Cancel" />
 </form>
 <% } else { %>
-Theme selection disabled for Internet Explorer, sorry.
+Theme selection disabled for Internet Explorer, sorry.<hr>If you're not using IE, it's likely that 
+your browser is pretending to be IE; please configure your browser (or proxy) to use a different User Agent string if you'd like to access the console themes.
 <% } %>
 </div>
 </div>
diff --git a/apps/routerconsole/jsp/summarynoframe.jsp b/apps/routerconsole/jsp/summarynoframe.jsp
index c31297c08bd8afa8623cfd5e9eb83c096eb3f756..655741b83a7fec7bf68d6ccdf844604a37e8ccfe 100644
--- a/apps/routerconsole/jsp/summarynoframe.jsp
+++ b/apps/routerconsole/jsp/summarynoframe.jsp
@@ -28,8 +28,8 @@
 <u><b>I2P Services</b></u><br />
 <a href="susimail/susimail" target="blank">Susimail</a> 
 <a href="susidns/index.jsp" target="_blank">SusiDNS</a> 
-<a href="i2psnark/" target="_blank">I2PSnark</a> 
-<a href="http://127.0.0.1:7658/" target="_blank">Eepsite</a><hr /> 
+<a href="i2psnark/" target="_blank">Torrents</a> 
+<a href="http://127.0.0.1:7658/" target="_blank">Webserver</a><hr /> 
 <u><b>I2P Internals</b></u><br />
 <a href="i2ptunnel/index.jsp" target="_blank">I2PTunnel</a> 
 <a href="tunnels.jsp" target="_top">Tunnels</a> 
diff --git a/installer/resources/themes/console/classic/console.css b/installer/resources/themes/console/classic/console.css
index d8d65c36a42aad8dd09c979c2c80a991bb384f57..3957331dc195caffd25afae83f172fea39fe8eba 100644
--- a/installer/resources/themes/console/classic/console.css
+++ b/installer/resources/themes/console/classic/console.css
@@ -49,13 +49,14 @@ div.routersummaryouter {
 
 div.routersummary {
      background: #fafaff;
-     width: 200px;
+     width: 175px;
      color: inherit;
      margin: 0em;
      padding: 5px;
      text-align: left;
      border: medium solid #efefff;
      font-size: 0.82em;
+     word-wrap: break-word;
 }
 
 div.warning {
diff --git a/installer/resources/themes/console/dark/console.css b/installer/resources/themes/console/dark/console.css
index a9e33febcc32fcc344e13712eded39dbd575fd8d..a5c7acfb2804d973e2810821e1e6ac0bff5c98c4 100644
--- a/installer/resources/themes/console/dark/console.css
+++ b/installer/resources/themes/console/dark/console.css
@@ -115,6 +115,7 @@ div.warning {
      background-position:15px center;
      background-repeat:no-repeat;
      -moz-box-shadow: inset 0px 0px 0px 1px #f00;
+     word-wrap: break-word;
 }
 
 div.main {
@@ -153,6 +154,7 @@ div.news li {
      margin: 0 10px 0 30px;
      padding: 5px;
      vertical-align: middle;
+     word-wrap: break-word;
 }
 
 div.confignav {
@@ -170,7 +172,7 @@ div.confignav {
 }
 
 div.configure {
-     padding: 0 15px;
+     padding: 0 15px 15px 15px;
      margin: 10px 0px;
      background: #005;
      -moz-border-radius: 4px;
@@ -220,7 +222,7 @@ table {
 }
 
 th {
-     padding: 4px;
+     padding: 8px;
      color: #eef;
      text-align: center;
      font-size: 8pt;
@@ -240,17 +242,16 @@ tr:nth-child(odd) {
      background: #003 url('images/darkbluetile.png') !important;
      vertical-align: middle;
 }
-
+/*
 tr:last-child {
      background: #004 url('images/lightbluetile.png') !important;
      font-weight: bold;
      border: 1px solid #99f !important;
 }
-
+*/
 td {
      padding: 5px 10px;
      color: #eef;
-     text-align: left;
      vertical-align: middle;
 }
 
@@ -266,6 +267,7 @@ div.main li {
      margin: 2px 0px 2px 30px;
      padding: 1px 20px 1px 0px;
      line-height: 150%;
+     word-wrap: break-word;
 }
 
 .tidylist {
@@ -291,6 +293,9 @@ code {
 
 a:link, h2 a:link{
      color: #99f;
+     text-decoration: none;
+     font-weight: bold;     
+     word-wrap: break-word;
 }
 
 a:visited{
@@ -349,6 +354,7 @@ h2 {
      vertical-align: middle;
      margin: 25px 0 20px 0 !important;
      -moz-box-shadow: inset 0px 0px 1px 0px #eef;
+     word-wrap: break-word;
 }
 
 h2 a:visited {
@@ -441,6 +447,7 @@ input {
      padding: 1px 2px;
      text-decoration: none;
      min-width: 110px;
+     opacity: 0.8;
 }
 
 input:hover {
diff --git a/installer/resources/themes/console/images/inbound.png b/installer/resources/themes/console/images/inbound.png
new file mode 100644
index 0000000000000000000000000000000000000000..df0083f930a789f5b87b9ad925f0ee04020e155a
Binary files /dev/null and b/installer/resources/themes/console/images/inbound.png differ
diff --git a/installer/resources/themes/console/images/outbound.png b/installer/resources/themes/console/images/outbound.png
new file mode 100644
index 0000000000000000000000000000000000000000..a3e8722f014c59265ca95bac57ae8b9fe311be55
Binary files /dev/null and b/installer/resources/themes/console/images/outbound.png differ
diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css
index d185b9218ecff19d50d06367e73a0b787788448b..cbe52417c5dcc17d7eeded04cd7de2c1ff13544f 100644
--- a/installer/resources/themes/console/light/console.css
+++ b/installer/resources/themes/console/light/console.css
@@ -35,7 +35,7 @@ div.logo {
      border-radius: 4px;
      background: #ddddff url('images/lightbluetile.png');
      width: 175px;
-     -moz-box-shadow: inset 0px 0px 16px 1px #eef;
+     -moz-box-shadow: inset 0px 0px 1px 0px #002;
 }
 
 div.toolbar {
@@ -86,18 +86,20 @@ div.routersummaryouter {
 
 div.routersummary {
 /*  margin: 0px 20px 20px 0px; */
-     width: auto;
+     width: 175px;
      padding: 10px;
      text-align: center;
      border: 1px solid #000033;
-     background: #ddddff url('images/lightbluetile.png');
+     background: #ddf url('images/lightbluetile.png');
      color: #000;
      font-size: 8pt;
      clear: left;/* fixes a bug in Opera */
      -moz-border-radius: 4px;
      -khtml-border-radius: 4px;
      border-radius: 4px;
+/* 
      float: left;
+*/     
      -moz-box-shadow: inset 0px 0px 1px 0px #002;
 }
 
@@ -116,6 +118,7 @@ div.warning {
      background-position:15px center;
      background-repeat:no-repeat;
      -moz-box-shadow: inset 0px 0px 1px 0px #d00;
+     word-wrap: break-word;
 }
 
 div.main {
@@ -214,7 +217,7 @@ div.confignav {
 }
 
 div.configure {
-     padding: 0 15px !important;
+     padding: 0 15px 15px 15px !important;
      margin: 10px 0px 25px 0;
      background: #ddf url('images/lightbluetile.png');
      -moz-border-radius: 4px;
@@ -265,11 +268,11 @@ table {
 }
 
 th {
-     padding: 4px;
+     padding: 8px;
      color: #000;
      background: #b4c8ff url('images/tabletitlelight.png') repeat-x;
      text-align: center;
-     font-size: 8pt;
+     font-size: 9pt;
 }
 
 tr {
@@ -293,7 +296,7 @@ tr:last-child {
 td {
      padding: 5px;
      color: #000;
-     text-align: left;
+     vertical-align: middle;
 }
 
 tt {
@@ -308,6 +311,7 @@ div.main li {
      margin: 2px 5px 0px 20px;
      padding: 1px 20px 1px 10px;
      line-height: 150%;
+     word-wrap: break-word;
 }
 
 .tidylist {
@@ -338,6 +342,7 @@ a:link{
      color: #007;
      text-decoration: none;
      font-weight: bold;
+     word-wrap: break-word;
 }
 
 a:visited{
@@ -395,6 +400,7 @@ h2 {
      -khtml-border-radius: 4px;
      margin: 25px 0 20px 0 !important;
      -moz-box-shadow: inset 0px 0px 1px 0px #002;
+     word-wrap: break-word;
 }
 
 h2 a:hover {
@@ -471,25 +477,28 @@ button:active{
 
 input {
      background: #eef;
-     color: #003;
+     color: #001;
      margin: 5px 10px 5px 10px;
      padding: 4px 2px;
      font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
      border: 1px solid #001;
      text-decoration: none;
      min-width: 110px;
+     opacity: 0.8;
 }
 
 input:hover {
      background: #f60;
      color: #fff;
      border: 1px solid #f60;
+     opacity: 0.9;
 }
 
 input:active {
      background: #002;
      color: #f60;
      border: 1px solid #f60;
+     opacity: 1.0;
 }
 
 submit {
diff --git a/installer/resources/themes/console/snark.css b/installer/resources/themes/console/snark.css
index a6a66852ab1de5727ecef1dadbf39ec37fac11a4..a35cba0468662958746aa153087b941e31f231b6 100644
--- a/installer/resources/themes/console/snark.css
+++ b/installer/resources/themes/console/snark.css
@@ -5,19 +5,8 @@ body {
   font-size: 9pt;
 }
 
-/*
 .snarkTitle {
-	text-align: left;
-	float: left;
-	margin: 0px 0px 5px 5px;
-	display: inline;
-	font-size: 16pt;
-	font-weight: bold;
-}
-*/
-
-.snarkTitle {
-	font-size: 16pt;
+	font-size: 12pt;
 	font-weight: bold;
 	text-align: center;
 }
@@ -27,23 +16,27 @@ body {
 }
 
 .snarkMessages {
-	border: none;
-  background-color: #9f9;
-  font-family: monospace;
-  font-size: 10pt;
+  background-color: #fe9;
+  font-family: "Lucida Console", "DejaVu Sans Mono", Courier, mono !important;
+  font-size: 9pt;
   font-weight: bold;
-/*  width: 100%; */
   text-align: left;
   margin: 0 0 15px 0;
   border: 0px;
   padding: 5px;
-  border-width: 0px;
   border-spacing: 0px;
   -moz-border-radius: 4px;
   -khtml-border-radius: 4px;
   border-radius: 4px;
   border: 2px inset #770;
-  overflow-x: scroll;
+  text-align: center; 
+}
+
+pre {
+  font-family: "Lucida Console", "DejaVu Sans Mono", Courier, mono !important;
+  width: 100%;
+  font-size: 8pt;
+  padding: 0;
 }
 
 table {
@@ -54,19 +47,25 @@ table {
 	border-spacing: 0px;
 }
 th {
-	background-color: #C7D5D5;
+	background-color: #f91;
 	padding: 5px;
   font-size: 9pt;
 }
+
+.SnarkTorrents {
+	margin: 0;
+	border: 1px solid #001;
+}
+
 td {
 	padding: 5px;
 }
 .snarkTorrentEven {
-	background-color: #bbf;
+	background-color: #fb1;
   font-size: 8pt;
 }
 .snarkTorrentOdd {
-	background-color: #ddf;
+	background-color: #fa1;
   font-size: 8pt;
 }
 .snarkNewTorrent {
@@ -83,14 +82,14 @@ td {
 }
 
 .snarkConfig {
- font-size: 10pt;
+  font-size: 10pt;
 }
 
 .page {
 	background-color: #fff;
 	color:#001;
   margin: 20px;
-  padding: 20px 20px 0 20px;
+  padding: 0 20px 5px 20px;
   -moz-border-radius: 4px;
   -khtml-border-radius: 4px;
   border-radius: 4px;
@@ -102,7 +101,7 @@ td {
 }
 
 form {
-  line-height: 300%
+  line-height: 250%
 }
 
 p { 
@@ -111,4 +110,27 @@ p {
 
 a:link {
   padding 5px;
+}
+
+hr {
+  color: #003;
+  background: #003;
+  height: 1px;
+  border: 0px solid #003;
+  margin: 5px 0;
+}
+
+div.section {
+  margin: 20px 0 0 0;
+  padding: 10px;
+  background: #ffe;
+  border: 1px solid #001;
+  text-align: left;
+  color: #001;
+  -moz-border-radius: 4px;
+  -khtml-border-radius: 4px;
+  border-radius: 4px;
+  -moz-box-shadow: inset 0px 0px 1px 0px #002;
+  word-wrap: break-word;
+  text-align: center;
 }
\ No newline at end of file
diff --git a/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java b/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java
index cd3a5e0ac269a2eb229248844a48bee2746e20be..1c164188f1e6daa4e1cd9c71e2319e4ffd5ae6fe 100644
--- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java
+++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java
@@ -455,46 +455,47 @@ public class TunnelPoolManager implements TunnelManagerFacade {
             }
             out.write("<tr>");
             if (cfg.getReceiveTunnel() != null)
-                out.write("<td>" + cfg.getReceiveTunnel().getTunnelId() +"</td>");
+                out.write("<td align=\"center\">" + cfg.getReceiveTunnel().getTunnelId() +"</td>");
             else
-                out.write("<td>n/a</td>");
+                out.write("<td align=\"center\">n/a</td>");
             if (cfg.getReceiveFrom() != null)
                 out.write("<td align=\"right\">" + netDbLink(cfg.getReceiveFrom()) +"</td>");
             else
-                out.write("<td>&nbsp;</td>");
+                out.write("<td align=\"center\">&nbsp;</td>");
             if (cfg.getSendTunnel() != null)
-                out.write("<td>" + cfg.getSendTunnel().getTunnelId() +"</td>");
+                out.write("<td align=\"center\">" + cfg.getSendTunnel().getTunnelId() +"</td>");
             else
-                out.write("<td>&nbsp;</td>");
+                out.write("<td align=\"center\">&nbsp;</td>");
             if (cfg.getSendTo() != null)
-                out.write("<td align=\"right\">" + netDbLink(cfg.getSendTo()) +"</td>");
+                out.write("<td align=\"center\">" + netDbLink(cfg.getSendTo()) +"</td>");
             else
-                out.write("<td>&nbsp;</td>");
+//                out.write("<td align=\"center\">&nbsp;</td>");
+                out.write("<td align=\"center\">&nbsp;</td>");
             long timeLeft = cfg.getExpiration()-_context.clock().now();
             if (timeLeft > 0)
-                out.write("<td align=right>" + DataHelper.formatDuration(timeLeft) + "</td>");
+                out.write("<td align=\"center\">" + DataHelper.formatDuration(timeLeft) + "</td>");
             else
-                out.write("<td align=right>(grace period)</td>");
-            out.write("<td align=right>" + cfg.getProcessedMessagesCount() + "KB</td>");
+                out.write("<td align=\"center\">(grace period)</td>");
+            out.write("<td align=\"center\">" + cfg.getProcessedMessagesCount() + "KB</td>");
             int lifetime = (int) ((_context.clock().now() - cfg.getCreation()) / 1000);
             if (lifetime <= 0)
                 lifetime = 1;
             if (lifetime > 10*60)
                 lifetime = 10*60;
             int bps = 1024 * (int) cfg.getProcessedMessagesCount() / lifetime;
-            out.write("<td align=right>" + bps + "Bps</td>");
+            out.write("<td align=\"center\">" + bps + "Bps</td>");
             if (cfg.getSendTo() == null)
-                out.write("<td>Outbound Endpoint</td>");
+                out.write("<td align=\"center\">Outbound Endpoint</td>");
             else if (cfg.getReceiveFrom() == null)
-                out.write("<td>Inbound Gateway</td>");
+                out.write("<td align=\"center\">Inbound Gateway</td>");
             else
-                out.write("<td>Participant</td>");
+                out.write("<td align=\"center\">Participant</td>");
             out.write("</tr>\n");
             processed += cfg.getProcessedMessagesCount();
         }
         out.write("</table>\n");
-        out.write("Inactive participating tunnels: " + inactive + "<br />\n");
-        out.write("Lifetime bandwidth usage: " + DataHelper.formatSize(processed*1024) + "B<br />\n");
+        out.write("<center>Inactive participating tunnels: " + inactive + "<br />\n");
+        out.write("Lifetime bandwidth usage: " + DataHelper.formatSize(processed*1024) + "B</center><br />\n");
         renderPeers(out);
     }
     
@@ -542,23 +543,23 @@ public class TunnelPoolManager implements TunnelManagerFacade {
                 continue; // don't display tunnels in their grace period
             live++;
             if (info.isInbound())
-                out.write("<tr><td><b>inbound</b></td>");
+                out.write("<tr><td align=\"center\"><img src=\"/themes/console/images/inbound.png\" alt=\"Inbound\" title=\"Inbound\"/></td>");
             else
-                out.write("<tr><td><b>outbound</b></td>");
-            out.write("<td align=right>" + DataHelper.formatDuration(timeLeft) + "</td>\n");
-            out.write("<td align=right>" + info.getProcessedMessagesCount() + "KB</td>\n");
+                out.write("<tr><td align=\"center\"><img src=\"/themes/console/images/outbound.png\" alt=\"Outbound\" title=\"Outbound\"/></td>");
+            out.write("<td align=\"center\">" + DataHelper.formatDuration(timeLeft) + "</td>\n");
+            out.write("<td align=\"center\">" + info.getProcessedMessagesCount() + "KB</td>\n");
             for (int j = 0; j < info.getLength(); j++) {
                 Hash peer = info.getPeer(j);
                 TunnelId id = (info.isInbound() ? info.getReceiveTunnelId(j) : info.getSendTunnelId(j));
                 if (_context.routerHash().equals(peer)) {
-                    out.write("<td>" + (id == null ? "" : "" + id) + "</td>");
+                    out.write("<td align=\"center\">" + (id == null ? "" : "" + id) + "</td>");
                 } else {
                     String cap = getCapacity(peer);
-                    out.write("<td>" + netDbLink(peer) + (id == null ? "" : " " + id) + cap + "</td>");                
+                    out.write("<td align=\"center\">" + netDbLink(peer) + (id == null ? "" : " " + id) + cap + "</td>");                
                 }
                 if (info.getLength() < maxLength && (info.getLength() == 1 || j == info.getLength() - 2)) {
                     for (int k = info.getLength(); k < maxLength; k++)
-                        out.write("<td>&nbsp</td>");
+                        out.write("<td align=\"center\">&nbsp</td>");
                 }
             }
             out.write("</tr>\n");
@@ -572,19 +573,19 @@ public class TunnelPoolManager implements TunnelManagerFacade {
         if (in != null) {
             List pending = in.listPending();
             if (pending.size() > 0)
-                out.write("Build in progress: " + pending.size() + " inbound<br />\n");
+                out.write("<center>Build in progress: " + pending.size() + " inbound</center><br />\n");
             live += pending.size();
         }
         if (outPool != null) {
             List pending = outPool.listPending();
             if (pending.size() > 0)
-                out.write("Build in progress: " + pending.size() + " outbound<br />\n");
+                out.write("<center>Build in progress: " + pending.size() + " outbound</center><br />\n");
             live += pending.size();
         }
         if (live <= 0)
-            out.write("<b>No tunnels, waiting for the grace period to end</b><br />\n");
-        out.write("Lifetime bandwidth usage: " + DataHelper.formatSize(processedIn*1024) + "B in, " +
-                  DataHelper.formatSize(processedOut*1024) + "B out<br />");
+            out.write("<b><center>No tunnels, waiting for the grace period to end.</center></b><br />\n");
+        out.write("<center>Lifetime bandwidth usage: " + DataHelper.formatSize(processedIn*1024) + "B in, " +
+                  DataHelper.formatSize(processedOut*1024) + "B out</center><br />");
     }
     
     private void renderPeers(Writer out) throws IOException {
@@ -604,25 +605,25 @@ public class TunnelPoolManager implements TunnelManagerFacade {
         out.write("<h2><a name=\"peers\"></a>Tunnel Counts By Peer:</h2>\n");
         out.write("<table border=\"1\"><tr><th>Peer</th><th>Expl. + Client</th><th>% of total</th><th>Part. from + to</th><th>% of total</th></tr>\n");
         for (Hash h : peerList) {
-             out.write("<tr><td align=\"right\">");
+             out.write("<tr><td align=\"center\">");
              out.write(netDbLink(h));
-             out.write("<td align=\"right\">" + lc.count(h));
-             out.write("<td align=\"right\">");
+             out.write("<td align=\"center\">" + lc.count(h));
+             out.write("<td align=\"center\">");
              if (tunnelCount > 0)
                  out.write("" + (lc.count(h) * 100 / tunnelCount));
              else
                  out.write('0');
-             out.write("<td align=\"right\">" + pc.count(h));
-             out.write("<td align=\"right\">");
+             out.write("<td align=\"center\">" + pc.count(h));
+             out.write("<td align=\"center\">");
              if (partCount > 0)
                  out.write("" + (pc.count(h) * 100 / partCount));
              else
                  out.write('0');
              out.write('\n');
         }
-        out.write("<tr><td>Tunnels<td align=\"right\">" + tunnelCount);
-        out.write("<td>&nbsp;<td align=\"right\">" + partCount);
-        out.write("<td>&nbsp;</table>\n");
+        out.write("<tr><td align=\"center\"><b>Tunnels</b><td align=\"center\"><b>" + tunnelCount);
+        out.write("</b><td align=\"center\">&nbsp;<td align=\"center\"><b>" + partCount);
+        out.write("<td align=\"center\">&nbsp;</b></table>\n");
     }
 
     /** @return total number of non-fallback expl. + client tunnels */