diff --git a/.gitignore b/.gitignore
index 5c0414078159dbd2eca6681405b1bb794a1ec88d..d4797ec01bd2c86c5f56482c19c391c46a764f75 100644
--- a/.gitignore
+++ b/.gitignore
@@ -64,3 +64,11 @@
 /assignments/src/MV3500Cohort2022MayJune/projects/Royer/TwoCranesBerth/nbproject/private/
 /assignments/src/MV3500Cohort2022MayJune/projects/Royer/TwoCranesBerth/nbproject/build-impl.xml~
 /assignments/src/MV3500Cohort2022MayJune/projects/Royer/TwoCranesBerth/pduLog/
+/examples/viskit/logs/
+/examples/viskit/ViskitOpenDis7Examples/build/
+/examples/viskit/ViskitOpenDis7Examples/AnalystReports/
+/examples/viskit/ViskitOpenDis7Examples/viskitProject.xml
+/examples/src/ViskitOpenDis7Examples/AnalystReports/
+/examples/src/ViskitOpenDis7Examples/build/
+/viskit/MyViskitProjects/DefaultProject/build/
+/viskit/MyViskitProjects/DefaultProject/AnalystReports/
diff --git a/build.xml b/build.xml
index 1fd203808b69852c5651e004a26061e01708d995..084deb26f593e20293133993e55eb8d4195cc092 100644
--- a/build.xml
+++ b/build.xml
@@ -238,4 +238,70 @@ POSSIBILITY OF SUCH DAMAGE.
              dest="lib" verbose="true" usetimestamp="true"/>
     </target>
     
+    <!-- Viskit properties -->
+    <condition property="isWin">
+        <os family="windows"/>
+    </condition>
+    <condition property="isMac">
+        <os family="mac"/>
+    </condition>
+    <condition property="isUnix">
+        <and>
+            <os family="unix"/>
+            <not>
+                <equals arg1="${os.name}" arg2="Mac OS X"/>
+            </not>
+        </and>
+    </condition>
+    <property name="product.shortname" value="viskit"/>
+    <property name="viskit.dir" value="${basedir}/${product.shortname}"/>
+    
+    <property name="run.arg0" value="-Xmx256m"/>
+    <property name="run.arg1" value="-Dswing.aatext=true"/>
+    <property name="common.run.args" value="${run.arg0} ${run.arg1}"/>
+    
+    <property name="win.run.args" value="${common.run.args}"/>
+    
+    <property name="run.arg2" value="-Dawt.useSystemAAFontSettings=gasp"/>
+    <property name="unix.run.args" value="${common.run.args} ${run.arg2}"/>
+
+    <property name="run.arg3" value="-Dapple.awt.graphics.UseQuartz=true"/>
+    <property name="run.arg4" value="-Dapple.laf.useScreenMenuBar=true"/>
+    <property name="run.arg5" value="-Dapple.awt.brushMetalLook=true"/>
+    <property name="run.arg6" value="-Xdock:name=${product.shortname}"/>
+    <property name="run.arg7" value="--add-exports java.desktop/com.apple.eawt=ALL-UNNAMED"/>
+    <property name="mac.run.args" value="${common.run.args} ${run.arg3} ${run.arg4} ${run.arg5} ${run.arg6} ${run.arg7}"/> 
+    
+    <!--<property name="assy.file" value="${basedir}/examples/src/ViskitOpenDis7Examples/Assemblies/dis7/ArrivalProcessOpenDis7Assembly.xml"/>-->
+    <property name="assy.file" value="${basedir}/examples/src/ViskitOpenDis7Examples/Assemblies/dis7/SimpleServerDis7Assembly.xml"/>
+    
+    <target name="run.viskit" depends="run.viskit.win,run.viskit.mac,run.viskit.unix" description="Start the Visual Simikit (viskit) DES Authoring Tool on any O/S"/>
+    <target name="run.viskit.win" if="isWin">
+        <java dir="${viskit.dir}" jar="viskit/viskit-editor.jar" fork="true">
+	    <jvmarg line="${win.run.args}"/>
+            <arg value="${assy.file}"/>
+        </java>
+    </target>
+    <target name="run.viskit.mac" if="isMac">
+        <java dir="${viskit.dir}" jar="viskit/viskit-editor.jar" fork="true">
+	    <jvmarg line="${mac.run.args}"/>
+            <arg value="${assy.file}"/>
+        </java>
+    </target>
+    <target name="run.viskit.unix" if="isUnix">
+        <java dir="${viskit.dir}" jar="viskit/viskit-editor.jar" fork="true">
+	    <jvmarg line="${unix.run.args}"/>
+            <arg value="${assy.file}"/>
+        </java>
+    </target>
+    
+    <target name="clean.all.viskit.logs" description="clean autogenerated PDU capture and Viskit generated logs">
+        <delete dir="${viskit.dir}/logs"/>
+        <delete dir="${viskit.dir}/pduLog"/>
+    </target>
+    
+    <target name="nuke.dot.viskit" description="Abolish an out of synch configuration and metadata directory">
+        <delete includeemptydirs="yes" dir="${user.home}/.${product.shortname}"/>
+    </target>
+    
 </project>
\ No newline at end of file
diff --git a/examples/build.xml b/examples/build.xml
index dab94d25d33cd12861a32de0d8a1ea1ca626b572..b3940cf05b7f38a85a7b99961c53b5c525c3503a 100644
--- a/examples/build.xml
+++ b/examples/build.xml
@@ -207,5 +207,21 @@ POSSIBILITY OF SUCH DAMAGE.
         <nbbrowse url="https://savage.nps.edu/opendis7-java/javadoc" />
         <!-- TODO implementation-independent approach if possible, but note that other Ant approaches usually have to be customized for each OS. -->
     </target>
+     
+    <target name="run.opendis.helper" depends="jar" description="Test run our OpenDisHelper">
+        <java classpath="${viskit.proj.lib.dir}/${dist.name}.jar" classname="${opendis.helper}" fork="true"/>
+    </target>
+    
+    <target name="-post-jar">
+        <copy todir="${viskit.proj.lib.dir}">
+            <fileset dir="${dist.dir}">
+                <exclude name="README.TXT"/>
+                <exclude name="lib/simkit-src.zip"/>
+                <exclude name="lib/simkit-doc.zip"/>
+                <exclude name="lib/dis-enums-1.3.jar"/>
+                <exclude name="lib/open-dis_4.16.jar"/>
+            </fileset>
+        </copy>
+    </target>
     
 </project>
diff --git a/examples/nbproject/project.properties b/examples/nbproject/project.properties
index b0f27ba21430babba5e31e0c6d9018597a3f2089..546aa0b56deba63200d7b17bfc738d729255093e 100644
--- a/examples/nbproject/project.properties
+++ b/examples/nbproject/project.properties
@@ -32,12 +32,16 @@ debug.test.modulepath=\
 dist.archive.excludes=
 # This directory is removed when the project is cleaned:
 dist.dir=dist
-dist.jar=${dist.dir}/Networked_Graphics_MV3500_examples.jar
+dist.name=Networked_Graphics_MV3500_examples
+dist.jar=${dist.dir}/${dist.name}.jar
 dist.javadoc.dir=${dist.dir}/javadoc
 endorsed.classpath=
-excludes=
+project.licensePath=../license.txt
+viskit.proj.dir=ViskitOpenDis7Examples
+viskit.proj.lib.dir=src/${viskit.proj.dir}/lib
+opendis.helper=SimkitOpenDis7Examples.run.OpenDisHelper
+excludes=ViskitOpenDis7Examples/
 file.reference.dis-enums-1.3.jar=../lib/dis-enums-1.3.jar
-
 file.reference.opendis7-full.jar=../lib/opendis7-full.jar
 file.reference.open-dis_4.16.jar=../lib/open-dis_4.16.jar
 file.reference.simkit-doc.zip=../lib/simkit-doc.zip
@@ -45,7 +49,7 @@ file.reference.simkit-src.zip=../lib/simkit-src.zip
 file.reference.simkit.jar=../lib/simkit.jar
 #file.reference.opendis7-enumerations-classes.jar=../lib/opendis7-enumerations-classes.jar
 #file.reference.opendis7-pdus-classes.jar=../lib/opendis7-pdus-classes.jar
