diff --git a/apps/i2psnark/_icons/cd.png b/apps/i2psnark/_icons/cd.png
new file mode 100644
index 0000000000000000000000000000000000000000..ef4322357cbc34e0b5eeed34f9fdf553a1de2ee7
Binary files /dev/null and b/apps/i2psnark/_icons/cd.png differ
diff --git a/apps/i2psnark/_icons/page_white.png b/apps/i2psnark/_icons/page_white.png
new file mode 100644
index 0000000000000000000000000000000000000000..8b8b1ca0000bc8fa8d0379926736029f8fabe364
Binary files /dev/null and b/apps/i2psnark/_icons/page_white.png differ
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 a88c15cce6fd390b63c3d7cc2eb264838728a199..8cbd96803715b2b1c53f8a2adbdcfbe2c5e6eda7 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
@@ -119,8 +119,9 @@ public class I2PSnarkServlet extends Default {
     public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         // this is the part after /i2psnark
         String path = req.getServletPath();
+        boolean isConfigure = "/configure".equals(path);
         // index.jsp doesn't work, it is grabbed by the war handler before here
-        if (!(path == null || path.equals("/") || path.equals("/index.jsp") || path.equals("/index.html"))) {
+        if (!(path == null || path.equals("/") || path.equals("/index.jsp") || path.equals("/index.html") || isConfigure)) {
             if (path.endsWith("/")) {
                 // bypass the horrid Resource.getListHTML()
                 String pathInfo = req.getPathInfo();
@@ -147,8 +148,6 @@ public class I2PSnarkServlet extends Default {
         req.setCharacterEncoding("UTF-8");
         resp.setCharacterEncoding("UTF-8");
         resp.setContentType("text/html; charset=UTF-8");
-        /** dl, ul, down rate, up rate, peers, size */
-        final long stats[] = {0,0,0,0,0,0};
         
         String nonce = req.getParameter("nonce");
         if ( (nonce != null) && (nonce.equals(String.valueOf(_nonce))) )
@@ -170,28 +169,37 @@ public class I2PSnarkServlet extends Default {
         out.write("</title>\n");
                                          
         // 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");
+        if (!isConfigure)
+            out.write("<meta http-equiv=\"refresh\" content=\"60;" + req.getRequestURI() + peerString + "\">\n");
         out.write(HEADER);
         out.write("</head><body>");
         out.write("<center>");
-        out.write("<div class=\"snarknavbar\"><a href=\"" + req.getRequestURI() + peerString + "\" title=\"");
-        out.write(_("Refresh page"));
-        out.write("\" class=\"snarkRefresh\">");
-        out.write(_("I2PSnark"));
-        out.write("</a> <a href=\"http://forum.i2p/viewforum.php?f=21\" class=\"snarkRefresh\" target=\"_blank\">");
-        out.write(_("Forum"));
-        out.write("</a>\n");
+        if (isConfigure) {
+            out.write("<div class=\"snarknavbar\"><a href=\"/i2psnark/\" title=\"");
+            out.write(_("Torrents"));
+            out.write("\" class=\"snarkRefresh\">");
+            out.write(_("I2PSnark"));
+            out.write("</a>");
+        } else {
+            out.write("<div class=\"snarknavbar\"><a href=\"" + req.getRequestURI() + peerString + "\" title=\"");
+            out.write(_("Refresh page"));
+            out.write("\" class=\"snarkRefresh\">");
+            out.write(_("I2PSnark"));
+            out.write("</a> <a href=\"http://forum.i2p/viewforum.php?f=21\" class=\"snarkRefresh\" target=\"_blank\">");
+            out.write(_("Forum"));
+            out.write("</a>\n");
 
-        Map trackers = _manager.getTrackers();
-        for (Iterator iter = trackers.entrySet().iterator(); iter.hasNext(); ) {
-            Map.Entry entry = (Map.Entry)iter.next();
-            String name = (String)entry.getKey();
-            String baseURL = (String)entry.getValue();
-            int e = baseURL.indexOf('=');
-            if (e < 0)
-                continue;
-            baseURL = baseURL.substring(e + 1);
-            out.write(" <a href=\"" + baseURL + "\" class=\"snarkRefresh\" target=\"_blank\">" + name + "</a>");
+            Map trackers = _manager.getTrackers();
+            for (Iterator iter = trackers.entrySet().iterator(); iter.hasNext(); ) {
+                Map.Entry entry = (Map.Entry)iter.next();
+                String name = (String)entry.getKey();
+                String baseURL = (String)entry.getValue();
+                int e = baseURL.indexOf('=');
+                if (e < 0)
+                    continue;
+                baseURL = baseURL.substring(e + 1);
+                out.write(" <a href=\"" + baseURL + "\" class=\"snarkRefresh\" target=\"_blank\">" + name + "</a>");
+            }
         }
         out.write("</div>\n");
         out.write("<div class=\"page\"><div class=\"mainsection\"><div class=\"snarkMessages\"><table><tr><td align=\"left\"><pre>");
@@ -202,6 +210,24 @@ public class I2PSnarkServlet extends Default {
         }
         out.write("</pre></td></tr></table></div>");
 
+        if (isConfigure) {
+            out.write("</div>\n");
+            writeConfigForm(out, req);
+        } else {
+            writeTorrents(out, req);
+            out.write("</div>\n");
+            writeAddForm(out, req);
+            writeSeedForm(out, req);
+            writeConfigLink(out);
+        }
+        out.write(FOOTER);
+    }
+
+    private void writeTorrents(PrintWriter out, HttpServletRequest req) throws IOException {
+        /** dl, ul, down rate, up rate, peers, size */
+        final long stats[] = {0,0,0,0,0,0};
+        String peerParam = req.getParameter("p");
+
         List snarks = getSortedSnarks(req);
         String uri = req.getRequestURI();
         out.write(TABLE_HEADER);
@@ -283,13 +309,7 @@ public class I2PSnarkServlet extends Default {
                       "</tfoot>\n");
         }
         
-        out.write(TABLE_FOOTER);
-
-        writeAddForm(out, req);
-        if (true) // seeding needs to register the torrent first, so we can't start it automatically (boo, hiss)
-            writeSeedForm(out, req);
-        writeConfigForm(out, req);
-        out.write(FOOTER);
+        out.write("</table>");
     }
     
     /**
@@ -993,7 +1013,9 @@ public class I2PSnarkServlet extends Default {
 
 	out.write("<tr><td>");
         out.write(_("Startup delay"));
-        out.write(": <td><input name=\"startupDelay\" size=\"3\" value=\"" + _manager.util().getStartupDelay() + "\"> minutes <br>\n");
+        out.write(": <td><input name=\"startupDelay\" size=\"3\" class=\"r\" value=\"" + _manager.util().getStartupDelay() + "\"> ");
+        out.write(_("minutes"));
+        out.write("<br>\n"); 
 
 
         //Auto add: <input type="checkbox" name="autoAdd" value="true" title="If true, automatically add torrents that are found in the data directory" />
@@ -1094,6 +1116,13 @@ public class I2PSnarkServlet extends Default {
         out.write("</form></div>");
     }
     
+    private void writeConfigLink(PrintWriter out) throws IOException {
+        out.write("<div class=\"configsection\"><span class=\"snarkConfig\">\n");
+        out.write("<span class=\"snarkConfigTitle\"><a href=\"configure\">");
+        out.write(_("Configuration"));
+        out.write("</a></span></span></div>\n");
+    }
+
     /** copied from ConfigTunnelsHelper */
     private static final String HOP = "hop";
     private static final String TUNNEL = "tunnel";
@@ -1170,8 +1199,6 @@ public class I2PSnarkServlet extends Default {
                                                "<thead>\n" +
                                                "<tr><th align=\"center\">";
 
-    private static final String TABLE_FOOTER = "</table></div>\n";
-    
     private static final String FOOTER = "</div></div></div></center></body></html>";
 
     /**
@@ -1379,7 +1406,7 @@ public class I2PSnarkServlet extends Default {
                  plc.endsWith(".ape"))
             icon = "music";
         else if (mime.startsWith("video/") || plc.endsWith(".mkv") || plc.endsWith(".m4v") ||
-                 plc.endsWith(".mp4") || plc.endsWith(".wmv"))
+                 plc.endsWith(".mp4") || plc.endsWith(".wmv") || plc.endsWith(".flv"))
             icon = "film";
         else if (mime.equals("application/zip") || mime.equals("application/x-gtar") ||
                  mime.equals("application/compress") || mime.equals("application/gzip") ||
@@ -1388,8 +1415,10 @@ public class I2PSnarkServlet extends Default {
             icon = "compress";
         else if (plc.endsWith(".exe"))
             icon = "application";
+        else if (plc.endsWith(".iso"))
+            icon = "cd";
         else
-            icon = "bug";
+            icon = "page_white";
         return icon;
     }