Index: molecuilder/doc/class structure.uxf
===================================================================
--- molecuilder/doc/class structure.uxf	(revision a5eee6ac343d20b48744d8308e5ecc1f20f17c5f)
+++ molecuilder/doc/class structure.uxf	(revision c2c893eb273e23b7b2b27be2ccc8dc0d964ce10d)
@@ -21,5 +21,5 @@
 
 
-// This text will be stored with each diagram;  use it for notes.</help_text><zoom_level>10</zoom_level><element><type>com.umlet.element.base.Class</type><coordinates><x>2650</x><y>300</y><w>210</w><h>100</h></coordinates><panel_attributes>AtomInfo
+// This text will be stored with each diagram;  use it for notes.</help_text><zoom_level>7</zoom_level><element><type>com.umlet.element.base.Class</type><coordinates><x>1855</x><y>294</y><w>147</w><h>70</h></coordinates><panel_attributes>AtomInfo
 --
 -x,v,F: Vector
@@ -28,5 +28,5 @@
 #AtomInfo();
 #~AtomInfo();
-</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>2350</x><y>330</y><w>320</w><h>50</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>300;30;30;30</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1820</x><y>90</y><w>560</w><h>370</h></coordinates><panel_attributes>Element
+</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1645</x><y>315</y><w>223</w><h>34</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>210;21;21;21</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1274</x><y>147</y><w>392</w><h>259</h></coordinates><panel_attributes>Element
 --
 mass: double
@@ -49,5 +49,5 @@
 #~element();
 #Output(ofstream * const out) const: bool
-#Checkout(ofstream * const out, const int No, const int NoOfAtoms) const: bool</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>2800</x><y>640</y><w>400</w><h>230</h></coordinates><panel_attributes>BondedParticle
+#Checkout(ofstream * const out, const int No, const int NoOfAtoms) const: bool</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1960</x><y>532</y><w>280</w><h>161</h></coordinates><panel_attributes>BondedParticle
 --
 --
@@ -63,6 +63,6 @@
 #OutputBondOfAtom() const
 #OutputAdjacency(ofstream *AdjacencyFile) const
-#OutputOrder(ofstream *file) const</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>3120</x><y>370</y><w>370</w><h>290</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>350;30;350;220;30;220;30;270</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>2750</x><y>370</y><w>420</w><h>290</h></coordinates><panel_attributes>lt=&lt;&lt;-
-</panel_attributes><additional_attributes>30;30;30;220;400;220;400;270</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>3120</x><y>370</y><w>50</w><h>290</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>30;30;30;270</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>3370</x><y>300</y><w>210</w><h>100</h></coordinates><panel_attributes>BondedParticleInfo
+#OutputOrder(ofstream *file) const</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>2184</x><y>343</y><w>258</w><h>202</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>245;21;245;154;21;154;21;189</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1925</x><y>343</y><w>293</w><h>202</h></coordinates><panel_attributes>lt=&lt;&lt;-
+</panel_attributes><additional_attributes>21;21;21;154;280;154;280;189</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>2184</x><y>343</y><w>34</w><h>202</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>21;21;21;189</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>2359</x><y>294</y><w>147</w><h>70</h></coordinates><panel_attributes>BondedParticleInfo
 --
 AdaptiveOrder: unsigned char
@@ -71,5 +71,5 @@
 #BondedParticleInfo()
 #~BondedParticleInfo()
-</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>2970</x><y>280</y><w>310</w><h>120</h></coordinates><panel_attributes>ParticleInfo
+</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>2079</x><y>280</y><w>217</w><h>84</h></coordinates><panel_attributes>ParticleInfo
 --
 nr: int
@@ -79,5 +79,5 @@
 #~ParticleInfo()
 #ostream &amp; operator &lt;&lt; (ostream &amp;ost) const
-</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>3550</x><y>330</y><w>250</w><h>50</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>30;30;230;30</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>3780</x><y>230</y><w>210</w><h>190</h></coordinates><panel_attributes>BondList
+</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>2485</x><y>315</y><w>174</w><h>34</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>21;21;161;21</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>2646</x><y>245</y><w>147</w><h>133</h></coordinates><panel_attributes>BondList
 {Some Properties}
 --