-includes=**
+includes=**/*.java
 jar.compress=false
 javac.classpath=\
     ${file.reference.opendis7-full.jar}:\
diff --git a/examples/src/ViskitOpenDis7Examples/Assemblies/dis7/ArrivalProcessOpenDis7Assembly.xml b/examples/src/ViskitOpenDis7Examples/Assemblies/dis7/ArrivalProcessOpenDis7Assembly.xml
new file mode 100644
index 0000000000000000000000000000000000000000..87787fc2afa70f4122f89029fae5350ab3793b37
--- /dev/null
+++ b/examples/src/ViskitOpenDis7Examples/Assemblies/dis7/ArrivalProcessOpenDis7Assembly.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<SimkitAssembly name="ArrivalProcessOpenDis7Assembly" version="1.0" package="dis7" xsi:noNamespaceSchemaLocation="http://diana.nps.edu/Simkit/assembly.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <SimEntity name="aPOpenDis7" type="dis7.ArrivalProcessOpenDis7" description="">
+        <TerminalParameter name="address" value="" type="java.lang.String"/>
+        <TerminalParameter name="port" value="-1" type="int"/>
+        <FactoryParameter factory="simkit.random.RandomVariateFactory" type="simkit.random.RandomVariate">
+            <TerminalParameter name="" value="Exponential" type="String"/>
+            <TerminalParameter name="" value="1.7" type="Object..."/>
+        </FactoryParameter>
+        <Coordinate x="220.0" y="210.0"/>
+    </SimEntity>
+    <PropertyChangeListener name="numArrivalsStat" type="simkit.stat.SimpleStatsTimeVarying" mode="replicationStat" meanStatistics="false" countStatistics="true" description="">
+        <TerminalParameter name="p[0] : " value="N" type="java.lang.String"/>
+        <Coordinate x="220.0" y="330.0"/>
+    </PropertyChangeListener>
+    <PropertyChangeListener name="numEntityCreationsStat" type="simkit.stat.SimpleStatsTimeVarying" mode="replicationStat" meanStatistics="false" countStatistics="true" description="">
+        <TerminalParameter name="p[0] : " value="C" type="java.lang.String"/>
+        <Coordinate x="220.0" y="80.0"/>
+    </PropertyChangeListener>
+    <PropertyChangeListener name="numEntityRemovalsStat" type="simkit.stat.SimpleStatsTimeVarying" mode="replicationStat" meanStatistics="false" countStatistics="true" description="">
+        <TerminalParameter name="p[0] : " value="R" type="java.lang.String"/>
+        <Coordinate x="380.0" y="210.0"/>
+    </PropertyChangeListener>
+    <PropertyChangeListenerConnection property="N" listener="numArrivalsStat" source="aPOpenDis7" description=""/>
+    <PropertyChangeListenerConnection property="C" listener="numEntityCreationsStat" source="aPOpenDis7" description=""/>
+    <PropertyChangeListenerConnection property="R" listener="numEntityRemovalsStat" source="aPOpenDis7" description=""/>
+    <Schedule stopTime="100.0" verbose="false" saveReplicationData="false"/>
+</SimkitAssembly>
diff --git a/examples/src/ViskitOpenDis7Examples/Assemblies/dis7/SimpleServerDis7Assembly.xml b/examples/src/ViskitOpenDis7Examples/Assemblies/dis7/SimpleServerDis7Assembly.xml
new file mode 100644
index 0000000000000000000000000000000000000000..11d6ab585dab9323bd35b9aad841dd336e49d286
--- /dev/null
+++ b/examples/src/ViskitOpenDis7Examples/Assemblies/dis7/SimpleServerDis7Assembly.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<SimkitAssembly name="SimpleServerDis7Assembly" version="1.0" package="dis7" xsi:noNamespaceSchemaLocation="http://diana.nps.edu/Simkit/assembly.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <SimEntity name="arrivalProcessOpenDis7" type="SimkitOpenDis7Examples.ArrivalProcessOpenDis7" description="">
+        <FactoryParameter factory="simkit.random.RandomVariateFactory" type="simkit.random.RandomVariate">
+            <TerminalParameter name="" value="Uniform" type="String"/>
+            <TerminalParameter name="" value="0.9, 2.2" type="Object..."/>
+        </FactoryParameter>
+        <Coordinate x="90.0" y="200.0"/>
+    </SimEntity>
+    <SimEntity name="simpleServer" type="SimkitOpenDis7Examples.SimpleServer" description="">
+        <TerminalParameter name="p[0] : " value="1" type="int"/>
+        <FactoryParameter factory="simkit.random.RandomVariateFactory" type="simkit.random.RandomVariate">
+            <TerminalParameter name="" value="Gamma" type="String"/>
+            <TerminalParameter name="" value="1.7, 1.8" type="Object..."/>
+        </FactoryParameter>
+        <Coordinate x="310.0" y="200.0"/>
+    </SimEntity>
+    <PropertyChangeListener name="numInQueueStat" type="simkit.stat.SimpleStatsTimeVarying" mode="replicationStat" meanStatistics="true" countStatistics="false" description="">
+        <TerminalParameter name="p[0] : " value="numberInQueue" type="java.lang.String"/>
+        <Coordinate x="310.0" y="80.0"/>
+    </PropertyChangeListener>
+    <PropertyChangeListener name="numAvailServersStat" type="simkit.stat.SimpleStatsTimeVarying" mode="replicationStat" meanStatistics="true" countStatistics="false" description="">
+        <TerminalParameter name="p[0] : " value="numberAvailableServers" type="java.lang.String"/>
+        <Coordinate x="510.0" y="200.0"/>
+    </PropertyChangeListener>
+    <PropertyChangeListener name="numArrivalsStat" type="simkit.stat.SimpleStatsTimeVarying" mode="replicationStat" meanStatistics="false" countStatistics="true" description="">
+        <TerminalParameter name="p[0] : " value="numberArrivals" type="java.lang.String"/>
+        <Coordinate x="90.0" y="80.0"/>
+    </PropertyChangeListener>
+    <PropertyChangeListener name="numServedStat" type="simkit.stat.SimpleStatsTimeVarying" mode="replicationStat" meanStatistics="false" countStatistics="true" description="">
+        <TerminalParameter name="p[0] : " value="numberServed" type="java.lang.String"/>
+        <Coordinate x="310.0" y="350.0"/>
+    </PropertyChangeListener>
+    <SimEventListenerConnection listener="simpleServer" source="arrivalProcessOpenDis7"/>
+    <PropertyChangeListenerConnection property="numberInQueue" listener="numInQueueStat" source="simpleServer" description=""/>
+    <PropertyChangeListenerConnection property="numberAvailableServers" listener="numAvailServersStat" source="simpleServer" description=""/>
+    <PropertyChangeListenerConnection property="numberArrivals" listener="numArrivalsStat" source="arrivalProcessOpenDis7" description=""/>
+    <PropertyChangeListenerConnection property="numberServed" listener="numServedStat" source="simpleServer" description=""/>
+    <Schedule stopTime="100000.0" verbose="false" saveReplicationData="false"/>
+</SimkitAssembly>
diff --git a/examples/src/ViskitOpenDis7Examples/EventGraphs/dis7/ArrivalProcessOpenDis7.xml b/examples/src/ViskitOpenDis7Examples/EventGraphs/dis7/ArrivalProcessOpenDis7.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f1dd2c6371c7520450a510b6427c2eeb0fb4754d
--- /dev/null
+++ b/examples/src/ViskitOpenDis7Examples/EventGraphs/dis7/ArrivalProcessOpenDis7.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<SimEntity name="ArrivalProcessOpenDis7" package="dis7" version="1.0" author="terry" extend="SimkitOpenDis7Examples.run.OpenDisHelper" xsi:noNamespaceSchemaLocation="http://diana.nps.edu/Simkit/simkit.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <Parameter name="address" type="java.lang.String">
+        <Comment>An other than default network address</Comment>
+    </Parameter>
+    <Parameter name="port" type="int">
+        <Comment>An other than default network port</Comment>
+    </Parameter>
+    <Parameter name="tA" type="simkit.random.RandomVariate">
+        <Comment>Inter arrival time</Comment>
+    </Parameter>
+    <StateVariable name="N" type="int">
+        <Comment>Number of arrivals</Comment>
+    </StateVariable>
+    <StateVariable name="C" type="int">
+        <Comment>Number of entity creations</Comment>
+    </StateVariable>
+    <StateVariable name="R" type="int">
+        <Comment>Number of entity removals</Comment>
+    </StateVariable>
+    <Event name="Run" description="This event is fired first to facilitate initialization of all simulation state variables">
+        <Comment>Initialize all state variables</Comment>
+        <StateTransition state="N">
+            <Assignment value="0"/>
+        </StateTransition>
+        <StateTransition state="C">
+            <Assignment value="1"/>
+        </StateTransition>
+        <StateTransition state="R">
+            <Assignment value="0"/>
+        </StateTransition>
+        <Schedule delay="tA.generate()" event="Arrival" priority="DEFAULT"/>
+        <Code></Code>
+        <Coordinate x="50.0" y="70.0"/>
+    </Event>
+    <Event name="Arrival">
+        <Comment>Tallys the number of arrivals and schedules future arrival events with time tA</Comment>
+        <StateTransition state="N">
+            <Assignment value="N + 1"/>
+        </StateTransition>
+        <Schedule delay="tA.generate()" event="Arrival" priority="DEFAULT"/>
+        <Code>int everyTen = 10;
+int oldC = C;
+int oldR = R;
+
+if ((N % everyTen) == 0) {
+    disChannel.removeEntity(entityStatePdu_1.getEntityID());
+    firePropertyChange("R", oldR, R+1);
+} else {
+    disChannel.addEntity(entityStatePdu_1.getEntityID());
+    firePropertyChange("C", oldC, C+1);
+}</Code>
+        <Coordinate x="260.0" y="70.0"/>
+    </Event>
+    <Code></Code>
+</SimEntity>
diff --git a/examples/src/ViskitOpenDis7Examples/lib/Networked_Graphics_MV3500_examples.jar b/examples/src/ViskitOpenDis7Examples/lib/Networked_Graphics_MV3500_examples.jar
new file mode 100644
index 0000000000000000000000000000000000000000..7ffc4917b118a3632a2ef8027fe50ce46c2e2643
Binary files /dev/null and b/examples/src/ViskitOpenDis7Examples/lib/Networked_Graphics_MV3500_examples.jar differ
diff --git a/examples/src/ViskitOpenDis7Examples/lib/lib/opendis7-full.jar b/examples/src/ViskitOpenDis7Examples/lib/lib/opendis7-full.jar
new file mode 100644
index 0000000000000000000000000000000000000000..0d5629a38595219b3345bea05b37cee2a2d8a11c
Binary files /dev/null and b/examples/src/ViskitOpenDis7Examples/lib/lib/opendis7-full.jar differ
diff --git a/examples/src/ViskitOpenDis7Examples/lib/lib/simkit.jar b/examples/src/ViskitOpenDis7Examples/lib/lib/simkit.jar
new file mode 100644
index 0000000000000000000000000000000000000000..ce53b684b70217098f6f012e53d95d8d5199619c
Binary files /dev/null and b/examples/src/ViskitOpenDis7Examples/lib/lib/simkit.jar differ
diff --git a/examples/src/ViskitOpenDis7Examples/viskitProject.xml b/examples/src/ViskitOpenDis7Examples/viskitProject.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1d20dbac80274c45b7e83d70c0852ed95ea99f27
--- /dev/null
+++ b/examples/src/ViskitOpenDis7Examples/viskitProject.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ViskitProject name="ViskitOpenDis7Examples">
+  <AnalystReports name="AnalystReports" />
+  <AssembliesDirectory name="Assemblies" />
+  <EventGraphsDirectory name="EventGraphs" />
+  <BuildDirectory name="build">
+    <ClassesDirectory name="classes" />
+    <SourceDirectory name="src" />
+  </BuildDirectory>
+  <DistDirectory name="dist" />
+  <LibDirectory name="lib" />
+  <Cached></Cached>
+  <extraClassPaths>
+  </extraClassPaths>
+</ViskitProject>
+
diff --git a/viskit/MyViskitProjects/DefaultProject/Assemblies/examples/ArrayTesterAssembly.xml b/viskit/MyViskitProjects/DefaultProject/Assemblies/examples/ArrayTesterAssembly.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fee1f6a97e0903f48d1a20878422d262c4a0a256
--- /dev/null
+++ b/viskit/MyViskitProjects/DefaultProject/Assemblies/examples/ArrayTesterAssembly.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<SimkitAssembly name="ArrayTestAssembly" version="1.0" package="examples" xsi:noNamespaceSchemaLocation="http://diana.nps.edu/Simkit/assembly.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <SimEntity name="ArrayTester_3" type="examples.ArrayTester" description="">
+        <MultiParameter type="int[]">
+            <TerminalParameter name="" value="17" type="int"/>
+            <TerminalParameter name="" value="52" type="int"/>
+        </MultiParameter>
+        <Coordinate x="170.0" y="60.0"/>
+    </SimEntity>
+    <PropertyChangeListener name="SimplePropertyDumper_4" type="simkit.util.SimplePropertyDumper" meanStatistics="false" countStatistics="true" description="">
+        <Coordinate x="170.0" y="200.0"/>
+    </PropertyChangeListener>
+    <PropertyChangeListenerConnection listener="SimplePropertyDumper_4" source="ArrayTester_3"/>
+    <Output entity="ArrayTester_3"/>
+    <Schedule stopTime="100." verbose="false"/>
+    <Experiment replicationsPerDesignPoint="1" totalSamples="1" timeout="5000"/>
+</SimkitAssembly>
diff --git a/viskit/MyViskitProjects/DefaultProject/Assemblies/examples/InventoryModelAssembly.xml b/viskit/MyViskitProjects/DefaultProject/Assemblies/examples/InventoryModelAssembly.xml
new file mode 100644
index 0000000000000000000000000000000000000000..254b649cb5f5936ef1787c71590616146bc3b71c
--- /dev/null
+++ b/viskit/MyViskitProjects/DefaultProject/Assemblies/examples/InventoryModelAssembly.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<SimkitAssembly name="InventoryModelAssembly" version="1.0" package="examples" xsi:noNamespaceSchemaLocation="http://diana.nps.edu/Simkit/assembly.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <SimEntity name="arrivalProcess_0" type="examples.ArrivalProcess" description="">
+        <FactoryParameter factory="simkit.random.RandomVariateFactory" type="simkit.random.RandomVariate">
+            <TerminalParameter name="" value="Uniform" type="String"/>
+            <TerminalParameter name="" value="0.9, 2.2" type="Object..."/>
+        </FactoryParameter>
+        <Coordinate x="100.0" y="200.0"/>
+    </SimEntity>
+    <SimEntity name="inventoryModel_1" type="examples.InventoryModel" description="">
+        <FactoryParameter factory="simkit.random.RandomVariateFactory" type="simkit.random.RandomVariate">
+            <TerminalParameter name="" value="DiscreteInteger" type="String"/>
+            <TerminalParameter name="" value="new int[] {1, 2, 3, 4}, new double[] {40, 30, 20, 10}" type="Object..."/>
+        </FactoryParameter>
+        <FactoryParameter factory="simkit.random.RandomVariateFactory" type="simkit.random.RandomVariate">
+            <TerminalParameter name="" value="Gamma" type="String"/>
+            <TerminalParameter name="" value="1.7, 1.8" type="Object..."/>
+        </FactoryParameter>
+        <FactoryParameter factory="simkit.random.RandomVariateFactory" type="simkit.random.RandomVariate">
+            <TerminalParameter name="" value="Constant" type="String"/>
+            <TerminalParameter name="" value="1.8" type="java.lang.Object"/>
+        </FactoryParameter>
+        <TerminalParameter name="I0" value="15" type="int"/>
+        <TerminalParameter name="bigS" value="10" type="int"/>
+        <TerminalParameter name="littleS" value="5" type="int"/>
+        <Coordinate x="410.0" y="200.0"/>
+    </SimEntity>
+    <PropertyChangeListener name="numArrivalsStat" type="simkit.stat.SimpleStatsTimeVarying" mode="replicationStat" meanStatistics="false" countStatistics="true" description="">
+        <TerminalParameter name="p[0] : " value="numberArrivals" type="java.lang.String"/>
+        <Coordinate x="100.0" y="310.0"/>
+    </PropertyChangeListener>
+    <PropertyChangeListener name="demandStat" type="simkit.stat.SimpleStatsTally" mode="replicationStat" meanStatistics="true" countStatistics="false" description="">
+        <TerminalParameter name="p[0] : " value="demand" type="java.lang.String"/>
+        <Coordinate x="410.0" y="90.0"/>
+    </PropertyChangeListener>
+    <PropertyChangeListener name="inventoryOnHandStat" type="simkit.stat.SimpleStatsTimeVarying" mode="replicationStat" meanStatistics="true" countStatistics="false" description="">
+        <TerminalParameter name="p[0] : " value="I" type="java.lang.String"/>
+        <Coordinate x="290.0" y="90.0"/>
+    </PropertyChangeListener>
+    <PropertyChangeListener name="inventoryOnBackOrderStat" type="simkit.stat.SimpleStatsTimeVarying" mode="replicationStat" meanStatistics="true" countStatistics="false" description="">
+        <TerminalParameter name="p[0] : " value="B" type="java.lang.String"/>
+        <Coordinate x="540.0" y="90.0"/>
+    </PropertyChangeListener>
+    <PropertyChangeListener name="inventoryOnOrderStat" type="simkit.stat.SimpleStatsTimeVarying" mode="replicationStat" meanStatistics="true" countStatistics="false" description="">
+        <TerminalParameter name="p[0] : " value="T" type="java.lang.String"/>
+        <Coordinate x="610.0" y="200.0"/>
+    </PropertyChangeListener>
+    <PropertyChangeListener name="immedServedCustStat" type="simkit.stat.SimpleStatsTally" mode="replicationStat" meanStatistics="false" countStatistics="true" description="">
+        <TerminalParameter name="p[0] : " value="immediatelyServedCustomers" type="java.lang.String"/>
+        <Coordinate x="410.0" y="330.0"/>
+    </PropertyChangeListener>
+    <SimEventListenerConnection listener="inventoryModel_1" source="arrivalProcess_0"/>
+    <PropertyChangeListenerConnection property="numberArrivals" listener="numArrivalsStat" source="arrivalProcess_0" description=""/>
+    <PropertyChangeListenerConnection property="demand" listener="demandStat" source="inventoryModel_1" description=""/>
+    <PropertyChangeListenerConnection property="I" listener="inventoryOnHandStat" source="inventoryModel_1" description=""/>
+    <PropertyChangeListenerConnection property="B" listener="inventoryOnBackOrderStat" source="inventoryModel_1" description=""/>
+    <PropertyChangeListenerConnection property="T" listener="inventoryOnOrderStat" source="inventoryModel_1" description=""/>
+    <PropertyChangeListenerConnection property="immediatelyServedCustomers" listener="immedServedCustStat" source="inventoryModel_1" description=""/>
+    <Schedule stopTime="100000.0" verbose="false" saveReplicationData="false"/>
+</SimkitAssembly>
diff --git a/viskit/MyViskitProjects/DefaultProject/Assemblies/examples/ServerAssembly3.xml b/viskit/MyViskitProjects/DefaultProject/Assemblies/examples/ServerAssembly3.xml
new file mode 100644
index 0000000000000000000000000000000000000000..884e95456cfcadc36be677b62b560665601cd620
--- /dev/null
+++ b/viskit/MyViskitProjects/DefaultProject/Assemblies/examples/ServerAssembly3.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<SimkitAssembly name="ServerAssembly3" version="1.0" package="examples" xsi:noNamespaceSchemaLocation="http://diana.nps.edu/Simkit/assembly.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <SimEntity name="arrival" type="examples.ArrivalProcess" description="">
+        <FactoryParameter factory="simkit.random.RandomVariateFactory" type="simkit.random.RandomVariate">
+            <TerminalParameter name="" value="Exponential" type="java.lang.String"/>
+            <TerminalParameter name="" value="1.7" type="double"/>
+        </FactoryParameter>
+        <Coordinate x="90.0" y="90.0"/>
+    </SimEntity>
+    <SimEntity name="server" type="examples.SimpleServer" description="">
+        <FactoryParameter factory="simkit.random.RandomVariateFactory" type="simkit.random.RandomVariate">
+            <TerminalParameter name="" value="Gamma" type="java.lang.String"/>
+            <TerminalParameter name="" value="2.1" type="double"/>
+            <TerminalParameter name="" value="1.6" type="double"/>
+        </FactoryParameter>
+        <TerminalParameter name="totalNumberServers" value="2" type="int"/>
+        <Coordinate x="280.0" y="90.0"/>
+    </SimEntity>
+    <PropertyChangeListener name="numInQueueStat" type="simkit.stat.SimpleStatsTimeVarying" mode="replicationStat" meanStatistics="false" countStatistics="true">
+        <TerminalParameter name="p[0] : " value="numberInQueue" type="java.lang.String"/>
+        <Coordinate x="210.0" y="230.0"/>
+    </PropertyChangeListener>
+    <PropertyChangeListener name="numAvailServersStat" type="simkit.stat.SimpleStatsTimeVarying" mode="replicationStat" meanStatistics="false" countStatistics="true">
+        <TerminalParameter name="p[0] : " value="numberAvailableServers" type="java.lang.String"/>
+        <Coordinate x="350.0" y="230.0"/>
+    </PropertyChangeListener>
+    <PropertyChangeListener name="simplePropertyDumper" type="simkit.util.SimplePropertyDumper" meanStatistics="false" countStatistics="true">
+        <Coordinate x="280.0" y="290.0"/>
+    </PropertyChangeListener>
+    <PropertyChangeListenerConnection property="numberInQueue" listener="numInQueueStat" source="server" description=""/>
+    <PropertyChangeListenerConnection property="numberAvailableServers" listener="numAvailServersStat" source="server" description=""/>
+    <PropertyChangeListenerConnection listener="simplePropertyDumper" source="server"/>
+    <Adapter name="adptr_3" eventHeard="Arrival" eventSent="Arrival" from="arrival" to="server"/>
+    <Output entity="arrival"/>
+    <Output entity="server"/>
+    <Schedule stopTime="1000.0" verbose="false"/>
+    <Experiment replicationsPerDesignPoint="2" totalSamples="5" timeout="5000"/>
+</SimkitAssembly>
diff --git a/viskit/MyViskitProjects/DefaultProject/Assemblies/examples/ServerWithRenegesAssembly.xml b/viskit/MyViskitProjects/DefaultProject/Assemblies/examples/ServerWithRenegesAssembly.xml
new file mode 100644
index 0000000000000000000000000000000000000000..86c3d313ed90b5f9b80452f42aff7283c0d93369
--- /dev/null
+++ b/viskit/MyViskitProjects/DefaultProject/Assemblies/examples/ServerWithRenegesAssembly.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<SimkitAssembly name="ServerWithRenegesAssembly" version="1.0" package="examples" description="TODO add description" xsi:noNamespaceSchemaLocation="http://diana.nps.edu/Simkit/assembly.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <SimEntity name="arrivalProcess" type="examples.ArrivalProcess">
+        <FactoryParameter factory="simkit.random.RandomVariateFactory" type="simkit.random.RandomVariate">
+            <TerminalParameter name="" value="Exponential" type="java.lang.String"/>
+            <TerminalParameter name="" value="1.5" type="double"/>
+        </FactoryParameter>
+        <Coordinate x="40.0" y="140.0"/>
+    </SimEntity>
+    <SimEntity name="creator" type="examples.Creator">
+        <Coordinate x="190.0" y="140.0"/>
+    </SimEntity>
+    <SimEntity name="serverWithReneges" type="examples.ServerWithReneges">
+        <TerminalParameter name="numberServers" value="2" type="int"/>
+        <FactoryParameter factory="simkit.random.RandomVariateFactory" type="simkit.random.RandomVariate">
+            <TerminalParameter name="" value="Gamma" type="java.lang.String"/>
+            <TerminalParameter name="" value="2.5" type="double"/>
+            <TerminalParameter name="" value="1.2" type="double"/>
+        </FactoryParameter>
+        <FactoryParameter factory="simkit.random.RandomVariateFactory" type="simkit.random.RandomVariate">
+            <TerminalParameter name="" value="Uniform" type="java.lang.String"/>
+            <TerminalParameter name="" value="4" type="int"/>
+            <TerminalParameter name="" value="6" type="int"/>
+        </FactoryParameter>
+        <Coordinate x="350.0" y="140.0"/>
+    </SimEntity>
+    <PropertyChangeListener name="numberInQueueStat" type="simkit.stat.CollectionSizeTimeVaryingStats" mode="replicationStat" meanStatistics="false" countStatistics="true">
+        <TerminalParameter name="p[0] : " value="queue" type="java.lang.String"/>
+        <Coordinate x="560.0" y="60.0"/>
+    </PropertyChangeListener>
+    <PropertyChangeListener name="numberAvailableServersStat" type="simkit.stat.SimpleStatsTally" mode="replicationStat" meanStatistics="false" countStatistics="true">
+        <TerminalParameter name="p[0] : " value="numberAvailableServers" type="java.lang.String"/>
+        <Coordinate x="350.0" y="290.0"/>
+    </PropertyChangeListener>
+    <PropertyChangeListener name="numberServedStat" type="simkit.stat.SimpleStatsTimeVarying" mode="replicationStat" meanStatistics="false" countStatistics="true">
+        <TerminalParameter name="p[0] : " value="numberServed" type="java.lang.String"/>
+        <Coordinate x="350.0" y="20.0"/>
+    </PropertyChangeListener>
+    <PropertyChangeListener name="numberRenegesStat" type="simkit.stat.SimpleStatsTimeVarying" mode="replicationStat" meanStatistics="false" countStatistics="true">
+        <TerminalParameter name="p[0] : " value="numberReneges" type="java.lang.String"/>
+        <Coordinate x="560.0" y="140.0"/>
+    </PropertyChangeListener>
+    <PropertyChangeListener name="numberArrivalsStat" type="simkit.stat.SimpleStatsTimeVarying" mode="replicationStat" meanStatistics="false" countStatistics="true">
+        <TerminalParameter name="p[0] : " value="numberArrivals" type="java.lang.String"/>
+        <Coordinate x="40.0" y="260.0"/>
+    </PropertyChangeListener>
+    <SimEventListenerConnection listener="creator" source="arrivalProcess"/>
+    <PropertyChangeListenerConnection property="queue" listener="numberInQueueStat" source="serverWithReneges"/>
+    <PropertyChangeListenerConnection property="numberAvailableServers" listener="numberAvailableServersStat" source="serverWithReneges"/>
+    <PropertyChangeListenerConnection property="numberServed" listener="numberServedStat" source="serverWithReneges"/>
+    <PropertyChangeListenerConnection property="numberReneges" listener="numberRenegesStat" source="serverWithReneges"/>
+    <PropertyChangeListenerConnection property="numberArrivals" listener="numberArrivalsStat" source="arrivalProcess"/>
+    <Adapter name="adptr_3" eventHeard="CustomerArrival" eventSent="Arrival" from="creator" to="serverWithReneges"/>
+    <Output entity="creator"/>
+    <Output entity="arrivalProcess"/>
+    <Output entity="serverWithReneges"/>
+    <Schedule stopTime="100.0" verbose="false"/>
+    <Experiment replicationsPerDesignPoint="1" totalSamples="1" timeout="5000"/>
+</SimkitAssembly>
diff --git a/viskit/MyViskitProjects/DefaultProject/Assemblies/examples/TestServerGenericAssembly.xml b/viskit/MyViskitProjects/DefaultProject/Assemblies/examples/TestServerGenericAssembly.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d5963727fcd03a464c3303e9fd23d81e0cdbccbe
--- /dev/null
+++ b/viskit/MyViskitProjects/DefaultProject/Assemblies/examples/TestServerGenericAssembly.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<SimkitAssembly name="TestServerGenericAssembly" version="$Id: TestServerGenericAssembly.xml 1590 2007-10-07 05:41:19Z tdnorbra $" package="examples" xsi:noNamespaceSchemaLocation="http://diana.nps.edu/Simkit/assembly.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <SimEntity name="ServerGeneric_0" type="examples.ServerGeneric" description="">
+        <TerminalParameter name="totalNumberServers" value="1" type="int"/>
+        <FactoryParameter factory="simkit.random.RandomVariateFactory" type="simkit.random.RandomVariate">
+            <TerminalParameter name="" value="Constant" type="java.lang.String"/>
+            <TerminalParameter name="" value="1.1" type="double"/>
+        </FactoryParameter>
+        <Coordinate x="390.0" y="200.0"/>
+    </SimEntity>
+    <SimEntity name="ArrivalProcess_1" type="examples.ArrivalProcess" description="">
+        <FactoryParameter factory="simkit.random.RandomVariateFactory" type="simkit.random.RandomVariate">
+            <TerminalParameter name="" value="Exponential" type="java.lang.String"/>
+            <TerminalParameter name="" value="1.2" type="double"/>
+        </FactoryParameter>
+        <Coordinate x="140.0" y="200.0"/>
+    </SimEntity>
+    <SimEntity name="EntityCreator_2" type="examples.EntityCreator" description="">
+        <Coordinate x="260.0" y="200.0"/>
+    </SimEntity>
+    <SimEventListenerConnection listener="EntityCreator_2" source="ArrivalProcess_1"/>
+    <Adapter name="adptr_3" eventHeard="EntityArrival" eventSent="Arrival" from="EntityCreator_2" to="ServerGeneric_0" description=""/>
+    <Schedule stopTime="100." verbose="false"/>
+    <Experiment replicationsPerDesignPoint="1" totalSamples="1" timeout="5000"/>
+</SimkitAssembly>
diff --git a/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/ArrayTester.xml b/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/ArrayTester.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3ca1313d465bf411ace53c18d3106941c1d36e77
--- /dev/null
+++ b/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/ArrayTester.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<SimEntity name="ArrayTester" package="examples" version="1.0" author="Terry D. Norbraten" extend="SimEntityBase" xsi:noNamespaceSchemaLocation="http://diana.nps.edu/Simkit/simkit.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <Comment>Test Viskit's capability to create primative type arrays</Comment>
+    <Parameter name="param_0" type="int[]">
+        <Comment></Comment>
+    </Parameter>
+    <StateVariable name="state_0" type="int[param_0.length]">
+        <Comment></Comment>
+    </StateVariable>
+    <Event name="Run">
+        <Schedule delay="0.0" event="Init" condition="true" priority="DEFAULT">
+            <Comment></Comment>
+            <EdgeParameter value="0"/>
+        </Schedule>
+        <Code></Code>
+        <Coordinate x="30.0" y="30.0"/>
+    </Event>
+    <Event name="Init">
+        <Comment></Comment>
+        <Argument name="i" type="int"/>
+        <StateTransition state="state_0" index="i">
+            <Assignment value="param_0[i]"/>
+        </StateTransition>
+        <Schedule delay="0.0" event="Init" condition="i &lt; (param_0.length - 1)" priority="DEFAULT">
+            <Comment></Comment>
+            <EdgeParameter value="i + 1"/>
+        </Schedule>
+        <Code></Code>
+        <Coordinate x="180.0" y="30.0"/>
+    </Event>
+</SimEntity>
diff --git a/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/ArrivalProcess.xml b/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/ArrivalProcess.xml
new file mode 100644
index 0000000000000000000000000000000000000000..27e8746bd636057dc97bc03657b525685c1c2690
--- /dev/null
+++ b/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/ArrivalProcess.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<SimEntity name="ArrivalProcess" package="examples" version="0.1" extend="SimEntityBase" xsi:noNamespaceSchemaLocation="http://diana.nps.edu/Simkit/simkit.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <Parameter name="interarrivalTime" type="simkit.random.RandomVariate"/>
+    <StateVariable name="numberArrivals" type="int"/>
+    <Event name="Run">
+        <StateTransition state="numberArrivals">
+            <Assignment value="0"/>
+        </StateTransition>
+        <Schedule delay="interarrivalTime.generate()" event="Arrival" priority="DEFAULT"/>
+        <Coordinate x="50.0" y="70.0"/>
+    </Event>
+    <Event name="Arrival">
+        <StateTransition state="numberArrivals">
+            <Assignment value="numberArrivals + 1"/>
+        </StateTransition>
+        <Schedule delay="interarrivalTime.generate()" event="Arrival" priority="DEFAULT"/>
+        <Coordinate x="260.0" y="70.0"/>
+    </Event>
+</SimEntity>
diff --git a/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/Creator.xml b/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/Creator.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0a940122b176fc5f1f8c949de121028e2570812a
--- /dev/null
+++ b/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/Creator.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<SimEntity name="Creator" package="examples" version="1.0" author="ahbuss" extend="SimEntityBase" xsi:noNamespaceSchemaLocation="http://diana.nps.edu/Simkit/simkit.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <StateVariable name="nextID" type="int">
+        <Comment></Comment>
+    </StateVariable>
+    <Event name="Arrival">
+        <Comment></Comment>
+        <StateTransition state="nextID">
+            <Assignment value="nextID+1"/>
+        </StateTransition>
+        <Schedule delay="0.0" event="CustomerArrival" condition="true" priority="DEFAULT">
+            <Comment></Comment>
+            <EdgeParameter value="nextID"/>
+        </Schedule>
+        <Code></Code>
+        <Coordinate x="30.0" y="120.0"/>
+    </Event>
+    <Event name="CustomerArrival">
+        <Comment></Comment>
+        <Argument name="customer" type="Integer"/>
+        <Code></Code>
+        <Coordinate x="190.0" y="120.0"/>
+    </Event>
+    <Event name="Run">
+        <Comment></Comment>
+        <StateTransition state="nextID">
+            <Assignment value="0"/>
+        </StateTransition>
+        <Code></Code>
+        <Coordinate x="30.0" y="10.0"/>
+    </Event>
+</SimEntity>
diff --git a/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/EntityCreator.xml b/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/EntityCreator.xml
new file mode 100644
index 0000000000000000000000000000000000000000..10b34d4a8c1312808ac0be510904c31db7b7a8a8
--- /dev/null
+++ b/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/EntityCreator.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<SimEntity name="EntityCreator" package="examples" version="$Id: EntityCreator.xml 1590 2007-10-07 05:41:19Z tdnorbra $" author="ahbuss" extend="SimEntityBase" xsi:noNamespaceSchemaLocation="http://diana.nps.edu/Simkit/simkit.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <Event name="Arrival">
+        <Comment></Comment>
+        <Schedule delay="0.0" event="EntityArrival" condition="true" priority="DEFAULT">
+            <Comment></Comment>
+            <EdgeParameter value="new simkit.Entity()"/>
+        </Schedule>
+        <Code></Code>
+        <Coordinate x="20.0" y="190.0"/>
+    </Event>
+    <Event name="EntityArrival">
+        <Comment></Comment>
+        <Argument name="customer" type="simkit.Entity"/>
+        <Code></Code>
+        <Coordinate x="120.0" y="190.0"/>
+    </Event>
+</SimEntity>
diff --git a/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/InventoryModel.xml b/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/InventoryModel.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9c83194ad7f48005630d888903860d1098b36123
--- /dev/null
+++ b/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/InventoryModel.xml
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<SimEntity name="InventoryModel" package="examples" version="1.0" author="terry" extend="SimEntityBase" xsi:noNamespaceSchemaLocation="http://diana.nps.edu/Simkit/simkit.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <Comment>Implementation of an Event Graph for an Inventory Model employing an (s, S) ordering policy depicted on page 4-6 of the Discrete Event Simulation (DES) Modeling guide by Arnie Buss.</Comment>
+    <Parameter name="D" type="simkit.random.RandomVariate">
+        <Comment>Number of Parts demanded by a customer</Comment>
+    </Parameter>
+    <Parameter name="tL" type="simkit.random.RandomVariate">
+        <Comment>Lead time for orders received by the company</Comment>
+    </Parameter>
+    <Parameter name="tR" type="simkit.random.RandomVariate">
+        <Comment>Deterministic time between company reviews</Comment>
+    </Parameter>
+    <Parameter name="I0" type="int">
+        <Comment>Initial inventory of Parts</Comment>
+    </Parameter>
+    <Parameter name="bigS" type="int">
+        <Comment>Order up to amount (S)</Comment>
+    </Parameter>
+    <Parameter name="littleS" type="int">
+        <Comment>Order trigger amount (s)</Comment>
+    </Parameter>
+    <StateVariable name="I" type="int">
+        <Comment>Amount of Parts on hand</Comment>
+    </StateVariable>
+    <StateVariable name="B" type="int">
+        <Comment>Amount of Parts on backorder</Comment>
+    </StateVariable>
+    <StateVariable name="T" type="int">
+        <Comment>Total amount of Parts on order</Comment>
+    </StateVariable>
+    <StateVariable name="N" type="int">
+        <Comment>Number of Parts ordered</Comment>
+    </StateVariable>
+    <StateVariable name="NO" type="int">
+        <Comment>Number of orders placed</Comment>
+    </StateVariable>
+    <StateVariable name="immediatelyServedCustomers" type="int">
+        <Comment>Customers immediately served</Comment>
+    </StateVariable>
+    <Event name="Run" description="This event is fired first to facilitate initialization of all simulation state variables">
+        <Comment></Comment>
+        <StateTransition state="I">
+            <Assignment value="I0"/>
+        </StateTransition>
+        <StateTransition state="B">
+            <Assignment value="0"/>
+        </StateTransition>
+        <StateTransition state="T">
+            <Assignment value="0"/>
+        </StateTransition>
+        <StateTransition state="N">
+            <Assignment value="0"/>
+        </StateTransition>
+        <StateTransition state="NO">
+            <Assignment value="0"/>
+        </StateTransition>
+        <StateTransition state="immediatelyServedCustomers">
+            <Assignment value="0"/>
+        </StateTransition>
+        <Schedule delay="tR.generate()" event="Review" priority="DEFAULT">
+            <Comment></Comment>
+        </Schedule>
+        <Code></Code>
+        <Coordinate x="40.0" y="200.0"/>
+    </Event>
+    <Event name="Arrival">
+        <Comment>Feeder event for schedulling the Demand event via Arrivals from the Arrival Process</Comment>
+        <Schedule delay="0.0" event="Demand" priority="DEFAULT">
+            <Comment>Passing along tA</Comment>
+        </Schedule>
+        <Code></Code>
+        <Coordinate x="40.0" y="100.0"/>
+    </Event>
+    <Event name="Demand">
+        <Comment></Comment>
+        <LocalVariable name="demand" type="int" value="((DiscreteRandomVariate) D).generateInt()">
+            <Comment></Comment>
+        </LocalVariable>
+        <LocalVariable name="net" type="int" value="I-B-demand">
+            <Comment></Comment>
+        </LocalVariable>
+        <StateTransition state="I">
+            <Assignment value="Math.max(0, net)"/>
+        </StateTransition>
+        <StateTransition state="B">
+            <Assignment value="Math.max(0, -net)"/>
+        </StateTransition>
+        <Code>firePropertyChange("demand", demand);
+
+if (net &gt;= 0) {
+   int oldImmediatelyServedCustomers = immediatelyServedCustomers;
+   immediatelyServedCustomers += 1;
+   firePropertyChange("immediatelyServedCustomers", oldImmediatelyServedCustomers, immediatelyServedCustomers);
+}</Code>
+        <Coordinate x="150.0" y="100.0"/>
+    </Event>
+    <Event name="Review">
+        <Comment></Comment>
+        <Schedule delay="0.0" event="PlaceOrder" condition="(I-B+T) &lt; littleS" priority="DEFAULT">
+            <Comment></Comment>
+            <EdgeParameter value="bigS - I + B - T"/>
+        </Schedule>
+        <Schedule delay="tR.generate()" event="Review" priority="DEFAULT">
+            <Comment></Comment>
+        </Schedule>
+        <Code></Code>
+        <Coordinate x="140.0" y="290.0"/>
+    </Event>
+    <Event name="PlaceOrder">
+        <Comment></Comment>
+        <Argument name="A" type="int"/>
+        <StateTransition state="T">
+            <Assignment value="T+A"/>
+        </StateTransition>
+        <StateTransition state="N">
+            <Assignment value="N+A"/>
+        </StateTransition>
+        <StateTransition state="NO">
+            <Assignment value="NO + 1"/>
+        </StateTransition>
+        <Schedule delay="tL.generate()" event="OrderArrives" priority="DEFAULT">
+            <Comment></Comment>
+            <EdgeParameter value="A"/>
+        </Schedule>
+        <Code></Code>
+        <Coordinate x="280.0" y="300.0"/>
+    </Event>
+    <Event name="OrderArrives">
+        <Comment></Comment>
+        <Argument name="A" type="int"/>
+        <LocalVariable name="net" type="int" value="I - B + A">
+            <Comment></Comment>
+        </LocalVariable>
+        <StateTransition state="T">
+            <Assignment value="T - A"/>
+        </StateTransition>
+        <StateTransition state="I">
+            <Assignment value="Math.max(0, net)"/>
+        </StateTransition>
+        <StateTransition state="B">
+            <Assignment value="Math.max(0, -net)"/>
+        </StateTransition>
+        <Code></Code>
+        <Coordinate x="400.0" y="300.0"/>
+    </Event>
+</SimEntity>
diff --git a/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/ServerGeneric.xml b/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/ServerGeneric.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4023aa63f60e12d7ec40e00d7ea0d1d064b6af8f
--- /dev/null
+++ b/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/ServerGeneric.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<SimEntity name="ServerGeneric" package="examples" version="$Id: ServerGeneric.xml 1590 2007-10-07 05:41:19Z tdnorbra $" author="ahbuss" extend="SimEntityBase" xsi:noNamespaceSchemaLocation="http://diana.nps.edu/Simkit/simkit.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <Parameter name="totalNumberServers" type="int">
+        <Comment></Comment>
+    </Parameter>
+    <Parameter name="serviceTimeGenerator" type="simkit.random.RandomVariate">
+        <Comment></Comment>
+    </Parameter>
+    <StateVariable name="numberAvailableServers" type="int">
+        <Comment></Comment>
+    </StateVariable>
+    <StateVariable name="queue" type="java.util.LinkedList&lt;simkit.Entity&gt;">
+        <Comment></Comment>
+    </StateVariable>
+    <StateVariable name="delayInQueue" type="double">
+        <Comment></Comment>
+    </StateVariable>
+    <StateVariable name="timeInSystem" type="double">
+        <Comment></Comment>
+    </StateVariable>
+    <Event name="Run">
+        <Comment></Comment>
+        <StateTransition state="numberAvailableServers">
+            <Assignment value="totalNumberServers"/>
+        </StateTransition>
+        <StateTransition state="queue">
+            <Assignment value="new java.util.LinkedList&lt;simkit.Entity&gt;()"/>
+        </StateTransition>
+        <Code></Code>
+        <Coordinate x="30.0" y="30.0"/>
+    </Event>
+    <Event name="Arrival">
+        <Comment></Comment>
+        <Argument name="customer" type="simkit.Entity"/>
+        <StateTransition state="queue">
+            <Operation method="add(customer)"/>
+        </StateTransition>
+        <Schedule delay="0.0" event="StartService" condition="numberAvailableServers &gt; 0" priority="HIGH">
+            <Comment></Comment>
+        </Schedule>
+        <Code>customer.stampTime();</Code>
+        <Coordinate x="30.0" y="170.0"/>
+    </Event>
+    <Event name="StartService">
+        <Comment></Comment>
+        <StateTransition state="numberAvailableServers">
+            <Assignment value="numberAvailableServers - 1"/>
+        </StateTransition>
+        <StateTransition state="queue">
+            <Operation method="removeFirst()"/>
+        </StateTransition>
+        <StateTransition state="delayInQueue">
+            <Assignment value="customer.getElapsedTime()"/>
+        </StateTransition>
+        <Schedule delay="serviceTimeGenerator.generate()" event="EndService" condition="true" priority="DEFAULT">
+            <Comment></Comment>
+            <EdgeParameter value="customer"/>
+        </Schedule>
+        <Code>Entity customer = queue.getFirst();</Code>
+        <Coordinate x="170.0" y="160.0"/>
+    </Event>
+    <Event name="EndService">
+        <Comment></Comment>
+        <Argument name="customer" type="simkit.Entity"/>
+        <StateTransition state="numberAvailableServers">
+            <Assignment value="numberAvailableServers + 1"/>
+        </StateTransition>
+        <StateTransition state="timeInSystem">
+            <Assignment value="customer.getElapsedTime()"/>
+        </StateTransition>
+        <Schedule delay="0.0" event="StartService" condition="queue.size() &gt; 0" priority="HIGH">
+            <Comment></Comment>
+        </Schedule>
+        <Code></Code>
+        <Coordinate x="290.0" y="160.0"/>
+    </Event>
+</SimEntity>
diff --git a/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/ServerWithReneges.xml b/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/ServerWithReneges.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2a45c2bd0f20b63a5efcb715ed6e13fcf598911e
--- /dev/null
+++ b/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/ServerWithReneges.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<SimEntity name="ServerWithReneges" package="examples" version="0.1.5" extend="SimEntityBase" xsi:noNamespaceSchemaLocation="http://diana.nps.edu/Simkit/simkit.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <Parameter name="numberServers" type="int"/>
+    <Parameter name="serviceTime" type="simkit.random.RandomVariate"/>
+    <Parameter name="renegeTime" type="simkit.random.RandomVariate"/>
+    <StateVariable name="numberAvailableServers" type="int"/>
+    <StateVariable name="queue" type="java.util.LinkedList&lt;Integer&gt;"/>
+    <StateVariable name="numberServed" type="int"/>
+    <StateVariable name="numberReneges" type="int">
+        <Comment>this state variable stores the number of reneges</Comment>
+        <Comment>as a Java int.</Comment>
+    </StateVariable>
+    <Event name="Run">
+        <Comment></Comment>
+        <StateTransition state="numberAvailableServers">
+            <Assignment value="getNumberServers()"/>
+        </StateTransition>
+        <StateTransition state="queue">
+            <Operation method="clear()"/>
+        </StateTransition>
+        <StateTransition state="numberServed">
+            <Assignment value="0"/>
+        </StateTransition>
+        <StateTransition state="numberReneges">
+            <Assignment value="0"/>
+        </StateTransition>
+        <Code></Code>
+        <Coordinate x="70.0" y="70.0"/>
+    </Event>
+    <Event name="Arrival">
+        <Comment></Comment>
+        <Argument name="customer" type="java.lang.Integer"/>
+        <StateTransition state="queue">
+            <Operation method="add(customer)"/>
+        </StateTransition>
+        <Schedule delay="renegeTime.generate()" event="Renege" priority="DEFAULT">
+            <EdgeParameter value="customer"/>
+        </Schedule>
+        <Schedule delay="0.0" event="StartService" condition="getNumberAvailableServers() &gt; 0" priority="DEFAULT"/>
+        <Code></Code>
+        <Coordinate x="70.0" y="160.0"/>
+    </Event>
+    <Event name="StartService">
+        <LocalVariable name="customer" type="java.lang.Integer" value="queue.getFirst()">
+            <Comment></Comment>
+        </LocalVariable>
+        <StateTransition state="queue">
+            <Operation method="removeFirst()"/>
+        </StateTransition>
+        <StateTransition state="numberAvailableServers">
+            <Assignment value="numberAvailableServers - 1"/>
+        </StateTransition>
+        <Cancel event="Renege">
+            <EdgeParameter value="customer"/>
+        </Cancel>
+        <Schedule delay="serviceTime.generate()" event="EndService" priority="DEFAULT">
+            <EdgeParameter value="customer"/>
+        </Schedule>
+        <Coordinate x="210.0" y="160.0"/>
+    </Event>
+    <Event name="EndService">
+        <Argument name="customer1" type="java.lang.Integer"/>
+        <StateTransition state="numberAvailableServers">
+            <Assignment value="numberAvailableServers+1"/>
+        </StateTransition>
+        <StateTransition state="numberServed">
+            <Assignment value="numberServed+1"/>
+        </StateTransition>
+        <Schedule event="StartService" condition="queue.size() &gt; 0" priority="HIGH"/>
+        <Coordinate x="340.0" y="160.0"/>
+    </Event>
+    <Event name="Renege">
+        <Argument name="customer2" type="java.lang.Integer"/>
+        <StateTransition state="queue">
+            <Operation method="remove(customer2)"/>
+        </StateTransition>
+        <StateTransition state="numberReneges">
+            <Assignment value="numberReneges+1"/>
+        </StateTransition>
+        <Coordinate x="140.0" y="280.0"/>
+    </Event>
+</SimEntity>
diff --git a/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/SimpleInventory.xml b/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/SimpleInventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b61049844fdc400b5c7ca62da0a672b9a5c76b67
--- /dev/null
+++ b/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/SimpleInventory.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<SimEntity name="SimpleInventory" package="examples" version="0.1" extend="SimEntityBase" xsi:noNamespaceSchemaLocation="http://diana.nps.edu/Simkit/simkit.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <Parameter name="timeBetweenDemands" type="simkit.random.RandomVariate"/>
+    <Parameter name="demand" type="simkit.random.RandomVariate"/>
+    <Parameter name="leadTime" type="simkit.random.RandomVariate"/>
+    <Parameter name="timeBetweenReviews" type="double"/>
+    <Parameter name="initialInventory" type="double"/>
+    <Parameter name="triggerPoint" type="double"/>
+    <Parameter name="orderUpTo" type="double"/>
+    <StateVariable name="inventoryPosition" type="double"/>
+    <StateVariable name="amountOnOrder" type="double"/>
+    <Event name="Run">
+        <StateTransition state="inventoryPosition">
+            <Assignment value="initialInventory"/>
+        </StateTransition>
+        <StateTransition state="amountOnOrder">
+            <Assignment value="0"/>
+        </StateTransition>
+        <Schedule delay="timeBetweenReviews" event="Review" priority="DEFAULT"/>
+        <Schedule delay="timeBetweenDemands.generate()" event="Demand" priority="DEFAULT"/>
+        <Coordinate x="10.0" y="20.0"/>
+    </Event>
+    <Event name="Demand">
+        <StateTransition state="inventoryPosition">
+            <Assignment value="inventoryPosition - demand.generate()"/>
+        </StateTransition>
+        <Schedule delay="timeBetweenDemands.generate()" event="Demand" priority="DEFAULT"/>
+        <Coordinate x="160.0" y="20.0"/>
+    </Event>
+    <Event name="Review">
+        <Schedule delay="0.0" event="PlaceOrder" condition="inventoryPosition + amountOnOrder &lt; triggerPoint" priority="DEFAULT">
+            <EdgeParameter value="(orderUpTo - inventoryPosition - amountOnOrder)"/>
+        </Schedule>
+        <Schedule delay="timeBetweenReviews" event="Review" priority="DEFAULT"/>
+        <Coordinate x="80.0" y="140.0"/>
+    </Event>
+    <Event name="PlaceOrder">
+        <Argument name="newOrderAmount" type="double"/>
+        <StateTransition state="amountOnOrder">
+            <Assignment value="amountOnOrder + newOrderAmount"/>
+        </StateTransition>
+        <Schedule delay="leadTime.generate()" event="ReceiveOrder" priority="DEFAULT">
+            <EdgeParameter value="newOrderAmount"/>
+        </Schedule>
+        <Coordinate x="190.0" y="150.0"/>
+    </Event>
+    <Event name="ReceiveOrder">
+        <Argument name="receivedOrderAmount" type="double"/>
+        <StateTransition state="amountOnOrder">
+            <Assignment value="amountOnOrder - receivedOrderAmount"/>
+        </StateTransition>
+        <StateTransition state="inventoryPosition">
+            <Assignment value="inventoryPosition + receivedOrderAmount"/>
+        </StateTransition>
+        <Coordinate x="310.0" y="150.0"/>
+    </Event>
+</SimEntity>
diff --git a/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/SimpleMachineFailure.xml b/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/SimpleMachineFailure.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ad872c9652eb9cd6581ba5a65b3d4d4db021ad2b
--- /dev/null
+++ b/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/SimpleMachineFailure.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<SimEntity name="SimpleMachineFailure" version="0.1" package="examples" xsi:noNamespaceSchemaLocation="http://diana.nps.edu/Simkit/simkit.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <Parameter type="int" name="totalNumberMachines"/>
+    <Parameter type="int" name="totalNumberRepairPeople"/>
+    <Parameter type="simkit.random.RandomVariate" name="timeToFailure"/>
+    <Parameter type="simkit.random.RandomVariate" name="repairTime"/>
+    <StateVariable name="numberFailedMachines" type="int" />
+    <StateVariable name="numberAvailableRepairPeople" type="int" />
+    <Event name="Run">
+        <StateTransition state="numberFailedMachines">
+            <Assignment value="totalNumberMachines"/>
+        </StateTransition>
+        <StateTransition state="numberAvailableRepairPeople">
+            <Assignment value="totalNumberRepairPeople"/>
+        </StateTransition>
+        <Schedule delay="0.0" event="StartMachine"/>
+        <Coordinate y="0" x="0"/>
+    </Event>
+    <Event name="StartMachine">
+        <StateTransition state="numberFailedMachines">
+            <Assignment value="numberFailedMachines - 1"/>
+        </StateTransition>
+        <Schedule delay="timeToFailure.generate()" event="Failure"/>
+        <Schedule condition="numberFailedMachines &gt; 0" delay="0.0" event="StartMachine"/>
+        <Coordinate y="0" x="80"/>
+    </Event>
+    <Event name="Failure">
+        <StateTransition state="numberFailedMachines">
+            <Assignment value="numberFailedMachines + 1"/>
+        </StateTransition>
+        <Schedule condition="numberAvailableRepairPeople &gt; 0" delay="0.0" event="StartRepair"/>
+        <Coordinate y="160" x="80"/>
+    </Event>
+    <Event name="StartRepair">
+        <StateTransition state="numberAvailableRepairPeople">
+            <Assignment value="numberAvailableRepairPeople - 1"/>
+        </StateTransition>
+        <Schedule delay="repairTime.generate()" event="EndRepair"/>
+        <Coordinate y="160" x="280"/>
+    </Event>
+    <Event name="EndRepair">
+        <StateTransition state="numberAvailableRepairPeople">
+            <Assignment value="numberAvailableRepairPeople + 1"/>
+        </StateTransition>
+        <StateTransition state="numberFailedMachines">
+            <Assignment value="numberFailedMachines - 1"/>
+        </StateTransition>
+        <Schedule condition="numberFailedMachines &gt;= totalNumberRepairPeople" priority="HIGH" delay="0.0" event="StartRepair"/>
+        <Schedule delay="timeToFailure.generate()" event="Failure"/>
+        <Coordinate y="10" x="280"/>
+    </Event>
+</SimEntity>
+
diff --git a/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/SimpleServer.xml b/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/SimpleServer.xml
new file mode 100644
index 0000000000000000000000000000000000000000..36f199cd413fa1d3f777398ce8327a0dd9cdff7a
--- /dev/null
+++ b/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/SimpleServer.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<SimEntity name="SimpleServer" package="examples" version="0.1" extend="SimEntityBase" xsi:noNamespaceSchemaLocation="http://diana.nps.edu/Simkit/simkit.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <Parameter name="serviceTime" type="simkit.random.RandomVariate"/>
+    <Parameter name="totalNumberServers" type="int"/>
+    <StateVariable name="numberInQueue" type="int"/>
+    <StateVariable name="numberAvailableServers" type="int"/>
+    <Event name="Run">
+        <StateTransition state="numberInQueue">
+            <Assignment value="0"/>
+        </StateTransition>
+        <StateTransition state="numberAvailableServers">
+            <Assignment value="totalNumberServers"/>
+        </StateTransition>
+        <Coordinate x="20.0" y="30.0"/>
+    </Event>
+    <Event name="Arrival">
+        <StateTransition state="numberInQueue">
+            <Assignment value="numberInQueue + 1"/>
+        </StateTransition>
+        <Schedule delay="0.0" event="StartService" condition="numberAvailableServers &gt; 0" priority="DEFAULT">
+            <Comment></Comment>
+            <EdgeParameter value="numberAvailableServers"/>
+        </Schedule>
+        <Coordinate x="20.0" y="130.0"/>
+    </Event>
+    <Event name="StartService">
+        <Comment></Comment>
+        <Argument name="arg_0" type="int"/>
+        <StateTransition state="numberInQueue">
+            <Assignment value="numberInQueue - 1"/>
+        </StateTransition>
+        <StateTransition state="numberAvailableServers">
+            <Assignment value="numberAvailableServers - 1"/>
+        </StateTransition>
+        <Schedule delay="serviceTime.generate()" event="EndService" priority="DEFAULT"/>
+        <Code>System.out.println("numberAvailableServers"+arg_0);</Code>
+        <Coordinate x="160.0" y="130.0"/>
+    </Event>
+    <Event name="EndService">
+        <StateTransition state="numberAvailableServers">
+            <Assignment value="numberAvailableServers + 1"/>
+        </StateTransition>
+        <Schedule delay="0.0" event="StartService" condition="numberInQueue &gt; 0" priority="HIGH"/>
+        <Coordinate x="330.0" y="130.0"/>
+    </Event>
+</SimEntity>
diff --git a/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/TransferLineComponent.xml b/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/TransferLineComponent.xml
new file mode 100644
index 0000000000000000000000000000000000000000..63bce207d2bcb60e15209ffd48e2487df9d6cafc
--- /dev/null
+++ b/viskit/MyViskitProjects/DefaultProject/EventGraphs/examples/TransferLineComponent.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<SimEntity extend="SimEntityBase" name="TransferLineComponent" package="examples" version="0.0.2" xsi:noNamespaceSchemaLocation="http://diana.nps.edu/Simkit/simkit.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <Parameter name="totalNumberServers" type="int[]"/>
+    <Parameter name="serviceTime" type="simkit.random.RandomVariate[]"/>
+    <StateVariable name="numberAvailableServers" type="int[totalNumberServers.length]"/>
+    <StateVariable name="numberInQueue" type="int[totalNumberServers.length]"/>
+    <Event name="Run">
+        <LocalVariable name="j" type="int" value="0">
+            <Comment/>
+        </LocalVariable>
+        <LocalVariable name="_idxvar_0" type="int" value="0">
+            <Comment>used internally</Comment>
+        </LocalVariable>
+        <LocalVariable name="_idxvar_1" type="int" value="0">
+            <Comment>used internally</Comment>
+        </LocalVariable>
+        <StateTransition index="_idxvar_0" state="numberAvailableServers">
+            <Assignment value="totalNumberServers[_idxvar_0]"/>
+        </StateTransition>
+        <StateTransition index="_idxvar_1" state="numberInQueue">
+            <Assignment value="0"/>
+        </StateTransition>
+        <Schedule delay="0.0" event="InitializeWorkcenter">
+            <EdgeParameter value="0"/>
+        </Schedule>
+        <Coordinate x="0" y="0"/>
+    </Event>
+    <Event name="InitializeWorkcenter">
+        <Argument name="i" type="int"/>
+        <LocalVariable name="_idxvar_26" type="int" value="i">
+            <Comment>used internally</Comment>
+        </LocalVariable>
+        <LocalVariable name="_idxvar_27" type="int" value="i">
+            <Comment>used internally</Comment>
+        </LocalVariable>
+        <StateTransition index="_idxvar_26" state="numberInQueue">
+            <Assignment value="0"/>
+        </StateTransition>
+        <StateTransition index="_idxvar_27" state="numberAvailableServers">
+            <Assignment value="totalNumberServers[i]"/>
+        </StateTransition>
+        <Schedule condition="i &lt; totalNumberServers.length - 1" event="InitializeWorkcenter">
+            <EdgeParameter value="i+1"/>
+        </Schedule>
+        <Coordinate x="120" y="0"/>
+    </Event>
+    <Event name="Arrival">
+        <Argument name="i" type="int"/>
+        <LocalVariable name="_idxvar_47" type="int" value="i">
+            <Comment>used internally</Comment>
+        </LocalVariable>
+        <StateTransition index="_idxvar_47" state="numberInQueue">
+            <Assignment value="numberInQueue[i] + 1"/>
+        </StateTransition>
+        <Schedule condition="getNumberAvailableServers(i) &gt; 0" event="StartService">
+            <EdgeParameter value="i"/>
+        </Schedule>
+        <Coordinate x="0" y="180"/>
+    </Event>
+    <Event name="StartService">
+        <Argument name="i" type="int"/>
+        <LocalVariable name="_idxvar_48" type="int" value="i">
+            <Comment>used internally</Comment>
+        </LocalVariable>
+        <LocalVariable name="_idxvar_49" type="int" value="i">
+            <Comment>used internally</Comment>
+        </LocalVariable>
+        <StateTransition index="_idxvar_48" state="numberInQueue">
+            <Assignment value="numberInQueue[i] + 1"/>
+        </StateTransition>
+        <StateTransition index="_idxvar_49" state="numberAvailableServers">
+            <Assignment value="numberAvailableServers[i] - 1"/>
+        </StateTransition>
+        <Schedule delay="serviceTime[i].generate()" event="EndService">
+            <EdgeParameter value="i"/>
+        </Schedule>
+        <Coordinate x="160" y="100"/>
+    </Event>
+    <Event name="EndService">
+        <Argument name="i" type="int"/>
+        <LocalVariable name="_idxvar_50" type="int" value="i">
+            <Comment>used internally</Comment>
+        </LocalVariable>
+        <StateTransition index="_idxvar_50" state="numberAvailableServers">
+            <Assignment value="numberAvailableServers[i]+1"/>
+        </StateTransition>
+        <Schedule condition="getNumberInQueue(i) &gt; 0" event="StartService"/>
+        <Schedule condition="i &lt; totalNumberServers.length - 1" event="Arrival"/>
+        <Coordinate x="330" y="200"/>
+    </Event>
+</SimEntity>
\ No newline at end of file
diff --git a/viskit/MyViskitProjects/DefaultProject/viskitProject.xml b/viskit/MyViskitProjects/DefaultProject/viskitProject.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1a7a1fb34bf2bcba5b570b67f0793a7e0b6c9c27
--- /dev/null
+++ b/viskit/MyViskitProjects/DefaultProject/viskitProject.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ViskitProject name="DefaultProject">
+  <AnalystReports name="AnalystReports" />
+  <AssembliesDirectory name="Assemblies" />
+  <EventGraphsDirectory name="EventGraphs" />
+  <BuildDirectory name="build">
+    <ClassesDirectory name="classes" />
+    <SourceDirectory name="src" />
+  </BuildDirectory>
+  <DistDirectory name="dist" />
+  <LibDirectory name="lib" />
+  <Cached>
+  </Cached>
+</ViskitProject>
+
diff --git a/viskit/RELEASE_NOTES b/viskit/RELEASE_NOTES
new file mode 100644
index 0000000000000000000000000000000000000000..edba9526e60d421f13ff29e0685218ab2dbb877e
--- /dev/null
+++ b/viskit/RELEASE_NOTES
@@ -0,0 +1,247 @@
+Post release fixes / upgrades / issues:
+
+  ***** ISSUES:
+
+  Do to the nature of XML to Java translation, any derived class from a super
+  type must list the super type's fields in identical order so that type
+  matching can verify the super type for correct calls to super from the
+  derived translated java source.
+
+  On Mac OS X 10.10.3 (Yosemite) & JDK 1.8.0_45, in the default L&F mode, while
+  inputting EG Parameters when the user selects more... to expose RandomVariate
+  types, a NPE will be thrown:
+
+    at com.apple.laf.AquaMenuPainter.paintSelectedMenuItemBackground(AquaMenuPainter.java:153)
+
+  Select the Platform L&F for OS X users as the work around.  On Win machines,
+  the platform L&F is not the best choice as the background coloring for tabs is
+  quite quirky. The default L&F for Win machines is recommended.
+
+  On Mac OS X 10.10.3 & JDK 1.8.0_45, the cancel and scheduling cursors on the
+  JGraph palette will revert back to the select cursor (arrow) when a node or
+  edge inspector pops up. If the user selects cancel or schedule mode again,
+  the cursor will not change (remains in select) mode until the user moves the
+  cursor out of the JPanel containing the JGraph component and menu bar up to
+  the parent Frame's title bar. Then it will change as expected. UPDATE: Haven't
+  seen this issue occur in later versions of JDK 17+ and later macOS versions.
+  TDN 19 FEB 2023.
+
+  Due to the way the SimkitXML2Java generates EG extensions of super
+  SimEntities, a default constructor will not be generated in subclasses
+  accordingly. When it is time to parameterize EG constructors at Assy creation
+  time, an EG with a default (no arg) constructor will conveniently establish a
+  Random Variate Factory instance automatically within the Event Node Inspector.
+  A subclass of a SimEntity will not automatically establish a RVF instance,
+  therefore one must select the instantiation wizard, select "factory", accept
+  the change and then a RVF instance will be established and ready to accept
+  direct (String, Object...) inputs.
+
+  At this time, the XML to Java translators cannot handle a super type generic
+  container declaration in XML, then instantiate it as a dynamic type, i.e.
+  List<String> list = new ArrayList<>(). The static declaration must match the
+  dynamic type accordingly.
+
+  Because of the unique nature of XML IDs, we are not able to have similar
+  method names, i.e. Arrival, in an EG file even with differing method
+  signatures. As such, subclassing is still possible, but the user will have
+  to manually name Events in this manner using an underscore character, i.e.
+  Arrival, Arrival_e (where the "e" hints at the type argument of the event).
+
+  If the CNTL key is held down while attempting to drag an edge control point
+  a IOOBE will be thrown by JGraph v5.14.0. This may be fixed in a subsequent
+  release of JGraphX (new code base name) should we decide to upgrade to v6+.
+
+  If a single Assy file was closed, it will close all open EGs file including
+  non-associated EGs. This happens due to the EG caching system that relies on
+  parsing SimEntities of Assy files to know which EG to keep open.
+
+  If one strays from the Java Bean convention of naming variables by starting
+  with a lower case letter, then be prepared to manually enter variable names
+  of interest when parameterizing a PropertyChangeListener edge such as a
+  SimplePropertyDumper as the PropertyDescriptor returned by the Introspector
+  will force lower case, i.e. variable int N will be returned as "n".
+
+  BeanShell checking of code snippets was a good idea in the beginning, but
+  since we are only giving BeanShell a snippet and not the whole source file, it
+  can only perform very minor primitive checking and some instantiating checks
+  of generic containers. The compiler will notify of any errors at which time
+  the user can investigate and fix during EG or Assy authoring.
+
+7/23/24 (Critical)
+    Can place more than one scheduling edge between nodes
+
+        (Minor)
+
+    Placing a scheduling edge between two nodes does not immediately populate
+    the scheduling priority. If priority was missing on startup, or file
+    reopening, it gets placed then
+
+  ****** FIXES / UPGRADES:
+    If a user submits a path to an assy file, and the file and current project
+    path do not coincide, then open the project that the assy belongs in.
+
+    (Critical)
+    Fix issue where if another project was opened, lingering recent proj. file
+    references were maintained causing a NPE due to a recent class from the old
+    project which is no longer found on the current classpath.
+
+    We now have a unicode character displayed on conditional scheduling edges
+
+    (Critical)
+    Fixed runaway recursion when selecting a PCL for edit
+
+    Better formatting on the Local run panel console output of rep. stats and
+    rep. summary report.
+
+    Consolidated VertexRenderers for efficiency
+
+    Control points for self scheduling edges now outline the offset edge shape
+
+    Upgrade to JDOM v1.1.3
+
+    (Critical)
+    Fixed Log4j output to file. Using log4j2.xml config file. Console output is
+    now colorized per logging level.
+
+    (Critical)
+    Selection of edges on macOS laptop displays was intermittent. Fix on 
+    13 DEC 22 did not take. Turns out all edges need a label, even if an empty 
+    string. Null strings caused edge bounding box null issues which interfered
+    with proper bounding box / edge shape intersections. Overrode JGraph
+    EdgeRenderer intersect method to back off of deep dive Graphics2D hits to 
+    find intersections between edge shape and their corresponding bounding 
+    boxes. Replaced with simpler shape.intersects(rectangle) calls. No issues 
+    now when working between MBP laptop displays and Mac Thunderbolt displays.
+
+    (Critical)
+    https://groove.cs.utwente.nl/mac.html
+    Fixed accessabilityContext was null in JGraph. Needed a parent's Component
+    accessabilityContext
+
+    On 05/03/24, moved main development work back to https://gitlab.nps.edu/Savage/viskit
+
+    Updated most 3rd party libs, esp. Commons Config to fix File menu histories
+    not being retained for next start of the application.
+
+    Simkit updated to v1.5.6
+
+    Fixed unit tests to run independently in their own ant target, some were
+    dormant.
+
+    Tested on JDK 22.0.1
+
+
+Release: 1.0.16(December 13, 2022)
+-----------------------------------
+Major changes since 1.0.15
+
+    Fix to JAXB exception for not finding files from deleted project spaces.
+
+    Fixed NPE from version attempting to read SVN strings, which are no longer
+    relevant since switching to git.
+
+    Upgraded to latest JAXB. Bumped src release to 11 and tested to run on
+    JDK17+.
+
+    In an attempt to maintain a clean/fresh classloader for each assy run (the
+    idea being that we don't want any previous static references to interfere
+    with independent runs), and since the inception of the Java Module Platform
+    System (JPMS), stripping out all but the "boot" class loader is accomplished
+    in the LocalBootLoader, thus preserving our goal of isolated class loaders.
+
+
+Release: 1.0.15(June 08, 2015)
+-------------------------
+Major changes since 1.0.10:
+
+  Moved codebase to new repository at: https://gitlab.nps.edu/tdnorbra/viskit
+  The codebase was forked at R2900 from the old SVN repository at:
+  https://eos.nps.edu/wcm/Viskit. Due to the many refactorings that took place
+  since R2900 (09 DEC 2015), R2900 marks the revision that was the last known
+  functional build of Viskit. Rather than branch at the original SVN site, it
+  was decided to move to a more functional repository for version control w/
+  Git.
+
+  EventNodes that are similarly named can be achieved using an underscore
+  character, i.e. Arrival, Arrival_e. The "e" would denote an event argument
+  name. The EventNode will graphically render correctly without the underscore
+  character and the generated java code will observe overloaded method names.
+
+  We now label the name of the parameter in addition to its type for the Event
+  Graph Node Inspector Dialog's Instantiation Panels. This will aid in proper
+  EG parameterization
+
+  JavaHelp contents now render external links. Update jhall.jar to v2.0_05
+  to account for missing helper classes from v2.0.0.
+
+  Config files for initial startup will now force the platform L&F for Macs and
+  leave the default L&F for Win and other machines. This is due to what is
+  described above under issues.
+
+  Now using relative paths for all images generated for the Analyst Report
+
+
+Release: 1.0.10(June 03, 2015)
+-------------------------
+Major changes since 1.0.5:
+
+  Attempted to fix some buggy NPE within JGraph lib when running on Mac OS X
+
+
+Release: 1.0.5(June 01, 2015)
+-------------------------
+Major changes since 1.0.0:
+
+  Fixed NPE when unqualified names were being used for local variables as well
+  as in parameters. User is now notified to fix by stating qualified names.
+
+  Fixed issue where user desires a specific replication to be verbose and only
+  that one in particular. If a specific rep. is given, that will uncheck the
+  verbose box
+
+  Since canceling edges to nodes with parameters do not have to actually send
+  parameters, we've hidden the parameters sub-panel from the canceling edge
+  inspector
+
+  Fixed NPE in the Source Window frame title when generating Assy source code
+
+  Added support for when a user wishes to generate a statistical run report in
+  that when the report is ready for further editing/input by the user, the UI
+  will auto select to the analyst report tab
+
+  Added support for the user to zip a current Viskit project, to include the
+  current debug.log, and email it to the Viskit mailing list
+
+  Fixed and exception issue when verbose debug was selected from the Settings
+  dialog
+
+  Fixed several menu activated NPEs when no EG or Assy files are loaded
+
+  Implemented an Open Recent Projects menu item for the EventGraphViewFrame
+
+  Added a header to the output replication report to better understand the order
+  of stats data presented.
+
+  Fixed issue where designPointStats names were not being correctly set during
+  Assy. runtime causing a NPE and incorrect stat output due to name mismatches.
+
+  Fixed an issue where the default Random Number Generator's seed reset call was
+  performed incorrectly and was unnecessary. The default RNG is the Mersenne
+  Twister with a seed state generated at instantiation time in Simkit with a
+  default seed.
+
+  Fixed issue when a user used the Assy editor's recent project's list to
+  select a recent project and the selected project's title wasn't correctly
+  displayed.
+
+  Added support for Object... (varargs) for the
+  RandomVariateFactor.getInstance(String, Object...) static Simkit method.  We
+  can now write out java.lang.Object... to XML, parse it and apply it correctly
+  during SimEntity parameterization at Assy. creation time.
+
+  Major refactor to implement a combo box selection for scheduling edge time
+  delays. Can now select parameters, local or argument vars and invoke methods,
+  or simply type in a delay value
+
+  Fixed a potential NPE issue in the File Based Assembly Node (FBAN) when
+  parsing node files that are of *.class origin only and not XML
diff --git a/viskit/RELEASE_NOTES_HISTORY b/viskit/RELEASE_NOTES_HISTORY
new file mode 100644
index 0000000000000000000000000000000000000000..9bc24715666b80af7903629d74de8cbdba60bd38
--- /dev/null
+++ b/viskit/RELEASE_NOTES_HISTORY
@@ -0,0 +1,476 @@
+These are release notes for Viskit from 0.1 forward.  Each release will
+detail its functionality in meeting the applicable specifications and document
+any known issues.
+
+Release: 1.0.0(March 10, 2015)
+-------------------------
+Major changes since 0.7.0:
+
+  Major refactor of the MVC components to implement undo / redo on both the EG
+  and Assy editors
+
+  Fixed potential NPE when attempting to capture a frame image with no file
+  loaded in either the EG or Assy. editors
+
+  Further improvements to the state transitions panel in that when we wish to
+  invoke methods on state variables, a combo box of choices is presented.  If a
+  method requires a parameter, the parameter is typed into the action field
+
+  Fixed issue where canceling a local variable method call in the state
+  transition dialog did not initiate an auto row delete
+
+  Improvements to the state transitions panel in that we can now invoke void
+  return type, zero parameter method calls as part of a state transition.  This
+  is accomplished by declaring a local variable within an EventNode, or by using
+  an event argument supplied by an Edge.  The type will be used to reflect on
+  which method types will be available for use on either the local variable, or
+  the argument
+
+  Implemented capability to provide an unqualified Java class name and have the
+  fully qualified class found on the classpath.  Implemented in viskit.VStatics
+
+  Fixed bug to prevent edge parameter values from being wiped out during a node
+  modification
+
+  Preventing a case where we have simkit.jar in both the working classpath and
+  in a project's /lib directory.  We don't need to expose multiple libs of the
+  same name in the LEGOs tree because they happen to be in two different places
+
+  Added a feature to the state transition panel whereby we can now assign local
+  variables to return type invoke on "." methods, i.e. boolean b = queue.add(E);
+  Before, we could only accomplish this type call and fire the state transition
+  manually via code block entries.  This is a step in reducing code block usage.
+
+  Fixed and issue where super type more than one level up were not being
+  resolved in the EG to Java translator
+
+  Corrected issue with EG image capture being stuck on the last showing EG and
+  not cycling through open EG tabs
+
+  Improved EG Node tooltips by including code blocks
+
+  The translator for generation of Event Graph XML to Java now handles generic
+  array types as well as primitive array types, generic containers, and of
+  course, primitive types.
+
+  JGraph extended and overridden components now behave like actual DES EG nodes
+  in that EG node edges take on the classic parabolic shape when two edges
+  connect between nodes.  Self-referential edges now begin hear the top of the
+  node instead of at the bottom and form around the node in a clockwise fashion.
+
+  Fixed issue with the StateVariableDialog where if an array type was entered in
+  the type field, the array length field was still disabled
+
+  Fixed issue of the metadata description field not updating after an edit
+
+  Fixed potential NPE in the PclEdgeInspectorDialog when the Introspector can't
+  determine a property type
+
+  Fixed an issue where EG and Assy file open history was not being preserved
+
+  Fixed an issue where a PropertyChangeListener edge with no selected property
+  was forcing a "" (empty string) property which is non-existent.
+
+  Implemented a self-referential drag and drop, or menu selected canceling edge
+  option for the EG editor.
+
+  Implemented an extension feature for EGs.  Instead of extending the default
+  SimEntityBase, type in your SimEntityBase subclass name instead when creating
+  a new event graph, i.e. extends ArrivalProcess.
+
+  Fixed an issue where and IllegalStateException would occur when added a
+  simkit.random.RandomVariate to the parameter list
+
+  Fixed an issue with not being able to use normal java package naming
+  conventions when crafting EG package names
+
+  Fixed an issue with cut & paste where the selected cache was not being cleared
+  after a confirmed delete by the user.
+
+  Fixed a bug where canceling the edit on any of the Assembly edge dialogs
+  caused that edge to delete.
+
+  Fixed an issue where a good intention to have nodes snap to grid on either
+  editor pallette caused the node cluster to keep positioning down and to the
+  right upon every file save.
+
+If an EG XML file save goes bad, or its corresponding source code
+compilation reveals an error, the tab that represents the EG will change from
+a green color (signifying good XML, good source compilation) to red which
+signifies either an XML save, or its source compilation went bad.  The user will
+be unable to advance to the Assembly Editor tab until the problem is corrected.
+If an EG compilation went bad, any previously compiled byte code *.class files
+of the same name will be deleted preventing inclusion on the classpath.  A bad
+compile will also cause removal of the EG MD5 hash entry from the project's
+viskitProject.xml file.  If upon start up, a previously opened XML file passes
+validation, but fails compilation, the user will again be unable to advance to
+the Assy Editor tab.
+
+  Fixed an issue where if a EG did not compile correctly, the whole EG LEGO tree
+  for would dissappear
+
+  Bugfix 1425
+
+  More gracefully handle and inform the user of a missing third party library
+
+  Fixed issue where if we had already compiled an Assembly, then the ClassLoader
+  has changed, and we need to go back and fix something in the Assembly.  Switch
+  back to the Viskit ClassLoader and disable the Assembly Run tab until the
+  Assy is recompiled.
+
+  Fixed timing issue when an Assembly file is given as an argument at startup
+  which firsts loads associated Event Graphs, but the Assembly was being
+  compiled before the Event Graphs finished loading causing ClassLoader issues
+  due to the Assembly being compiled in a separate ClassLoader.
+
+  Shortened the path names for the LEGOs tree to be more readable.  If the user
+  does not select the Analyst Report tab to be visible, then the Enable Analyst
+  Report checkbox on the Assembly Runner panel will not be enabled.
+
+  Better Mac OS X installer support by upgrading the javaApplicationStub to work
+  better with Oracle's JDK 8+.  Better Windows installer support by actually
+  getting it to work with the executable jar's Class-Path header.  Still need to
+  fully test on Unix though.
+
+  Implemented better message pop-up reporting during EG and Assy loading for the
+  user to better determine what errors have occurred
+
+  Bugfix 1377
+
+  Allow deselection of both the Design of Experiments (DOE) and Cluster Run
+  panels via the Files -> Settings dialog -> Tabs Visible
+
+  Ensure that when switching Event Graph tabs, or to the Assembly Editor, any
+  unsaved EGs will be saved, revalidated and re-compiled
+
+  Remember user set sizes for the main app frame so that it will restart at
+  those dimensions
+
+  Fix a long standing bug where modifications to EGs did not get re-validate
+  XML, generate java source, or re-compile.  Fix bug where a duplicate icon
+  could reappear in the EG node pallette
+
+  Fix UI issue where a node name could be changed for either an EG or Assy and
+  would not reflect until a mouse was re-clicked on the editor canvas
+
+  Refactor source code packaging to more closely resemble MVC organization
+
+Release: 0.7.0(November 14, 2014)
+-------------------------
+Major changes since 0.6.2:
+
+  Platform specific startup items are discerned at app startup, i.e. MAX OS X
+  "About Viskit"
+
+  Fix a long standing bug where local variables declared in an EG doRun method
+  where not being utilized as indicies for arrays in state transition changes
+
+  Enable a single click selection of a Viskit project icon w/o having to select
+  "OK"
+
+  Upgrade to JAXB v2.2.11
+
+  Fix issue where a single opened EG did not close when selecting another Viskit
+  project
+
+  If a user selects JVM exit and an EG, or Assy were modified, allow a cancel
+  closing Viskit when the save dialog appears
+
+  Always show what Viskit project is open in the app title bar
+
+  Implemented a nuke.dot.viskit Ant target.  This is an attempt to draconically
+  fix an issue where Viskit startup in an unknown state via its .viskit kept
+  config files and can't recover to usability
+
+  Fix bug to allow generically type arrays to be properly translated to java
+  source
+
+  Fix a NPE in the AssemblyControllerImpl
+
+  Had to break the "dirty Assembly" issue in the DOE's LocalBootLoader so as to
+  load generated and modified EGs and Assys from build/classes of each loaded
+  Viskit project.  The documentation for viskit.doe.LocalBootLoader explains the
+  requirement for multi-threaded Grid Design Point Experiments to run with fresh
+  ClassLoader contexts.  At this time, Grid (cluster) runs are disabled until
+  such time as we can re-implement using the Viskit Project paradigm
+
+  Annotated a note in the InternalAssemblyRunner where the RandomVariate seed
+  was is being reset via reflection.  This is critical in creating standalone
+  projects where they are run independently outside of the Viskit environment
+
+  Upgrade to JGrpah 5.14.0.  Improved threading on the drawing canvas, but need
+  to refine how the control points could make better scheduling edge arcs.
+
+  Upgrade JAXB to 2.2+
+
+  Fix EG node cancel cursor bug issue
+
+  Upgrade to Simkit v1.4.2
+
+  Fix issue with generating a lot of temp files and jars and not cleaning up
+  after the main app shuts down
+
+  Implemented a completely enclosed runtime compilation scheme using the JDK's
+  runtime compiler for EG and Assy generated source code, thus removing the
+  requirement to ship the current JDK's tools.jar with the installers.  A JDK is
+  still required to run Viskit though.
+
+  Improve the whole Viskit app build process; must faster compile time
+
+  Ensure that a Viskit project /lib populated with jars is read upon startup in
+  order to resolve external classpaths selected in the Setting Dialog
+
+  Ensure the lib/ext can be ignored for pure Viskit operation, i.e. no
+  requirement for Diskit, or other advanced DES libs
+
+  Upgrade to JDom v2.0.5
+
+  Upgrade to Xerces v2.11.0
+
+  Upgrade Apache Commons libs to v3.2.1
+
+  Fix NPE on model property editor
+
+  Improve iZpack installer creation
+
+Release: 0.6.1(May 10, 2011)
+---------------------------------
+Major changes since 0.6.0:
+
+  Implemented a dedicated Viskit Project space "MyViskitProjects" in order to
+  properly designate a project space for specific user projects
+
+  Fix NPE when canceling out of creating a project
+
+  Fix bug where the Viskit Project file chooser was causing unnecessary
+  recursive calls
+
+  Implemented a draconian runtime fix to nuke the ${user.home}/.viskit directory
+  incase of a startup failure that has historically rendered Viskit unusable
+  until .viskit was manually deleted anyway.  The goal will be to never have to
+  do this if configuration metadata was stable enough to continue usability.
+
+  Improved iZPack installer support for creating 64 bit installers.  Shoe-horned
+  is a USA flag to denote "English" as an install language vice the UK flag.
+
+
+Release: 0.6.0(October 8, 2010)
+---------------------------------
+Major changes since 0.5.4:
+
+  Upgrade to Simkit v1.3.8
+
+  Provide for launching Viskit either standalone, or as a process within another
+  runtime application observing proper EDT protocol
+
+  Disable TRANG building of the EG and Assy Schema's from DTD.  These Schemas
+  are now solid on their own.
+
+  Fix bug where .svn folders would display on the LegosTree for SimEntities and
+  PropertyChangeListeners
+
+  Bugfix 1248
+
+  Improved parsing for BasicSimEntity subclasses in order to populate the
+  LegosTree
+
+  Display current Viskit Project name in the main app title bar
+
+  Improved EG caching scheme so that we don't recompile unnecessarily
+
+  Improved recently opened files and projects history caching
+
+  Fix NPE bug when opening an existing Project from a newly installed Viskit
+
+  Bugfix 706
+
+  Upgrade to JAXB v2.1.8
+
+  Improved output stream flushing when writing out to text at runtime
+
+  Fix bug where EG description fields were not rendering for a newly added EG
+  tab
+
+  Improved JDK shutdown if Viskit is a third-party lib within another app
+
+  Bugfix 1364
+
+  Viskit was becoming too tightly integrated with a specific project (Savage
+  Studio).  Broke up such dependencies and refactored to be a standalone app
+  that can be integrated into other applications.
+
+  Fix issue where Assembly Adapter and PropertyChangeListener edges behave
+  properly if the user cancels an edit function
+
+  The Assembly description field in not yet implemented and noted in source
+
+  Assembly properties (metadata) are now immediately reflected in the Assembly
+  Runner
+
+  The proper mode for a PropertyChangeListener is singular.  However, for back-
+  wards compatibility for older EG, allow plural as well
+
+  Fixed bug where improper GraphMetaData was being supplied to a new Assembly
+
+  Fix issue where EG and Assy Editor toolbars were not being made visible when
+  creating new EGs and Assys
+
+  Better resizing accomplished for the Assembly Editor to allow more weight to
+  the JGraph side of the splitpane
+
+  Implemented full XML validation for EGs and Assy XML files
+
+  Minor EG and Assy Schema modification to allow for SMAL metadata to be used
+  as CDATA entries
+
+  Implemented multi-file opening choice for EGs and Assys
+
+  Bugfixes 1396, 1398 & 1412
+
+  Fix issue to allow building of the ParameterMap and Constructor where no
+  concrete doRun or doReset methods were defined
+
+  Implemented package creation when naming newly created EG and Assy files
+
+  Implemented configuration awareness of current Viskit project
+
+  Added a "Verbose" checkbox on each Assembly Node editor which operates as a
+  "detailed output."
+
+  Clamp simulation output to 8M and truncate from the front if required
+
+  Implemented dumping of Event List only if not in verbose, or reallyVerbose modes
+
+  Internal class checking to populate EG editors unable to discern unqualified
+  class names except java.lang.*
+
+  Viskit Project can now be stored and opened from any location on the local
+  machine
+
+  Bugfixes 1400 & 1407
+
+
+Release: 0.5.4(August 12, 2008)
+----------------------------------------
+Major changes since 0.5.3:
+
+  Implement a clear recent files option to the File menus
+
+  Implement a "detailed output" checkbox option for EG node inspector dialog
+
+  Implement an incrementing trailing digit in node names when dragging new node
+  onto the Assembly editor canvas.  Add check for existing node name prompting
+  use of the incrementing trailing digit.
+
+
+Release: 0.5.3(August 5, 2008)
+---------------------------------
+Major changes since 0.5.2:
+
+  Implemented specific platform L&F options upon app startup
+
+  Fix issue in SimkitXML2Java translator when an interrupt would cause an unclosed
+  if block statement causing startup compile errors
+
+  Fix for issue where varargs can throw a mostly harmless compiler warning if
+  there is only one arg supplied to the SimkitXML2Java translator
+
+  Fix issue where the EG inspector dialog "Apply" button had no effect
+
+  Bugfix 1399
+
+
+Release: 0.5.2(June 11, 2008)
+-------------------------------
+Major changes since 0.4.8:
+
+  Bugfixes 1402 & 1405
+
+  Implemented creating new projects from either the EG or Assy editor panel menus
+
+  Bugfix 1373
+
+  Announce any compile errors to output screens
+
+
+Release: 0.4.8(June 3, 2008)
+-------------------------------
+Major changes since 0.4.7:
+
+  Implemented Log4J for debugging, output info status
+
+  Switch from Sun's Base64 encoder to Apache version
+
+  Fix NPE when user didn't check "Enabled Analyst Report" and attempted to view
+  anyway
+
+  Fix bug where a SimplePropertyDumper could not co-exist with a
+  SimpleStatsTimeVarying PCL defined on the same Assembly
+
+  Stricter BeanShell interpreter checking for EG and Assy authoring, esp. for
+  typed containers <SomeType>
+
+  Enable regression line fitting to scatter plot graphs generated for the
+  Analyst Report
+
+  Implemented enabling of the Assembly Run panel only after a successful Assy
+  compilation and validation.
+
+  Implemented firing property changes using state variable "getters".  Container
+  getters return a clone for the FPC in the doRun event.
+
+  Modify the Assembly DTD to offer a raw count or mean of raw count statistic
+  for all PCL dialogs
+
+  Implemented a "Number x of n Replications" output on the Assembly Runner
+
+  Update JFreeChart to v1.2.0.  Improve chart output by counting raw counts vice
+  the mean of raw counts for histogram charts
+
+  Fix issue where Assys were being compiled while the EG tree was still being
+  parsed for compilation causing conflicts
+
+  Upgrade Simkit to v1.3.4
+
+  Bugfix 1183
+
+  Improvements to Analyst Report building, editing, reopening and rendering in
+  HTML
+
+  Implemented Ant targets to translate EGs and Assy XML files to Java source
+
+  Further decoupling of Diskit being too tightly integrated w/ Viskit for
+  convenience of another application
+
+  Refinements to external javac exec process for EGs and Assys
+
+  Implemented generics utilzing JAXB v2.1.  This is a whole Viskit upgrade
+  prompting tagging a pre-generics JAXB branch.
+
+  Authored a script to delete temp files and history, a hack to clean up cruft
+  left behind from Viskit multiple operation of quarantining separate
+  classpaths, keeping scratch EG and Assy files, and multiple compilations of
+  source code.
+
+  Implemented notification of when an Analyst Report is ready to view at the end
+  of a local Assembly Run of 1 or more replications
+
+  Bugfixes 936, 1195, 1246, 1249 & 1260
+
+  Implemented figure caption auto increment in the Analyst Report.  Xalan required
+  as 3rd party lib for this functionality
+
+  Implemented a cleaner exit strategy vice a blunt System.exit(0) scheme
+
+  Implemented image capturing of all opened EG and Assy files for PNG insertion
+  in the Analyst Report
+
+  Improved Analyst Report generation by consolidating all material required for
+  report in a project specific location.  Fix various bug discovered in AR
+  generation improvements.
+
+  ******************************************************************************
+  End of this report on Viskit history 26 SEP 2007.  Please see
+  doc/viskitSVNLogs.txt for previous developer commit log entries dating back to
+  18 NOV 2002 when Viskit migrated from CVS to SVN.
+  ******************************************************************************
diff --git a/viskit/Schemas/assembly.xsd b/viskit/Schemas/assembly.xsd
new file mode 100644
index 0000000000000000000000000000000000000000..7f7c35038ebad2280bf07578af615e7534715995
--- /dev/null
+++ b/viskit/Schemas/assembly.xsd
@@ -0,0 +1,365 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- SVN ID: $Id$ -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+  <xs:group name="DesignParameters">
+    <xs:sequence>
+      <xs:element ref="TerminalParameter"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:element name="ValueRange" abstract="true">
+    <xs:complexType>
+      <xs:attribute name="lowValue"/>
+      <xs:attribute name="highValue"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:group name="Parameters">
+    <xs:choice>
+      <xs:element ref="MultiParameter"/>
+      <xs:element ref="FactoryParameter"/>
+      <xs:element ref="TerminalParameter"/>
+    </xs:choice>
+  </xs:group>
+  <xs:element name="Statistics" abstract="true"/>
+  <xs:element name="SimkitAssembly">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="head"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="DesignParameters"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="SimEntity"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="EventGraph"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="PropertyChangeListener"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="SimEventListenerConnection"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="PropertyChangeListenerConnection"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Adapter"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Output"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Verbose"/>
+        <xs:element minOccurs="0" ref="Schedule"/>
+        <xs:element minOccurs="0" ref="Experiment"/>
+      </xs:sequence>
+      <xs:attribute name="name" use="required" type="xs:ID"/>
+      <xs:attribute name="version" default="1.0"/>
+      <xs:attribute name="package" use="required"/>
+      <xs:attribute name="author"/>
+      <xs:attribute name="extend" default="viskit.assembly.ViskitAssembly"/>
+      <xs:attribute name="implement"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="head">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="meta"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="meta">
+    <xs:complexType>
+      <xs:attribute name="name" use="required"/>
+      <xs:attribute name="content"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="SimEntity">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="Parameters"/>
+        <xs:element minOccurs="0" ref="Coordinate"/>
+      </xs:sequence>
+      <xs:attribute name="name" use="required"/>
+      <xs:attribute name="type" use="required"/>
+      <xs:attribute name="url"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="TerminalParameter">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="ValueRange"/>
+      </xs:sequence>
+      <xs:attribute name="name"/>
+      <xs:attribute name="linkRef" type="xs:IDREF"/>
+      <xs:attribute name="link" type="xs:ID"/>
+      <xs:attribute name="value"/>
+      <xs:attribute name="type" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="DoubleRange" substitutionGroup="ValueRange"/>
+  <xs:element name="IntegerRange" substitutionGroup="ValueRange"/>
+  <xs:element name="MultiParameter">
+    <xs:complexType>
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="Parameters"/>
+      <xs:attribute name="name"/>
+      <xs:attribute name="type" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="FactoryParameter">
+    <xs:complexType>
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="Parameters"/>
+      <xs:attribute name="name"/>
+      <xs:attribute name="factory" use="required"/>
+      <xs:attribute name="method" default="getInstance"/>
+      <xs:attribute name="type" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Coordinate">
+    <xs:complexType>
+      <xs:attribute name="x" use="required"/>
+      <xs:attribute name="y" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <!--
+     The proper mode for a PropertyChangeListener is singular, however, for
+    backwards compatibility with older EventGraphs, we allow both singular and
+    plural modes (tdn 16 SEP 2008)
+  -->
+  <xs:element name="PropertyChangeListener">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="Parameters"/>
+        <xs:element minOccurs="0" ref="Coordinate"/>
+      </xs:sequence>
+      <xs:attribute name="name" use="required" type="xs:ID"/>
+      <xs:attribute name="type" use="required"/>
+      <xs:attribute name="mode" default="listener">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="replicationStat"/>
+            <xs:enumeration value="replicationStats"/>
+            <xs:enumeration value="designPointStat"/>
+            <xs:enumeration value="designPointStats"/>
+            <xs:enumeration value="listener"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="meanStatistics" default="false">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="true"/>
+            <xs:enumeration value="false"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="countStatistics" default="true">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="true"/>
+            <xs:enumeration value="false"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="SimEventListenerConnection">
+    <xs:complexType>
+      <xs:attribute name="listener" use="required"/>
+      <xs:attribute name="source" use="required"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="PropertyChangeListenerConnection">
+    <xs:complexType>
+      <xs:attribute name="property"/>
+      <xs:attribute name="listener" use="required"/>
+      <xs:attribute name="source" use="required"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Output">
+    <xs:complexType>
+      <xs:attribute name="entity" use="required" type="xs:NMTOKEN"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Verbose">
+    <xs:complexType>
+      <!-- Bugfix 1425 (xs:NMTOKEN) -->
+      <xs:attribute name="entity" use="required" type="xs:NMTOKEN"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Schedule">
+    <xs:complexType>
+      <xs:attribute name="stopTime" default="0.0"/>
+      <xs:attribute name="verbose" default="true">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="true"/>
+            <xs:enumeration value="false"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="numberReplications" default="1"/>
+      <xs:attribute name="printReplicationReports" default="true">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="true"/>
+            <xs:enumeration value="false"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="printSummaryReport" default="true">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="true"/>
+            <xs:enumeration value="false"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="saveReplicationData" default="false">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="true"/>
+            <xs:enumeration value="false"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Adapter">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="Coordinate"/>
+      </xs:sequence>
+      <xs:attribute name="name" use="required"/>
+      <xs:attribute name="eventHeard" use="required"/>
+      <xs:attribute name="eventSent" use="required"/>
+      <xs:attribute name="from" use="required" type="xs:NMTOKEN"/>
+      <xs:attribute name="to" use="required" type="xs:NMTOKEN"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Log" type="xs:string"/>
+  <xs:element name="Errors" type="xs:string"/>
+  <xs:element name="PropertyChange">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Statistics"/>
+      </xs:sequence>
+      <xs:attribute name="listenerName" use="required"/>
+      <xs:attribute name="property"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="SampleStatistics" substitutionGroup="Statistics">
+    <xs:complexType>
+      <xs:attribute name="name"/>
+      <xs:attribute name="mean" default="0.0"/>
+      <xs:attribute name="variance" default="0.0"/>
+      <xs:attribute name="standardDeviation" default="0.0"/>
+      <xs:attribute name="count" default="0"/>
+      <xs:attribute name="minObs" default="0.0"/>
+      <xs:attribute name="maxObs" default="0.0"/>
+      <xs:attribute name="samplingType" default="TALLY">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="TALLY"/>
+            <xs:enumeration value="TIME_VARYING"/>
+            <xs:enumeration value="LINEAR"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="IndexedSampleStatistics" substitutionGroup="Statistics">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="SampleStatistics"/>
+      </xs:sequence>
+      <xs:attribute name="name"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Results">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="Log"/>
+        <xs:element ref="PropertyChange"/>
+        <xs:element ref="Errors"/>
+      </xs:choice>
+      <xs:attribute name="sample" use="required"/>
+      <xs:attribute name="designPoint" use="required"/>
+      <xs:attribute name="index"/>
+      <xs:attribute name="job"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="DesignPoint">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="TerminalParameter"/>
+        <xs:element minOccurs="0" ref="Script"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Replication"/>
+        <xs:element minOccurs="0" ref="Results"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Statistics"/>
+      </xs:sequence>
+      <xs:attribute name="index"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Replication">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Statistics"/>
+      </xs:sequence>
+      <xs:attribute name="index"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Script" type="xs:string"/>
+  <xs:element name="Sample">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="DesignPoint"/>
+      </xs:sequence>
+      <xs:attribute name="index"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Experiment">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="Script"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Sample"/>
+      </xs:sequence>
+      <xs:attribute name="jobID"/>
+      <xs:attribute name="type" default="latin-hypercube">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="latin-hypercube"/>
+            <xs:enumeration value="full-factorial"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="replicationsPerDesignPoint" default="1"/>
+      <xs:attribute name="totalSamples" default="1"/>
+      <xs:attribute name="jitter" default="true">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="true"/>
+            <xs:enumeration value="false"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="timeout" default="0"/>
+      <xs:attribute name="debug" default="false">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="true"/>
+            <xs:enumeration value="false"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="EventGraph">
+    <xs:complexType mixed="true">
+      <xs:attribute name="fileName"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="PasswordFile">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="User"/>
+      </xs:sequence>
+      <xs:attribute name="name" default="/tmp/passwd.xml"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="User">
+    <xs:complexType>
+      <xs:attribute name="name" use="required" type="xs:ID"/>
+      <xs:attribute name="password" use="required"/>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>
diff --git a/viskit/Schemas/cli.xsd b/viskit/Schemas/cli.xsd
new file mode 100644
index 0000000000000000000000000000000000000000..14a902bacd0a1e5a00d3c76cfbaa68447b744058
--- /dev/null
+++ b/viskit/Schemas/cli.xsd
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+  <xs:element name="Config">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="Assembly"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="EventGraph"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="ExtensionJar"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Assembly">
+    <xs:complexType>
+      <xs:attribute name="fileName" use="required"/>
+      <xs:attribute name="className" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="EventGraph">
+    <xs:complexType>
+      <xs:attribute name="fileName" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="ExtensionJar">
+    <xs:complexType>
+      <xs:attribute name="fileName" use="required"/>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>
diff --git a/viskit/Schemas/qstat.xsd b/viskit/Schemas/qstat.xsd
new file mode 100644
index 0000000000000000000000000000000000000000..a8b58d5aca2d908db95a92563828d4961d5f7291
--- /dev/null
+++ b/viskit/Schemas/qstat.xsd
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+            xmlns:ns="http://xml.netbeans.org/examples/targetNS"
+            targetNamespace="http://xml.netbeans.org/examples/targetNS"
+            xmlns="http://xml.netbeans.org/examples/targetNS"
+            elementFormDefault="qualified">
+
+  
+<!--
+    Document   : qstat.xsd
+    Created on : March 14, 2006, 4:39 PM
+    Author     : Rick Goldberg
+    Description: qstat -xml format 
+        Licensed from Sun Grid Engine.
+-->
+
+
+
+<!--___INFO__MARK_BEGIN__
+/*************************************************************************
+ * 
+ *  The Contents of this file are made available subject to the terms of
+ *  the Sun Industry Standards Source License Version 1.2
+ * 
+ *  Sun Microsystems Inc., March, 2001
+ * 
+ * 
+ *  Sun Industry Standards Source License Version 1.2
+ *  =================================================
+ *  The contents of this file are subject to the Sun Industry Standards
+ *  Source License Version 1.2 (the "License"); You may not use this file
+ *  except in compliance with the License. You may obtain a copy of the
+ *  License at http://gridengine.sunsource.net/Gridengine_SISSL_license.html
+ * 
+ *  Software provided under this License is provided on an "AS IS" basis,
+ *  WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ *  WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ *  MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ *  See the License for the specific provisions governing your rights and
+ *  obligations concerning the Software.
+ * 
+ *   The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ * 
+ *   Copyright: 2001 by Sun Microsystems, Inc.
+ * 
+ *   All Rights Reserved.
+ * 
+ ************************************************************************/
+___INFO__MARK_END__-->
+
+
+   <xsd:element name="job_info">
+      <xsd:complexType>
+         <xsd:annotation>
+            <xsd:documentation> 
+               This schema describes most of the qstat outputs. There are extra
+               schema defintions for "qstat -j" and and "qstat -j job".
+            </xsd:documentation>
+         </xsd:annotation>
+         <xsd:sequence>
+            <xsd:element name="queue_info" type="queue_info_t" minOccurs="0" maxOccurs="unbounded"/>
+            <xsd:element name="job_info" type="job_info_t" minOccurs="0" maxOccurs="unbounded"/>
+            <xsd:element name="cluster_queue_summary" type="cqueue_summary_t" minOccurs="0" maxOccurs="unbounded"/>
+         </xsd:sequence>
+      </xsd:complexType>   
+   </xsd:element>
+
+<!-- ======================================= -->
+<!-- general qstat output                    -->
+
+   <xsd:element name="cqueue_summary_t">
+      <xsd:complexType>
+         <xsd:annotation>
+            <xsd:documentation></xsd:documentation>
+         </xsd:annotation>
+         <xsd:sequence>
+            <xsd:element name="name" type="xsd:String"/>
+            <xsd:element name="used" type="xsd:positiveInteger"/>
+            <xsd:element name="available" type="xsd:positiveInteger"/>
+            <xsd:element name="total" type="xsd:positiveInteger"/>
+            <xsd:element name="temp_disabled" type="xsd:positiveInteger"/>
+            <xsd:element name="manual_intervention" type="xsd:positiveInteger"/>
+         
+            <xsd:element name="suspend_manual" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="suspend_threshold" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="suspend_on_subordinate" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="suspend_calendar" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="unknown" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="load_alarm" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="disabled_manual" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="disabled_calendar" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="ambiguous" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="orphaned" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="error" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1"/>
+         </xsd:sequence>
+      </xsd:complexType>
+   </xsd:element> 
+
+   <xsd:element name="queue_info_t">
+      <xsd:complexType>
+         <xsd:annotation>
+            <xsd:documentation></xsd:documentation>
+         </xsd:annotation>
+         <xsd:sequence>
+            <xsd:element name="name" type="xsd:String" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="qtype" type="xsd:String" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="slots_used" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="slots_total" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="load_avg" type="xsd:float" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="arch" type="xsd:String" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="state" type="xsd:String" minOccurs="0" maxOccurs="1"/>
+          
+            <xsd:element name="message" type="xsd:String" minOccurs="0" maxOccurs="unbounded"/>
+          
+            <xsd:element name="resource" type="resource_t" minOccurs="0" maxOccurs="unbounded"/>
+           
+            <xsd:element name="job_list" type="job_list_t" minOccurs="0" maxOccurs="unbounded"/>
+            
+         </xsd:sequence>
+      </xsd:complexType>
+   </xsd:element> 
+
+   <xsd:element name="job_info_t">
+      <xsd:complexType>
+         <xsd:annotation>
+            <xsd:documentation></xsd:documentation>
+         </xsd:annotation>
+         <xsd:sequence>
+            <xsd:element name="job_list" type="job_list_t" minOccurs="0" maxOccurs="unbounded"/>
+         </xsd:sequence>
+      </xsd:complexType>
+   </xsd:element> 
+
+   <xsd:element name="job_list_t">
+      <xsd:complexType>
+         <xsd:annotation>
+            <xsd:documentation></xsd:documentation>
+         </xsd:annotation>
+         <xsd:sequence>
+            <xsd:element name="JB_job_number" type="xsd:positiveInteger"/>  
+            <xsd:element name="JAT_prio" type="xsd:float"/>
+            <xsd:element name="JAT_ntix" type="xsd:float" minOccurs="0" maxOccurs="1"/>
+            
+            <xsd:element name="JB_nurg" type="xsd:float" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="JB_urg" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="JB_rrcontr" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="JB_wtcontr" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="JB_dlcontr" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="JB_priority" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1"/>
+            
+            <xsd:element name="JB_name" type="xsd:String"/>
+            <xsd:element name="JB_owner" type="xsd:String"/>
+            <xsd:element name="JB_project" type="xsd:String" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="JB_department" type="xsd:String" minOccurs="0" maxOccurs="1"/>
+
+            <xsd:element name="state" type="xsd:String"/>
+            
+            <xsd:element name="JB_submission_time" type="xsd:dateTime" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="JAT_start_time" type="xsd:dateTime" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="JB_deadline" type="xsd:dateTime" minOccurs="0" maxOccurs="1"/>
+
+            <xsd:element name="cpu_usage" type="xsd:float" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="mem_usage" type="xsd:float" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="io_usage" type="xsd:float" minOccurs="0" maxOccurs="1"/>
+
+            <xsd:element name="tickets" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1"/> 
+            <xsd:element name="JB_override_tickets" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="JB_jobshare" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="otickets" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="ftickets" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="stickets" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="JAT_share" type="xsd:float" minOccurs="0" maxOccurs="1"/>
+            
+            <xsd:element name="queue_name" type="xsd:String" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="master" type="xsd:String" minOccurs="0" maxOccurs="1"/>
+            
+            <xsd:element name="slots" type="xsd:positiveInteger"/> 
+            <xsd:element name="tasks" type="xsd:String" minOccurs="0" maxOccurs="1"/>
+
+            <xsd:element name="requested_PE" type="requested_PE_t" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="granted_PE" type="granted_PE_t" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="JB_checkpoint_name" type="xsd:String" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="hard_request" type="request_t" minOccurs="0" maxOccurs="unbounded"/>
+            <xsd:element name="def_hard_request" type="request_t" minOccurs="0" maxOccurs="unbounded"/>
+            <xsd:element name="soft_request" type="request_t" minOccurs="0" maxOccurs="unbounded"/>
+
+            <xsd:element name="hard_req_queue" type="xsd:String" minOccurs="0" maxOccurs="unbounded"/>
+            <xsd:element name="soft_req_queue" type="xsd:String" minOccurs="0" maxOccurs="unbounded"/>
+            <xsd:element name="master_hard_req_queue" type="xsd:String" minOccurs="0" maxOccurs="unbounded"/>
+            <xsd:element name="predecessor_jobs_req" type="xsd:String" minOccurs="0" maxOccurs="unbounded"/>
+            <xsd:element name="predecessor_jobs" type="xsd:positiveInteger" minOccurs="0" maxOccurs="unbounded"/>
+
+         </xsd:sequence>
+         <xsd:attribute name="state" type="xsd:string" use="required"/>
+      </xsd:complexType>
+   </xsd:element> 
+
+<!-- ======================================= -->
+
+   <xsd:element name="request_t" type="xsd:string">
+      <xsd:complexType>
+         <xsd:annotation>
+            <xsd:documentation></xsd:documentation>
+         </xsd:annotation>
+         <xsd:attribute name="name" type="xsd:string" use="required"/>
+          <xsd:attribute name="resource_contribution" type="xsd:float" use="implied"/>
+      </xsd:complexType>
+   </xsd:element>
+
+   <xsd:element name="granted_PE_t" type="xsd:positiveInteger">
+      <xsd:complexType>
+         <xsd:annotation>
+            <xsd:documentation></xsd:documentation>
+         </xsd:annotation>
+         <xsd:attribute name="name" type="xsd:string" use="required"/>
+      </xsd:complexType>
+   </xsd:element>
+
+   <xsd:element name="requested_PE_t" type="xsd:string">
+      <xsd:complexType>
+         <xsd:annotation>
+            <xsd:documentation></xsd:documentation>
+         </xsd:annotation>
+         <xsd:attribute name="name" type="xsd:string" use="required"/>
+      </xsd:complexType>
+   </xsd:element>
+
+   <xsd:element name="resource_t" type="xsd:string">
+      <xsd:complexType>
+         <xsd:annotation>
+            <xsd:documentation></xsd:documentation>
+         </xsd:annotation>
+         <xsd:attribute name="name" type="xsd:string" use="required"/>
+         <xsd:attribute name="type" type="xsd:string" use="required"/>
+      </xsd:complexType>
+   </xsd:element>
+
+</xsd:schema>
diff --git a/viskit/Schemas/simkit.xsd b/viskit/Schemas/simkit.xsd
new file mode 100644
index 0000000000000000000000000000000000000000..5764da8d5a8823458fcde2751d39633f08df1399
--- /dev/null
+++ b/viskit/Schemas/simkit.xsd
@@ -0,0 +1,193 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- SVN ID: $Id$ -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+  <xs:element name="SimEntity">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="head"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Comment"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Parameter"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="StateVariable"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Event"/>
+        <xs:element minOccurs="0" ref="Code"/>
+      </xs:sequence>
+      <xs:attribute name="name" use="required"/>
+      <xs:attribute name="package" default="examples"/>
+      <xs:attribute name="version" default="1.0"/>
+      <xs:attribute name="author"/>
+      <xs:attribute name="extend" default="SimEntityBase"/>
+      <xs:attribute name="implement"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="head">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="meta"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="meta">
+    <xs:complexType>
+      <xs:attribute name="name" use="required"/>
+      <xs:attribute name="content"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Comment" type="xs:string"/>
+  <xs:element name="Parameter">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Comment"/>
+      </xs:sequence>
+      <xs:attribute name="name" use="required" type="xs:ID"/>
+      <xs:attribute name="type" use="required"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="StateVariable">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Comment"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Code"/>
+      </xs:sequence>
+      <xs:attribute name="name" use="required" type="xs:ID"/>
+      <xs:attribute name="type" use="required"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Event">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Comment"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Argument"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="LocalVariable"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="StateTransition"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="Schedule"/>
+          <xs:element ref="Cancel"/>
+        </xs:choice>
+
+        <!-- Regardless of this sequence, code blocks will appear in the correct
+             place in generated source code -->
+        <xs:element minOccurs="0" ref="Code"/>
+        <xs:element minOccurs="0" ref="Coordinate"/>
+      </xs:sequence>
+      <xs:attribute name="name" use="required" type="xs:ID"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Code" type="xs:string"/>
+  <xs:element name="Argument">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Comment"/>
+      </xs:sequence>
+      <xs:attribute name="name" use="required" type="xs:NMTOKEN"/>
+      <xs:attribute name="type" use="required"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="LocalVariable">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Comment"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Code"/>
+      </xs:sequence>
+      <xs:attribute name="name" use="required" type="xs:NMTOKEN"/>
+      <xs:attribute name="type" use="required"/>
+      <xs:attribute name="value"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Coordinate">
+    <xs:complexType>
+      <xs:attribute name="x" use="required"/>
+      <xs:attribute name="y" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Operation">
+    <xs:complexType>
+      <xs:attribute name="method" use="required"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Assignment">
+    <xs:complexType>
+      <xs:attribute name="value" use="required"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="LocalVariableAssignment">
+      <xs:complexType>
+      <xs:attribute name="value"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="LocalVariableInvocation">
+      <xs:complexType>
+      <xs:attribute name="method"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <!-- bug fix 1183 -->
+  <xs:element name="StateTransition">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:choice>
+          <xs:element ref="Assignment"/>
+          <xs:element ref="Operation"/>
+        </xs:choice>
+        <xs:element minOccurs="0" maxOccurs="1" ref="LocalVariableAssignment"/>
+        <xs:element minOccurs="0" maxOccurs="1" ref="LocalVariableInvocation"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Code"/>
+      </xs:sequence>
+      <xs:attribute name="state" use="required" type="xs:IDREF"/>
+      <xs:attribute name="index"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="EdgeParameter">
+    <xs:complexType>
+      <xs:attribute name="value" use="required"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Schedule">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Code"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Comment"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="EdgeParameter"/>
+      </xs:sequence>
+      <xs:attribute name="delay" default="0.0"/>
+      <xs:attribute name="event" use="required" type="xs:IDREF"/>
+      <xs:attribute name="condition"/>
+      <xs:attribute name="priority" default="DEFAULT">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="HIGHEST"/>
+            <xs:enumeration value="HIGHER"/>
+            <xs:enumeration value="HIGH"/>
+            <xs:enumeration value="DEFAULT"/>
+            <xs:enumeration value="LOW"/>
+            <xs:enumeration value="LOWER"/>
+            <xs:enumeration value="LOWEST"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Cancel">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Code"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Comment"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="EdgeParameter"/>
+      </xs:sequence>
+      <xs:attribute name="event" use="required" type="xs:IDREF"/>
+      <xs:attribute name="condition"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>
diff --git a/viskit/Schemas/statistics.xsd b/viskit/Schemas/statistics.xsd
new file mode 100644
index 0000000000000000000000000000000000000000..ec587670f213ea0535a1cb836ecdfcfa2578cedb
--- /dev/null
+++ b/viskit/Schemas/statistics.xsd
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+  <xs:element name="SampleStatistics">
+    <xs:complexType>
+      <xs:attribute name="mean" default="0.0" type="xs:decimal"/>
+      <xs:attribute name="variance" default="0.0" type="xs:decimal"/>
+      <xs:attribute name="standardDeviation" default="0.0" type="xs:decimal"/>
+      <xs:attribute name="count" default="0" type="xs:integer"/>
+      <xs:attribute name="minObs" default="0.0" type="xs:decimal"/>
+      <xs:attribute name="maxObs" default="0.0" type="xs:decimal"/>
+      <xs:attribute name="sampleType" default="TALLY">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="TALLY"/>
+            <xs:enumeration value="TIME_VARYING"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="name"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="IndexedSampleStatistics">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="SampleStatistics"/>
+      </xs:sequence>
+      <xs:attribute name="name"/>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>
diff --git a/viskit/Schemas/viskit.xsd b/viskit/Schemas/viskit.xsd
new file mode 100644
index 0000000000000000000000000000000000000000..867ea3c631a759219202fae16f71f03ab3cc6098
--- /dev/null
+++ b/viskit/Schemas/viskit.xsd
@@ -0,0 +1,541 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+  <!-- this is next-generation merged schema, work in progress, not yet used -->
+  <!-- change: renamed   simkit.xsd (dissimilar) Schedule as AssemblySchedule -->
+  <!-- change: renamed assembly.xsd (dissimilar) SimEntity as AssemblySimEntity -->
+  <!-- assembly.xsd ============================================= -->
+  <xs:group name="DesignParameters">
+    <xs:sequence>
+      <xs:element ref="TerminalParameter"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:element name="ValueRange" abstract="true">
+    <xs:complexType>
+      <xs:attribute name="lowValue"/>
+      <xs:attribute name="highValue"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:group name="Parameters">
+    <xs:choice>
+      <xs:element ref="MultiParameter"/>
+      <xs:element ref="FactoryParameter"/>
+      <xs:element ref="TerminalParameter"/>
+    </xs:choice>
+  </xs:group>
+  <xs:element name="Statistics" abstract="true"/>
+  <xs:element name="SimkitAssembly">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="head"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="DesignParameters"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="AssemblySimEntity"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="EventGraph"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="PropertyChangeListener"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="SimEventListenerConnection"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="PropertyChangeListenerConnection"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Adapter"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Output"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Verbose"/>
+        <xs:element minOccurs="0" ref="Schedule"/>
+        <xs:element minOccurs="0" ref="Experiment"/>
+      </xs:sequence>
+      <xs:attribute name="name" use="required" type="xs:ID"/>
+      <xs:attribute name="version" default="1.0"/>
+      <xs:attribute name="package" use="required"/>
+      <xs:attribute name="author"/>
+      <xs:attribute name="extend" default="viskit.assembly.ViskitAssembly"/>
+      <xs:attribute name="implement"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="head">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="meta"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="meta">
+    <xs:complexType>
+      <xs:attribute name="name" type="xs:NMTOKEN" use="required"/>
+      <xs:attribute name="content"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="AssemblySimEntity">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="Parameters"/>
+        <xs:element minOccurs="0" ref="Coordinate"/>
+      </xs:sequence>
+      <xs:attribute name="name" type="xs:NMTOKEN" use="required"/>
+      <xs:attribute name="type" use="required"/>
+      <xs:attribute name="url"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="TerminalParameter">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="ValueRange"/>
+      </xs:sequence>
+      <xs:attribute name="name"/>
+      <xs:attribute name="linkRef" type="xs:IDREF"/>
+      <xs:attribute name="link" type="xs:ID"/>
+      <xs:attribute name="value"/>
+      <xs:attribute name="type" use="required"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="DoubleRange" substitutionGroup="ValueRange"/>
+  <xs:element name="IntegerRange" substitutionGroup="ValueRange"/>
+  <xs:element name="MultiParameter">
+    <xs:complexType>
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="Parameters"/>
+      <xs:attribute name="name"/>
+      <xs:attribute name="type" use="required"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="FactoryParameter">
+    <xs:complexType>
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="Parameters"/>
+      <xs:attribute name="name"/>
+      <xs:attribute name="factory" use="required"/>
+      <xs:attribute name="method" default="getInstance"/>
+      <xs:attribute name="type" use="required"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Coordinate">
+    <xs:complexType>
+      <xs:attribute name="x" use="required"/> <!-- TODO  type="xs:float" -->
+      <xs:attribute name="y" use="required"/> <!-- TODO  type="xs:float" -->
+    </xs:complexType>
+  </xs:element>
+  <!--
+     The proper mode for a PropertyChangeListener is singular, however, for
+    backwards compatibility with older EventGraphs, we allow both singular and
+    plural modes (tdn 16 SEP 2008)
+  -->
+  <xs:element name="PropertyChangeListener">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="Parameters"/>
+        <xs:element minOccurs="0" ref="Coordinate"/>
+      </xs:sequence>
+      <xs:attribute name="name" use="required" type="xs:ID"/>
+      <xs:attribute name="type" use="required"/>
+      <xs:attribute name="mode" default="listener">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="replicationStat"/>
+            <xs:enumeration value="replicationStats"/>
+            <xs:enumeration value="designPointStat"/>
+            <xs:enumeration value="designPointStats"/>
+            <xs:enumeration value="listener"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="meanStatistics" default="false">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="true"/>
+            <xs:enumeration value="false"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="countStatistics" default="true">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="true"/>
+            <xs:enumeration value="false"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="SimEventListenerConnection">
+    <xs:complexType>
+      <xs:attribute name="listener" use="required"/>
+      <xs:attribute name="source" use="required"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="PropertyChangeListenerConnection">
+    <xs:complexType>
+      <xs:attribute name="property"/>
+      <xs:attribute name="listener" use="required"/>
+      <xs:attribute name="source" use="required"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Output">
+    <xs:complexType>
+      <xs:attribute name="entity" use="required" type="xs:NMTOKEN"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Verbose">
+    <xs:complexType>
+      <!-- Bugfix 1425 (xs:NMTOKEN) -->
+      <xs:attribute name="entity" use="required" type="xs:NMTOKEN"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Schedule">
+    <xs:complexType>
+      <xs:attribute name="stopTime" default="0.0"/>
+      <xs:attribute name="verbose" default="true">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="true"/>
+            <xs:enumeration value="false"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="numberReplications" default="1"/>
+      <xs:attribute name="printReplicationReports" default="true">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="true"/>
+            <xs:enumeration value="false"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="printSummaryReport" default="true">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="true"/>
+            <xs:enumeration value="false"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="saveReplicationData" default="true">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="true"/>
+            <xs:enumeration value="false"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="AssemblySchedule">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Code"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Comment"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="EdgeParameter"/>
+      </xs:sequence>
+      <xs:attribute name="delay" default="0.0"/>
+      <xs:attribute name="event" use="required" type="xs:IDREF"/>
+      <xs:attribute name="condition"/>
+      <xs:attribute name="priority" default="DEFAULT">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="HIGHEST"/>
+            <xs:enumeration value="HIGHER"/>
+            <xs:enumeration value="HIGH"/>
+            <xs:enumeration value="DEFAULT"/>
+            <xs:enumeration value="LOW"/>
+            <xs:enumeration value="LOWER"/>
+            <xs:enumeration value="LOWEST"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Adapter">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="Coordinate"/>
+      </xs:sequence>
+      <xs:attribute name="name" type="xs:NMTOKEN" use="required"/>
+      <xs:attribute name="eventHeard" use="required"/>
+      <xs:attribute name="eventSent" use="required"/>
+      <xs:attribute name="from" use="required" type="xs:NMTOKEN"/>
+      <xs:attribute name="to" use="required" type="xs:NMTOKEN"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Log" type="xs:string"/>
+  <xs:element name="Errors" type="xs:string"/>
+  <xs:element name="PropertyChange">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Statistics"/>
+      </xs:sequence>
+      <xs:attribute name="listenerName" use="required"/>
+      <xs:attribute name="property"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="SampleStatistics" substitutionGroup="Statistics">
+    <xs:complexType>
+      <xs:attribute name="name"/>
+      <xs:attribute name="mean" default="0.0"/>
+      <xs:attribute name="variance" default="0.0"/>
+      <xs:attribute name="standardDeviation" default="0.0"/>
+      <xs:attribute name="count" default="0"/>
+      <xs:attribute name="minObs" default="0.0"/>
+      <xs:attribute name="maxObs" default="0.0"/>
+      <xs:attribute name="samplingType" default="TALLY">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="TALLY"/>
+            <xs:enumeration value="TIME_VARYING"/>
+            <xs:enumeration value="LINEAR"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="IndexedSampleStatistics" substitutionGroup="Statistics">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="SampleStatistics"/>
+      </xs:sequence>
+      <xs:attribute name="name"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Results">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="Log"/>
+        <xs:element ref="PropertyChange"/>
+        <xs:element ref="Errors"/>
+      </xs:choice>
+      <xs:attribute name="sample" use="required"/>
+      <xs:attribute name="designPoint" use="required"/>
+      <xs:attribute name="index"/>
+      <xs:attribute name="job"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="DesignPoint">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="TerminalParameter"/>
+        <xs:element minOccurs="0" ref="Script"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Replication"/>
+        <xs:element minOccurs="0" ref="Results"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Statistics"/>
+      </xs:sequence>
+      <xs:attribute name="index"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Replication">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Statistics"/>
+      </xs:sequence>
+      <xs:attribute name="index"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Script" type="xs:string"/>
+  <xs:element name="Sample">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="DesignPoint"/>
+      </xs:sequence>
+      <xs:attribute name="index"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Experiment">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="Script"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Sample"/>
+      </xs:sequence>
+      <xs:attribute name="jobID"/>
+      <xs:attribute name="type" default="latin-hypercube">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="latin-hypercube"/>
+            <xs:enumeration value="full-factorial"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="replicationsPerDesignPoint" default="1"/>
+      <xs:attribute name="totalSamples" default="1"/>
+      <xs:attribute name="jitter" default="true">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="true"/>
+            <xs:enumeration value="false"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="timeout" default="0"/>
+      <xs:attribute name="debug" default="false">
+        <xs:simpleType>
+          <xs:restriction base="xs:token">
+            <xs:enumeration value="true"/>
+            <xs:enumeration value="false"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="EventGraph">
+    <xs:complexType mixed="true">
+      <xs:attribute name="fileName"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="PasswordFile">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="User"/>
+      </xs:sequence>
+      <xs:attribute name="name" default="/tmp/passwd.xml"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="User">
+    <xs:complexType>
+      <xs:attribute name="name" use="required" type="xs:ID"/>
+      <xs:attribute name="password" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <!-- simkit.xsd ============================================ -->
+  <xs:element name="SimEntity">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="head"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Comment"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Parameter"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="StateVariable"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Event"/>
+        <xs:element minOccurs="0" ref="Code"/>
+      </xs:sequence>
+      <xs:attribute name="name" type="xs:NMTOKEN" use="required"/>
+      <xs:attribute name="package" default="examples"/>
+      <xs:attribute name="version" default="1.0"/>
+      <xs:attribute name="author"/>
+      <xs:attribute name="extend" default="SimEntityBase"/>
+      <xs:attribute name="implement"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Comment" type="xs:string"/>
+  <xs:element name="Parameter">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Comment"/>
+      </xs:sequence>
+      <xs:attribute name="name" use="required" type="xs:ID"/>
+      <xs:attribute name="type" use="required"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="StateVariable">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Comment"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Code"/>
+      </xs:sequence>
+      <xs:attribute name="name" use="required" type="xs:ID"/>
+      <xs:attribute name="type" use="required"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Event">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Comment"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Argument"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="LocalVariable"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="StateTransition"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="AssemblySchedule"/>
+          <xs:element ref="Cancel"/>
+        </xs:choice>
+        <!-- Regardless of this sequence, code blocks will appear in the correct
+             place in generated source code -->
+        <xs:element minOccurs="0" ref="Code"/>
+        <xs:element minOccurs="0" ref="Coordinate"/>
+      </xs:sequence>
+      <xs:attribute name="name" use="required" type="xs:ID"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Code" type="xs:string"/>
+  <xs:element name="Argument">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Comment"/>
+      </xs:sequence>
+      <xs:attribute name="name" use="required" type="xs:NMTOKEN"/>
+      <xs:attribute name="type" use="required"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="LocalVariable">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Comment"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Code"/>
+      </xs:sequence>
+      <xs:attribute name="name" use="required" type="xs:NMTOKEN"/>
+      <xs:attribute name="type" use="required"/>
+      <xs:attribute name="value"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Operation">
+    <xs:complexType>
+      <xs:attribute name="method" use="required"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Assignment">
+    <xs:complexType>
+      <xs:attribute name="value" use="required"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="LocalVariableAssignment">
+      <xs:complexType>
+      <xs:attribute name="value"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="LocalVariableInvocation">
+      <xs:complexType>
+      <xs:attribute name="method"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <!-- bug fix 1183 -->
+  <xs:element name="StateTransition">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:choice>
+          <xs:element ref="Assignment"/>
+          <xs:element ref="Operation"/>
+        </xs:choice>
+        <xs:element minOccurs="0" maxOccurs="1" ref="LocalVariableAssignment"/>
+        <xs:element minOccurs="0" maxOccurs="1" ref="LocalVariableInvocation"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Code"/>
+      </xs:sequence>
+      <xs:attribute name="state" use="required" type="xs:IDREF"/>
+      <xs:attribute name="index"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="EdgeParameter">
+    <xs:complexType>
+      <xs:attribute name="value" use="required"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Cancel">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Code"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Comment"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="EdgeParameter"/>
+      </xs:sequence>
+      <xs:attribute name="event" use="required" type="xs:IDREF"/>
+      <xs:attribute name="condition"/>
+      <xs:attribute name="description"/>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>
diff --git a/viskit/configuration/Viskit.ico b/viskit/configuration/Viskit.ico
new file mode 100644
index 0000000000000000000000000000000000000000..c9d5908c91e327600695feac75e406ee99fbb30a
Binary files /dev/null and b/viskit/configuration/Viskit.ico differ
diff --git a/viskit/configuration/c_app.xml b/viskit/configuration/c_app.xml
new file mode 100644
index 0000000000000000000000000000000000000000..bfa3ce358d8ae2ad2bbe0c44974a9f1f5fa6da43
--- /dev/null
+++ b/viskit/configuration/c_app.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Viskit application configuration file c_app.xml -->
+
+<!-- Programming note: values in this file are retrieved by keys such as 'app.beanshell.warning' -->
+<!-- Programming note: the root element name is ignored when assembling keys -->
+<ViskitConfig>
+    <app>
+        <beanshell>
+            <warning>true</warning>
+        </beanshell>
+        <mainframe>
+          <size h="680" w="930"/>
+        </mainframe>
+        <projecthome>
+            <!-- These two attributes MUST always be at least zero-length Strings -->
+            <!-- DefaultProject is included in this template for convenience -->
+            <path dir="../examples/src"/>
+            <name value="ViskitOpenDis7Examples"/>
+        </projecthome>
+        <tabs>
+            <EventGraphEditor visible="true"/>
+            <AssemblyEditor visible="true"/>
+            <AssemblyRun visible="true"/>
+            <DesignOfExperiments visible="false"/>
+            <ClusterRun visible="false"/>
+            <AnalystReport visible="false"/>
+        </tabs>
+        <debug>false</debug>
+    </app>
+    <history>
+        <ProjectEditor>
+            <Recent>
+            </Recent>
+        </ProjectEditor>
+        <EventGraphEditor>
+            <Recent>
+            </Recent>
+        </EventGraphEditor>
+        <AssemblyEditor>
+            <Recent>
+            </Recent>
+        </AssemblyEditor>
+        <Cluster>
+            <Account last="true"  server="wipeout.hpr.nps.edu" port="4444" username="" password=""/>
+        </Cluster>
+    </history>
+</ViskitConfig>
diff --git a/viskit/configuration/c_gui.xml b/viskit/configuration/c_gui.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4766e3a3514a7ca9644b229129fb48b83a6cac9f
--- /dev/null
+++ b/viskit/configuration/c_gui.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- values in this file are retrieved by keys such as 'gui.beanshellerrordialog.title' -->
+<!-- the root element name is ignored when assembling keys -->
+<ViskitConfig>
+  <gui>
+    <beanshellerrordialog>
+      <title>Warning</title>
+      <label>Java language error:</label>
+      <question>Ignore and continue?</question>
+      <sessioncheckbox>Hide warnings for current session</sessioncheckbox>
+      <preferencescheckbox>Hide warnings permanently</preferencescheckbox>
+      <preferencestooltip>A very primitive Java compile warning indicator</preferencestooltip>
+    </beanshellerrordialog>
+    <title>
+      <projecthome>
+        <generation>Viskit Project Generation Dialog</generation>
+      </projecthome>
+    </title>
+    <tooltip>
+      <projecthome>Select a location for a Viskit project home</projecthome>
+    </tooltip>
+    <button>
+      <projectgeneration>
+        <text>Generate Project</text>
+        <image>PlayGreen16.gif</image>
+        <tt>Generate your Viskit project</tt>
+      </projectgeneration>
+    </button>
+    <projecttitle>
+        <name value="DefaultProject"/>
+    </projecttitle>
+    <lookandfeel>default</lookandfeel>
+  </gui>
+</ViskitConfig>
diff --git a/viskit/configuration/c_gui_mac.xml b/viskit/configuration/c_gui_mac.xml
new file mode 100644
index 0000000000000000000000000000000000000000..618bfc878571494378ba98c23c47ab2ace615463
--- /dev/null
+++ b/viskit/configuration/c_gui_mac.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- values in this file are retrieved by keys such as 'gui.beanshellerrordialog.title' -->
+<!-- the root element name is ignored when assembling keys -->
+<ViskitConfig>
+  <gui>
+    <beanshellerrordialog>
+      <title>Warning</title>
+      <label>Java language error:</label>
+      <question>Ignore and continue?</question>
+      <sessioncheckbox>Hide warnings for current session</sessioncheckbox>
+      <preferencescheckbox>Hide warnings permanently</preferencescheckbox>
+      <preferencestooltip>A very primitive Java compile warning indicator</preferencestooltip>
+    </beanshellerrordialog>
+    <title>
+      <projecthome>
+        <generation>Viskit Project Generation Dialog</generation>
+      </projecthome>
+    </title>
+    <tooltip>
+      <projecthome>Select a location for a Viskit project home</projecthome>
+    </tooltip>
+    <button>
+      <projectgeneration>
+        <text>Generate Project</text>
+        <image>PlayGreen16.gif</image>
+        <tt>Generate your Viskit project</tt>
+      </projectgeneration>
+    </button>
+    <projecttitle>
+        <name value="DefaultProject"/>
+    </projecttitle>
+    <lookandfeel>platform</lookandfeel>
+  </gui>
+</ViskitConfig>
diff --git a/viskit/configuration/vconfig.xml b/viskit/configuration/vconfig.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8c7430008a5cc8b83eac65a6bc8c489df82fe058
--- /dev/null
+++ b/viskit/configuration/vconfig.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This is the master file used by the Apache Commons Configuration code. -->
+<configuration>
+  <header>
+    <!-- Meta data about the resulting combined configuration -->
+  </header>
+  <override>
+    <!-- Configuration declarations with override semantics -->
+    <!-- stack up your config files here -->
+    <xml fileName="c_app.xml" config-name="app" />
+    <xml fileName="c_gui.xml" config-name="gui" />
+  </override>
+  <additional>
+    <!-- Configuration declarations that form a union configuration -->
+  </additional>
+</configuration>
\ No newline at end of file
diff --git a/viskit/configuration/viskitProject.xml b/viskit/configuration/viskitProject.xml
new file mode 100644
index 0000000000000000000000000000000000000000..91c9a9e3e6ee9ec708e59c9cf3bedc2f97236e45
--- /dev/null
+++ b/viskit/configuration/viskitProject.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ViskitProject name="DefaultProject">
+  <AnalystReports name="AnalystReports" />
+  <AssembliesDirectory name="Assemblies" />
+  <EventGraphsDirectory name="EventGraphs" />
+  <BuildDirectory name="build">
+    <ClassesDirectory name="classes" />
+    <SourceDirectory name="src" />
+  </BuildDirectory>
+  <DistDirectory name="dist" />
+  <LibDirectory name="lib" />
+</ViskitProject>
diff --git a/viskit/doc/NB-Project-Creation.txt b/viskit/doc/NB-Project-Creation.txt
new file mode 100644
index 0000000000000000000000000000000000000000..24413e57aa8e84b075c51cbea3cfb5eb033fe6ad
--- /dev/null
+++ b/viskit/doc/NB-Project-Creation.txt
@@ -0,0 +1,47 @@
+22 JAN 2016
+
+In order to closely study, without the overhead for how Viskit creates and
+runs a project, once a project is produced, it can be easily ported
+over to a NetBeans (or standalone) project, both of which can be launched via
+Apache Ant.
+
+1) Move/Copy the ${myViskitProjects/${projectName}/build/src directory up two
+levels to the ${projectName} directory. The build/src directory is created by
+Viskit before it generates Java source out of all Event Graph XML files in the
+project and is continually overwritten during Viskit runtime.
+
+2) Modify the assembly source code (now located in ${projectName}src/) as
+detailed here:
+
+In the constructor under setNumberReplications(1), paste:
+        setVerboseReplication(-1);
+        setPrintReplicationReports(true);
+        setPrintSummaryReport(true);
+        setSaveReplicationData(false);
+        setOutputStream(System.out);
+
+These are all Viskit Runtime specific and will cause errors to be thrown when
+run from a standalone (non-Viskit) context if set otherwise.
+
+Modify setStopTime(1000); to the desired # of milliseconds of runtime
+
+3) In the method createDesignPointStats(), comment out
+super.createDesignPointStats(). Again, we are not in the Viskit Runtime
+environment. We are only using some of Viskit's classpath for standalone
+operation.
+
+4) Copy over Viskit's configuration, Schemas and lib directories (lib/support
+can be omitted) into your standalone project directory. It will help to modify 
+two configuration files found in the /configuration directory, c_app.xml -> 
+modify the projecthome.path and projecthome.name attributes to be the parent 
+directory (use full path names) and the project directory name. For c_gui.xml, 
+modify the projecttitle.name attribute to be the same name as the project.name. 
+This will ensure seamless viskit.jar use for your standalone project.
+
+5) Next, create a new NetBeans Java project stating "with source code." Set up
+the classpath to point to the project's "lib" directory. The viskit.jar will
+also be required in the classpath, but you will not be running Viskit. It is
+found in Viskit's build/lib directory. The Assembly source will be your
+project's "Main."
+
+Select "Run" from Netbeans, or type: java -jar YourProjectName.jar into the CLI
diff --git a/viskit/doc/ViskitOverview.pdf b/viskit/doc/ViskitOverview.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..8d3a084d4959c5adcdd6abe98996dcf8b0f9d837
Binary files /dev/null and b/viskit/doc/ViskitOverview.pdf differ
diff --git a/viskit/doc/ViskitSoftwareDesignSummary.txt b/viskit/doc/ViskitSoftwareDesignSummary.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2b4474445236ab32c3eac5922ab4967c625459e4
--- /dev/null
+++ b/viskit/doc/ViskitSoftwareDesignSummary.txt
@@ -0,0 +1,206 @@
+This file will attempt to explain the inner workings of Viskit.
+
+To build Viskit, from the command line, type "ant compile."  This process will
+first generate XML binding source files from various Schema files located in the
+"Schemas: directory.  The generated bindings are generated to specific packages
+in the "src" directory of the Viskit build.  This is accomplished via JAXB.  XML
+bindings help to interface java source with the XML representations of
+EventGraph and Assembly files.
+
+Next, the main Viskit source is compiled.  Viskit can now be launched by typing
+"ant quick.run" on the command line.  How to use Viskit is explained in the
+JavaHelp tutorial that can be accessed from Viskit once it's launched by
+selecting the Help menu, or by launching the help menu via a command line call
+to "ant help."
+
+When Viskit is first launched, it creates a .viskit directory in the
+${user.home}.  Here, configuration files are placed that can be modified from
+Viskit by selecting File -> Settings.  Things such as what panels to expose, the
+"look and feel" of the UI, size of the UI frame, what project space was last
+opened, what files were recently opened, and other project history data are
+recorded.  Various logging output files are also generated and placed there for
+later reference should an error have occurred.  All of these can be accessed for
+content review by running any of the "ant show.*" targets from the command line.
+
+After the .viskit directory is populated, Viskit will popup a dialog to either
+open an existing Viskit project, create a new one, or exit.  A default Viskit
+project will be created in ${user.home}/MyViskitProjects/DefaultProject if the
+user attempts to open an existing project, but then cancels.  If the user wants
+to create a new project, the dialog will warn of a project with the same name
+and give the user another chance to create a project with a different name.
+
+A Viskit project consists of a set of directories and a project config. file:
+
+AnalystReports      (main directory for reporting material)
+  charts            (JFreeChart charts showing statistical data)
+  images            (main folder for screenshots of all Assembly and EventGraph views)
+    Assemblies
+    EventGraphs
+  statistics        (XML files of Simkit generated statistics)
+  viskit.ico        (favicon for generated HTML reports)
+
+Assemblies          (main folder for Assembly XML files)
+
+EventGraphs         (main folder for EvevtGraph XML files)
+
+build               (generated java source and byte code class files from EventGraph and Assembly XML files)
+  classes
+  src
+
+lib                 (directory to hold project specific java based libraries)
+
+viskitProject.xml   (project configuration XML file)
+
+The most important feature of the viskitProject.xml file is the MD5 caching of
+successfully validated and compiled EventGraph files.  This is to prevent
+unnecessary recompilation of project materials once Viskit re-launches and opens
+an existing project.  The MD5 hashes are recorded under the Cached element of
+the viskitProject.xml file.  If a successfully cached and opened EG is modified
+such that its XML is no longer valid, or doesn't compile, the cached line will
+be removed from the project's cache element until the issue is resolved.  A new
+MD5 hash will then be generated and recorded in the project's cache element.
+
+MD5 caching is not performed on Assemblies.  Assy files are validated and
+compiled each time the Assembly runner is launched.
+
+If a Viskit project has specific dependencies, jar files can be placed in the
+"lib" directory of the project and are automatically exposed on the classpath
+which can be checked by selecting File -> Settings -> Additional classpath
+entries.  Other dependencies can be placed on the classpath when not co-located
+with an existing Viskit project by selecting those jars via the "+" button which
+opens a dialog in the parent project directory in order to navigate to and
+select those jars.  The project's "lib" is merely a convenience folder for
+placing dependency jars.  Jar paths are annotated in the extraClassPaths element
+of the viskitProject.xml file.
+
+A chain of further events is initiated so that Viskit can track EventGraph and
+Assembly XML file modifications.
+
+1) A DirectoryWatch is first set on a /tmp location for EG and Assy files.  A
+listener listens for the opening of, or changes to these files which ensures
+that these copies receive any modifications and are checked before saving them
+back out to the  original file.  In a nutshell, working changes are tracked here
+until the file is validated, then all changes are copied back to the orig.
+files.
+
+2) The nature of the above /tmp file operation is that once Viskit opens, a
+"lock" file is recorded so that next time Viskit opens, the prior /tmp directory
+is deleted in order to observe good housekeeping.
+
+3) Next, the project's EventGraphs directory is parsed for the existence of EG
+XML files.  These files are first validated against an EG schema, after which
+java source is then generated and placed in build/src.  The source is then
+compiled and the completed byte code is placed in build/classes.  Both src and 
+class directories observe package structures.  During the first successful save 
+of an EG XML file, its MD5 hash is generated a recndorded in the 
+viskitProject.xml project file along with the path to its generated byte code 
+(*.class).  The build/classes directory is then placed on the live ClassLoader, 
+the same used to compile these EGs.
+
+Simultaneously, when an EG is successfully compiled, its icon symbol is placed
+on the EG Node pallette of the Assembly Editor panel.  This is more commonly
+known as the Listener Event Graph Object (LEGO) tree.  Accordingly, the current
+ClassLoader is parsed for EGs which will also be depicted, i.e. from Simkit, as
+well as any EGs in "*.kit" jars placed in the project's /lib directory.  This
+allows a user to expand nodes, select EG icons (represented in blue color) and
+drag to the Assembly canvas to visually construct an Assembly.
+
+Also simultaneously, any PropertyChangeListeners parsed from the current
+ClassLoader will be depicted on the PCL pallette of the LEGO tree under the EG
+Lego tree in the same manner as explained above for EGs.  The PCL icons are
+represented with a pink color.
+
+SimEntities and PCLs from other libraries, or class file directories can be
+placed on the Listener Event Graph Object (LEGO) tree by selecting the "+"
+button on the LEGO panel.  This will allow a user to drag those representative
+SimEntity icons onto the Assy pallette for Assy creation.
+
+ * Of importance for the java source generation of an Assembly is the
+ * ParameterMap.  The ParameterMap is an annotation construct placed in
+ * generated, or hand-crafted Event Graph source code to depict all described
+ * parameters of EG constructors which will aid in correct state variable
+ * initialization when constructing Assemblies.
+ *
+ * A zero parameter constructor is always generated in addition to any
+ * parameterized constructors.
+ *
+ * The ParameterMap is also parsed from source code at runtime to allow Viskit
+ * to properly identify constructors of EGs classes on the classpath whether
+ * they are from generated source, or contained in third party libraries.  The
+ * importance of this feature is that iconized EGs will be displayed in the
+ * LEGOs tree panel for drag and drop Assembly construction.
+
+4) At this time, EG files can be manually opened and modified, or created new.
+Due to the unique nature of XML IDs, each method within the same EG file must
+have a unique name to pass XML validation.  Unique naming can be accomplished
+using an underscore character, i.e. Arrival, Arrival_e.  The "e" would denote
+some method argument name.  The names Arrival and Arrival_e would only be used
+in the corresponding XML file representation of the EG.  The node names will
+render correctly without the underscore character.  Java will be generated with
+normally observed method name overloading conventions.
+
+If a new empty Viskit project was just created, a new default EG will be opened.
+If an EG XML file doesn't validate during a file save, or its corresponding
+source code compilation reveals an error, the tab that represents the EG will
+change from a green color (signifying valid XML, good source compilation) to red
+which signifies an unsaved file, failed XML validation, or failed compilation.
+The user will be unable to advance to the Assembly Editor tab until the problem
+is  corrected.  If an EG's source won't compile, any previously compiled byte
+code *.class files of the same name will be deleted preventing inclusion on the
+classpath.  A failed compile will also cause removal of the EG MD5 hash entry
+from the project's viskitProject.xml file.  If upon start up, a previously
+opened XML file passes validation, but fails compilation, the user will again be
+unable to advance to the Assy Editor tab.
+
+Of note is that to ensure all intended entries are made to each node and edge,
+be sure to mouse over each and review the tooltip for correct notation.
+
+5) When an Assembly file is opened, the Design of Experiments (DOE) panel is
+initialized with the Assembly and a /tmp DOE input file is created and passed to
+the DOE Job Launcher.  This file saves the DOE inputs for future use.  DOE is an
+advanced feature and not necessary for pure vanilla Viskit operation.
+
+6) All corresponding EGs are opened in the Event Graph Editor panel when an
+Assembly file is opened in the Assembly Editor panel.  This is accomplished by
+parsing SimEntitiy elements of Assy files to know which EGs to open.  However,
+if any EGs are subclassed from other EGs, these will not open automatically.
+Also, if the last remaining Assy file is closed, all open EGs will close
+including any non-associated EG files that were also opened.
+
+7) At this point, the paths of the any opened Assey and EG files are recorded in
+the .viskit/c_app.xml file and will be opened upon next Viskit launch.  The last
+open Viskit project, as well as its history of Assy and EG files will be listed
+in the File -> Recents menu selections for each editor.
+
+8) Opened Assy files can now be modified, or new Assy files can be created.  EG
+(blue) and PCL (pink) nodes can be dragged across from the LEGOs tree panel, or
+menu items can be invoked to do the same.  EG nodes are parameterized via dialog
+wizards.  RandomVariates are instantiated via the RV Factory static getInstance
+method utilizing (String, Object...) parameters.  Adapters, SimEventListeners
+and Property Change Listeners (PCLs) are the last to be selected, connected and
+initialized before an Assy run is initiated.
+
+9) When it is time to run an Assy file, the Initialize assembly runner button is
+selected from the Assy Editor which fires off a few events:
+- a Directory Watch is set for the Assy file
+- validate and compile the Assy
+- place compiled source on the classpath
+- prepare arguments to launch a separate thread for the Assy
+- populate the Assy Run panel with replication selections, reset Sim start time to 0.0
+- switch panel view to the Assy Run panel
+
+10) When the Simulation Run VCR button is selected, the Assembly is launched via
+a Thread who's ClassLoader context is separate (new) from the ClassLoader that
+Viskit is currently running.  This is to eliminate any in memory static
+references to any previously initialized Assembly parameters thereby giving the \
+current Assembly a clean slate to run independently.  The main Thread run method 
+for each XML Assembly file is via subclass of ViskitAssembly which subclasses 
+BasicAssembly which contains the run method.  Subsequent selection of the VCR 
+run button will produce the exact same results if nothing in the Assy. has been 
+altered.
+
+11) The simulation can be immediately stopped via the VCR stop button, or it can
+run until its sim. stop time has expired for the number of replications 
+selected.  Step-through and rewind buttons are implemented, but not working
+quite right, so, they are disabled upon instantiation from the
+InternalAssemblyRunner as of now.
diff --git a/viskit/images/ViskitIcon.ico b/viskit/images/ViskitIcon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..94879c89b19dd292333b6b1c35e4004cfa0f5d52
Binary files /dev/null and b/viskit/images/ViskitIcon.ico differ
diff --git a/viskit/images/ViskitLogo.png b/viskit/images/ViskitLogo.png
new file mode 100644
index 0000000000000000000000000000000000000000..98521bc9d9c11a8fb5edaf297ec5033fe5d789b2
Binary files /dev/null and b/viskit/images/ViskitLogo.png differ
diff --git a/viskit/lib/actions.jar b/viskit/lib/actions.jar
new file mode 100644
index 0000000000000000000000000000000000000000..d9738058e7d157ac721e070e8ba1b69f8ba76492
Binary files /dev/null and b/viskit/lib/actions.jar differ
diff --git a/viskit/lib/batik-ext.jar b/viskit/lib/batik-ext.jar
new file mode 100644
index 0000000000000000000000000000000000000000..8c904e1f2ab5de46eec36952299a181769e867c1
Binary files /dev/null and b/viskit/lib/batik-ext.jar differ
diff --git a/viskit/lib/bsh-2.0b4.jar b/viskit/lib/bsh-2.0b4.jar
new file mode 100644
index 0000000000000000000000000000000000000000..ebc78a461ab74735954eb7e3627311dd99cce4ee
Binary files /dev/null and b/viskit/lib/bsh-2.0b4.jar differ
diff --git a/viskit/lib/commons-beanutils-1.9.4.jar b/viskit/lib/commons-beanutils-1.9.4.jar
new file mode 100644
index 0000000000000000000000000000000000000000..b73543cbac7cb62b48dc238329d0f9207c3a7095
Binary files /dev/null and b/viskit/lib/commons-beanutils-1.9.4.jar differ
diff --git a/viskit/lib/commons-collections4-4.1.jar b/viskit/lib/commons-collections4-4.1.jar
new file mode 100644
index 0000000000000000000000000000000000000000..43a9413b930b0f474efd2817c195ef2a88d7f7b2
Binary files /dev/null and b/viskit/lib/commons-collections4-4.1.jar differ
diff --git a/viskit/lib/commons-configuration2-2.10.1.jar b/viskit/lib/commons-configuration2-2.10.1.jar
new file mode 100644
index 0000000000000000000000000000000000000000..272b62517aa0c8ed517aa54eb49eb872d3e860b2
Binary files /dev/null and b/viskit/lib/commons-configuration2-2.10.1.jar differ
diff --git a/viskit/lib/commons-digester3-3.2.jar b/viskit/lib/commons-digester3-3.2.jar
new file mode 100644
index 0000000000000000000000000000000000000000..62e5140a5878246eef72fa8ad42670a59fa5074f
Binary files /dev/null and b/viskit/lib/commons-digester3-3.2.jar differ
diff --git a/viskit/lib/commons-lang3-3.14.0.jar b/viskit/lib/commons-lang3-3.14.0.jar
new file mode 100644
index 0000000000000000000000000000000000000000..da9302ff29a560b5f10d3184f25d699fe2d9c186
Binary files /dev/null and b/viskit/lib/commons-lang3-3.14.0.jar differ
diff --git a/viskit/lib/commons-logging-1.3.1.jar b/viskit/lib/commons-logging-1.3.1.jar
new file mode 100644
index 0000000000000000000000000000000000000000..0d508f6efbe4045ba5a7df1d5a6e65fda9d56f9f
Binary files /dev/null and b/viskit/lib/commons-logging-1.3.1.jar differ
diff --git a/viskit/lib/commons-text-1.12.0.jar b/viskit/lib/commons-text-1.12.0.jar
new file mode 100644
index 0000000000000000000000000000000000000000..a2daab1488b485bf8b61d0657c96c2a0c59d705c
Binary files /dev/null and b/viskit/lib/commons-text-1.12.0.jar differ
diff --git a/viskit/lib/jaxb/istack-commons-runtime.jar b/viskit/lib/jaxb/istack-commons-runtime.jar
new file mode 100644
index 0000000000000000000000000000000000000000..2fe5b82620b5765e4a77dc3cca97d3424b6cbaed
Binary files /dev/null and b/viskit/lib/jaxb/istack-commons-runtime.jar differ
diff --git a/viskit/lib/jaxb/javax.activation-api.jar b/viskit/lib/jaxb/javax.activation-api.jar
new file mode 100644
index 0000000000000000000000000000000000000000..986c365096a18b43ea6ec9df09f2f52d10902144
Binary files /dev/null and b/viskit/lib/jaxb/javax.activation-api.jar differ
diff --git a/viskit/lib/jaxb/jaxb-api.jar b/viskit/lib/jaxb/jaxb-api.jar
new file mode 100644
index 0000000000000000000000000000000000000000..45658654712b88d45c9464286ffc2fcb07036bdf
Binary files /dev/null and b/viskit/lib/jaxb/jaxb-api.jar differ
diff --git a/viskit/lib/jaxb/jaxb-runtime.jar b/viskit/lib/jaxb/jaxb-runtime.jar
new file mode 100644
index 0000000000000000000000000000000000000000..0b9ef67c498bd731a34125f540dcc9621adea8d8
Binary files /dev/null and b/viskit/lib/jaxb/jaxb-runtime.jar differ
diff --git a/viskit/lib/jcommon.jar b/viskit/lib/jcommon.jar
new file mode 100644
index 0000000000000000000000000000000000000000..b46a2b61ecd4050186c1a863b09a8471bee72eb7
Binary files /dev/null and b/viskit/lib/jcommon.jar differ
diff --git a/viskit/lib/jdom-1.1.3.jar b/viskit/lib/jdom-1.1.3.jar
new file mode 100644
index 0000000000000000000000000000000000000000..a287727868572178c408ef6ffad0a5f27baed34b
Binary files /dev/null and b/viskit/lib/jdom-1.1.3.jar differ
diff --git a/viskit/lib/jfreechart-1.5.4.jar b/viskit/lib/jfreechart-1.5.4.jar
new file mode 100644
index 0000000000000000000000000000000000000000..ddd7c23d1749ba0678f0002fa2b05a96cf99b433
Binary files /dev/null and b/viskit/lib/jfreechart-1.5.4.jar differ
diff --git a/viskit/lib/jgraph5.jar b/viskit/lib/jgraph5.jar
new file mode 100644
index 0000000000000000000000000000000000000000..f5e91b1831edde2f6af0251bca2f9bf816592a55
Binary files /dev/null and b/viskit/lib/jgraph5.jar differ
diff --git a/viskit/lib/jhall.jar b/viskit/lib/jhall.jar
new file mode 100644
index 0000000000000000000000000000000000000000..bea4ee09ce1becb3c8c0d524d532e0eafb691a10
Binary files /dev/null and b/viskit/lib/jhall.jar differ
diff --git a/viskit/lib/log4j-api-2.23.1.jar b/viskit/lib/log4j-api-2.23.1.jar
new file mode 100644
index 0000000000000000000000000000000000000000..0e8e3f5e5928c3dc9d8d8d06e4f7aacfb5090ed4
Binary files /dev/null and b/viskit/lib/log4j-api-2.23.1.jar differ
diff --git a/viskit/lib/log4j-core-2.23.1.jar b/viskit/lib/log4j-core-2.23.1.jar
new file mode 100644
index 0000000000000000000000000000000000000000..4a5d553d897b9eb341cc0c818d54b07d5c012f7b
Binary files /dev/null and b/viskit/lib/log4j-core-2.23.1.jar differ
diff --git a/viskit/lib/resolver.jar b/viskit/lib/resolver.jar
new file mode 100644
index 0000000000000000000000000000000000000000..e535bdc073355b300614041be473988c3a6c8624
Binary files /dev/null and b/viskit/lib/resolver.jar differ
diff --git a/viskit/lib/serializer.jar b/viskit/lib/serializer.jar
new file mode 100644
index 0000000000000000000000000000000000000000..de9b007b4c9caf12aa9619e4a5d473ff8b299645
Binary files /dev/null and b/viskit/lib/serializer.jar differ
diff --git a/viskit/lib/simkit.jar b/viskit/lib/simkit.jar
new file mode 100644
index 0000000000000000000000000000000000000000..d66fd9773c207e6591c89232743a2e4da629d782
Binary files /dev/null and b/viskit/lib/simkit.jar differ
diff --git a/viskit/lib/xalan.jar b/viskit/lib/xalan.jar
new file mode 100644
index 0000000000000000000000000000000000000000..458fa73d96e752a0e3ae59b38f7fb9d8a7aed14f
Binary files /dev/null and b/viskit/lib/xalan.jar differ
diff --git a/viskit/lib/xercesImpl.jar b/viskit/lib/xercesImpl.jar
new file mode 100644
index 0000000000000000000000000000000000000000..0aaa990f3ecadf60d28b5395dc87bbe49da0cdd7
Binary files /dev/null and b/viskit/lib/xercesImpl.jar differ
diff --git a/viskit/lib/xmlrpc-2.0.jar b/viskit/lib/xmlrpc-2.0.jar
new file mode 100644
index 0000000000000000000000000000000000000000..991edc29a25590de80fa91a382bdc7348134bf62
Binary files /dev/null and b/viskit/lib/xmlrpc-2.0.jar differ
diff --git a/viskit/license/THIRDPARTYLICENSEREADME.html b/viskit/license/THIRDPARTYLICENSEREADME.html
new file mode 100644
index 0000000000000000000000000000000000000000..ed6fad901b62e24a5f2b6494d32ba56fcccf67f0
--- /dev/null
+++ b/viskit/license/THIRDPARTYLICENSEREADME.html
@@ -0,0 +1,205 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=iso-8859-1">
+	<TITLE></TITLE>
+	<META NAME="GENERATOR" CONTENT="StarOffice 6.0  (Solaris Sparc)">
+	<META NAME="AUTHOR" CONTENT=" ">
+	<META NAME="CREATED" CONTENT="20020520;9402100">
+	<META NAME="CHANGED" CONTENT="20030905;14502600">
+</HEAD>
+<BODY LANG="en-US">
+<P>A) The following software may be included in this product: ANT,
+1.5.4; RegExp; Xerces 2.x; Xindice v1.1; Tomcat v5; Xalan v2.x;
+Struts v1.1; BCEL; Apache XML Dsig; Apache xmlenc, XML Security 1_0_6. Use of 
+any of this software is governed by the terms of the license below: 
+</P>
+<P>Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met: Redistribution of source code must retain the above
+copyright notice, this list of conditions and the following
+disclaimer. Redistribution in binary form must reproduce the above
+copyright notice, this list of conditions and the following
+disclaimer in the documentation and/or other materials provided with
+the distribution. All advertising materials mentioning features or
+use of this software must display the following acknowledgment: This
+product includes software developed by the Java Apache Project for
+use in the Apache JServ servlet engine project
+(http://java.apache.org/).</P>
+<P>The names &quot;Apache JServ&quot;, &quot;Apache JServ Servlet
+Engine&quot; and &quot;Java Apache Project&quot; must not be used to
+endorse or promote products derived from this software without prior
+written permission. Products derived from this software may not be
+called &quot;Apache JServ&quot; nor may &quot;Apache&quot; nor
+&quot;Apache JServ&quot; appear in their names without prior written
+permission of the Java Apache Project. Redistribution of any form
+whatsoever must retain the following acknowledgment: This product
+includes software developed by the Java Apache Project for use in the
+Apache JServ servlet engine project (http://java.apache.org/).</P>
+<P>THIS SOFTWARE IS PROVIDED BY THE JAVA APACHE PROJECT &quot;AS IS&quot;
+AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JAVA APACHE
+PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
+WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.</P>
+<P>B) The following software may be included in this product: DOM
+(Document Object Model). Use of any of this software is governed by
+the terms of the license below:</P>
+<P>W3C&reg; SOFTWARE NOTICE AND LICENSE</P>
+<P>Copyright &copy; 1994-2002 World Wide Web Consortium,
+(Massachusetts Institute of Technology, Institut National de
+Recherche en Informatique et en Automatique, Keio University). All
+Rights Reserved. http://www.w3.org/Consortium/Legal/</P>
+<P>This W3C work (including software, documents, or other related
+items) is being provided by the copyright holders under the following
+license. By obtaining, using and/or copying this work, you (the
+licensee) agree that you have read, understood, and will comply with
+the following terms and conditions:</P>
+<P>Permission to use, copy, modify, and distribute this software and
+its documentation, with or without modification, for any purpose and
+without fee or royalty is hereby granted, provided that you include
+the following on ALL copies of the software and documentation or
+portions thereof, including modifications, that you make:</P>
+<P>1.The full text of this NOTICE in a location viewable to users of
+the redistributed or derivative work. 
+</P>
+<P>2.Any pre-existing intellectual property disclaimers, notices, or
+terms and conditions. If none exist, a short notice of the following
+form (hypertext is preferred, text is permitted) should be used
+within the body of any redistributed or derivative code: &quot;Copyright
+&copy; [$date-of-software] World Wide Web Consortium, (Massachusetts
+Institute of Technology, Institut National de Recherche en
+Informatique et en Automatique, Keio University). All Rights
+Reserved. http://www.w3.org/Consortium/Legal/&quot; 
+</P>
+<P>3.Notice of any changes or modifications to the W3C files,
+including the date changes were made. (We recommend you provide URIs
+to the location from which the code is derived.) 
+</P>
+<P>THIS SOFTWARE AND DOCUMENTATION IS PROVIDED &quot;AS IS,&quot; AND
+COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY
+OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE
+OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS,
+COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. COPYRIGHT HOLDERS WILL NOT BE
+LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES
+ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.</P>
+<P>The name and trademarks of copyright holders may NOT be used in
+advertising or publicity pertaining to the software without specific,
+written prior permission. Title to copyright in this software and any
+associated documentation will at all times remain with copyright
+holders.</P>
+<P>C) The following software may be included in this product:
+iso-relax.jar v2002/07/07; This software may be obtained under the
+terms of the license below:</P>
+<P>The MIT License</P>
+<P>Copyright (c) 
+</P>
+<P>Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation files
+(the &quot;Software&quot;), to deal in the Software without
+restriction, including without limitation the rights to use, copy,
+modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:</P>
+<P>The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.</P>
+<P>THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE</P>
+<P>D) The following software may be included in this product:
+relaxngDatatype.jar v1.0; This software may be obtained under the
+terms of the license below:</P>
+<P>Copyright (c) 2001, Thai Open Source Software Center Ltd, Sun
+Microsystems. All rights reserved.</P>
+<P>Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:</P>
+<P>Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.</P>
+<P>Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.</P>
+<P>Neither the names of the copyright holders nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.</P>
+<P>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+CONTRIBUTORS &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</P>
+<P>E) The following software may be included in this product: JLEX;
+This software may be obtained under the terms of the license below:</P>
+<P>JLEX COPYRIGHT NOTICE, LICENSE AND DISCLAIMER.</P>
+<P>Copyright 1996-2003 by Elliot Joel Berk and C. Scott Ananian 
+</P>
+<P>Permission to use, copy, modify, and distribute this software and
+its documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and
+that both the copyright notice and this permission notice and
+warranty disclaimer appear in supporting documentation, and that the
+name of the authors or their employers not be used in advertising or
+publicity pertaining to distribution of the software without
+specific, written prior permission. 
+</P>
+<P>The authors and their employers disclaim all warranties with
+regard to this software, including all implied warranties of
+merchantability and fitness. In no event shall the authors or their
+employers be liable for any special, indirect or consequential
+damages or any damages whatsoever resulting from loss of use, data or
+profits, whether in an action of contract, negligence or other
+tortious action, arising out of or in connection with the use or
+performance of this software. 
+</P>
+<P>Java is a trademark of Sun Microsystems, Inc. References to the
+Java programming language in relation to JLex are not meant to imply
+that Sun endorses this product. 
+</P>
+<P>F) The following software may be included in this product: CUP
+Parser Generator; This software may be obtained under the terms of
+the license below:</P>
+<P>CUP Parser Generator Copyright Notice, License, and Disclaimer</P>
+<P>Copyright 1996-1999 by Scott Hudson, Frank Flannery, C. Scott
+Ananian 
+</P>
+<P>Permission to use, copy, modify, and distribute this software and
+its documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and
+that both the copyright notice and this permission notice and
+warranty disclaimer appear in supporting documentation, and that the
+names of the authors or their employers not be used in advertising or
+publicity pertaining to distribution of the software without
+specific, written prior permission. 
+</P>
+<P>The authors and their employers disclaim all warranties with
+regard to this software, including all implied warranties of
+merchantability and fitness. In no event shall the authors or their
+employers be liable for any special, indirect or consequential
+damages or any damages whatsoever resulting from loss of use, data or
+profits, whether in an action of contract, negligence or other
+tortious action, arising out of or in connection with the use or
+performance of this software. 
+</P>
+<P>G) The following software may be included in this product: CUP
+Parser Generator; This software may be obtained under the terms of
+the license below:</P>
+</BODY>
+</HTML>
diff --git a/viskit/license/lgpl.txt b/viskit/license/lgpl.txt
new file mode 100644
index 0000000000000000000000000000000000000000..cbee875ba6ddb0dadab286daf7ccec2f6f64191f
--- /dev/null
+++ b/viskit/license/lgpl.txt
@@ -0,0 +1,504 @@
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/viskit/license/license.html b/viskit/license/license.html
new file mode 100644
index 0000000000000000000000000000000000000000..2bc7da9649e2102f7a366a0ab3efd66eac15aeef
--- /dev/null
+++ b/viskit/license/license.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+    <head>
+        <title>NPS MOVES Software License</title>
+        <meta name="description" content="NPS MOVES Software License" ></meta>
+        <meta name="author" content="Donald P. Brutzman" ></meta>
+        <meta name="created" content="4 March 2005" ></meta>
+        <meta name="revised" content="24 January 2009" ></meta>
+        <meta name="reference" content="http://www.oreilly.com/catalog/osfreesoft" ></meta>
+        <meta name="reference" content="http://opensource.org/licenses/bsd-license.php" ></meta>
+        <meta name="reference" content="http://xchat.movesinstitute.org/bugzilla/show_bug.cgi?id=32" ></meta>
+        <link rel="icon" href="http://www.web3D.org/x3d/content/examples/images/X3DtextIcon16.png" title="X3D" type="image/png"></link>
+    </head>
+    <body>
+        <p>Copyright (c) 1995-2024 held by the author(s).  All rights reserved.</p>
+
+        <p>Redistribution and use in source and binary forms, with or without
+           modification, are permitted provided that the following conditions
+           are met:</p>
+
+        <ul>
+            <li>
+                Redistributions of source code must retain the above copyright
+                notice, this list of conditions and the following disclaimer.
+            </li>
+            <li>
+                Redistributions in binary form must reproduce the above copyright
+                notice, this list of conditions and the following disclaimer
+                in the documentation and/or other materials provided with the
+                distribution.
+            </li>
+            <li>
+                Neither the names of the
+                <a href="http://www.nps.edu">Naval Postgraduate School (NPS)</a>
+                <a href="https://my.nps.edu/web/moves">Modeling, Virtual Environments and Simulation (MOVES) Institute</a>
+                nor the names of its contributors may be used to endorse or
+                promote products derived from this software without specific
+                prior written permission.
+            </li>
+        </ul>
+
+        <p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+           "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+           LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+           FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+           COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+           INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+           BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+           LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+           CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+           LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+           ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+           POSSIBILITY OF SUCH DAMAGE.</p>
+    </body>
+</html>
diff --git a/viskit/license/license.txt b/viskit/license/license.txt
new file mode 100644
index 0000000000000000000000000000000000000000..57852338deae9c006d227a78c31d317fccd5db90
--- /dev/null
+++ b/viskit/license/license.txt
@@ -0,0 +1,31 @@
+Copyright (c) 1995-2024 held by the author(s).  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer
+      in the documentation and/or other materials provided with the
+      distribution.
+    * Neither the names of the Naval Postgraduate School (NPS)
+      Modeling, Virtual Environments and Simulation (MOVES) Institute
+      (http://www.nps.edu and https://my.nps.edu/web/moves)
+      nor the names of its contributors may be used to endorse or
+      promote products derived from this software without specific
+      prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/viskit/viskit-editor.jar b/viskit/viskit-editor.jar
new file mode 100644
index 0000000000000000000000000000000000000000..3523c59be17d6a448ea9c55dd6ed1b3a53497962
Binary files /dev/null and b/viskit/viskit-editor.jar differ