diff --git a/web/user_doc/xremote/xremote_overview.shtml b/web/user_doc/xremote/xremote_overview.shtml
new file mode 100755
index 0000000000000000000000000000000000000000..79c354a2f18406985b2f5e6b14400b0c6018e843
--- /dev/null
+++ b/web/user_doc/xremote/xremote_overview.shtml
@@ -0,0 +1,940 @@
+<!--#set var="banner" value="Controlling ZMap from another program"-->
+<!--#include virtual="/perl/header"-->
+
+<!--#set var="author" value="rds@sanger.ac.uk" -->
+
+<style>
+pre{ background-color: #DDDDDD; border-style: solid; border-width: 1px; padding: 10px }
+.request{ border-color: red;  border-width: medium }
+.response{ border-color: green; border-width: medium }
+.message{ border-color: blue; border-width: medium }
+table.zmap_actions{ background-color: #EFEFEF; border-width: 1px; border-style: solid; border-collapse: collapse }
+table.zmap_actions td{ border-width: 0px 1px 1px 0px; border-style: solid; padding: 2px }
+table.zmap_actions tr{ vertical-align: top; }
+table.zmap_actions th{ border-width: 0px 0px 1px 0px; border-style: solid; }
+</style>
+
+
+<fieldset>
+<legend>Overview</legend>
+
+<p>
+It is  relatively easy  to control zmap  from another program  using a
+series of  X11 XAtoms.  These  XAtoms are held  on the server  and are
+window  specific.   ZMap   &quot;listens&quot;  to  these  XAtoms  and
+responds to  the commands which exist  as their values  by setting the
+value of a corresponding XAtom.  The convention in this document is to
+have  the requests  in  a box  surrounded  by a  blue  border and  the
+responses surrounded by a red border.
+</p>
+
+<p>
+It used  to be the case that  zmap had two windows  which would accept
+the requests  but there has been  some reorganisation in  the way zmap
+accepts requests so  that requests can be simplier  than was otherwise
+possible.
+</p>
+
+</fieldset>
+<br />
+
+
+
+<fieldset>
+<legend>Stuff that needs sorting out.....</legend>
+
+
+<h4>Feature set usage</h4>
+
+<p>As this example from an otterlace log shows we don't give a name to the feature set which seems crazy.
+Instead we the use the "style" attribute to identify the feature set, looks like
+Roys xml has not caught up with the changes to feature_set and style usage.</p>
+
+<pre>
+Fri Jul 17 16:25:56 2009  &lt;zmap action="delete_feature"&gt;
+Fri Jul 17 16:25:56 2009    &lt;<font color=red>featureset</font>&gt;
+Fri Jul 17 16:25:56 2009      &lt;feature end_not_found="false" start_not_found="false" <font color=red>style="Putative_CDS"</font> strand="+" name="RP5-1120P11.2-001" locus="C6orf223" end="28241" start="25456"&gt;
+Fri Jul 17 16:25:56 2009      &lt;/feature&gt;
+Fri Jul 17 16:25:56 2009    &lt;/featureset&gt;
+Fri Jul 17 16:25:56 2009  &lt;/zmap&gt;
+Fri Jul 17 16:25:56 2009  &lt;zmap action="create_feature"&gt;
+Fri Jul 17 16:25:56 2009    &lt;<font color=red>featureset</font>&gt;
+Fri Jul 17 16:25:56 2009      &lt;feature end_not_found="false" start_not_found="false" <font color=red>style="Putative_CDS"</font> strand="+" name="RP5-1120P11.2-001" locus="C6orf223" end="28241" start="25468"&gt;
+Fri Jul 17 16:25:56 2009        &lt;subfeature ontology="exon" end="25536" start="25468" /&gt;
+Fri Jul 17 16:25:56 2009        &lt;subfeature ontology="intron" end="26888" start="25537" /&gt;
+Fri Jul 17 16:25:56 2009        &lt;subfeature ontology="exon" end="26963" start="26889" /&gt;
+Fri Jul 17 16:25:56 2009        &lt;subfeature ontology="intron" end="27516" start="26964" /&gt;
+Fri Jul 17 16:25:56 2009        &lt;subfeature ontology="exon" end="28241" start="27517" /&gt;
+Fri Jul 17 16:25:56 2009        &lt;subfeature ontology="cds" end="27962" start="27570" /&gt;
+Fri Jul 17 16:25:56 2009      &lt;/feature&gt;
+Fri Jul 17 16:25:56 2009    &lt;/featureset&gt;
+Fri Jul 17 16:25:56 2009  &lt;/zmap&gt;
+</pre>
+
+
+
+<pre>
+Here are some typical context/align/block names...needs some sorting out...
+
+Feature Context:	b0250	b0250	b0250	SUPERLINK_CB_V	11462742	1	10995378	11034593	1	39216
+	Alignment:	b0250_master
+	Block:	1.0.+_1.0.+	1	39216	1	39216
+
+
+Currently we have:
+
+&lt;zmap action="create_feature"&gt;
+  &lt;featureset&gt;
+    &lt;feature name="polyA_site" start="289194" end="289195" strand="-" style="polyA_site" score="0.500"&gt;&lt;/feature&gt;
+    &lt;feature name="polyA_signal" start="289208" end="289213" strand="-" style="polyA_signal" score="0.500"&gt;&lt;/feature&gt;
+    &lt;feature name="polyA_site" start="289183" end="289184" strand="-" style="polyA_site" score="0.500"&gt;&lt;/feature&gt;
+    &lt;feature name="polyA_site" start="289191" end="289192" strand="-" style="polyA_site" score="0.500"&gt;&lt;/feature&gt;
+  &lt;/featureset&gt;
+&lt;/zmap&gt;
+
+
+I propose this is changed to:
+
+&lt;zmap action="create_feature"&gt;
+  &lt;align [name="xxx"]&gt;
+    &lt;block [name="xxx"]&gt;
+      &lt;featureset name="xxxxx"&gt;
+        &lt;feature name="polyA_site" start="289194" end="289195" strand="-" style="polyA_site" score="0.500"&gt;&lt;/feature&gt;
+        &lt;feature name="polyA_signal" start="289208" end="289213" strand="-" style="polyA_signal" score="0.500"&gt;&lt;/feature&gt;
+        &lt;feature name="polyA_site" start="289183" end="289184" strand="-" style="polyA_site" score="0.500"&gt;&lt;/feature&gt;
+        &lt;feature name="polyA_site" start="289191" end="289192" strand="-" style="polyA_site" score="0.500"&gt;&lt;/feature&gt;
+      &lt;/featureset&gt;
+    &lt;/block&gt;
+  &lt;align/&gt;
+&lt;/zmap&gt;
+</pre>
+
+
+
+</fieldset>
+<br />
+
+
+
+<fieldset>
+<legend>Otterlace chain of events</legend>
+
+<p>
+Firstly  running zmap  with a  --win_id option  makes zmap  register a
+client  with  the  &quot;server&quot;  listening for  property  notify
+events on the window with the id supplied.
+</p>
+
+<pre>
+./zmap --win_id 0x20000a4
+</pre>
+
+<p>
+ZMap sends  the following  request to the  window, which  should reply
+with  a 200  all ok  message.   ZMap does  very little  else with  the
+response.
+</p>
+
+
+<pre class="request" title="request">
+&lt;zmap action="register_client"&gt;
+  &lt;client xwid="0x2c00004" request_atom="_ZMAP_XREMOTE_COMMAND" response_atom="_ZMAP_XREMOTE_RESPONSE" &gt;
+    &lt;action&gt;register_client&lt;/action&gt;
+    &lt;action&gt;new_zmap&lt;/action&gt;
+    &lt;action&gt;shutdown&lt;/action&gt;
+  &lt;/client&gt;
+&lt;/zmap&gt;
+</pre>
+
+<pre class="response">
+200:&lt;zmap /&gt;
+</pre>
+
+<p>
+Otterlace now  knows the window id  of the initial  ZMap window.  This
+window is quite  limited in the actions that it  supports and makes no
+attempt to pass  them on to any child ZMap windows  that it might know
+about.  This is  a decision that is carried on  throughout the rest of
+the communication in  order that requests can be  simplier and a level
+of  encapsulation can be  enforced.  It  is for  this reason  that the
+request includes a list of actions that the client understands.
+</p>
+
+<pre class="request">
+&lt;zmap action="new_zmap" /&gt;
+</pre>
+
+<p>
+All going well there will be  a response from zmap which resembles the
+following example.  The  client has an xwid, and a  list of actions it
+understands.
+</p>
+
+<pre class="response">
+200:&lt;zmap&gt;
+  &lt;response&gt;
+    &lt;client xwid="0x2c00084" &gt;
+      &lt;action&gt;register_client&lt;/action&gt;
+      &lt;action&gt;new_view&lt;/action&gt;
+      &lt;action&gt;close&lt;/action&gt;
+    &lt;/client&gt;
+  &lt;/response&gt;
+  &lt;meta display="localhost:10.0" windowid="0x2c00004" application="" version="$Revision: 1.1 $" /&gt;
+&lt;/zmap&gt;
+</pre>
+
+<p>
+From the  above examples  I hope  it's easy to  see how  the following
+tables fit in.
+</p>
+
+</fieldset>
+<br />
+
+
+
+
+
+
+<fieldset>
+<legend>The Window hierachy and the Valid Actions for Each Window</legend>
+
+<p>
+<table width="100%" class="zmap_actions">
+  <tr>
+  <th>Window</th>
+  <th>Description</th>
+  <th>Actions accepted</th>
+  <th>Actions generated</th>
+  </tr>
+  <tr>
+    <td>application window</td>
+    <td>zmap initially starts with a window to get input from the user
+      as to which sequence to  display.  This may be hidden by configuration
+      in ~/.ZMap/ZMap. N.B. No register_client is available as zmap must be
+      started with --win_id option to register a client.</td>
+    <td>new_zmap<br />shutdown</td>
+    <td>finalised</td>
+  </tr>
+  <tr>
+    <td>display window</td>
+    <td>This is the top level window in which the different views are shown.</td>
+    <td>new_view<br />close_view<br />zoom_in<br />zoom_out<br />register_client</td>
+    <td>view_closed</td>
+  </tr>
+  <tr>
+    <td>view window</td>
+    <td>A sub window of the  display top level and conceptually exists
+      as one per sequence region</td>
+    <td>new_window<br />
+	find_feature<br />
+	create_feature<br />
+	delete_feature<br />
+	single_select<br />
+	multiple_select<br />
+	unselect<br />
+	list_windows<br />
+	register_client
+    </td>
+  </tr>
+  <tr>
+    <td>sequence window</td>
+    <td>This is a sub window of the view window and actually displays the sequence.</td>
+    <td>zoom_to<br />
+	load_features<br />
+	register_client
+    </td>
+  </tr>
+</table>
+</p>
+
+</fieldset>
+<br />
+
+
+
+
+
+
+<fieldset>
+<legend>The ZMap Application Window Actions</legend>
+
+
+<p>
+<table width="100%" class="zmap_actions">
+  <thead>
+  <th colspan=3>Actions accepted</th>
+  </thead>
+
+  <tr>
+  <th>Action</th>
+  <th>Description</th>
+  <th>Example XML</th>
+  </tr>
+
+  <!-- new -->
+  <tr>
+    <td>new_zmap</td>
+    <td>create a new display window</td>
+    <td>
+	<pre class="request">
+&lt;zmap action="new_zmap"&gt;
+  &lt;segment sequence="20.3013641-3258367" start="1" end="0"/&gt;
+&lt;/zmap&gt;</pre>
+	
+    <pre class="response">
+&lt;zmap&gt;
+  &lt;response handled="true"&gt;
+    &lt;client xwid="0x2c00084" &gt;
+      &lt;action&gt;zoom_in&lt;/action&gt;
+      &lt;action&gt;zoom_out&lt;/action&gt;
+      &lt;action&gt;new_view&lt;/action&gt;
+      &lt;action&gt;register_client&lt;/action&gt;
+    &lt;/client&gt;
+  &lt;/response&gt;
+  &lt;meta display="localhost:10.0"
+       windowid="0x2c00004"
+    application=""
+        version="$Revision: 1.1 $" /&gt;
+&lt;/zmap&gt;</pre>
+    </td>
+  </tr>
+
+  <!-- shutdown -->
+  <tr>
+    <td>shutdown</td>
+    <td>close zmap completely</td>
+    <td><pre class="request">&lt;zmap action="shutdown" /&gt;</pre></td>
+  </tr>
+
+</table>
+</p>
+
+
+<p>
+<table width="100%" class="zmap_actions">
+  <thead>
+  <th colspan=3>Actions generated</th>
+  </thead>
+
+  <tr>
+  <th>Action</th>
+  <th>Description</th>
+  <th>Example XML</th>
+  </tr>
+
+
+  
+  <!-- finalised -->
+  <tr>
+    <td>finalised</td>
+    <td>Designed to notify the controlling
+	program zmap is shutting down.</td>
+    <td>
+	<pre class="request">
+&lt;zmap action="finalised" /&gt;                                  
+	</pre>
+	
+	<pre class="response">
+&lt;zmap&gt;
+  &lt;response handled="true" /&gt;
+&lt;/zmap&gt;
+	</pre>
+    </td>
+  </tr>
+
+</table>
+</p>
+
+
+</fieldset>
+<br />
+
+
+
+<fieldset>
+<legend>The ZMap Control Window Actions</legend>
+
+<p>
+<table width="100%" class="zmap_actions">
+  <thead>
+  <th colspan=3>Actions accepted</th>
+  </thead>
+
+  <tr>
+  <th>Action</th>
+  <th>Description</th>
+  <th>Example XML</th>
+  </tr>
+
+  <!-- register_client -->
+  <tr>
+    <td>register_client</td>
+    <td>Register a client with the server program...</td>
+    <td><pre class="request">
+&lt;zmap action="register_client"&gt;
+  &lt;client xwid="0x2c00004"
+  request_atom="_ZMAP_XREMOTE_COMMAND"
+ response_atom="_ZMAP_XREMOTE_RESPONSE" /&gt;
+&lt;/zmap&gt;</pre></td>
+  </tr>
+
+  <!-- new_view -->
+  <tr>
+    <td>new_view</td>
+    <td>Open and  load a  new view in  the current toplevel  window of
+zmap.  This splits  the window vertically loading the  new sequence in
+the resulting canvas.
+    </td>
+
+    <td><pre class="request">
+&lt;zmap action="new_view"&gt;
+    &lt;segment sequence="1.123456-145678" start="1" end="0" &gt;
+[ZMap]
+sources = source
+[source]
+url = "acedb://any:any@localhost:12345"
+featuresets = "Coding Repeats BLASTX"
+
+    &lt;/segment&gt;
+&lt;/zmap&gt;</pre>
+        <pre class="response">
+&lt;zmap&gt;
+  &lt;response handled="true"&gt;
+    &lt;client xwid="0x2c00234" &gt;
+      &lt;action&gt;new_window&lt;/action&gt;
+      &lt;action&gt;find_feature&lt;/action&gt;
+      &lt;action&gt;create_feature&lt;/action&gt;
+      &lt;action&gt;delete_feature&lt;/action&gt;
+      &lt;action&gt;single_select&lt;/action&gt;
+      &lt;action&gt;multiple_select&lt;/action&gt;
+      &lt;action&gt;unselect&lt;/action&gt;
+      &lt;action&gt;list_windows&lt;/action&gt;
+      &lt;action&gt;register_client&lt;/action&gt;
+    &lt;/client&gt;
+  &lt;/response&gt;
+  &lt;meta display="localhost:10.0"
+       windowid="0x2c00084"
+    application=""
+        version="$Revision: 1.1 $" /&gt;
+&lt;/zmap&gt;</pre></td>
+  </tr>
+
+    <!-- close_view -->
+  <tr>
+    <td>close_view</td>
+    <td>
+	Close a view.
+    </td>
+    <td><pre class="request">
+&lt;zmap action="close_view"&gt;
+    &lt;client xwid="0x12345678" /&gt;
+&lt;/zmap&gt;</pre>
+
+  </tr>
+
+
+  <!-- zoom_in -->
+  <tr>
+    <td>zoom_in</td>
+    <td>zoom the currently focused window by a multiple of 2</td>
+    <td><pre class="request">&lt;zmap action="zoom_in"/&gt;</pre></td>
+  </tr>
+
+  <!-- zoom_out -->
+  <tr>
+    <td>zoom_out</td>
+    <td>zoom the currently focused window by a multiple of 1/2</td>
+    <td><pre class="request">&lt;zmap action="zoom_out"/&gt;</pre></td>
+  </tr>
+</table>
+</p>
+
+
+
+<p>
+<table width="100%" class="zmap_actions">
+  <thead>
+  <th colspan=3>Actions generated</th>
+  </thead>
+
+  <tr>
+  <th>Action</th>
+  <th>Description</th>
+  <th>Example Request/Response XML</th>
+  </tr>
+  
+
+
+
+</table>
+<p>
+
+
+
+
+
+</fieldset>
+<br />
+
+
+<fieldset>
+<legend>The ZMap View Window Actions</legend>
+
+<p>
+<table width="100%" class="zmap_actions">
+  <thead>
+  <th colspan=3>Actions accepted</th>
+  </thead>
+
+  <tr>
+  <th>Action</th>
+  <th>Description</th>
+  <th>Example XML</th>
+  </tr>
+
+    <!-- register_client -->
+  <tr>
+    <td>register_client</td>
+    <td>Register a client with the server program...</td>
+    <td><pre class="request">
+&lt;zmap action="register_client"&gt;
+  &lt;client xwid="0x2c00004"
+  request_atom="_ZMAP_XREMOTE_COMMAND"
+ response_atom="_ZMAP_XREMOTE_RESPONSE" /&gt;
+&lt;/zmap&gt;</pre></td>
+  </tr>
+
+  <!-- find_feature -->
+  <tr>
+    <td>find_feature</td>
+    <td>Find a feature on the zmap display.  **details need filling in here**</td>
+    <td><pre class="request">
+&lt;zmap action="find_feature"&gt;
+  &lt;featureset&gt;
+    &lt;feature name="RP3-123123-2" start="109934" end="118999" &gt;
+      &lt;subfeature start="" end="" ontology="exon" /&gt;
+    &lt;/feature&gt;
+  &lt;/featureset&gt;
+&lt;/zmap&gt;</pre></td>
+  </tr>
+
+  <!-- create_feature -->
+  <tr>
+    <td>create_feature</td>
+    <td>Create a new feature on the zmap display.  The feature will be
+drawn with  the least amount of redrawing  possible.  The pathological
+case is creating the first feature of a column.</td>
+    <td><pre class="request">
+&lt;zmap action="create_feature"&gt;
+  &lt;featureset&gt;
+    &lt;feature name="RP3-123123-2" start="109934" end="118999" &gt;
+      &lt;subfeature start="" end="" ontology="exon" /&gt;
+    &lt;/feature&gt;
+  &lt;/featureset&gt;
+&lt;/zmap&gt;</pre></td>
+  </tr>
+
+  <!-- delete_feature -->
+  <tr>
+    <td>delete_feature</td>
+    <td>Delete  a feature  on the  zmap display.  The least  amount of
+redrawing possible  will occur.  Frequently  this means that  just the
+feature  is   deleted  from  the  canvas.   Bumped   columns  and  the
+pathological case of  removing the last feature of  a column result in
+&quot;holes&quot; in the display.</td>
+    <td><pre class="request">
+&lt;zmap action="delete_feature"&gt;
+  &lt;featureset&gt;
+    &lt;feature name="RP3-123123-2" start="109934" end="118999" &gt;
+      &lt;subfeature start="" end="" ontology="exon" /&gt;
+    &lt;/feature&gt;
+  &lt;/featureset&gt;
+&lt;/zmap&gt;</pre></td>
+  </tr>
+
+
+    <!-- single_select -->
+  <tr>
+    <td>single_select</td>
+
+    <td>This will  do the equivalent of  a single mouse  select on the
+canvas.  This  is currently highlight  a feature.  It will  remove any
+previous  highlighting that may  exist.  It  is possible  to highlight
+whole  features  or just  subfeatures  with  this  request. The  first
+example  will  highlight  a  whole  feature,  while  the  second  will
+highlight an exon and an intron.   It may seem a little strange that a
+single select can highlight more than one item, but this is preferable
+to  having to  do  a single  select  with a  single  subfeature and  a
+separate multiple select call to highlight the second and so on.
+    </td>
+    <td><pre class="request">
+&lt;zmap action="single_select"&gt;
+  &lt;featureset&gt;
+    &lt;feature name="RP3-123123-2" start="109934" end="118999" /&gt;
+  &lt;/featureset&gt;
+&lt;/zmap&gt;</pre>
+      <pre class="request">
+&lt;zmap action="single_select"&gt;
+  &lt;featureset&gt;
+    &lt;feature name="RP3-123123-2" start="109934" end="118999" &gt;
+      &lt;subfeature start="109934" end="112869" ontology="exon" /&gt;
+      &lt;subfeature start="112870" end="113900" ontology="intron" /&gt;
+    &lt;/feature&gt;
+  &lt;/featureset&gt;
+&lt;/zmap&gt;</pre></td>
+  </tr>
+
+  <!-- multiple_select -->
+  <tr>
+    <td>multiple_select</td>
+    <td>This will do the same as  the single select, but not clear the
+current selection.
+    </td>
+
+  <!-- unselect -->
+  <tr>
+    <td>unselect</td>
+    <td>Unselects currently highlighted/selected feautre.
+    </td>
+
+    <td><pre class="request">
+&lt;zmap action="multiple_select"&gt;
+  &lt;featureset&gt;
+    &lt;feature name="RP3-123123-2" start="109934" end="118999" &gt;
+      &lt;subfeature start="" end="" ontology="exon" /&gt;
+    &lt;/feature&gt;
+  &lt;/featureset&gt;
+&lt;/zmap&gt;</pre></td>
+  </tr>
+
+  <!-- list_windows -->
+  <tr>
+    <td>list_windows</td>
+    <td>I DON'T KNOW WHAT THIS DOES, LOOK UP IN CODE....IGNORE XML.
+    </td>
+
+    <td><pre class="request">
+&lt;zmap action="list_windows"&gt;
+  &lt;featureset&gt;
+    &lt;feature name="RP3-123123-2" start="109934" end="118999" &gt;
+      &lt;subfeature start="" end="" ontology="exon" /&gt;
+    &lt;/feature&gt;
+  &lt;/featureset&gt;
+&lt;/zmap&gt;</pre></td>
+  </tr>
+
+  <!-- new_window -->
+  <tr>
+    <td>new_window</td>
+    <td>I DON'T KNOW WHAT THIS DOES, LOOK UP IN CODE....IGNORE XML.
+    </td>
+
+    <td><pre class="request">
+&lt;zmap action="new_window"&gt;
+  &lt;featureset&gt;
+    &lt;feature name="RP3-123123-2" start="109934" end="118999" &gt;
+      &lt;subfeature start="" end="" ontology="exon" /&gt;
+    &lt;/feature&gt;
+  &lt;/featureset&gt;
+&lt;/zmap&gt;</pre></td>
+  </tr>
+
+  <!-- export_content -->
+  <tr>
+    <td>export_content</td>
+    <td>I DON'T KNOW WHAT THIS DOES, LOOK UP IN CODE....IGNORE XML.
+    </td>
+
+    <td><pre class="request">
+&lt;zmap action="export_content"&gt;
+  &lt;featureset&gt;
+    &lt;feature name="RP3-123123-2" start="109934" end="118999" &gt;
+      &lt;subfeature start="" end="" ontology="exon" /&gt;
+    &lt;/feature&gt;
+  &lt;/featureset&gt;
+&lt;/zmap&gt;</pre></td>
+  </tr>
+
+
+
+</table>
+</p>
+
+
+
+<p>
+<table width="100%" class="zmap_actions">
+  <thead>
+  <th colspan=3>Actions generated</th>
+  </thead>
+
+  <tr>
+  <th>Action</th>
+  <th>Description</th>
+  <th>Example Request/Response XML</th>
+  </tr>
+  
+
+  <!-- feature_details -->
+  <tr>
+    <td>feature_details</td>
+
+    <td><p>Rather than  have all  the data in  directly in  ZMap, ZMap
+requests  extra   information  from  controlling   software  via  this
+mechanism.   ZMap  requests feature  details  for  a  feature and  the
+response  returned will  be processed  and displayed  in a  simple tag
+value widget.</p>
+      <p>The response  should be  as in the  examples and  comply with
+these notes:
+      <ul>
+        <li>The page, paragraph and tagvalue elements can be
+repeated as often as required but must be nested as shown.</li>
+
+<li><h5>Page element:</h5><p>The "name" attribute is compulsory.</p></li>
+<li><h5>Paragraph element:</h5>
+<p>The "name" attribute is optional.</p>
+<p>The type attribute must be one of:
+<ul>
+  <li>"simple"             tagvalues will be a simple vertical list.</li>
+  <li>"tagvalue_table"     tagvalues will be aligned in a table.</li>
+  <li>"homogenous"         as for "tagvalue_table" but all tagvalues should have the same tag which will only be displayed once.</li>
+</ul>
+(default is "simple")</p>
+
+<li><h5>Tagvalue element:</h5>
+<p>The "name" attribute is compulsory.</p>
+<p>The type attribute must be one of:
+<ul>
+  <li>"simple"             the value is displayed in a single line text widget</li>
+  <li>"scrolled_text"      the value is displayed in a multiline/scrolled window</li>
+</ul>
+(default is "simple")</p>
+<p>The content fo the tagvalue must be text.</p>
+</p>
+    </td>
+
+    <td>
+	<pre class="request">
+&lt;zmap action="feature_details"&gt;
+  &lt;featureset&gt;
+    &lt;feature name="RP3-123123-2" start="109934" end="118999" /&gt;
+  &lt;/featureset&gt;
+&lt;/zmap&gt;</pre>
+
+	<pre class="response">
+&lt;zmap&gt;
+  &lt;response handled="true"&gt;
+    &lt;notebook&gt;
+      &lt;page name="OTTER"&gt;
+        &lt;paragraph name="Otter" type="tagvalue_table"&gt;
+          &lt;tagvalue name="Otter Gene ID" type="simple"&gt;OTTHUMG00000013596&lt;/tagvalue&gt;
+          &lt;tagvalue name="Otter Exon ID" type="simple"&gt;OTTHUME00000167640&lt;/tagvalue&gt;
+          &lt;tagvalue name="Otter Exon ID" type="simple"&gt;OTTHUME00000167641&lt;/tagvalue&gt;
+          &lt;tagvalue name="Otter Exon ID" type="simple"&gt;OTTHUME00000167643&lt;/tagvalue&gt;
+          &lt;tagvalue name="Otter Exon ID" type="simple"&gt;OTTHUME00000167642&lt;/tagvalue&gt;
+        &lt;/paragraph&gt;
+      &lt;/page&gt;
+    &lt;/notebook&gt;      
+  &lt;/response&gt;
+&lt;/zmap&gt;</pre>
+      <pre class="response">
+&lt;zmap&gt;
+  &lt;response handled="false" /&gt;
+&lt;/zmap&gt;
+      </pre>
+    </td>
+  </tr>
+
+
+
+  <!-- edit -->
+  <tr>
+    <td>edit</td>
+    <td>Designed to initiate editing in the controlling program.</td>
+    <td><pre class="request">
+&lt;zmap action="edit"&gt;
+  &lt;featureset&gt;
+    &lt;feature name="RP3-123123-2" start="109934" end="118999" &gt;
+      &lt;subfeature start="" end="" ontology="exon" /&gt;
+    &lt;/feature&gt;
+  &lt;/featureset&gt;
+&lt;/zmap&gt;</pre>
+<pre class="response">
+&lt;zmap&gt;
+  &lt;response handled="true" /&gt;
+&lt;/zmap&gt;
+      </pre>
+    </td>
+  </tr>
+
+
+  
+
+</table>
+</p>
+
+
+
+</fieldset>
+<br />
+
+
+<fieldset>
+<legend>The ZMap Sequence Window Actions</legend>
+
+
+<p>
+<table width="100%" class="zmap_actions">
+  <thead>
+  <th colspan=3>Actions accepted</th>
+  </thead>
+  
+  <tr>
+  <th>Action</th>
+  <th>Description</th>
+  <th>Example XML</th>
+  </tr>
+
+  <!-- register_client -->
+  <tr>
+    <td>register_client</td>
+    <td>Register a client with the server program...</td>
+    <td><pre class="request">
+&lt;zmap action="register_client"&gt;
+  &lt;client xwid="0x2c00004"
+  request_atom="_ZMAP_XREMOTE_COMMAND"
+ response_atom="_ZMAP_XREMOTE_RESPONSE" /&gt;
+&lt;/zmap&gt;</pre></td>
+  </tr>
+
+
+    <!-- zoom_to -->
+  <tr>
+    <td>zoom_to</td>
+    <td>zoom the currently focused  window to display either the whole
+of  the feature  specified plus  a pre-specified  border both  top and
+bottom, or the co-ordinates specified.</td>
+    <td><pre class="request">
+&lt;zmap action="zoom_to"&gt;
+  &lt;featureset&gt;
+    &lt;feature name="RP3-123123-2" start="109934" end="118999" /&gt;
+  &lt;/featureset&gt;
+&lt;/zmap&gt;</pre>
+    <pre class="request">
+&lt;zmap action="zoom_to"&gt;
+  &lt;location start="" end="" /&gt;
+&lt;/zmap&gt;</pre></td>
+  </tr>
+
+  <!-- load_features -->
+  <tr>
+    <td>load_features</td>
+    <td>Request ZMap to load the features for the specified feature
+	set in the current window. Optionally the loading will be for the "full" column
+	or just the "mark" extent in that column.</td>
+    <td><pre class="request">
+&lt;zmap action="load_features" load="mark" &gt;
+  &lt;featureset name="SomeFeatureSet"/&gt;
+  &lt;featureset name="SomeOtherFeatureSet"/&gt;
+&lt;/zmap&gt;</pre></td>
+  </tr>
+
+  <!-- get_mark -->
+  <tr>
+    <td>get_mark</td>
+    <td>I DON'T KNOW WHAT THIS DOES, LOOK UP IN CODE....IGNORE XML.</td>
+    <td><pre class="request">
+&lt;zmap action="get_mark"&gt;
+  &lt;featureset&gt;
+    &lt;feature name="RP3-123123-2" start="109934" end="118999" /&gt;
+  &lt;/featureset&gt;
+&lt;/zmap&gt;</pre>
+    <pre class="request">
+&lt;zmap action="get_mark"&gt;
+  &lt;location start="" end="" /&gt;
+&lt;/zmap&gt;</pre></td>
+  </tr>
+
+  
+</table>
+</p>
+
+<p>
+<table width="100%" class="zmap_actions">
+  <thead>
+  <th colspan=3>Actions generated</th>
+  </thead>
+
+  <tr>
+  <th>Action</th>
+  <th>Description</th>
+  <th>Example Request/Response XML</th>
+  </tr>
+  
+
+
+
+</table>
+</p>
+
+
+</fieldset>
+<br />
+
+
+
+<p>(*)  initial =  the first  window zmap  displays. view  =  the zmap
+window which displays the sequence/features.</p>
+
+
+
+
+</fieldset>
+<br />
+
+
+
+
+
+
+<fieldset>
+<legend>Table Width="100%" of Actions generated</legend>
+
+<p>ZMap will generate the actions (register_client, single_select, multiple_select) from the above table, plus those from the following table.</p>
+
+<table width="100%" class="zmap_actions">
+  <tr>
+  <th>Action</th>
+  <th>Description</th>
+  <th>Example Request/Response XML</th>
+  </tr>
+  
+  <!-- view closed -->
+  <tr>
+    <td>view_closed</td>
+    <td>Designed to notify the controlling program that a zmap view has closed.
+    This might be the precursor to emitting a "finalised" action.</td>
+    <td><pre class="request">
+&lt;zmap action="view_closed"&gt;
+  &lt;client xwid="0x12345678" /&gt;
+&lt;/zmap&gt;</pre>
+
+	<pre class="response">
+&lt;zmap&gt;
+  &lt;response handled="true" /&gt;
+&lt;/zmap&gt;
+      </pre>
+    </td>
+  </tr>
+
+  <tr>
+    <td></td>
+    <td></td>
+    <td></td>
+  </tr>
+
+</table>
+</fieldset>
+<br />
+<!--#include virtual="/perl/footer"-->