@@ -90,5 +90,5 @@
 Responsibilities
 -- Resp1
-*-- Resp2*</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1960</x><y>490</y><w>210</w><h>150</h></coordinates><panel_attributes>GraphNodeInfo
+*-- Resp2*</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1372</x><y>427</y><w>147</w><h>105</h></coordinates><panel_attributes>GraphNodeInfo
 --
 --
@@ -102,5 +102,5 @@
 #GraphNodeInfo()
 #~GraphNodeInfo()
-</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>2120</x><y>750</y><w>180</w><h>100</h></coordinates><panel_attributes>GraphNode
+</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1484</x><y>609</y><w>126</w><h>70</h></coordinates><panel_attributes>GraphNode
 --
 --
@@ -109,5 +109,5 @@
 #OutputGraphInfo() const
 #OutputComponentNumber() const
-</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>2120</x><y>370</y><w>1070</w><h>400</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>1050;30;1050;100;310;100;310;300;30;300;30;380</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>2120</x><y>610</y><w>50</w><h>160</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>30;30;30;140</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1840</x><y>960</y><w>840</w><h>350</h></coordinates><panel_attributes>Atom
+</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1484</x><y>343</y><w>748</w><h>279</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>735;21;735;70;217;70;217;210;21;210;21;266</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1484</x><y>511</y><w>34</w><h>111</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>21;21;21;98</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1288</x><y>756</y><w>588</w><h>245</h></coordinates><panel_attributes>Atom
 --
 sort: int*
@@ -129,5 +129,5 @@
 #DistanceToVector(const Vector &amp;origin) const: double 
 #DistanceSquaredToVector(const Vector &amp;origin) const: double
-#IsInParallelepiped(const Vector offset, const double *parallelepiped) const: bool</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1970</x><y>610</y><w>120</w><h>370</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>30;30;30;260;100;260;100;350</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>3180</x><y>950</y><w>720</w><h>300</h></coordinates><panel_attributes>TrajectoryParticle
+#IsInParallelepiped(const Vector offset, const double *parallelepiped) const: bool</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1379</x><y>511</y><w>83</w><h>258</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>21;21;21;182;70;182;70;245</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>2226</x><y>749</y><w>504</w><h>210</h></coordinates><panel_attributes>TrajectoryParticle
 --
 --
@@ -147,5 +147,5 @@
 #Thermostat_Berendsen(int Step, double ScaleTempFactor, double *ekin, config *configuration)
 #Thermostat_NoseHoover_init(int Step, double *delta_alpha)
-#Thermostat_NoseHoover_scale(int Step, double *ekin, config *configuration)</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>3070</x><y>370</y><w>300</w><h>600</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>30;30;30;160;280;160;280;580</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>2810</x><y>370</y><w>560</w><h>600</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>30;30;30;160;540;160;540;580</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>2310</x><y>700</y><w>290</w><h>100</h></coordinates><panel_attributes>TrajectoryParticleInfo
+#Thermostat_NoseHoover_scale(int Step, double *ekin, config *configuration)</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>2149</x><y>343</y><w>209</w><h>419</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>21;21;21;112;196;112;196;406</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1967</x><y>343</y><w>391</w><h>419</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>21;21;21;112;378;112;378;406</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1617</x><y>574</y><w>203</w><h>70</h></coordinates><panel_attributes>TrajectoryParticleInfo
 --
 Trajectory: struct {vector&lt;Vector&gt; R,U,V}
@@ -153,5 +153,5 @@
 --
 #TrajectoryParticleInfo()
-#~TrajectoryParticleInfo()</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>2510</x><y>770</y><w>860</w><h>200</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>30;30;30;150;840;150;840;180</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>2470</x><y>770</y><w>50</w><h>210</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>30;30;30;190</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>2170</x><y>820</y><w>350</w><h>160</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>30;30;30;80;330;80;330;140</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>2480</x><y>520</y><w>210</w><h>160</h></coordinates><panel_attributes>TesselPoint
+#~TrajectoryParticleInfo()</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1757</x><y>623</y><w>601</w><h>139</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>21;21;21;105;588;105;588;126</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1729</x><y>623</y><w>34</w><h>146</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>21;21;21;133</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1519</x><y>658</y><w>244</w><h>111</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>21;21;21;56;231;56;231;98</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1736</x><y>448</y><w>147</w><h>112</h></coordinates><panel_attributes>TesselPoint
 --
 -id: Long
