diff --git a/apps/q/java/qresources/html/404.html b/apps/q/java/qresources/html/404.html
new file mode 100644
index 0000000000000000000000000000000000000000..c25e9661caa13eb669d8303702c1b9f607be833b
--- /dev/null
+++ b/apps/q/java/qresources/html/404.html
@@ -0,0 +1,10 @@
+<table align="center" class="mainpaneitem">
+  <tr>
+    <td class="formHeading">Item Not Found</td>
+  </tr>
+  <tr>
+    <td align=center>Failed to retrieve item:<br>
+      <code><tmpl_var 404_uri></code>
+    </td>
+  </tr>
+</table>
diff --git a/apps/q/java/qresources/html/about.html b/apps/q/java/qresources/html/about.html
new file mode 100644
index 0000000000000000000000000000000000000000..39e0b552352ea537536e951476344fa2113ed672
--- /dev/null
+++ b/apps/q/java/qresources/html/about.html
@@ -0,0 +1,27 @@
+<TABLE align="center" class="mainpaneitem">
+  <TR>
+    <TD class="formHeading">About Q</TD>
+  </tr>
+  <tr class="formBody">
+    <TD align=center>
+      <p>Version
+<tmpl_if version>
+      <tmpl_var version></p>
+<tmpl_else>
+      0.0.1
+</tmpl_if>
+      <p>Designed and engineered by <a href="mailto:aum@mail.i2p">aum</a></p>
+
+      <p>Copyright &copy; 2005 by aum.
+      <br>Released under the
+      <br>GNU Lesser General Public License</p>
+        
+      <p style="font-size: smaller; font-style: italic">
+         Many thanks to jrandom, smeghead and frosk<br>
+         for their patient and knowledgeable support<br>
+         in helping this python programmer<br>
+         get partly proficient in java.</p>
+    </TD>
+  </TR>
+</TABLE>
+
diff --git a/apps/q/java/qresources/html/addrefform.html b/apps/q/java/qresources/html/addrefform.html
new file mode 100644
index 0000000000000000000000000000000000000000..02a96a4adc4e1a52d247d714ac2a27539aca5265
--- /dev/null
+++ b/apps/q/java/qresources/html/addrefform.html
@@ -0,0 +1,40 @@
+<table align="center" class="mainpaneitem" width=80%>
+  <tr>
+    <td class="formHeading">Add Hub Noderef</td>
+  </tr>
+
+  <form action="/tools" method="POST" class="formBody">
+
+  <input type="hidden" name="cmd" value="addref">
+
+  <tr>
+    <td align="center">
+      <table width=70%>
+        <tr>
+          <td>
+            In order for your node to join a Q network, it must have a ref to at
+            least one of the running Q Hubs. You need to get a Q Hub noderef and
+            paste it here.
+          </td>
+        </tr>
+        
+        <tr>
+          <td align=center>
+            <textarea name="noderef" cols=40 rows=6></textarea>
+          </td>
+        </tr>
+        
+        <tr>
+          <td align="center">
+            <input type="submit" name="submit" value="Add Hub Noderef!">
+          </td>
+        </tr>
+
+      </table>
+    </td>
+  </tr>
+  
+  </form>
+
+</table>
+
diff --git a/apps/q/java/qresources/html/aiealert.html b/apps/q/java/qresources/html/aiealert.html
new file mode 100644
index 0000000000000000000000000000000000000000..01ddecbd50f4c3e8470a8cba1f3700c85e0f66ef
--- /dev/null
+++ b/apps/q/java/qresources/html/aiealert.html
@@ -0,0 +1,29 @@
+<table align="center" class="mainpaneitem"  width=80%>
+  <tr>
+    <td class="formHeading" colspan=2>Critical Anonymity Alert!</td>
+  </tr>
+  <tr>
+    <td>
+      <table cellspacing=0 cellpadding=5 align=center border=1>
+
+        <tr>
+          <td>
+            <p>You are attempting to view a QSite via the Internet Explorer web browser.
+              </p>
+            <p>We have blocked the connection to protect your anonymity.
+              </p>
+            <p>As a matter of policy, Q does not support QSite browsing via Microsoft
+               Internet Explorer (MSIE), because of that browser's abysmal track record with
+               regard to security. If we did allow you to browse Q via MSIE, it would
+               be easy for a malicious QSite author to embed hostile content which 
+               undermines your computer's security and compromises your anonymity.
+               </p>
+             <p>If you want to surf I2P QSites, you'll need to use a more secure web
+                browser such as <a href="http://www.mozilla.org">Mozilla or Firefox</a>.
+          </td>
+        </tr>
+
+      </table>
+    </td>
+  </tr>
+</table>
diff --git a/apps/q/java/qresources/html/anonalert.html b/apps/q/java/qresources/html/anonalert.html
new file mode 100644
index 0000000000000000000000000000000000000000..48a980d7fb7418f7acfee7eaf3618400e6d74df8
--- /dev/null
+++ b/apps/q/java/qresources/html/anonalert.html
@@ -0,0 +1,52 @@
+<table align="center" class="mainpaneitem"  width=80%>
+  <tr>
+    <td class="formHeading" colspan=2>Critical Anonymity Alert!</td>
+  </tr>
+  <tr>
+    <td>
+      <table cellspacing=0 cellpadding=5 align=center border=1>
+
+        <tr>
+          <td>
+            <p>You are attempting to view a QSite via an unprotected link.
+              </p>
+            <p>We have blocked the connection to protect your anonymity. If we don't
+              do this, then a malicious QSite author can insert content into the QSite
+              which triggers oubound hits to arbitrary servers on the mainstream web,
+              which in turn can easily reveal a lot of personal information about you
+              and the QSite you are accessing.
+              </p>
+            <p>If you want to browse QSites with your web browser with greater safety,
+              you'll have to follow these simple steps:
+              </p>
+              <ol>
+                <li>Edit your I2P <code>hosts.txt</code> file and add the following entry
+                  (all on one line):
+                  <blockquote><code><textarea rows=5 cols=50>q.i2p=<tmpl_var dest></textarea></code><blockquote>
+                  (and make sure you do NOT reveal this entry to anyone else)
+                  </li>
+                <li>Configure one of your web browsers to use the proxy server:
+                  <blockquote><code>localhost:4444</code></blockquote>
+                  (or whatever address you have configured your I2P EEProxy to listen on,
+                  if you've changed it)<br><br>
+                  </li>
+                <li>Start up the browser you have just configured, and enter the web address:
+                  <blockquote><code>http://q.i2p</code></blockquote>
+                  </li>
+              </ol>
+            <p>Even if you do this, you still won't have a 100% guarantee of anonymity, since
+               a malicious QSite author can send code to your browser which exploits a vulnerability
+               in the browser to compromise your anonymity (eg, accessing third party cookies, executing
+               arbitrary code, accessing your local filesystem, uploading compromising information
+               about you to hostile I2P EEPsites etc). But you can relax (somewhat) in the knowledge
+               that such attacks are much more difficult, particularly if you use a decent web browser.
+               </p>
+            <p>Thank you for your co-operation. We wish you happy and safe browsing.
+               </p>
+          </td>
+        </tr>
+
+      </table>
+    </td>
+  </tr>
+</table>
diff --git a/apps/q/java/qresources/html/downloads.html b/apps/q/java/qresources/html/downloads.html
new file mode 100644
index 0000000000000000000000000000000000000000..f30ed5d1ef7a60dd6d4b2fa3c92c74f56ced325b
--- /dev/null
+++ b/apps/q/java/qresources/html/downloads.html
@@ -0,0 +1,9 @@
+<table align="center" class="mainpaneitem">
+  <tr>
+    <td class="formHeading">Q Downloads</td>
+  </tr>
+  <tr>
+    <td>Not implemented yet</td>
+  </tr>
+</table>
+
diff --git a/apps/q/java/qresources/html/genkeysform.html b/apps/q/java/qresources/html/genkeysform.html
new file mode 100644
index 0000000000000000000000000000000000000000..3ffaa1f1f9b340356a1fe847e01a0d71409eca65
--- /dev/null
+++ b/apps/q/java/qresources/html/genkeysform.html
@@ -0,0 +1,28 @@
+<table align="center" class="mainpaneitem">
+  <tr>
+    <td class="formHeading">Generate New Keypair</td>
+  </tr>
+  <tr>
+    <td align="center">
+      <table>
+        <tr>
+          <td>
+            Click the button to generate a new keypair for
+            future inserts of signed space keys.
+          </td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+  
+  <tr>
+    <td align="center">
+      <form action="/tools" method="POST" class="formBody">
+        <input type="hidden" name="cmd" value="genkeys">
+        <input type="submit" name="submit" value="Generate Keys!">
+      </form>
+    </td>
+  </tr>
+
+</table>
+
diff --git a/apps/q/java/qresources/html/genkeysresult.html b/apps/q/java/qresources/html/genkeysresult.html
new file mode 100644
index 0000000000000000000000000000000000000000..c693d306fb9d86adb6925f434722912f4b3c1410
--- /dev/null
+++ b/apps/q/java/qresources/html/genkeysresult.html
@@ -0,0 +1,32 @@
+<table align="center" class="mainpaneitem">
+  <tr>
+    <td colspan=2 class="formHeading">Your New Keys</td>
+  </tr>
+
+  <tr>
+    <td align="center" colspan=2>
+      <table>
+        <tr>
+          <td>
+            Please save these keys in a safe place,
+            preferably on an encrypted partition:
+          </td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+  
+  <tr>
+    <td>Public Key: </td>
+    <td>
+      <input readonly type="text" size=32 style="font-family: courier, monospace" value="<tmpl_var publickey>">
+    </td>
+  </tr>
+
+  <tr>
+    <td>Private Key: </td>
+    <td><input readonly type="text" size=32 style="font-family: courier, monospace" value="<tmpl_var privatekey>"></td>
+  </tr>
+
+</table>
+
diff --git a/apps/q/java/qresources/html/getform.html b/apps/q/java/qresources/html/getform.html
new file mode 100644
index 0000000000000000000000000000000000000000..313d7cdc6450efcc9580201078168a0066f3358d
--- /dev/null
+++ b/apps/q/java/qresources/html/getform.html
@@ -0,0 +1,15 @@
+<table align="center" class="mainpaneitem" border=0>
+  <TR>
+    <TD class="formHeading" colspan="3">Retrieve Content</TD>
+  </tr> 
+  <tr class="formBody">
+    <form action="/home" method="POST">
+      <input type="hidden" name="cmd" value="get">
+
+      <TD>URI:</TD>
+      <td><INPUT type="text" name="uri" value="Q:" size="60" maxlength="128"></td>
+      <td><INPUT type="submit" name="submit" value="Retrieve it"></td>
+
+    </form>
+  </TR>
+</table>
diff --git a/apps/q/java/qresources/html/help.html b/apps/q/java/qresources/html/help.html
new file mode 100644
index 0000000000000000000000000000000000000000..b50fbcc817e568fe059ace4c047ed01944fe86eb
--- /dev/null
+++ b/apps/q/java/qresources/html/help.html
@@ -0,0 +1,11 @@
+<table align="center" class="mainpaneitem">
+  <tr>
+    <td class="formHeading">Q Help</td>
+  </tr>
+  <tr>
+    <td>
+      Not written yet
+    </td>
+  </tr>
+</table>
+
diff --git a/apps/q/java/qresources/html/jobs.html b/apps/q/java/qresources/html/jobs.html
new file mode 100644
index 0000000000000000000000000000000000000000..08191f9310debf8ea56c0853b0b6990bddfcde1f
--- /dev/null
+++ b/apps/q/java/qresources/html/jobs.html
@@ -0,0 +1,34 @@
+<table align="center" class="mainpaneitem">
+  <tr>
+    <td class="formHeading" colspan=2>Current Background Jobs</td>
+  </tr>
+  <tr>
+    <td>
+      
+      <tmpl_if items>
+      
+        <table cellspacing=0 cellpadding=5 align=center border=1>
+
+          <tr>
+            <td><b>Secs From Now</b></td>
+            <td><b>Description</b></td>
+          </tr>
+
+          <tmpl_loop items>
+            <tr>
+              <td><tmpl_var future></td>
+              <td><tmpl_var description></td>
+            </tr>
+          </tmpl_loop>
+
+        </table>
+      
+      <tmpl_else>
+      
+        <tr><td colspan=2 align=center><i>(No current jobs)</i></td></tr>
+      
+      </tmpl_if>
+
+    </td>
+  </tr>
+</table>
diff --git a/apps/q/java/qresources/html/main.html b/apps/q/java/qresources/html/main.html
new file mode 100644
index 0000000000000000000000000000000000000000..b0941de6a5505e95ebb8ddce4550075e88b8ba9e
--- /dev/null
+++ b/apps/q/java/qresources/html/main.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<TITLE>Q Web Interface</TITLE>
+<style type="text/css">
+<!--
+body { font-family: helvetica, arial, sans-serif; background-color: #000080 }
+td {  }
+code { font-family: courier, monospace; font-weight: bolder; font-size:smaller }
+.logocell {
+            border-color: #ffe000;
+            border-width: 1px;
+            border-top-style:none;
+            border-bottom-style:solid;
+            border-left-style:none;
+            border-right-style:none;
+            text-align: right;
+            font-weight: bold;
+            color: #f0f0ff;
+            }
+.tabcell {
+            font-weight: bold;
+            background-color: #fffff0;
+            padding:5px;
+            border-color:#ffe000;
+            border-width: 1px;
+            border-top-style:solid;
+            border-bottom-style:none;
+            border-left-style:solid;
+            border-right-style:solid;
+            }
+.tabcell_inactive {
+            background-color: #f0f0ff;
+            padding:5px;
+            border-color:#ffe000;
+            border-width: 1px;
+            border-top-style:solid;
+            border-bottom-style:solid;
+            border-left-style:solid;
+            border-right-style:solid;
+            }
+.tablink {
+            font-size: smaller;
+            text-decoration: none;
+            }
+.mainpane { border-color:#ffe000;
+            border-width: 1px;
+            border-top-style:none;
+            border-bottom-style:solid;
+            border-left-style:solid;
+            border-right-style:solid;
+            }
+
+.mainpaneitem1 { border-style:solid; border-color:#0000ff; border-width: thin; }
+
+.mainpaneitem { border-style:solid;
+            border-color:#0000ff;
+            border-width: thin;
+            background-color: #f0f0ff;
+            }
+
+.formHeading { font-size:larger; font-weight: bolder; text-align:center; }
+
+.btn1 {      font-weight: bold;
+            }
+
+input1 {     background-color: #fffff0;
+            color: #000080;
+            
+            }
+
+-->
+</style>
+</head>
+<body bgcolor="#ffffff">
+<TABLE width="99%" height=99% align="center" cellspacing="0" cellpadding="0" border=0>
+  <TR>
+    <TD>
+      <table width="100%" cellspacing=0 cellpadding=0>
+        <tr>
+          <td>
+            <table align=right cellspacing=0 cellpadding=0 border=0>
+              <tr>
+                <tmpl_loop tabs>
+                  <td class=<tmpl_if active>"tabcell"<tmpl_else>"tabcell_inactive"</tmpl_if>>
+                    <a class="tablink" href="/<tmpl_var name>"><tmpl_var label></a>
+                  </td>
+                </tmpl_loop>
+                
+                <tmpl_if _ignore>
+                <TD class="tabcell_inactive">
+                  <a class="tablink" href="/status">Status</a>
+                </TD>
+                <TD class="tabcell">
+                  <a class="tablink" href="/settings">Settings</a>
+                </TD>
+                </tmpl_if>
+                
+              </tr>
+            </table>
+          </td>
+          <TD width=100%  class="logocell">
+            Q <tmpl_var nodeType> Node
+          </TD>
+        </TR>
+      </table>
+    </TD>  </TR>
+  <tr height=99% bgcolor="#fffff0">
+    <TD class="mainpane">
+      <br>
+      <center>
+      <tmpl_loop items>
+        <br>
+        <tmpl_var item>
+        <br>
+      </tmpl_loop>
+      </center>
+    </TD>
+  </tr>
+</TABLE>
+</body>
+</html>
diff --git a/apps/q/java/qresources/html/msiealert.html b/apps/q/java/qresources/html/msiealert.html
new file mode 100644
index 0000000000000000000000000000000000000000..01ddecbd50f4c3e8470a8cba1f3700c85e0f66ef
--- /dev/null
+++ b/apps/q/java/qresources/html/msiealert.html
@@ -0,0 +1,29 @@
+<table align="center" class="mainpaneitem"  width=80%>
+  <tr>
+    <td class="formHeading" colspan=2>Critical Anonymity Alert!</td>
+  </tr>
+  <tr>
+    <td>
+      <table cellspacing=0 cellpadding=5 align=center border=1>
+
+        <tr>
+          <td>
+            <p>You are attempting to view a QSite via the Internet Explorer web browser.
+              </p>
+            <p>We have blocked the connection to protect your anonymity.
+              </p>
+            <p>As a matter of policy, Q does not support QSite browsing via Microsoft
+               Internet Explorer (MSIE), because of that browser's abysmal track record with
+               regard to security. If we did allow you to browse Q via MSIE, it would
+               be easy for a malicious QSite author to embed hostile content which 
+               undermines your computer's security and compromises your anonymity.
+               </p>
+             <p>If you want to surf I2P QSites, you'll need to use a more secure web
+                browser such as <a href="http://www.mozilla.org">Mozilla or Firefox</a>.
+          </td>
+        </tr>
+
+      </table>
+    </td>
+  </tr>
+</table>
diff --git a/apps/q/java/qresources/html/puterror.html b/apps/q/java/qresources/html/puterror.html
new file mode 100644
index 0000000000000000000000000000000000000000..9b184d9d6f696d571419fd7d2739d20198298dee
--- /dev/null
+++ b/apps/q/java/qresources/html/puterror.html
@@ -0,0 +1,10 @@
+<table align="center" class="mainpaneitem">
+  <tr>
+    <td class="formHeading">Error Inserting <tmpl_if is_site>QSite<tmpl_else>Item</tmpl_if></td>
+  </tr>
+  <tr>
+    <td align=center>Your insert failed because:<br>
+      <code><tmpl_var error></code>
+    </td>
+  </tr>
+</table>
diff --git a/apps/q/java/qresources/html/putform.html b/apps/q/java/qresources/html/putform.html
new file mode 100644
index 0000000000000000000000000000000000000000..7ceaa3c668b0455fd284b5225228236c359f4265
--- /dev/null
+++ b/apps/q/java/qresources/html/putform.html
@@ -0,0 +1,139 @@
+<TABLE align="center" class="mainpaneitem" width=90% >
+  <TR>
+    <TD class="formHeading" colspan="2">Insert Content</TD>
+  </tr>
+
+  <TR>
+    <TD colspan="2" align=center><a href="/insert?mode=site">Insert A QSite Instead</a></TD>
+  </tr>
+
+  <tr><td colspan=2><hr></td></tr>
+
+  <form method="POST" ENCTYPE="multipart/form-data" action="/insert" class="formBody">
+<!--  <form method="POST" action="/insert" class="formBody"> -->
+
+    <input type=hidden name="cmd" value="put">
+
+    <tr>
+      <td valign=top>Type: </td>
+      <td style="font-size:smaller">
+        <input type="radio" name="type" value="text">Text 
+        <input type="radio" name="type" value="html">HTML
+        <input type="radio" name="type" value="image">Image
+        <input type="radio" name="type" value="audio">Audio
+        <input type="radio" name="type" value="video">Video
+        <input type="radio" name="type" value="archive">Archive
+        <input type="radio" name="type" value="other" checked>Other
+      </td>
+    </tr>
+    
+    <tr><td colspan=2><hr></td></tr>
+
+    <tr>
+      <TD valign=top>Title: </TD>
+      <td>
+        <input type="text" name="title" size="60" maxlength="58">
+        <div style="font-style: italic; font-size: smaller">
+          (A short descriptive title for this item)
+        </div>
+      </td>
+    </TR>
+
+    <tr><td colspan=2><hr></td></tr>
+
+    <tr>
+      <TD valign=top>Path: </TD>
+      <td>
+        <input type="text" name="path" size="60" maxlength="128">
+        <div style="font-style: italic; font-size: smaller">
+          (If you're inserting in plain-hash mode, this should be a suggested
+           filename for people to save the item as when downloading it; If you're
+           inserting in signed-space mode, this can be a longer pathname)
+        </div>
+      </td>
+    </TR>
+
+    <tr><td colspan=2><hr></td></tr>
+
+    <tr>
+      <TD valign=top>Mimetype: </TD>
+      <td>
+        <input type="text" name="mimetype" size="40" maxlength="40">
+        <div style="font-style: italic; font-size: smaller">
+          (Leave blank unless you know exactly what this means)
+        </div>
+      </td>
+    </TR>
+
+    <tr><td colspan=2><hr></td></tr>
+
+    <tr>
+      <TD valign=top>Keywords: </TD>
+      <td>
+        <input type="text" name="keywords" size="60" maxlength="80">
+        <div style="font-style: italic; font-size: smaller">
+          (Comma-separated list of short descriptive keywords)
+        </div>
+      </td>
+    </TR>
+
+    <tr><td colspan=2><hr></td></tr>
+
+    <tr>
+      <TD valign=top>Abstract: </TD>
+      <td>
+        <textarea name="abstract" cols="50" rows="2"></textarea>
+        <div style="font-style: italic; font-size: smaller">
+          (A short descriptive summary for the item, preferably no
+           longer than 256 characters)
+        </div>
+      </td>
+    </TR>
+
+    <tr><td colspan=2><hr></td></tr>
+
+    <tr>
+      <TD valign=top>File: </TD>
+      <td>
+        <INPUT type="file" name="data" size="40" maxlength="128">
+        <div style="font-style: italic; font-size: smaller">
+          (Leave this blank if you are entering the raw data in the text box below)
+        </div>
+      </td>
+    </TR>
+
+    <tr><td colspan=2><hr></td></tr>
+
+    <tr>
+      <TD valign=top>Private Key: </TD>
+      <td>
+        <INPUT type="text" name="privkey" size="30" maxlength="60">
+        <div style="font-size: smaller; font-style: italic">
+          (Only if inserting in signed space mode)
+        </div>
+      </td>
+    </TR>
+
+    <tr><td colspan=2><hr></td></tr>
+
+    <tr>
+      <TD colspan=2 align=center>
+        <INPUT class="btn" type="submit" name="submit" value="Insert it">
+      </TD>
+    </tr>
+
+    <tr><td colspan=2><hr></td></tr>
+
+    <tr>
+      <td valign=top>Raw Data:</td>
+      <td>
+        <div style="font-size: smaller; font-style:italic">
+          (You may enter the raw data here as text instead of selecting a
+           file above)
+        </div>
+        <textarea name="rawdata" cols=60 rows=16></textarea>
+      </td>
+    </tr>
+  </form>
+
+</TABLE>
\ No newline at end of file
diff --git a/apps/q/java/qresources/html/putok.html b/apps/q/java/qresources/html/putok.html
new file mode 100644
index 0000000000000000000000000000000000000000..0a4e8b97e51869526da4cde73421558cbd9c7a9b
--- /dev/null
+++ b/apps/q/java/qresources/html/putok.html
@@ -0,0 +1,10 @@
+<table align="center" class="mainpaneitem">
+  <tr>
+    <td class="formHeading"><tmpl_if is_site>QSite<tmpl_else>Item</tmpl_if> Inserted Successfully</td>
+  </tr>
+  <tr>
+    <td align=center>Item URI:<br>
+      <code><input type="text" size=60 readonly value="<tmpl_var uri>"></code>
+    </td>
+  </tr>
+</table>
\ No newline at end of file
diff --git a/apps/q/java/qresources/html/putsiteform.html b/apps/q/java/qresources/html/putsiteform.html
new file mode 100644
index 0000000000000000000000000000000000000000..20a0966f9b3d5bbcd033ba1491285c18380a80ee
--- /dev/null
+++ b/apps/q/java/qresources/html/putsiteform.html
@@ -0,0 +1,101 @@
+<table align="center" class="mainpaneitem" width=90% >
+  <TR>
+    <TD class="formHeading" colspan="2">Insert A QSite</TD>
+  </tr>
+
+  <TR>
+    <TD colspan="2" align=center><a href="/insert?mode=file">Insert A Single File Instead</a></TD>
+  </tr>
+
+  <tr><td colspan=2><hr></td></tr>
+
+  <form method="POST" action="/insert" class="formBody">
+<!--  <form method="POST" action="/insert" class="formBody"> -->
+
+    <input type=hidden name="cmd" value="putsite">
+    <input type=hidden name="type" value="qsite">
+
+    <tr>
+      <TD valign=top>Name: </TD>
+      <td>
+        <input type="text" name="name" size="32" maxlength="50">
+        <div style="font-style: italic; font-size: smaller">
+          (A short name for the QSite - should contain only alphanumerics, '-', and '_';
+          should definitely <i>not</i> contain '/', ':', '\', ' ' etc)
+        </div>
+      </td>
+    </TR>
+
+    <tr><td colspan=2><hr></td></tr>
+
+    <tr>
+      <TD valign=top>Private Key: </TD>
+      <td>
+        <INPUT type="text" name="privkey" size="30" maxlength="60">
+        <div style="font-size: smaller; font-style: italic">
+          (Mandatory - if you don't have a signed-space keypair, get one by
+           clicking on <b>Tools</b>)
+        </div>
+      </td>
+    </TR>
+
+    <tr><td colspan=2><hr></td></tr>
+
+    <tr>
+      <TD valign=top>Directory: </TD>
+      <td>
+        <INPUT type="text" name="dir" size="60" maxlength="128">
+        <div style="font-size: smaller; font-style: italic">
+          (Absolute directory path where the QSite's files reside)
+        </div>
+      </td>
+    </TR>
+
+    <tr><td colspan=2><hr></td></tr>
+
+    <tr>
+      <TD valign=top>Title: </TD>
+      <td>
+        <input type="text" name="title" size="60" maxlength="58">
+        <div style="font-style: italic; font-size: smaller">
+          (A short descriptive title for this QSite)
+        </div>
+      </td>
+    </TR>
+
+    <tr><td colspan=2><hr></td></tr>
+
+    <tr>
+      <TD valign=top>Keywords: </TD>
+      <td>
+        <input type="text" name="keywords" size="60" maxlength="80">
+        <div style="font-style: italic; font-size: smaller">
+          (Comma-separated list of short descriptive keywords)
+        </div>
+      </td>
+    </TR>
+
+    <tr><td colspan=2><hr></td></tr>
+
+    <tr>
+      <TD valign=top>Abstract: </TD>
+      <td>
+        <textarea name="abstract" cols="50" rows="2"></textarea>
+        <div style="font-style: italic; font-size: smaller">
+          (A short descriptive summary for the QSite, preferably no
+           longer than 256 characters)
+        </div>
+      </td>
+    </TR>
+
+    <tr><td colspan=2><hr></td></tr>
+
+    <tr>
+      <TD colspan=2 align=center>
+        <INPUT class="btn" type="submit" name="submit" value="Insert it">
+      </TD>
+    </tr>
+
+  </form>
+
+</table>
diff --git a/apps/q/java/qresources/html/searchform.html b/apps/q/java/qresources/html/searchform.html
new file mode 100644
index 0000000000000000000000000000000000000000..a40d6a55a61cb52885f7909f7c61094d608e91ea
--- /dev/null
+++ b/apps/q/java/qresources/html/searchform.html
@@ -0,0 +1,76 @@
+<TABLE align="center" class="mainpaneitem">
+  <TR>
+    <TD class="formHeading" colspan="3">Search For Content</TD>
+  </tr>
+
+  <form method="GET" action="/search" class="formBody">
+
+    <input type=hidden name=cmd value="search">
+
+    <tr>
+      <td valign=top>Type: </td>
+      <td style="font-size:smaller" colspan=2>
+        <input type="radio" name="type" value="any" checked>ANY
+        <input type="radio" name="type" value="qsite">QSite
+        <input type="radio" name="type" value="text">Text 
+        <input type="radio" name="type" value="html">HTML
+        <input type="radio" name="type" value="image">Image
+        <br>
+        <input type="radio" name="type" value="audio">Audio
+        <input type="radio" name="type" value="video">Video
+        <input type="radio" name="type" value="archive">Archive
+        <input type="radio" name="type" value="other">Other
+      </td>
+    </tr>
+
+    <tr>
+      <td>Title: </td>
+      <td><input type="text" name="title" size="60" value="<tmpl_var title>" maxlength="128"></td>
+      <td><input type="checkbox" name="title_re" <tmpl_if title_re>checked</tmpl_if>>regexp</td>
+    </tr>
+
+    <tr>
+      <TD>Path: </TD>
+      <td><INPUT type="text" name="path" size="60" value="<tmpl_var title>" maxlength="128"></td>
+      <td><input type="checkbox" name="path_re" <tmpl_if path_re>checked</tmpl_if>>regexp</td>
+    </TR>
+
+    <tr>
+      <TD>Mimetype: </TD>
+      <td><INPUT type="text" name="mimetype" size="40" maxlength="40" value="<tmpl_var mimetype>"></td>
+      <td><input type="checkbox" name="mimetype_re" <tmpl_if mimetype_re>checked</tmpl_if>>regexp</td>
+    </TR>
+
+    <tr>
+      <TD>Keywords: </TD>
+      <td><INPUT type="text" name="keywords" size="60" maxlength="80" value="<tmpl_var keywords>"></td>
+      <td><input type="checkbox" name="keywords_re" <tmpl_if keywords_re>checked</tmpl_if>>regexp</td>
+    </TR>
+
+    <tr>
+      <TD>Summary: </TD>
+      <td><textarea name="summary" cols="50" rows=2><tmpl_var summary></textarea></td>
+      <td><input type="checkbox" name="summary_re" <tmpl_if summary_re>checked</tmpl_if>>regexp</td>
+    </TR>
+
+    <tr>
+      <td>
+        Search Mode:
+      </td>
+      <td>
+        <input type=radio name="searchmode" value="and" checked>AND 
+        <input type=radio name="searchmode" value="or">OR
+      </td>
+    </tr>
+    
+    <tr><td colspan=3><hr></td></tr>
+
+    <tr>
+      <TD colspan=3 align=center>
+        <INPUT class="btn" type="submit" name="submit" value="Search!">
+      </TD>
+    </tr>
+
+  </form>
+
+</TABLE>
\ No newline at end of file
diff --git a/apps/q/java/qresources/html/searchresults.html b/apps/q/java/qresources/html/searchresults.html
new file mode 100644
index 0000000000000000000000000000000000000000..21ac24552d51850b27b3d10af4b709e4367e43f7
--- /dev/null
+++ b/apps/q/java/qresources/html/searchresults.html
@@ -0,0 +1,27 @@
+<table align="center" class="mainpaneitem" <tmpl_if results>width="95%"</tmpl_if>>
+  <tr>
+    <td class="formHeading" colspan=2>Search Results</td>
+  </tr>
+  <tr>
+    <td style="font-style: italic" align="center"><tmpl_var numresults> items found</td>
+  </tr>
+  <tr>
+    <td width="90%">
+      <table cellspacing=0 cellpadding=5 align=center border=0 width=95%>
+        <tmpl_loop results>
+          <tr>
+            <td>
+              <div style="font-size: larger"><a href="/<tmpl_var uri>"><tmpl_var title></a></div>
+              <tmpl_if abstract>
+                <div style="font-style: italic"><tmpl_var abstract></div>
+              </tmpl_if>
+              <div style="font-size: smaller; color: #008000;"><tmpl_var uri></div>
+              <div style="font-size:smaller;"><tmpl_var type> (<tmpl_var mimetype>) <tmpl_var size> bytes</div>
+              <div/>
+            </td>
+          </tr>
+        </tmpl_loop>
+      </table>
+    </td>
+  </tr>
+</table>
diff --git a/apps/q/java/qresources/html/settings.html b/apps/q/java/qresources/html/settings.html
new file mode 100644
index 0000000000000000000000000000000000000000..c6686e90f5f0b923c83ac5c8735fa99af3c8c096
--- /dev/null
+++ b/apps/q/java/qresources/html/settings.html
@@ -0,0 +1,9 @@
+<table align="center" class="mainpaneitem">
+  <tr>
+    <td class="formHeading">Q Settings</td>
+  </tr>
+  <tr>
+    <td>Not implemented yet</td>
+  </tr>
+</table>
+
diff --git a/apps/q/java/qresources/html/status.html b/apps/q/java/qresources/html/status.html
new file mode 100644
index 0000000000000000000000000000000000000000..f0fac2d6e6a7f418565c250a27f375be3fdfce05
--- /dev/null
+++ b/apps/q/java/qresources/html/status.html
@@ -0,0 +1,24 @@
+<table align="center" class="mainpaneitem">
+  <tr>
+    <td class="formHeading" colspan=2>Q Node Status</td>
+  </tr>
+  <tr>
+    <td>
+      <table cellspacing=0 cellpadding=5 align=center border=1>
+
+        <tr>
+          <td><b>Item</b></td>
+          <td><b>Value</b></td>
+        </tr>
+
+        <tmpl_loop items>
+          <tr>
+            <td><tmpl_var key></td>
+            <td><tmpl_var value></td>
+          </tr>
+        </tmpl_loop>
+
+      </table>
+    </td>
+  </tr>
+</table>
diff --git a/apps/q/java/qresources/html/tools.html b/apps/q/java/qresources/html/tools.html
new file mode 100644
index 0000000000000000000000000000000000000000..84aecb3fbaac8cc02888186f854ebd007f5f4228
--- /dev/null
+++ b/apps/q/java/qresources/html/tools.html
@@ -0,0 +1,6 @@
+<table align="center" class="mainpaneitem">
+  <tr>
+    <td class="formHeading">Q Tools</td>
+  </tr>
+</table>
+
diff --git a/apps/q/java/qresources/html/widgets/itemtype.html b/apps/q/java/qresources/html/widgets/itemtype.html
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391