diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java
index 984569b9672f3b687e82277839fc6d0a35f59dc6..7acccdc49a0940ae51b5d35f3d97d330985345d5 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java
@@ -15,7 +15,7 @@ public class ConfigClientsHelper extends HelperBase {
     public String getForm1() {
         StringBuffer buf = new StringBuffer(1024);
         buf.append("<table border=\"1\">\n");
-        buf.append("<tr><td>Client</td><td>Run at Startup?</td><td>Start Now</td><td>Class and arguments</td></tr>\n");
+        buf.append("<tr><th>Client</th><th>Run at Startup?</th><th>Start Now</th><th>Class and arguments</th></tr>\n");
         
         List clients = ClientAppConfig.getClientApps(_context);
         for (int cur = 0; cur < clients.size(); cur++) {
@@ -31,7 +31,7 @@ public class ConfigClientsHelper extends HelperBase {
     public String getForm2() {
         StringBuffer buf = new StringBuffer(1024);
         buf.append("<table border=\"1\">\n");
-        buf.append("<tr><td>WebApp</td><td>Run at Startup?</td><td>Start Now</td><td>Description</td></tr>\n");
+        buf.append("<tr><th>WebApp</th><th>Run at Startup?</th><th>Start Now</th><th>Description</th></tr>\n");
         Properties props = RouterConsoleRunner.webAppProperties();
         Set keys = new TreeSet(props.keySet());
         for (Iterator iter = keys.iterator(); iter.hasNext(); ) {
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 2e53be6b5b672c9ae15b041f8b434ba071da981a..f1a63e421ae958d03c83574dddadf39a7f52e533 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHelper.java
@@ -56,27 +56,27 @@ public class ConfigTunnelsHelper extends HelperBase {
     private static final int MIN_NEG_VARIANCE = -1;
     private void renderForm(StringBuffer buf, int index, String prefix, String name, TunnelPoolSettings in, TunnelPoolSettings out) {
 
-        buf.append("<tr><td colspan=\"3\"><b><a name=\"").append(prefix).append("\">");
-        buf.append(name).append("</a></b></td></tr>\n");
+        buf.append("<tr><th colspan=\"3\"><a name=\"").append(prefix).append("\">");
+        buf.append(name).append("</a></th></tr>\n");
         if (in.getLength() <= 0 ||
             in.getLength() + in.getLengthVariance() <= 0 ||
             out.getLength() <= 0 ||
             out.getLength() + out.getLengthVariance() <= 0)
-            buf.append("<tr><td colspan=\"3\"><font color=\"red\">ANONYMITY WARNING - Settings include 0-hop tunnels</font></td></tr>");
+            buf.append("<tr><th colspan=\"3\"><font color=\"red\">ANONYMITY WARNING - Settings include 0-hop tunnels</font></th></tr>");
         else if (in.getLength() <= 1 ||
             in.getLength() + in.getLengthVariance() <= 1 ||
             out.getLength() <= 1 ||
             out.getLength() + out.getLengthVariance() <= 1)
-            buf.append("<tr><td colspan=\"3\"><font color=\"red\">ANONYMITY WARNING - Settings include 1-hop tunnels</font></td></tr>");
+            buf.append("<tr><th colspan=\"3\"><font color=\"red\">ANONYMITY WARNING - Settings include 1-hop tunnels</font></th></tr>");
         if (in.getLength() + Math.abs(in.getLengthVariance()) >= WARN_LENGTH ||
             out.getLength() + Math.abs(out.getLengthVariance()) >= WARN_LENGTH)
-            buf.append("<tr><td colspan=\"3\"><font color=\"red\">PERFORMANCE WARNING - Settings include very long tunnels</font></td></tr>");
+            buf.append("<tr><th colspan=\"3\"><font color=\"red\">PERFORMANCE WARNING - Settings include very long tunnels</font></th></tr>");
         if (in.getQuantity() + in.getBackupQuantity() >= WARN_QUANTITY ||
             out.getQuantity() + out.getBackupQuantity() >= WARN_QUANTITY)
-            buf.append("<tr><td colspan=\"3\"><font color=\"red\">PERFORMANCE WARNING - Settings include high tunnel quantities</font></td></tr>");
+            buf.append("<tr><th colspan=\"3\"><font color=\"red\">PERFORMANCE WARNING - Settings include high tunnel quantities</font></th></tr>");
 
 
-        buf.append("<tr><td></td><td><b>Inbound</b></td><td><b>Outbound</b></td></tr>\n");
+        buf.append("<tr><th></th><th>Inbound</th><th>Outbound</th></tr>\n");
         
         // tunnel depth
         buf.append("<tr><td>Depth</td>\n");
diff --git a/router/java/src/net/i2p/router/JobQueue.java b/router/java/src/net/i2p/router/JobQueue.java
index 8ec40f56e51d7c3243274fc145cf627879d88869..890b303c0c49eebd3dea2083c6307839df12297c 100644
--- a/router/java/src/net/i2p/router/JobQueue.java
+++ b/router/java/src/net/i2p/router/JobQueue.java
@@ -669,9 +669,9 @@ public class JobQueue {
     /** render the HTML for the job stats */
     private void getJobStats(StringBuffer buf) { 
         buf.append("<table border=\"1\">\n");
-        buf.append("<tr><td><b>Job</b></td><td><b>Runs</b></td>");
-        buf.append("<td><b>Time</b></td><td><b><i>Avg</i></b></td><td><b><i>Max</i></b></td><td><b><i>Min</i></b></td>");
-        buf.append("<td><b>Pending</b></td><td><b><i>Avg</i></b></td><td><b><i>Max</i></b></td><td><b><i>Min</i></b></td></tr>\n");
+        buf.append("<tr><th>Job</th><th>Runs</th>");
+        buf.append("<th>Time</th><th><i>Avg</i></th><th><i>Max</i></th><th><i>Min</i></th>");
+        buf.append("<th>Pending</th><th><i>Avg</i></th><th><i>Max</i></th><th><i>Min</i></th></tr>\n");
         long totRuns = 0;
         long totExecTime = 0;
         long avgExecTime = 0;
diff --git a/router/java/src/net/i2p/router/peermanager/ProfileOrganizerRenderer.java b/router/java/src/net/i2p/router/peermanager/ProfileOrganizerRenderer.java
index 0aff93485dd4e95bb237a1b4affdbf8033e0f8ed..20806cca7fa21bd9d2a04586d4cb9c1b8a00204d 100644
--- a/router/java/src/net/i2p/router/peermanager/ProfileOrganizerRenderer.java
+++ b/router/java/src/net/i2p/router/peermanager/ProfileOrganizerRenderer.java
@@ -61,13 +61,13 @@ class ProfileOrganizerRenderer {
         buf.append("<p>Showing ").append(order.size()).append(" recent profiles, hiding ").append(peers.size()-order.size()).append(" older profiles</p>");
         buf.append("<table border=\"1\">");
         buf.append("<tr>");
-        buf.append("<td><b>Peer</b></td>");
-        buf.append("<td><b>Groups (Caps)</b></td>");
-        buf.append("<td><b>Speed</b></td>");
-        buf.append("<td><b>Capacity</b></td>");
-        buf.append("<td><b>Integration</b></td>");
-        buf.append("<td><b>Failing?</b></td>");
-        buf.append("<td>&nbsp;</td>");
+        buf.append("<th>Peer</th>");
+        buf.append("<th>Groups (Caps)</th>");
+        buf.append("<th>Speed</th>");
+        buf.append("<th>Capacity</th>");
+        buf.append("<th>Integration</th>");
+        buf.append("<th>Failing?</th>");
+        buf.append("<th>&nbsp;</th>");
         buf.append("</tr>");
         int prevTier = 1;
         for (Iterator iter = order.iterator(); iter.hasNext();) {
@@ -159,22 +159,22 @@ class ProfileOrganizerRenderer {
         buf.append("<h2>Floodfill and Integrated Peers</h2>\n");
         buf.append("<table border=\"1\">");
         buf.append("<tr>");
-        buf.append("<td><b>Peer</b></td>");
-        buf.append("<td><b>Caps</b></td>");
-        buf.append("<td><b>Integ. Value</b></td>");
-        buf.append("<td><b>Last Heard About</b></td>");
-        buf.append("<td><b>Last Heard From</b></td>");
-        buf.append("<td><b>Last Successful Send</b></td>");
-        buf.append("<td><b>Last Failed Send</b></td>");
-        buf.append("<td><b>10m Resp. Time</b></td>");
-        buf.append("<td><b>1h Resp. Time</b></td>");
-        buf.append("<td><b>1d Resp. Time</b></td>");
-        buf.append("<td><b>Successful Lookups</b></td>");
-        buf.append("<td><b>Failed Lookups</b></td>");
-        buf.append("<td><b>New Stores</b></td>");
-        buf.append("<td><b>Old Stores</b></td>");
-        buf.append("<td><b>1h Fail Rate</b></td>");
-        buf.append("<td><b>1d Fail Rate</b></td>");
+        buf.append("<th>Peer</th>");
+        buf.append("<th>Caps</th>");
+        buf.append("<th>Integ. Value</th>");
+        buf.append("<th>Last Heard About</th>");
+        buf.append("<th>Last Heard From</th>");
+        buf.append("<th>Last Successful Send</th>");
+        buf.append("<th>Last Failed Send</th>");
+        buf.append("<th>10m Resp. Time</th>");
+        buf.append("<th>1h Resp. Time</th>");
+        buf.append("<th>1d Resp. Time</th>");
+        buf.append("<th>Successful Lookups</th>");
+        buf.append("<th>Failed Lookups</th>");
+        buf.append("<th>New Stores</th>");
+        buf.append("<th>Old Stores</th>");
+        buf.append("<th>1h Fail Rate</th>");
+        buf.append("<th>1d Fail Rate</th>");
         buf.append("</tr>");
         for (Iterator iter = integratedPeers.iterator(); iter.hasNext();) {
             PeerProfile prof = (PeerProfile)iter.next();
diff --git a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java
index b42efbfae6145df0f10943fce572783622354405..e010e5213f851dd2663b70b0780289fc447a6ba8 100644
--- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java
+++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java
@@ -1769,48 +1769,48 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
         buf.append(" timeout: ").append(DataHelper.formatDuration(_expireTimeout));
         buf.append("</b><br />\n");
         buf.append("<table border=\"1\">\n");
-        buf.append("<tr><td><b><a href=\"#def.peer\">Peer</a></b>");
+        buf.append("<tr><th><a href=\"#def.peer\">Peer</a>");
         if (sortFlags != FLAG_ALPHA)
             buf.append(" <a href=\"").append(urlBase).append("?sort=0\">V</a> ");
-        buf.append("</td><td><b><a href=\"#def.dir\">Dir/Intro</a></b></td><td><b><a href=\"#def.idle\">Idle</a></b>");
+        buf.append("</th><th><a href=\"#def.dir\">Dir/Intro</a></th><th><a href=\"#def.idle\">Idle</a>");
         appendSortLinks(buf, urlBase, sortFlags, "Sort by idle inbound", FLAG_IDLE_IN);
         buf.append("/");
         appendSortLinks(buf, urlBase, sortFlags, "Sort by idle outbound", FLAG_IDLE_OUT);
-        buf.append("</td>");
-        buf.append("<td><b><a href=\"#def.rate\">In/Out</a></b>");
+        buf.append("</th>");
+        buf.append("<th><a href=\"#def.rate\">In/Out</a>");
         appendSortLinks(buf, urlBase, sortFlags, "Sort by inbound rate", FLAG_RATE_IN);
         buf.append("/");
         appendSortLinks(buf, urlBase, sortFlags, "Sort by outbound rate", FLAG_RATE_OUT);
-        buf.append("</td>\n");
-        buf.append("<td><b><a href=\"#def.up\">Up</a></b>");
+        buf.append("</th>\n");
+        buf.append("<th><a href=\"#def.up\">Up</a>");
         appendSortLinks(buf, urlBase, sortFlags, "Sort by connection uptime", FLAG_UPTIME);
-        buf.append("</td><td><b><a href=\"#def.skew\">skew</a></b>");
+        buf.append("</th><th><a href=\"#def.skew\">skew</a>");
         appendSortLinks(buf, urlBase, sortFlags, "Sort by clock skew", FLAG_SKEW);
-        buf.append("</td>\n");
-        buf.append("<td><b><a href=\"#def.cwnd\">Cwnd</a></b>");
+        buf.append("</th>\n");
+        buf.append("<th><a href=\"#def.cwnd\">Cwnd</a>");
         appendSortLinks(buf, urlBase, sortFlags, "Sort by congestion window", FLAG_CWND);
-        buf.append("</td><td><b><a href=\"#def.ssthresh\">Ssthresh</a></b>");
+        buf.append("</th><th><a href=\"#def.ssthresh\">Ssthresh</a>");
         appendSortLinks(buf, urlBase, sortFlags, "Sort by slow start threshold", FLAG_SSTHRESH);
-        buf.append("</td>\n");
-        buf.append("<td><b><a href=\"#def.rtt\">Rtt</a></b>");
+        buf.append("</th>\n");
+        buf.append("<th><a href=\"#def.rtt\">Rtt</a>");
         appendSortLinks(buf, urlBase, sortFlags, "Sort by round trip time", FLAG_RTT);
-        buf.append("</td><td><b><a href=\"#def.dev\">Dev</a></b>");
+        buf.append("</th><th><a href=\"#def.dev\">Dev</a>");
         appendSortLinks(buf, urlBase, sortFlags, "Sort by round trip time deviation", FLAG_DEV);
-        buf.append("</td><td><b><a href=\"#def.rto\">Rto</a></b>");
+        buf.append("</th><th><a href=\"#def.rto\">Rto</a>");
         appendSortLinks(buf, urlBase, sortFlags, "Sort by retransmission timeout", FLAG_RTO);
-        buf.append("</td>\n");
-        buf.append("<td><b><a href=\"#def.mtu\">Mtu</a></b>");
+        buf.append("</th>\n");
+        buf.append("<th><a href=\"#def.mtu\">Mtu</a>");
         appendSortLinks(buf, urlBase, sortFlags, "Sort by maximum transmit unit", FLAG_MTU);
-        buf.append("</td><td><b><a href=\"#def.send\">Send</a></b>");
+        buf.append("</th><th><a href=\"#def.send\">Send</a>");
         appendSortLinks(buf, urlBase, sortFlags, "Sort by packets sent", FLAG_SEND);
-        buf.append("</td><td><b><a href=\"#def.recv\">Recv</a></b>");
+        buf.append("</th><th><a href=\"#def.recv\">Recv</a>");
         appendSortLinks(buf, urlBase, sortFlags, "Sort by packets received", FLAG_RECV);
-        buf.append("</td>\n");
-        buf.append("<td><b><a href=\"#def.resent\">Resent</a></b>");
+        buf.append("</th>\n");
+        buf.append("<th><a href=\"#def.resent\">Resent</a>");
         appendSortLinks(buf, urlBase, sortFlags, "Sort by packets retransmitted", FLAG_RESEND);
-        buf.append("</td><td><b><a href=\"#def.dupRecv\">DupRecv</a></b>");
+        buf.append("</th><th><a href=\"#def.dupRecv\">DupRecv</a>");
         appendSortLinks(buf, urlBase, sortFlags, "Sort by packets received more than once", FLAG_DUP);
-        buf.append("</td>\n");
+        buf.append("</th>\n");
         buf.append("</tr>\n");
         out.write(buf.toString());
         buf.setLength(0);
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 7293b6a1efde86598254eb8bf50d636c9402e22d..49f82acae533f527521412893b26202bb326a896 100644
--- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java
+++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java
@@ -439,9 +439,9 @@ public class TunnelPoolManager implements TunnelManagerFacade {
         List participating = _context.tunnelDispatcher().listParticipatingTunnels();
         Collections.sort(participating, new TunnelComparator());
         out.write("<h2><a name=\"participating\">Participating tunnels</a>:</h2><table border=\"1\">\n");
-        out.write("<tr><td><b>Receive on</b></td><td><b>From</b></td><td>"
-                  + "<b>Send on</b></td><td><b>To</b></td><td><b>Expiration</b></td>"
-                  + "<td><b>Usage</b></td><td><b>Rate</b></td><td><b>Role</b></td></tr>\n");
+        out.write("<tr><th>Receive on</th><th>From</th><th>"
+                  + "Send on</th><th>To</th><th>Expiration</th>"
+                  + "<th>Usage</th><th>Rate</th><th>Role</th></tr>\n");
         long processed = 0;
         RateStat rs = _context.statManager().getRate("tunnel.participatingMessageCount");
         if (rs != null)
@@ -602,7 +602,7 @@ public class TunnelPoolManager implements TunnelManagerFacade {
         Collections.sort(peerList, new HashComparator());
 
         out.write("<h2><a name=\"peers\">Tunnel Counts By Peer</a>:</h2>\n");
-        out.write("<table border=\"1\"><tr><td><b>Peer</b></td><td><b>Expl. + Client</b></td><td><b>% of total</b></td><td><b>Part. from + to</b></td><td><b>% of total</b></td></tr>\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(netDbLink(h));