@@ -163,5 +163,5 @@
 Responsibilities
 -- Resp1
-*-- Resp2*</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>2470</x><y>650</y><w>210</w><h>330</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>190;30;190;250;30;250;30;310</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>2470</x><y>840</y><w>570</w><h>140</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>550;30;550;60;30;60;30;120</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>2470</x><y>370</y><w>570</w><h>610</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>550;30;550;240;280;240;280;530;30;530;30;590</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>2470</x><y>370</y><w>300</w><h>610</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>280;30;280;530;30;530;30;590</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1190</x><y>1100</y><w>510</w><h>320</h></coordinates><panel_attributes>Bond
+*-- Resp2*</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1729</x><y>539</y><w>146</w><h>230</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>133;21;133;175;21;175;21;217</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1729</x><y>672</y><w>398</w><h>97</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>385;21;385;42;21;42;21;84</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1729</x><y>343</y><w>398</w><h>426</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>385;21;385;168;196;168;196;371;21;371;21;413</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1729</x><y>343</y><w>209</w><h>426</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>196;21;196;371;21;371;21;413</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>833</x><y>854</y><w>357</w><h>224</h></coordinates><panel_attributes>Bond
 --
 HydrogenBond: int
@@ -182,8 +182,8 @@
 #bond()
 #bond(atom *left, atom *right, const int degree=1, const int number=0)
-#~bond()</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>2620</x><y>890</y><w>154</w><h>180</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-
-3</panel_attributes><additional_attributes>60;160;130;160;130;50;30;50;30;70</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1670</x><y>1160</y><w>190</w><h>70</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-
-2</panel_attributes><additional_attributes>30;50;170;50</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1100</x><y>940</y><w>160</w><h>240</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-
-2</panel_attributes><additional_attributes>90;220;40;220;40;50;140;50;140;160</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1590</x><y>1780</y><w>720</w><h>240</h></coordinates><panel_attributes>BondGraph
+#~bond()</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1834</x><y>707</y><w>107</w><h>125</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-
+3</panel_attributes><additional_attributes>42;112;91;112;91;35;21;35;21;49</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1169</x><y>896</y><w>132</w><h>49</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-
+2</panel_attributes><additional_attributes>21;35;119;35</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>770</x><y>742</y><w>111</w><h>167</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-
+2</panel_attributes><additional_attributes>63;154;28;154;28;35;98;35;98;112</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1113</x><y>1330</y><w>504</w><h>168</h></coordinates><panel_attributes>BondGraph
 --
 max_distance: double
@@ -199,5 +199,5 @@
                                                         double &amp;MinDistance, double &amp;MaxDistance, bool IsAngstroem)
 #CovalentMinMaxDistance(BondedParticle * const Walker, BondedParticle * const OtherWalker,
-                                          double &amp;MinDistance, double &amp;MaxDistance, bool IsAngstroem)</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>2280</x><y>1890</y><w>240</w><h>50</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>30;30;220;30</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>2500</x><y>1830</y><w>210</w><h>190</h></coordinates><panel_attributes>MatrixContainer
+                                          double &amp;MinDistance, double &amp;MaxDistance, bool IsAngstroem)</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1596</x><y>1407</y><w>167</w><h>34</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>21;21;154;21</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1750</x><y>1365</y><w>147</w><h>133</h></coordinates><panel_attributes>MatrixContainer
 --
 -id: Long
@@ -209,5 +209,5 @@
 Responsibilities
 -- Resp1
-*-- Resp2*</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>0</x><y>650</y><w>730</w><h>1500</h></coordinates><panel_attributes>config
+*-- Resp2*</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>0</x><y>539</y><w>511</w><h>1050</h></coordinates><panel_attributes>config
 --
 PsiType: int
@@ -297,6 +297,6 @@
 #SetDefaultPath(const char * const path);
 #InitThermostats();
-#ParseThermostats(class ConfigFileBuffer * const fb);</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>700</x><y>1920</y><w>910</w><h>50</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>30;30;890;30</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>2280</x><y>0</y><w>176</w><h>200</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-
-2</panel_attributes><additional_attributes>100;180;150;180;150;50;30;50;30;90</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>3600</x><y>1280</y><w>320</w><h>200</h></coordinates><panel_attributes>&lt;&lt;Singleton&gt;&gt;
+#ParseThermostats(class ConfigFileBuffer * const fb);</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>490</x><y>1428</y><w>636</w><h>34</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>21;21;623;21</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1596</x><y>84</y><w>121</w><h>139</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-
+2</panel_attributes><additional_attributes>70;126;105;126;105;35;21;35;21;63</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>2520</x><y>980</y><w>224</w><h>140</h></coordinates><panel_attributes>&lt;&lt;Singleton&gt;&gt;
 errorLogger
 --
@@ -310,9 +310,9 @@
 #static setVerbosity(int verbosityLevel);
 #protected errorLogger()
-#protected ~errorLogger()</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>2990</x><y>1400</y><w>520</w><h>50</h></coordinates><panel_attributes>KeyCompare
+#protected ~errorLogger()</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>2093</x><y>1064</y><w>364</w><h>35</h></coordinates><panel_attributes>KeyCompare
 --
 --
 #operator() (const KeySet SubgraphA, const KeySet SubgraphB) const: bool
-</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1670</x><y>1620</y><w>210</w><h>150</h></coordinates><panel_attributes>UniqueFragments
+</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1169</x><y>1218</y><w>147</w><h>105</h></coordinates><panel_attributes>UniqueFragments
 --
 ANOVAOrder: int
@@ -322,13 +322,13 @@
 ShortestPathList: int *
 UsedList: bool **
-BondsPerSPCount: int *</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>700</x><y>1670</y><w>990</w><h>50</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>970;30;30;30</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1600</x><y>1280</y><w>360</w><h>440</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>70;420;30;420;30;320;340;320;340;30</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1200</x><y>1490</y><w>350</w><h>40</h></coordinates><panel_attributes>Graph
+BondsPerSPCount: int *</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>490</x><y>1253</y><w>692</w><h>34</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>679;21;21;21</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1120</x><y>980</y><w>251</w><h>307</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>49;294;21;294;21;224;238;224;238;21</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>840</x><y>1127</y><w>245</w><h>28</h></coordinates><panel_attributes>Graph
 {map &lt;KeySet, NumberValuePair, KeyCompare&gt;}
-</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1230</x><y>1500</y><w>460</w><h>220</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>440;200;30;200;30;30</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1350</x><y>1580</y><w>80</w><h>40</h></coordinates><panel_attributes>KeySet
-{set&lt;int&gt;}</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1350</x><y>1590</y><w>340</w><h>130</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>320;110;30;110;30;30</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1550</x><y>1390</y><w>140</w><h>330</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-
-0...N X 0...N</panel_attributes><additional_attributes>120;310;80;310;80;160;30;160;30;30</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>2480</x><y>3140</y><w>210</w><h>60</h></coordinates><panel_attributes>LSQ_params
+</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>861</x><y>1134</y><w>321</w><h>153</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>308;140;21;140;21;21</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>945</x><y>1190</y><w>56</w><h>28</h></coordinates><panel_attributes>KeySet
+{set&lt;int&gt;}</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>945</x><y>1197</y><w>237</w><h>90</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>224;77;21;77;21;21</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1085</x><y>1057</y><w>99</w><h>230</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-
+0...N X 0...N</panel_attributes><additional_attributes>84;217;56;217;56;112;21;112;21;21</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1736</x><y>2282</y><w>147</w><h>42</h></coordinates><panel_attributes>LSQ_params
 --
 vectors: const Vector **
 num: int
-</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1490</x><y>260</y><w>210</w><h>50</h></coordinates><panel_attributes>lsq_params
---
-x: gsl_vector *</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1670</x><y>260</y><w>170</w><h>50</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>30;30;150;30</additional_attributes></element></umlet_diagram>
+</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1043</x><y>266</y><w>147</w><h>35</h></coordinates><panel_attributes>lsq_params
+--
+x: gsl_vector *</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1169</x><y>266</y><w>118</w><h>34</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>21;21;105;21</additional_attributes></element></umlet_diagram>
Index: molecuilder/doc/menu classes.uxf
===================================================================
--- molecuilder/doc/menu classes.uxf	(revision c2c893eb273e23b7b2b27be2ccc8dc0d964ce10d)
+++ molecuilder/doc/menu classes.uxf	(revision c2c893eb273e23b7b2b27be2ccc8dc0d964ce10d)
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="UTF-8"?><umlet_diagram><help_text>// Uncomment the following line to change the fontsize:
+// fontsize=14
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+// Welcome to UMLet!
+//
+// Double-click on UML elements to add them to the diagram, or to copy them
+// Edit elements by modifying the text in this panel
+// Hold Ctrl to select multiple elements
+// Use Ctrl+mouse to select via lasso
+//
+// Use Â± or Ctrl+mouse wheel to zoom
+// Drag a whole relation at its central square icon
+//
+// Press Ctrl+C to copy the whole diagram to the system clipboard (then just paste it to, eg, Word)
+// Edit the files in the "palettes" directory to create your own element palettes
+//
+// Select "Custom Elements &gt; New..." to create new element types
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+
+// This text will be stored with each diagram;  use it for notes.</help_text><zoom_level>10</zoom_level><element><type>com.umlet.element.base.Class</type><coordinates><x>0</x><y>30</y><w>210</w><h>140</h></coordinates><panel_attributes>Menu
+--
+--
+#Menu()
+/+~Menu()/
+#addItem(MenuItem*)
+#removeItem(MenuItem*)
+#display()
+--
+-- Base class for all Menus</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>0</x><y>240</y><w>210</w><h>250</h></coordinates><panel_attributes>TextMenu
+--
+outputter: ostream
+title: string;
+spacer: char
+length: int
+--
+#TextMenu(ostream&amp;,string,char,int)
+#TextMenu(ostream&amp;,string)
+/+~TextMenu()/
+addItem(MenuItem*)
+removeItem(MenuItem*)
+display()
+doQuit()
+hasQuit(): bool
+showEntry(MenuItem*)
+</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>740</x><y>0</y><w>370</w><h>380</h></coordinates><panel_attributes>MenuItem
+--
+char trigger: char
+description: string*
+added: bool
+--
+#MenuItem(char,const char*,Menu*);
+/+~MenuItem();/
+/+doTrigger()/
+/+checkTrigger(char)/
+/+formatEntry(): const string/
+/+getDescription(): const string/
+/+getTrigger(): char/
+/+add_to_menu(Menu*)/
+/+wasAdded(): bool/
+#setDescription(string);
+--
+Responsibilities
+-- Store Items in a menu 
+-- check a trigger, 
+     if the trigger matches call doTrigger() on subclass
+--
+Constraints
+-- A MenuItem always belongs to a single
+-- Destruction is done by the owning menu</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>180</x><y>60</y><w>570</w><h>40</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-
+m1=1
+m2=1...N</panel_attributes><additional_attributes>30;30;560;30</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>70</x><y>140</y><w>40</w><h>110</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>30;30;30;100</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>750</x><y>900</y><w>360</w><h>120</h></coordinates><panel_attributes>ActionMenuItem
+--
+
+--
+#ActionMenuItem(char,const char*,Menu*,Action*)
+/+~ActionMenuItem()/
+/+doTrigger()/
+--
+Responsibilities
+-- Call action.call() when the trigger is recieved
+</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>880</x><y>350</y><w>50</w><h>570</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>30;30;30;550</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1400</x><y>530</y><w>340</w><h>260</h></coordinates><panel_attributes>DisplayMenuItem
+--
+string title;
+int length;
+char spacer;
+--
+#DisplayMenuItem(Menu*, StringView *);
+#DisplayMenuItem(Menu*, StringView *, string, char, int);
+/+~DisplayMenuItem()/
+/+doTrigger()/
+/+checkTrigger(char)/
+/+formatEntry(): const string/
+/getDescription(): const string/
+--
+Responsibilities
+-- Display any kind of stringView within a Menu
+-- All trigger are ignored</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1890</x><y>580</y><w>410</w><h>120</h></coordinates><panel_attributes>StringView
+--
+--
+#StringView()
+/+~StringView()/
+/+toString(): const string/
+--
+Responsibilities
+-- Base class for anything that can be displayed as a String</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1710</x><y>600</y><w>190</w><h>40</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-
+m1=1...N
+m2=1</panel_attributes><additional_attributes>30;30;180;30</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>880</x><y>350</y><w>640</w><h>200</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>30;30;30;150;620;150;620;180</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>960</x><y>550</y><w>310</w><h>220</h></coordinates><panel_attributes>SeperatorItem
+--
+spacer: char
+length: int
+--
+#SeperatorItem(Menu*)
+#SeperatorItem(Menu*,char,int)
+/+virtual ~SeperatorItem()/
+/+doTrigger()/
+/+checkTrigger(char)/
+/+getDescription(): const string/
+/+formatEntry(): const string/
+--
+Responsibilities
+-- Display a seperating line of spacers </panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>880</x><y>350</y><w>250</w><h>220</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>30;30;30;150;230;150;230;200</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>350</x><y>460</y><w>360</w><h>140</h></coordinates><panel_attributes>&lt;&lt;composite&gt;&gt;
+SubMenuItem
+--
+--
+#SubMenuItem(char,const char*,Menu*,Menu*)
+/+~SubMenuItem()/
+/+doTrigger()/
+--
+Responsibilities
+-- Produce a submenu when this item is triggered</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>180</x><y>110</y><w>190</w><h>460</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-
+m1=1
+m2=1</panel_attributes><additional_attributes>170;440;110;440;110;30;30;30</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>490</x><y>350</y><w>440</w><h>130</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>420;30;420;80;30;80;30;110</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>380</x><y>890</y><w>220</w><h>170</h></coordinates><panel_attributes>&lt;&lt;Command&gt;&gt;
+Action
+--
+--
+#Action()
+/+~Action()/
+/+call()/
+/+undo()/
+/+canUndo(): bool/
+--
+Responsibilities
+-- Perfom an Operation on call</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>570</x><y>910</y><w>200</w><h>50</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-
+m1=0...N
+m2=1</panel_attributes><additional_attributes>180;30;30;30</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>320</x><y>1170</y><w>340</w><h>190</h></coordinates><panel_attributes>&lt;&lt;Wrapper&gt;&gt;
+MethodAction
+--
+executeMethod : boost::function&lt;void()&gt;  
+--
+#MethodAction(boost::function&lt;void()&gt;)
+/+~MethodAction()/
+/+call()/
+/+undo()/
+/+canUndo(): bool/
+--
+Responsibilities
+-- Transform an ordinary method into an Action</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>450</x><y>1030</y><w>50</w><h>160</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>30;30;30;140</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1970</x><y>340</y><w>260</w><h>80</h></coordinates><panel_attributes>&lt;&lt;View&gt;&gt;
+View
+--
+--
+--
+Responsibilities
+-- Anything that needs to be shown
+</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>2070</x><y>390</y><w>40</w><h>200</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>30;30;30;190</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1660</x><y>890</y><w>410</w><h>150</h></coordinates><panel_attributes>&lt;&lt;Wrapper&gt;&gt;
+MethodStringView
+--
+displayMethod: boost::function&lt;string()&gt;
+--
+#MethodStringView(boost::function&lt;string()&gt;)
+/+~MethodStringView()/
+/+toString(): const string/
+--
+Responsibilities
+-- Turn any method that returns a string into a StringView</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>2150</x><y>890</y><w>470</w><h>150</h></coordinates><panel_attributes>&lt;&lt;Wrapper&gt;&gt;
+StreamStringView
+--
+displayMethod: boost::function&lt;void(ofstream *)&gt;
+--
+StreamStringView(boost::function&lt;void(ofstream *)&gt;)
+/+~StreamStringView()/
+/+toString(): const string/
+--
+Responsibilities
+-- Turn any method that uses a stream for output into a StringView</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1830</x><y>670</y><w>270</w><h>230</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>260;30;260;120;30;120;30;220</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>2060</x><y>670</y><w>340</w><h>230</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>30;30;30;120;330;120;330;220</additional_attributes></element></umlet_diagram>
