diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/AngelClient.java b/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/AngelClient.java
index 03d7dd7c0068a1e5371d0710525df1c47652d18f..f50426db7a8e226a0572b540980460911787a3e4 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/AngelClient.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/AngelClient.java
@@ -10,7 +10,7 @@ package MV3500Cohort2018JanuaryMarch.homework1;
 import java.io.*;
 import java.net.*;
 /**
- *
+ * homework assignment
  * @author cs2017
  */
 public class AngelClient {
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/AngelServer.java b/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/AngelServer.java
index 0c3b26e5d832056f991f87a1ecdecd0baff7352b..944d787bc855b7605a785926373244eee6c1048a 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/AngelServer.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/AngelServer.java
@@ -10,7 +10,7 @@ package MV3500Cohort2018JanuaryMarch.homework1;
 import java.io.*;
 import java.net.*;
 /**
- *
+ * homework assignment
  * @author cs2017
  */
 public class AngelServer {
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/AngelTank.java b/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/AngelTank.java
index c20c8d01b053e28c7b827885b33d3c1a14d35363..5e515c6591f0bc5cb4ba58476b756ca2bd56222b 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/AngelTank.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/AngelTank.java
@@ -1,50 +1,53 @@
 package MV3500Cohort2018JanuaryMarch.homework1;
 
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
-// no package required or desired, Netbeans will automatically compile
-
-/**
- *
- * @author cs2017
- */
-public class AngelTank {
-
-    private String type;
-    private int speed;
-    private int[] position;
-    
-    AngelTank(String type, int i, int[] pos) {
-        
-        this.type = type;
-        this.speed = i;
-        this.position = pos;
-
-    }
-
-    /**
-     * @return the type
-     */
-    public String getType() {
-        return type;
-    }
-
-    /**
-     * @return the speed
-     */
-    public int getSpeed() {
-        return speed;
-    }
-
-    /**
-     * @return the position
-     */
-    public int[] getPosition() {
-        return position;
-    }
-
-
-}
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+// no package required or desired, Netbeans will automatically compile
+
+/**
+ * homework assignment
+ * @author cs2017
+ */
+public class AngelTank {
+
+    private String type;
+    private int speed;
+    private int[] position;
+    
+    AngelTank(String type, int i, int[] pos) {
+        
+        this.type = type;
+        this.speed = i;
+        this.position = pos;
+
+    }
+
+    /**
+     * get current type
+     * @return the type
+     */
+    public String getType() {
+        return type;
+    }
+
+    /**
+     * get current speed
+     * @return the speed
+     */
+    public int getSpeed() {
+        return speed;
+    }
+
+    /**
+     * get current position
+     * @return the position
+     */
+    public int[] getPosition() {
+        return position;
+    }
+
+
+}
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/HanleyTcpClient.java b/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/HanleyTcpClient.java
index 25d9cb3ea5ea7f2c7b73993418d2ceb2ba73869e..9814d5cd1d580ba31d24bbed510cab898d93f2c1 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/HanleyTcpClient.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/HanleyTcpClient.java
@@ -11,7 +11,7 @@ import java.io.*;
 import java.net.*;
 
 /**
- *
+ * homework assignment
  * @author Brian
  */
 public class HanleyTcpClient
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/LandasClient1.java b/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/LandasClient1.java
index 4f8a065cb3f9559f0f44831f96947507ac515ea2..3128dc58da6bd38a4dc354ad7a13f0ee093a090d 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/LandasClient1.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/LandasClient1.java
@@ -9,7 +9,7 @@ import java.io.*;
 import java.net.*;
 
 /**
- *
+ * homework assignment
  * @author Rico
  */
 public class LandasClient1 {
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/LandasClient2.java b/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/LandasClient2.java
index 4f36bd0a75848c9617b98893b960e28e46cde5e6..eccf4f027eaec369d2f8cc3a55d5a4a1f096bc37 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/LandasClient2.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/LandasClient2.java
@@ -11,7 +11,7 @@ import java.io.IOException;
 import java.net.Socket;
 import java.util.Scanner;
 /**
- *
+ * homework assignment
  * @author Rico
  */
 public class LandasClient2 {
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/LandasServer1.java b/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/LandasServer1.java
index b25ec55093210df967fabaf9f217d13a39ca65ec..09d367ca9324e2138cb88cce6f855be4b9a6948d 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/LandasServer1.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/LandasServer1.java
@@ -9,7 +9,7 @@ import java.io.*;
 import java.net.*;
 
 /**
- *
+ * homework assignment
  * @author Rico
  */
 public class LandasServer1 {
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/LandasServer2.java b/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/LandasServer2.java
index 6fb1a854793d08407a618aae2c52563b81db1ada..a7ac6a0daf24fe3b6cfd8d2ed637064124c89c15 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/LandasServer2.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/LandasServer2.java
@@ -13,7 +13,7 @@ import java.net.Socket;
 
 
 /**
- *
+ * homework assignment
  * @author Rico
  */
 public class LandasServer2 {
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/SasalaClient.java b/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/SasalaClient.java
index b0501fe21d1d93f46a2f8a9346775d1b49f86a7b..6ac38a523ffc352a1df501a7b96f7c98305ca3c2 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/SasalaClient.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/SasalaClient.java
@@ -5,7 +5,7 @@ package MV3500Cohort2018JanuaryMarch.homework1;
 import java.io.*;
 import java.net.*;
 /**
- *
+ * homework assignment
  * @author Jeremiah Sasala
  */
 public class SasalaClient {
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/SasalaServer.java b/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/SasalaServer.java
index 771e9077794377ac56c968bd4e52b3015ffc4e28..af88c15d225d24b5a5d5d5914e7bae39d7edb0bb 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/SasalaServer.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/SasalaServer.java
@@ -5,7 +5,7 @@ package MV3500Cohort2018JanuaryMarch.homework1;
 import java.io.*;
 import java.net.*;
 /**
- *
+ * homework assignment
  * @author Jeremiah Sasala
  */
 public class SasalaServer {
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/SnellPositionClient.java b/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/SnellPositionClient.java
index 05d9e61f94c9795fdd23751343c5e610c376efdb..efacaf8112d3855c6be6e6db868b549e3f2e3832 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/SnellPositionClient.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/homework1/SnellPositionClient.java
@@ -10,7 +10,7 @@ import java.net.Socket;
 import java.net.UnknownHostException;
 
 /**
- *
+ * homework assignment
  * @author AJSNELL
  */
 public class SnellPositionClient {
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/AngelMulticastReceiver.java b/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/AngelMulticastReceiver.java
index 2a03186c33e305bb53170de10b3c6126811ace9c..95ac0922867f2030d26227ad57c99c1f722ff601 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/AngelMulticastReceiver.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/AngelMulticastReceiver.java
@@ -7,8 +7,7 @@ import java.io.*;
 import java.net.*;
 
 /**
- *
- * @author mcgredo
+ * homework assignment
  */
 public class AngelMulticastReceiver {
 
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/BlankenbekerMulticastReceiver.java b/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/BlankenbekerMulticastReceiver.java
index 00a6236a37698d164aa1e77b5a17f1be34d31382..239d9d09bbec0f1c9d5ee3180d22489320c21b59 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/BlankenbekerMulticastReceiver.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/BlankenbekerMulticastReceiver.java
@@ -14,7 +14,7 @@ import java.net.InetAddress;
 import java.net.MulticastSocket;
 
 /**
- *
+ * homework assignment
  * @author Michael
  */
 public class BlankenbekerMulticastReceiver {
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/BlankenbekerMulticastSender.java b/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/BlankenbekerMulticastSender.java
index 4e8dbf28bf87f56912838fb0576003739afa79be..9b91d2342fee18661de6c1c1eac0cc6804a70b7d 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/BlankenbekerMulticastSender.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/BlankenbekerMulticastSender.java
@@ -14,7 +14,7 @@ import java.net.InetAddress;
 import java.net.MulticastSocket;
 
 /**
- *
+ * homework assignment
  * @author Michael
  */
 public class BlankenbekerMulticastSender {
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/BlankenbekerTruck.java b/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/BlankenbekerTruck.java
index 058f1e61325b552a737473e26007f1f22a016d50..a29fb95b5bd8f0b0b90aaf3cac9a196e678cda92 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/BlankenbekerTruck.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/BlankenbekerTruck.java
@@ -8,7 +8,7 @@ package MV3500Cohort2018JanuaryMarch.homework2;
 //package mv3500code;
 
 /**
- *
+ * homework assignment
  * @author Michael
  */
 public class BlankenbekerTruck {
@@ -33,6 +33,7 @@ public class BlankenbekerTruck {
 }
     /**
      *
+     * get x
      * @return X value
      */
     public float getX(){
@@ -40,7 +41,7 @@ public class BlankenbekerTruck {
     }
     
     /**
-     *
+     * get y
      * @return Y value
      */
     public float getY(){
@@ -48,7 +49,7 @@ public class BlankenbekerTruck {
     }
     
     /**
-     *
+     * get z
      * @return Z value
      */
     public float getZ(){
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/ConardMulticastReceiver.java b/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/ConardMulticastReceiver.java
index 7cd32b07cab38fd9c0f18cbd18d5159c617d6416..d0e4d22f4b8a7fefd3e67fff5de7c2a21acabc69 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/ConardMulticastReceiver.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/ConardMulticastReceiver.java
@@ -9,7 +9,7 @@ import java.net.InetAddress;
 import java.net.MulticastSocket;
 import java.net.UnknownHostException;
 /**
- *
+ * homework assignment
  * @author emilyconard
  */
 public class ConardMulticastReceiver 
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/ConardMulticastSender.java b/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/ConardMulticastSender.java
index 616d3dcc25ad5b984f6c825fb9b9fc9232b6230e..2ed33c0113e27859bd460718044e739461cfd9da 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/ConardMulticastSender.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/ConardMulticastSender.java
@@ -10,7 +10,7 @@ import java.net.MulticastSocket;
 
 
 /**
- *
+ * homework assignment
  * @author emilyconard
  */
 public class ConardMulticastSender {
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/LandasMulticastReceiver.java b/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/LandasMulticastReceiver.java
index c600378f58da9708ff9163906e6c07b2a2a4a1de..a42644f117041694ef992b109ea22aa3cf73ae36 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/LandasMulticastReceiver.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/LandasMulticastReceiver.java
@@ -8,7 +8,7 @@ import java.net.MulticastSocket;
 import java.net.UnknownHostException;
 
 /**
- * 
+ * homework assignment
  * @author Rico
  */ 
 public class LandasMulticastReceiver {
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/LandasMulticastReceiver2.java b/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/LandasMulticastReceiver2.java
index d57f1cc87d671d0c152f725fd36f81f4783693f0..7b0dcffdca38578dd8fc4497cfd02317887a6241 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/LandasMulticastReceiver2.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/LandasMulticastReceiver2.java
@@ -8,7 +8,7 @@ import java.net.MulticastSocket;
 import java.net.UnknownHostException;
 
 /**
- * 
+ * homework assignment
  * @author Rico
  */ 
 public class LandasMulticastReceiver2 {
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/LandasMulticastSender.java b/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/LandasMulticastSender.java
index e4fe640fb44c90df08f8b4ff923035e880ae1e1a..d92bc203130a968dd660d9c5c8f5c153f77d0735 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/LandasMulticastSender.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/LandasMulticastSender.java
@@ -8,7 +8,7 @@ import java.net.InetAddress;
 import java.net.UnknownHostException;
  
 /**
- * 
+ * homework assignment
  * @author Rico
  */
 public class LandasMulticastSender {
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/LandasMulticastSender2.java b/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/LandasMulticastSender2.java
index 2c22b80c714a4485607e11e17aee5e5f79516702..e54d39110c20c539e13d151ed2cce7d86297245b 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/LandasMulticastSender2.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/LandasMulticastSender2.java
@@ -8,7 +8,7 @@ import java.net.InetAddress;
 import java.net.UnknownHostException;
  
 /**
- * 
+ * homework assignment
  * @author Rico
  */
 public class LandasMulticastSender2 {
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/MaroonMulticastReceiver.java b/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/MaroonMulticastReceiver.java
index 23f4a364e51ac8c5af5adfe7554160a2e699198e..9aad0ffb2616374d05dd37d46c6fb5d548857767 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/MaroonMulticastReceiver.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/MaroonMulticastReceiver.java
@@ -12,8 +12,8 @@ import java.awt.event.ActionListener;
 
 
 /**
- *
- * @author mcgredo
+ * homework assignment
+ * @author Ken
  */
 public class MaroonMulticastReceiver 
 {
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/SasalaMulticastReceiver.java b/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/SasalaMulticastReceiver.java
index 6b6e0c906b8884d28e277902598f8a1e7febe137..a3b4f657f41199329b4ba2952cd422ab5f26ebf6 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/SasalaMulticastReceiver.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/SasalaMulticastReceiver.java
@@ -7,8 +7,7 @@ import java.io.*;
 import java.net.*;
 
 /**
- *
- * @author mcgredo
+ * homework assignment
  */
 public class SasalaMulticastReceiver
 {
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/SnellMulticastClient.java b/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/SnellMulticastClient.java
index 3d715e0e4c180b181da7e11ba4378504747b3eaa..3c4abac3d96df9fa52de83623c1e0a6a3a12e9a6 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/SnellMulticastClient.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/homework2/SnellMulticastClient.java
@@ -14,7 +14,7 @@ import java.net.InetAddress;
 import java.net.MulticastSocket;
 
 /**
- *
+ * homework assignment
  * @author Justin Snell
  */
 public class SnellMulticastClient
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/homework3/Angel_OpenDisEspduSender.java b/assignments/src/MV3500Cohort2018JanuaryMarch/homework3/Angel_OpenDisEspduSender.java
index dae12ded4286ea2cf9e1420c3fb16f6b998d274f..ef99131be0779cd713d7966582a207d37379a7ee 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/homework3/Angel_OpenDisEspduSender.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/homework3/Angel_OpenDisEspduSender.java
@@ -21,11 +21,14 @@ public class Angel_OpenDisEspduSender
 
     /** Type of network connection */
 	public enum NetworkMode {
-        /** @see <a href="https://en.wikipedia.org/wiki/Unicast">https://en.wikipedia.org/wiki/Unicast</a> */
+        /** Unicast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Unicast">https://en.wikipedia.org/wiki/Unicast</a> */
 		UNICAST,
-        /** @see <a href="https://en.wikipedia.org/wiki/Multicast">https://en.wikipedia.org/wiki/Multicast</a> */
+        /** Multicast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Multicast">https://en.wikipedia.org/wiki/Multicast</a> */
         MULTICAST,
-        /** @see <a href="https://en.wikipedia.org/wiki/Broadcasting_(networking)">https://en.wikipedia.org/wiki/Broadcasting_(networking)</a> */
+        /** Broadcast network mode 
+         * @see <a href="https://en.wikipedia.org/wiki/Broadcasting_(networking)">https://en.wikipedia.org/wiki/Broadcasting_(networking)</a> */
         BROADCAST
 	};
 
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/homework3/BlankenbekerOpenDisEspduSender.java b/assignments/src/MV3500Cohort2018JanuaryMarch/homework3/BlankenbekerOpenDisEspduSender.java
index 8e8690e2232e257360e86858736c9b95b02f351a..151a42cbf1124c1ad21ca93d100b90c47b5a77f8 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/homework3/BlankenbekerOpenDisEspduSender.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/homework3/BlankenbekerOpenDisEspduSender.java
@@ -22,11 +22,14 @@ public class BlankenbekerOpenDisEspduSender
 
     /** Type of network connection */
 	public enum NetworkMode {
-        /** @see <a href="https://en.wikipedia.org/wiki/Unicast">https://en.wikipedia.org/wiki/Unicast</a> */
-		UNICAST,
-        /** @see <a href="https://en.wikipedia.org/wiki/Multicast">https://en.wikipedia.org/wiki/Multicast</a> */
+        /** Unicast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Unicast">https://en.wikipedia.org/wiki/Unicast</a> */
+	UNICAST,
+        /** Multicast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Multicast">https://en.wikipedia.org/wiki/Multicast</a> */
         MULTICAST,
-        /** @see <a href="https://en.wikipedia.org/wiki/Broadcasting_(networking)">https://en.wikipedia.org/wiki/Broadcasting_(networking)</a> */
+        /** Broadcast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Broadcasting_(networking)">https://en.wikipedia.org/wiki/Broadcasting_(networking)</a> */
         BROADCAST
 	};
 
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/homework3/ConardSnellOpenDisEspduSender.java b/assignments/src/MV3500Cohort2018JanuaryMarch/homework3/ConardSnellOpenDisEspduSender.java
index 1ccfa353b376f455b8dc4b2a7b6bb3facd27c06a..1305c53829964473747611fbc1c0a18c26dd35ae 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/homework3/ConardSnellOpenDisEspduSender.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/homework3/ConardSnellOpenDisEspduSender.java
@@ -21,11 +21,14 @@ public class ConardSnellOpenDisEspduSender
 
     /** Type of network connection */
 	public enum NetworkMode {
-        /** @see <a href="https://en.wikipedia.org/wiki/Unicast">https://en.wikipedia.org/wiki/Unicast</a> */
-		UNICAST,
-        /** @see <a href="https://en.wikipedia.org/wiki/Multicast">https://en.wikipedia.org/wiki/Multicast</a> */
+        /** Unicast network mode 
+         * @see <a href="https://en.wikipedia.org/wiki/Unicast">https://en.wikipedia.org/wiki/Unicast</a> */
+	UNICAST,
+        /** Multicast network mode 
+         * @see <a href="https://en.wikipedia.org/wiki/Multicast">https://en.wikipedia.org/wiki/Multicast</a> */
         MULTICAST,
-        /** @see <a href="https://en.wikipedia.org/wiki/Broadcasting_(networking)">https://en.wikipedia.org/wiki/Broadcasting_(networking)</a> */
+        /** Broadcast network mode 
+         * @see <a href="https://en.wikipedia.org/wiki/Broadcasting_(networking)">https://en.wikipedia.org/wiki/Broadcasting_(networking)</a> */
         BROADCAST
 	};
 
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/homework3/Hanley_OpenDisEspduSender.java b/assignments/src/MV3500Cohort2018JanuaryMarch/homework3/Hanley_OpenDisEspduSender.java
index 3d776d116c163f1118e28d37e7251799de5b6534..6cdd39c6ed1d935069f34cb6a511468c6011d816 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/homework3/Hanley_OpenDisEspduSender.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/homework3/Hanley_OpenDisEspduSender.java
@@ -21,11 +21,14 @@ public class Hanley_OpenDisEspduSender
 
     /** Type of network connection */
 	public enum NetworkMode {
-        /** @see <a href="https://en.wikipedia.org/wiki/Unicast">https://en.wikipedia.org/wiki/Unicast</a> */
-		UNICAST,
-        /** @see <a href="https://en.wikipedia.org/wiki/Multicast">https://en.wikipedia.org/wiki/Multicast</a> */
+        /** Unicast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Unicast">https://en.wikipedia.org/wiki/Unicast</a> */
+	UNICAST,
+        /** Multicast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Multicast">https://en.wikipedia.org/wiki/Multicast</a> */
         MULTICAST,
-        /** @see <a href="https://en.wikipedia.org/wiki/Broadcasting_(networking)">https://en.wikipedia.org/wiki/Broadcasting_(networking)</a> */
+        /** Broadcast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Broadcasting_(networking)">https://en.wikipedia.org/wiki/Broadcasting_(networking)</a> */
         BROADCAST
 	};
 
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/projects/AngelopoulosBlankenbeker/AngelBlankEspduSenderA.java b/assignments/src/MV3500Cohort2018JanuaryMarch/projects/AngelopoulosBlankenbeker/AngelBlankEspduSenderA.java
index 418732e5c7b4f6178c58aef156949c0161231d2e..f66df0ed9e88eac063d8ea9e4667bc604eaa9e87 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/projects/AngelopoulosBlankenbeker/AngelBlankEspduSenderA.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/projects/AngelopoulosBlankenbeker/AngelBlankEspduSenderA.java
@@ -21,11 +21,14 @@ public class AngelBlankEspduSenderA
 
     /** Type of network connection */
 	public enum NetworkMode {
-        /** @see <a href="https://en.wikipedia.org/wiki/Unicast">https://en.wikipedia.org/wiki/Unicast</a> */
+        /** Unicast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Unicast">https://en.wikipedia.org/wiki/Unicast</a> */
 		UNICAST,
-        /** @see <a href="https://en.wikipedia.org/wiki/Multicast">https://en.wikipedia.org/wiki/Multicast</a> */
+        /** Multicast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Multicast">https://en.wikipedia.org/wiki/Multicast</a> */
         MULTICAST,
-        /** @see <a href="https://en.wikipedia.org/wiki/Broadcasting_(networking)">https://en.wikipedia.org/wiki/Broadcasting_(networking)</a> */
+        /** Broadcast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Broadcasting_(networking)">https://en.wikipedia.org/wiki/Broadcasting_(networking)</a> */
         BROADCAST
 	};
 
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/projects/AngelopoulosBlankenbeker/AngelBlankEspduSenderB.java b/assignments/src/MV3500Cohort2018JanuaryMarch/projects/AngelopoulosBlankenbeker/AngelBlankEspduSenderB.java
index 6b303fc13a37ab7b1db8c6bd804d78e9248812d0..650b8e5849e5f10f24f778575eebe916302b19ae 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/projects/AngelopoulosBlankenbeker/AngelBlankEspduSenderB.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/projects/AngelopoulosBlankenbeker/AngelBlankEspduSenderB.java
@@ -20,11 +20,14 @@ public class AngelBlankEspduSenderB
     static final int NUMBER_TO_SEND = 5000;
     /** Type of network connection */
 	public enum NetworkMode {
-        /** @see <a href="https://en.wikipedia.org/wiki/Unicast">https://en.wikipedia.org/wiki/Unicast</a> */
-		UNICAST,
-        /** @see <a href="https://en.wikipedia.org/wiki/Multicast">https://en.wikipedia.org/wiki/Multicast</a> */
+        /** Unicast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Unicast">https://en.wikipedia.org/wiki/Unicast</a> */
+	UNICAST,
+        /** Multicast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Multicast">https://en.wikipedia.org/wiki/Multicast</a> */
         MULTICAST,
-        /** @see <a href="https://en.wikipedia.org/wiki/Broadcasting_(networking)">https://en.wikipedia.org/wiki/Broadcasting_(networking)</a> */
+        /** Broadcast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Broadcasting_(networking)">https://en.wikipedia.org/wiki/Broadcasting_(networking)</a> */
         BROADCAST
 	};
     /** default multicast group we send on */
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/projects/AngelopoulosBlankenbeker/AngelBlankEspduTCPReceiverASenderB.java b/assignments/src/MV3500Cohort2018JanuaryMarch/projects/AngelopoulosBlankenbeker/AngelBlankEspduTCPReceiverASenderB.java
index fb927392ee57c76be9d96f28a6fde9cfe686ecbe..da7efa84cc2d7f33df9d9ab91ee10e5da38ad10a 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/projects/AngelopoulosBlankenbeker/AngelBlankEspduTCPReceiverASenderB.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/projects/AngelopoulosBlankenbeker/AngelBlankEspduTCPReceiverASenderB.java
@@ -22,11 +22,14 @@ public class AngelBlankEspduTCPReceiverASenderB
     static final int NUMBER_TO_SEND = 5000;
     /** Type of network connection */
 	public enum NetworkMode {
-        /** @see <a href="https://en.wikipedia.org/wiki/Unicast">https://en.wikipedia.org/wiki/Unicast</a> */
-		UNICAST,
-        /** @see <a href="https://en.wikipedia.org/wiki/Multicast">https://en.wikipedia.org/wiki/Multicast</a> */
+        /** Unicast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Unicast">https://en.wikipedia.org/wiki/Unicast</a> */
+	UNICAST,
+        /** Multicast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Multicast">https://en.wikipedia.org/wiki/Multicast</a> */
         MULTICAST,
-        /** @see <a href="https://en.wikipedia.org/wiki/Broadcasting_(networking)">https://en.wikipedia.org/wiki/Broadcasting_(networking)</a> */
+        /** Broadcast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Broadcasting_(networking)">https://en.wikipedia.org/wiki/Broadcasting_(networking)</a> */
         BROADCAST
 	};
     /** default multicast group we send on */
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/projects/AngelopoulosBlankenbeker/AngelBlankEspduTCPReceiverBSenderA.java b/assignments/src/MV3500Cohort2018JanuaryMarch/projects/AngelopoulosBlankenbeker/AngelBlankEspduTCPReceiverBSenderA.java
index 3d7a3f237939490fc08ee3ca4ee1997e0cc74ce5..fb891eea08a32ac10e8bca4ed617239a119b2733 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/projects/AngelopoulosBlankenbeker/AngelBlankEspduTCPReceiverBSenderA.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/projects/AngelopoulosBlankenbeker/AngelBlankEspduTCPReceiverBSenderA.java
@@ -21,11 +21,14 @@ public class AngelBlankEspduTCPReceiverBSenderA
 
     /** Type of network connection */
 	public enum NetworkMode {
-        /** @see <a href="https://en.wikipedia.org/wiki/Unicast">https://en.wikipedia.org/wiki/Unicast</a> */
-		UNICAST,
-        /** @see <a href="https://en.wikipedia.org/wiki/Multicast">https://en.wikipedia.org/wiki/Multicast</a> */
+        /** Unicast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Unicast">https://en.wikipedia.org/wiki/Unicast</a> */
+	UNICAST,
+        /** Multicast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Multicast">https://en.wikipedia.org/wiki/Multicast</a> */
         MULTICAST,
-        /** @see <a href="https://en.wikipedia.org/wiki/Broadcasting_(networking)">https://en.wikipedia.org/wiki/Broadcasting_(networking)</a> */
+        /** Broadcast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Broadcasting_(networking)">https://en.wikipedia.org/wiki/Broadcasting_(networking)</a> */
         BROADCAST
 	};
     /** socket parameter of interest */
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/projects/Hanley/HanleyOpenDisEspduSenderFP.java b/assignments/src/MV3500Cohort2018JanuaryMarch/projects/Hanley/HanleyOpenDisEspduSenderFP.java
index f9ba3937131e2255ec71d21bead463a5916ec717..91e915b800fb335682515475881fbf37ceb0560e 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/projects/Hanley/HanleyOpenDisEspduSenderFP.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/projects/Hanley/HanleyOpenDisEspduSenderFP.java
@@ -30,11 +30,14 @@ public class HanleyOpenDisEspduSenderFP
 
     /** Type of network connection */
 	public enum NetworkMode {
-        /** @see <a href="https://en.wikipedia.org/wiki/Unicast">https://en.wikipedia.org/wiki/Unicast</a> */
-		UNICAST,
-        /** @see <a href="https://en.wikipedia.org/wiki/Multicast">https://en.wikipedia.org/wiki/Multicast</a> */
+        /** Unicast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Unicast">https://en.wikipedia.org/wiki/Unicast</a> */
+	UNICAST,
+        /** Multicast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Multicast">https://en.wikipedia.org/wiki/Multicast</a> */
         MULTICAST,
-        /** @see <a href="https://en.wikipedia.org/wiki/Broadcasting_(networking)">https://en.wikipedia.org/wiki/Broadcasting_(networking)</a> */
+        /** Broadcast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Broadcasting_(networking)">https://en.wikipedia.org/wiki/Broadcasting_(networking)</a> */
         BROADCAST
 	};
 
diff --git a/assignments/src/MV3500Cohort2018JanuaryMarch/projects/SasalaMaroon/CSVreaderOpenDisEspduSenderFP.java b/assignments/src/MV3500Cohort2018JanuaryMarch/projects/SasalaMaroon/CSVreaderOpenDisEspduSenderFP.java
index 9413c5e670609765a0c7d48bd8ccaad8431d6bd2..41e85fadd1f161f0bfb6efee7cd7b0d7554e2dfc 100644
--- a/assignments/src/MV3500Cohort2018JanuaryMarch/projects/SasalaMaroon/CSVreaderOpenDisEspduSenderFP.java
+++ b/assignments/src/MV3500Cohort2018JanuaryMarch/projects/SasalaMaroon/CSVreaderOpenDisEspduSenderFP.java
@@ -42,11 +42,14 @@ public class CSVreaderOpenDisEspduSenderFP
 
     /** Type of network connection */
 	public enum NetworkMode {
-        /** @see <a href="https://en.wikipedia.org/wiki/Unicast">https://en.wikipedia.org/wiki/Unicast</a> */
-		UNICAST,
-        /** @see <a href="https://en.wikipedia.org/wiki/Multicast">https://en.wikipedia.org/wiki/Multicast</a> */
+        /** Unicast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Unicast">https://en.wikipedia.org/wiki/Unicast</a> */
+	UNICAST,
+        /** Multicast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Multicast">https://en.wikipedia.org/wiki/Multicast</a> */
         MULTICAST,
-        /** @see <a href="https://en.wikipedia.org/wiki/Broadcasting_(networking)">https://en.wikipedia.org/wiki/Broadcasting_(networking)</a> */
+        /** Broadcast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Broadcasting_(networking)">https://en.wikipedia.org/wiki/Broadcasting_(networking)</a> */
         BROADCAST
 	};
 
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/homework1/AyresAssignment1.java b/assignments/src/MV3500Cohort2018JulySeptember/homework1/AyresAssignment1.java
index 08888f83a671a09993d7f237a8f4608851d7a43f..f7ad16374f1abee61955aa3725b6afabeeda645e 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/homework1/AyresAssignment1.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/homework1/AyresAssignment1.java
@@ -9,7 +9,7 @@ import java.io.*;
 import java.net.*;
 
 /**
- *
+ * homework assignment
  * @author kjayr
  */
 public class AyresAssignment1 
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/homework1/DemchkoAssignment1.java b/assignments/src/MV3500Cohort2018JulySeptember/homework1/DemchkoAssignment1.java
index 2ca1e218a19507eb70f4b405ea5f336b326a23b0..5eda12e5b41d183de9546ad085b65f214faca85e 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/homework1/DemchkoAssignment1.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/homework1/DemchkoAssignment1.java
@@ -13,7 +13,7 @@ import java.net.Socket;
  */
 
 /**
- *
+ * homework assignment
  * @author ekdem
  */
 public class DemchkoAssignment1
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/homework1/JacksonAssignment1.java b/assignments/src/MV3500Cohort2018JulySeptember/homework1/JacksonAssignment1.java
index 216bfe6e7648f685b5d16752d731b64f23bd1bfa..0e530db9bc2ffcda2ce74e424a8aabf9ce5e6061 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/homework1/JacksonAssignment1.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/homework1/JacksonAssignment1.java
@@ -12,7 +12,7 @@ import java.net.ServerSocket;
 import java.net.Socket;
 
 /**
- *
+ * homework assignment
  * @author John
  */
 public class JacksonAssignment1
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/homework1/LoeffelmanAssignment1.java b/assignments/src/MV3500Cohort2018JulySeptember/homework1/LoeffelmanAssignment1.java
index dcceb0492e57baaf17a8ab0ed9c74361f5da83c7..68d004e4bd4da7efc728e7dd93355a7947ed9314 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/homework1/LoeffelmanAssignment1.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/homework1/LoeffelmanAssignment1.java
@@ -11,7 +11,7 @@ import java.net.ServerSocket;
 import java.net.Socket;
 
 /**
- *
+ * homework assignment
  * @author garrettloeffelman
  */
 public class LoeffelmanAssignment1 {
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/homework1/LoeffelmanAssignment1Tcp2.java b/assignments/src/MV3500Cohort2018JulySeptember/homework1/LoeffelmanAssignment1Tcp2.java
index f8d0698f705bcc7635abfa651f6e9856e059de0f..e072c8513854d28354e10a1a4475bdb4e4bcbc86 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/homework1/LoeffelmanAssignment1Tcp2.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/homework1/LoeffelmanAssignment1Tcp2.java
@@ -12,7 +12,7 @@ import java.net.ServerSocket;
 import java.net.Socket;
 
 /**
- *
+ * homework assignment
  * @author garrettloeffelman
  */
 public class LoeffelmanAssignment1Tcp2 {
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/homework1/SeversonAssignment1.java b/assignments/src/MV3500Cohort2018JulySeptember/homework1/SeversonAssignment1.java
index b4382430f003fc1e346529f8cff25cb1cf30c239..ec9465ad4c15fe1584cd996960eb1da7d695dcd0 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/homework1/SeversonAssignment1.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/homework1/SeversonAssignment1.java
@@ -13,7 +13,7 @@ import java.net.ServerSocket;
 import java.net.Socket;
 
 /**
- *
+ * homework assignment
  * @author Peter
  */
 public class SeversonAssignment1 {
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/homework2/Ayres/Ayres_Client.java b/assignments/src/MV3500Cohort2018JulySeptember/homework2/Ayres/Ayres_Client.java
index 3572ad23c457d67d6c1f01f40ec87a5dc28acbbc..8e945b5399355afef49321db0a74fee882b0a909 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/homework2/Ayres/Ayres_Client.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/homework2/Ayres/Ayres_Client.java
@@ -14,7 +14,7 @@ import java.io.PrintStream;
 import java.net.Socket;
 
 /**
- *
+ * homework assignment
  * @author kjayr
  */
 public class Ayres_Client {
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/homework2/Ayres/Ayres_Server.java b/assignments/src/MV3500Cohort2018JulySeptember/homework2/Ayres/Ayres_Server.java
index 59cb87957f0396d91ee1bccb13886caca58cb47b..21446f64e0fbf14aaa6d434a08bda7841df56e5b 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/homework2/Ayres/Ayres_Server.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/homework2/Ayres/Ayres_Server.java
@@ -16,7 +16,7 @@ import java.net.ServerSocket;
 import java.net.Socket;
 
 /**
- *
+ * homework assignment
  * @author kjayr
  */
 public class Ayres_Server {
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/homework2/Demchko/DemchkoClient.java b/assignments/src/MV3500Cohort2018JulySeptember/homework2/Demchko/DemchkoClient.java
index e8f09c2f90c8281d9c835cd71a0b1b82f6b0563d..49da8503af26c6c72a80d7768703b1fb16c97453 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/homework2/Demchko/DemchkoClient.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/homework2/Demchko/DemchkoClient.java
@@ -17,7 +17,7 @@ import java.net.Socket;
 import java.util.Scanner;
 
 /**
- *
+ * homework assignment
  * @author ekdem
  */
 public class DemchkoClient
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/homework2/Demchko/DemchkoServer.java b/assignments/src/MV3500Cohort2018JulySeptember/homework2/Demchko/DemchkoServer.java
index fcb377078125644b71e7342a3a00f72206cfb005..45deff0ced76d2ee092c6236abadf20be6d6ccea 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/homework2/Demchko/DemchkoServer.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/homework2/Demchko/DemchkoServer.java
@@ -12,7 +12,7 @@ import java.net.Socket;
 import java.util.Scanner;
 
 /**
- *
+ * homework assignment
  * @author ekdem
  */
 public class DemchkoServer {
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/homework2/Loeffelman/LoeffelmanAssignment2Client.java b/assignments/src/MV3500Cohort2018JulySeptember/homework2/Loeffelman/LoeffelmanAssignment2Client.java
index 2e0692f9f0863a3a295eb94eaf5f0faadfa0431d..a7cb5168854975e04c15c4cac06066a11b41a38f 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/homework2/Loeffelman/LoeffelmanAssignment2Client.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/homework2/Loeffelman/LoeffelmanAssignment2Client.java
@@ -15,6 +15,7 @@ import java.net.Socket;
 import java.util.Scanner;
 
 /**
+ * homework assignment
  * @author DonMcGregor
  * @author garrettloeffelman
  */
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/homework2/Loeffelman/LoeffelmanAssignment2Server.java b/assignments/src/MV3500Cohort2018JulySeptember/homework2/Loeffelman/LoeffelmanAssignment2Server.java
index 5711cf02c7886edb6560548a2e20ae7681fdb153..d0056066cdc6932ac6440247569c379453c8543d 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/homework2/Loeffelman/LoeffelmanAssignment2Server.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/homework2/Loeffelman/LoeffelmanAssignment2Server.java
@@ -17,7 +17,7 @@ import java.net.Socket;
 import java.util.Scanner;
 
 /**
- *
+ * homework assignment
  * @author garrettloeffelman
  */
 public class LoeffelmanAssignment2Server {
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/homework2/Severson/SeversonAssignment2_Client.java b/assignments/src/MV3500Cohort2018JulySeptember/homework2/Severson/SeversonAssignment2_Client.java
index f06d8adc46af570ba1aae127fd6cd546e4fc5a22..f7bc566706b9cbf77c0d3cefd348299b04d50334 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/homework2/Severson/SeversonAssignment2_Client.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/homework2/Severson/SeversonAssignment2_Client.java
@@ -17,7 +17,7 @@ import java.net.Socket;
 import javax.swing.JOptionPane;
 
 /**
- *
+ * homework assignment
  * @author Peter
  */
 public class SeversonAssignment2_Client {
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/homework2/Severson/SeversonAssingment2_Server.java b/assignments/src/MV3500Cohort2018JulySeptember/homework2/Severson/SeversonAssingment2_Server.java
index 07b369540ac1652bb6b3fed6f910b850d1b8e4bd..6414b7291d13e6a7f72e7e0b29ceb0dfc9f98c18 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/homework2/Severson/SeversonAssingment2_Server.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/homework2/Severson/SeversonAssingment2_Server.java
@@ -16,7 +16,7 @@ import java.net.ServerSocket;
 import java.net.Socket;
 
 /**
- *
+ * homework assignment
  * @author Peter
  */
 public class SeversonAssingment2_Server {
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/homework3/AyresDemchkoHomework3/AyresDemchkoMulticastReceiver.java b/assignments/src/MV3500Cohort2018JulySeptember/homework3/AyresDemchkoHomework3/AyresDemchkoMulticastReceiver.java
index 62320e66094d9ec6204e4de671a1cff13f571e26..e330271c317a1fcd550821baae4ac6b90a9684d5 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/homework3/AyresDemchkoHomework3/AyresDemchkoMulticastReceiver.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/homework3/AyresDemchkoHomework3/AyresDemchkoMulticastReceiver.java
@@ -13,8 +13,9 @@ import java.net.DatagramSocket;
 import java.net.InetAddress;
 import java.net.MulticastSocket;
 import java.net.UnknownHostException;
+
 /**
- *
+ * homework assignment
  * @author kjayr
  */
 public class AyresDemchkoMulticastReceiver 
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/homework3/AyresDemchkoHomework3/AyresDemchkoMulticastSender.java b/assignments/src/MV3500Cohort2018JulySeptember/homework3/AyresDemchkoHomework3/AyresDemchkoMulticastSender.java
index f4d103443e4ec02d6787adc4b63a12711925b45d..904debc58d293d2a919278f2162d05198a3704e3 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/homework3/AyresDemchkoHomework3/AyresDemchkoMulticastSender.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/homework3/AyresDemchkoHomework3/AyresDemchkoMulticastSender.java
@@ -12,7 +12,7 @@ import java.net.InetAddress;
 import java.net.MulticastSocket;
 
 /**
- *
+ * homework assignment
  * @author kjayr
  */
 public class AyresDemchkoMulticastSender
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/homework3/Cain_Thomerson_Homework3/CainThomersonHw3Receiver.java b/assignments/src/MV3500Cohort2018JulySeptember/homework3/Cain_Thomerson_Homework3/CainThomersonHw3Receiver.java
index 3c0b07680dc7eb180ae431ccbd4ff24c99a0adbe..0756c2359d2fd5f9575e332b10148b268fe34298 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/homework3/Cain_Thomerson_Homework3/CainThomersonHw3Receiver.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/homework3/Cain_Thomerson_Homework3/CainThomersonHw3Receiver.java
@@ -12,7 +12,7 @@ import java.net.InetAddress;
 import java.net.MulticastSocket;
 
 /**
- *
+ * homework assignment
  * @author danielcain with credit to CDR Angelopolis
  */
 public class CainThomersonHw3Receiver
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/homework3/Cain_Thomerson_Homework3/CainThomersonHw3Sender.java b/assignments/src/MV3500Cohort2018JulySeptember/homework3/Cain_Thomerson_Homework3/CainThomersonHw3Sender.java
index 44160b9ce87442036e159fa78e9b3cba8332cd0d..0933cf84c4aaa6b8f785d85181477b10328cb9e7 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/homework3/Cain_Thomerson_Homework3/CainThomersonHw3Sender.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/homework3/Cain_Thomerson_Homework3/CainThomersonHw3Sender.java
@@ -12,7 +12,7 @@ import java.util.Random;
 
 
 /**
- *
+ * homework assignment
  * @author danielcain with credit to CDR Angelopolis
  */
 public class CainThomersonHw3Sender
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/homework3/Furr_Frisco_Homework3/FurrFriscoHw3Receiver.java b/assignments/src/MV3500Cohort2018JulySeptember/homework3/Furr_Frisco_Homework3/FurrFriscoHw3Receiver.java
index 2de577877c1a8f7bd4f0ca463e703e88a2d3e0e3..7f40f9e22395ba11c63fc09560705309ab0d4758 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/homework3/Furr_Frisco_Homework3/FurrFriscoHw3Receiver.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/homework3/Furr_Frisco_Homework3/FurrFriscoHw3Receiver.java
@@ -13,7 +13,7 @@ import java.net.InetAddress;
 import java.net.MulticastSocket;
 
 /**
- *
+ * homework assignment
  * @author danielcain with credit to CDR Angelopolis
  */
 public class FurrFriscoHw3Receiver {
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/homework3/Furr_Frisco_Homework3/FurrFriscoHw3Sender.java b/assignments/src/MV3500Cohort2018JulySeptember/homework3/Furr_Frisco_Homework3/FurrFriscoHw3Sender.java
index 9edc1331a4d99cf94486cea6acf90de7ae97b625..1861193bddfd1c32786bf621426807648b6a5e98 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/homework3/Furr_Frisco_Homework3/FurrFriscoHw3Sender.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/homework3/Furr_Frisco_Homework3/FurrFriscoHw3Sender.java
@@ -10,7 +10,7 @@ import java.util.ArrayList;
 import java.util.Random;
 
 /**
- *
+ * homework assignment
  * @author danielcain with credit to CDR Angelopolis
  */
 public class FurrFriscoHw3Sender {
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/homework3/Loeffelman_Severson_Homework3/LoeffelmanSeversonMulticastImageHw3Receiver.java b/assignments/src/MV3500Cohort2018JulySeptember/homework3/Loeffelman_Severson_Homework3/LoeffelmanSeversonMulticastImageHw3Receiver.java
index 00b068a8a65e53b6f89e89a8b411c1e0274a851b..c8c205fbed5ee23ceb39a64350544b38421115c8 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/homework3/Loeffelman_Severson_Homework3/LoeffelmanSeversonMulticastImageHw3Receiver.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/homework3/Loeffelman_Severson_Homework3/LoeffelmanSeversonMulticastImageHw3Receiver.java
@@ -19,7 +19,7 @@ import javax.swing.JFrame;
 import javax.swing.JLabel;
 
 /**
- *
+ * homework assignment
  * @author garrettloeffelman
  */
 public class LoeffelmanSeversonMulticastImageHw3Receiver
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/homework3/Loeffelman_Severson_Homework3/LoeffelmanSeversonMulticastImageHw3Sender.java b/assignments/src/MV3500Cohort2018JulySeptember/homework3/Loeffelman_Severson_Homework3/LoeffelmanSeversonMulticastImageHw3Sender.java
index c36fcefe1d6f83ab55533a92eea62d903c680f01..234b720834f734a11f28b96f02c14f75cd6367e3 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/homework3/Loeffelman_Severson_Homework3/LoeffelmanSeversonMulticastImageHw3Sender.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/homework3/Loeffelman_Severson_Homework3/LoeffelmanSeversonMulticastImageHw3Sender.java
@@ -17,7 +17,7 @@ import java.net.URL;
 import javax.imageio.ImageIO;
 
 /**
- *
+ * homework assignment
  * @author garrettloeffelman
  */
 public class LoeffelmanSeversonMulticastImageHw3Sender
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/homework3/Loeffelman_Severson_Homework3/LoeffelmanSeversonUDPImageHW3Receiver.java b/assignments/src/MV3500Cohort2018JulySeptember/homework3/Loeffelman_Severson_Homework3/LoeffelmanSeversonUDPImageHW3Receiver.java
index 28ec91d59c9897aff7c86bdb062989de63c884b5..51ee6d983cdeec986adc871b8bce9ab68c87ad46 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/homework3/Loeffelman_Severson_Homework3/LoeffelmanSeversonUDPImageHW3Receiver.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/homework3/Loeffelman_Severson_Homework3/LoeffelmanSeversonUDPImageHW3Receiver.java
@@ -18,7 +18,7 @@ import javax.swing.JFrame;
 import javax.swing.JLabel;
 
 /**
- *
+ * homework assignment
  * @author garrettloeffelman
  */
 public class LoeffelmanSeversonUDPImageHW3Receiver
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/homework3/Loeffelman_Severson_Homework3/LoeffelmanSeversonUDPImageSender.java b/assignments/src/MV3500Cohort2018JulySeptember/homework3/Loeffelman_Severson_Homework3/LoeffelmanSeversonUDPImageSender.java
index c8eaeba833a89cb625aa13335e3b7db841fa3189..7836e114a91a1cb72873fa13690975b1feb1dc6d 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/homework3/Loeffelman_Severson_Homework3/LoeffelmanSeversonUDPImageSender.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/homework3/Loeffelman_Severson_Homework3/LoeffelmanSeversonUDPImageSender.java
@@ -16,7 +16,7 @@ import java.net.URL;
 import javax.imageio.ImageIO;
 
 /**
- *
+ * homework assignment
  * @author garrettloeffelman
  */
 public class LoeffelmanSeversonUDPImageSender
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/projects/AyresDemchko/AyresDemchkoReceiver.java b/assignments/src/MV3500Cohort2018JulySeptember/projects/AyresDemchko/AyresDemchkoReceiver.java
index 47991b717d6f4e44879dc30579ed086a7460af12..2e4af78bfff43f48f7a52688ea138a30bc46d648 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/projects/AyresDemchko/AyresDemchkoReceiver.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/projects/AyresDemchko/AyresDemchkoReceiver.java
@@ -19,7 +19,7 @@ import java.net.MulticastSocket;
 import java.util.ArrayList;
 
 /**
- *
+ * homework assignment
  * @author kjayr
  */
 public class AyresDemchkoReceiver {
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/projects/AyresDemchko/AyresDemchkoSender.java b/assignments/src/MV3500Cohort2018JulySeptember/projects/AyresDemchko/AyresDemchkoSender.java
index 13f88318bb73625dc626ee5831a47705f94c9117..aceef8663d5a26e00641752ddd00656d1dc30b06 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/projects/AyresDemchko/AyresDemchkoSender.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/projects/AyresDemchko/AyresDemchkoSender.java
@@ -39,7 +39,7 @@ import java.util.Collections;
 import java.util.List;
 
 /**
- *
+ * homework assignment
  * @author kjayr
  */
 public class AyresDemchkoSender 
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/projects/CainThomersonFinal/C_T_EspduRequestingUnit.java b/assignments/src/MV3500Cohort2018JulySeptember/projects/CainThomersonFinal/C_T_EspduRequestingUnit.java
index f57bd9e3310f0f9c25e5a9c355183e655d6f6eb5..8320d373da32b643f031a7763825996ba815edfb 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/projects/CainThomersonFinal/C_T_EspduRequestingUnit.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/projects/CainThomersonFinal/C_T_EspduRequestingUnit.java
@@ -21,11 +21,14 @@ public class C_T_EspduRequestingUnit {
 
     /** Type of network connection */
 	public enum NetworkMode {
-        /** @see <a href="https://en.wikipedia.org/wiki/Unicast">https://en.wikipedia.org/wiki/Unicast</a> */
-		UNICAST,
-        /** @see <a href="https://en.wikipedia.org/wiki/Multicast">https://en.wikipedia.org/wiki/Multicast</a> */
+        /** Unicast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Unicast">https://en.wikipedia.org/wiki/Unicast</a> */
+	UNICAST,
+        /** Multicast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Multicast">https://en.wikipedia.org/wiki/Multicast</a> */
         MULTICAST,
-        /** @see <a href="https://en.wikipedia.org/wiki/Broadcasting_(networking)">https://en.wikipedia.org/wiki/Broadcasting_(networking)</a> */
+        /** Broadcast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Broadcasting_(networking)">https://en.wikipedia.org/wiki/Broadcasting_(networking)</a> */
         BROADCAST
 	};
 
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/projects/CainThomersonFinal/C_T_EspduSupplyerUnit.java b/assignments/src/MV3500Cohort2018JulySeptember/projects/CainThomersonFinal/C_T_EspduSupplyerUnit.java
index 7384c37ff14b6c35a3dc40d414ce92ebdf014dd3..38f49e50aa56c468cb46caf4d57e2cf7bae24e06 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/projects/CainThomersonFinal/C_T_EspduSupplyerUnit.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/projects/CainThomersonFinal/C_T_EspduSupplyerUnit.java
@@ -23,11 +23,14 @@ public class C_T_EspduSupplyerUnit {
 
     /** Type of network connection */
 	public enum NetworkMode {
-        /** @see <a href="https://en.wikipedia.org/wiki/Unicast">https://en.wikipedia.org/wiki/Unicast</a> */
-		UNICAST,
-        /** @see <a href="https://en.wikipedia.org/wiki/Multicast">https://en.wikipedia.org/wiki/Multicast</a> */
+        /** Unicast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Unicast">https://en.wikipedia.org/wiki/Unicast</a> */
+	UNICAST,
+        /** Multicast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Multicast">https://en.wikipedia.org/wiki/Multicast</a> */
         MULTICAST,
-        /** @see <a href="https://en.wikipedia.org/wiki/Broadcasting_(networking)">https://en.wikipedia.org/wiki/Broadcasting_(networking)</a> */
+        /** Broadcast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Broadcasting_(networking)">https://en.wikipedia.org/wiki/Broadcasting_(networking)</a> */
         BROADCAST
 	};
 
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/projects/LoeffelmanSeverson/LoeffelmanSeversonDISImageReceiver.java b/assignments/src/MV3500Cohort2018JulySeptember/projects/LoeffelmanSeverson/LoeffelmanSeversonDISImageReceiver.java
index 1b296aed132935afaf936ee0df7451fe98accbb5..76bdc870af16080a5d4557bd7067345c3dc10a86 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/projects/LoeffelmanSeverson/LoeffelmanSeversonDISImageReceiver.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/projects/LoeffelmanSeverson/LoeffelmanSeversonDISImageReceiver.java
@@ -30,7 +30,7 @@ import edu.nps.moves.disenum.PduType;
 import java.util.ArrayList;
 
 /**
- *
+ * homework assignment
  * @author garrettloeffelman
  */
 public class LoeffelmanSeversonDISImageReceiver
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/projects/LoeffelmanSeverson/LoeffelmanSeversonDISImageSender.java b/assignments/src/MV3500Cohort2018JulySeptember/projects/LoeffelmanSeverson/LoeffelmanSeversonDISImageSender.java
index b736ae21742312978c2e6e6e467c6cc6a1bb500e..87e0a36af575390fd502977b85afbf77c4cea11d 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/projects/LoeffelmanSeverson/LoeffelmanSeversonDISImageSender.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/projects/LoeffelmanSeverson/LoeffelmanSeversonDISImageSender.java
@@ -58,7 +58,7 @@ import java.util.logging.Logger;
 import javax.imageio.ImageIO;
 
 /**
- *
+ * homework assignment
  * @author garrettloeffelman
  */
 public class LoeffelmanSeversonDISImageSender {
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/projects/LoeffelmanSeverson/originals/LoeffelmanSeversonDISImageReceiver.java b/assignments/src/MV3500Cohort2018JulySeptember/projects/LoeffelmanSeverson/originals/LoeffelmanSeversonDISImageReceiver.java
index e670af2038d4c63cb796fa5b9c131a8f69e57b44..dea16ec92c8dab65dd33840beda256a711c82885 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/projects/LoeffelmanSeverson/originals/LoeffelmanSeversonDISImageReceiver.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/projects/LoeffelmanSeverson/originals/LoeffelmanSeversonDISImageReceiver.java
@@ -30,7 +30,7 @@ import edu.nps.moves.disenum.PduType;
 import java.util.ArrayList;
 
 /**
- *
+ * homework assignment
  * @author garrettloeffelman
  */
 public class LoeffelmanSeversonDISImageReceiver
diff --git a/assignments/src/MV3500Cohort2018JulySeptember/projects/LoeffelmanSeverson/originals/LoeffelmanSeversonDISImageSender.java b/assignments/src/MV3500Cohort2018JulySeptember/projects/LoeffelmanSeverson/originals/LoeffelmanSeversonDISImageSender.java
index b0ab679f8cbc2f8786384f44458d6c14872e3b7a..7f17961cbb17202de37f3ab12623b283bc9496b2 100644
--- a/assignments/src/MV3500Cohort2018JulySeptember/projects/LoeffelmanSeverson/originals/LoeffelmanSeversonDISImageSender.java
+++ b/assignments/src/MV3500Cohort2018JulySeptember/projects/LoeffelmanSeverson/originals/LoeffelmanSeversonDISImageSender.java
@@ -58,7 +58,7 @@ import java.util.logging.Logger;
 import javax.imageio.ImageIO;
 
 /**
- *
+ * homework assignment
  * @author garrettloeffelman
  */
 public class LoeffelmanSeversonDISImageSender {
diff --git a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/ChuckNorris.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/ChuckNorris.java
index 9b523bd760389f7a2ad3887343822cbd7b269280..7e6dfa4c44208d4f67fb0dbd5080295b820ef211 100644
--- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/ChuckNorris.java
+++ b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/ChuckNorris.java
@@ -1,241 +1,241 @@
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
-package MV3500Cohort2019JulySeptember.homework2.Brennenstuhl;
-
-/**
- *
- * @author tobia
- */
-public class ChuckNorris {
- 
-    //Defining an Array for all the Facts about Chuck Norris
-    //Credit: http://www.icndb.com/the-jokes-2/
-    
-    String[] facts = new String[]{"MacGyver can build an airplane out of gum and paper clips. Chuck Norris can kill him and take it.",
-        "If you ask Chuck Norris what time it is, he always answers \"Two seconds till\". After you ask \"Two seconds to what?\", he roundhouse kicks you in the face.",
-        "When Chuck Norris goes to donate blood, he declines the syringe, and instead requests a hand gun and a bucket.",
-        "Pluto is actually an orbiting group of British soldiers from the American Revolution who entered space after the Chuck gave them a roundhouse kick to the face.",
-        "In an average living room there are 1,242 objects Chuck Norris could use to kill you, including the room itself.",
-        "Chuck Norris doesn't shower, he only takes blood baths.",
-        "Chuck Norris can hit you so hard that he can actually alter your DNA. Decades from now your descendants will occasionally clutch their heads and yell \"What The Hell was That?\".",
-        "In the Bible, Jesus turned water into wine. But then Chuck Norris turned that wine into beer.",
-        "Chuck Norris is the only human being to display the Heisenberg uncertainty principle - you can never know both exactly where and how quickly he will roundhouse-kick you in the face.",
-        "Faster than a speeding bullet... More powerful than a locomotive... Able to leap tall buildings in a single bound... These are some of Chuck Norris's warm-up exercises.",
-        "Teenage Mutant Ninja Turtles is based on a true story: Chuck Norris once swallowed a turtle whole, and when he crapped it out, the turtle was six feet tall and had learned karate.",
-        "Someone once tried to tell Chuck Norris that roundhouse kicks aren't the best way to kick someone. This has been recorded by historians as the worst mistake anyone has ever made.",
-        "Chuck Norris has two speeds: Walk and Kill.",
-        "The opening scene of the movie \"Saving Private Ryan\" is loosely based on games of dodgeball Chuck Norris played in second grade.",
-        "Fool me once, shame on you. Fool Chuck Norris once and he will roundhouse kick you in the face.",
-        "Chuck Norris originally appeared in the \"Street Fighter II\" video game, but was removed by Beta Testers because every button caused him to do a roundhouse kick. When asked about this glitch, Norris replied \"That's no glitch.\"",
-        "If you spell Chuck Norris in Scrabble, you win. Forever.",
-        "Someone once videotaped Chuck Norris getting pissed off. It was called Walker: Texas Chain Saw Masacre.",
-        "A handicapped parking sign does not signify that this spot is for handicapped people. It is actually in fact a warning, that the spot belongs to Chuck Norris and that you will be handicapped if you park there.",
-        "Chuck Norris doesn't wash his clothes. He disembowels them.",
-        "Chuck Norris doesn't churn butter. He roundhouse kicks the cows and the butter comes straight out.",
-        "Police label anyone attacking Chuck Norris as a Code 45-11.... A suicide.",
-        "Chuck Norris is the only man to ever defeat a brick wall in a game of tennis.",
-        "Chuck Norris once ate three 72 oz. steaks in one hour. He spent the first 45 minutes having sex with his waitress.",
-        "There is no theory of evolution, just a list of creatures Chuck Norris allows to live.",
-        "Chuck Norris can win a game of Connect Four in only three moves.",
-        "CNN was originally created as the \"Chuck Norris Network\" to update Americans with on-the-spot ass kicking in real-time.",
-        "Chuck Norris invented Kentucky Fried Chicken's famous secret recipe with eleven herbs and spices. Nobody ever mentions the twelfth ingredient: Fear.",
-        "When Chuck Norris sends in his taxes, he sends blank forms and includes only a picture of himself, crouched and ready to attack. Chuck Norris has not had to pay taxes, ever.",
-        "Chuck Norris drives an ice cream truck covered in human skulls.",
-        "Most people have 23 pairs of chromosomes. Chuck Norris has 72... and they're all poisonous.",
-        "The Great Wall of China was originally created to keep Chuck Norris out. It failed miserably.",
-        "Chuck Norris is ten feet tall, weighs two-tons, breathes fire, and could eat a hammer and take a shotgun blast standing.",
-        "Crop circles are Chuck Norris' way of telling the world that sometimes corn needs to lie down.",
-        "Chuck Norris once roundhouse kicked someone so hard that his foot broke the speed of light, went back in time, and killed Amelia Earhart while she was flying over the Pacific Ocean.",
-        "When Chuck Norris calls 1-900 numbers, he doesn't get charged. He holds up the phone and money falls out.",
-        "Chuck Norris once ate a whole cake before his friends could tell him there was a stripper in it.",
-        "Some people like to eat frogs' legs. Chuck Norris likes to eat lizard legs. Hence, snakes.",
-        "There are no races, only countries of people Chuck Norris has beaten to different shades of black and blue.",
-        "When Chuck Norris was denied an Egg McMuffin at McDonald's because it was 10:35, he roundhouse kicked the store so hard it became a Wendy's.",
-        "Chuck Norris can't finish a \"color by numbers\" because his markers are filled with the blood of his victims. Unfortunately, all blood is dark red.",
-        "A Chuck Norris-delivered Roundhouse Kick is the preferred method of execution in 16 states.",
-        "When Chuck Norris falls in water, Chuck Norris doesn't get wet. Water gets Chuck Norris.",
-        "Scientists have estimated that the energy given off during the Big Bang is roughly equal to 1CNRhK (Chuck Norris Roundhouse Kick).",
-        "Chuck Norris' house has no doors, only walls that he walks through.",
-        "When Chuck Norris has sex with a man, it won't be because he is gay. It will be because he has run out of women.",
-        "How much wood would a woodchuck chuck if a woodchuck could Chuck Norris? All of it.",
-        "Chuck Norris doesn't actually write books, the words assemble themselves out of fear.",
-        "In honor of Chuck Norris, all McDonald's in Texas have an even larger size than the super-size. When ordering, just ask to be Chucksized.",
-        "Chuck Norris can believe it's not butter.",
-        "If tapped, a Chuck Norris roundhouse kick could power the country of Australia for 44 minutes.",
-        "Chuck Norris can divide by zero.",
-        "The grass is always greener on the other side, unless Chuck Norris has been there. In that case the grass is most likely soaked in blood and tears.",
-        "Newton's Third Law is wrong: Although it states that for each action, there is an equal and opposite reaction, there is no force equal in reaction to a Chuck Norris roundhouse kick.",
-        "Chuck Norris invented his own type of karate. It's called Chuck-Will-Kill.",
-        "When an episode of Walker Texas Ranger was aired in France, the French surrendered to Chuck Norris just to be on the safe side.",
-        "While urinating, Chuck Norris is easily capable of welding titanium.",
-        "When Chuck Norris talks, everybody listens. And dies.",
-        "When Steven Seagal kills a ninja, he only takes its hide. When Chuck Norris kills a ninja, he uses every part.",
-        "Wilt Chamberlain claims to have slept with more than 20,000 women in his lifetime. Chuck Norris calls this \"a slow Tuesday.\"",
-        "Contrary to popular belief, there is indeed enough Chuck Norris to go around.",
-        "Chuck Norris doesnt shave; he kicks himself in the face. The only thing that can cut Chuck Norris is Chuck Norris.",
-        "For some, the left testicle is larger than the right one. For Chuck Norris, each testicle is larger than the other one.",
-        "Chuck Norris always knows the EXACT location of Carmen SanDiego.",
-        "When taking the SAT, write \"Chuck Norris\" for every answer. You will score over 8000.",
-        "Chuck Norris invented black. In fact, he invented the entire spectrum of visible light. Except pink. Tom Cruise invented pink.",
-        "When you're Chuck Norris, anything + anything is equal to 1. One roundhouse kick to the face.",
-        "Chuck Norris has the greatest Poker-Face of all time. He won the 1983 World Series of Poker, despite holding only a Joker, a Get out of Jail Free Monopoly card, a 2 of clubs, 7 of spades and a green #4 card from the game UNO.",
-        "On his birthday, Chuck Norris randomly selects one lucky child to be thrown into the sun.",
-        "Nobody doesn't like Sara Lee. Except Chuck Norris.",
-        "Chuck Norris doesn't throw up if he drinks too much. Chuck Norris throws down!",
-        "In the beginning there was nothing...then Chuck Norris Roundhouse kicked that nothing in the face and said \"Get a job\". That is the story of the universe.",
-        "Chuck Norris has 12 moons. One of those moons is the Earth.",
-        "Chuck Norris grinds his coffee with his teeth and boils the water with his own rage.",
-        "Archaeologists unearthed an old english dictionary dating back to the year 1236. It defined \"victim\" as \"one who has encountered Chuck Norris\"",
-        "Chuck Norris ordered a Big Mac at Burger King, and got one.",
-        "Chuck Norris and Mr. T walked into a bar. The bar was instantly destroyed, as that level of awesome cannot be contained in one building.",
-        "If you Google search \"Chuck Norris getting his ass kicked\" you will generate zero results. It just doesn't happen.",
-        "Chuck Norris can drink an entire gallon of milk in thirty-seven seconds.",
-        "Little known medical fact: Chuck Norris invented the Caesarean section when he roundhouse-kicked his way out of his mother's womb.",
-        "Chuck Norris doesn't bowl strikes, he just knocks down one pin and the other nine faint.",
-        "The show Survivor had the original premise of putting people on an island with Chuck Norris. There were no survivors, and nobody is brave enough to go to the island to retrieve the footage.",
-        "It takes Chuck Norris 20 minutes to watch 60 Minutes.",
-        "You know how they say if you die in your dream then you will die in real life? In actuality, if you dream of death then Chuck Norris will find you and kill you.",
-        "Chuck Norris has a deep and abiding respect for human life... unless it gets in his way.",
-        "The Bermuda Triangle used to be the Bermuda Square, until Chuck Norris Roundhouse kicked one of the corners off.",
-        "When Chuck Norris is in a crowded area, he doesn't walk around people. He walks through them.",
-        "Chuck Norris once ate an entire bottle of sleeping pills. They made him blink.",
-        "James Cameron wanted Chuck Norris to play the Terminator. However, upon reflection, he realized that would have turned his movie into a documentary, so he went with Arnold Schwarzenegger.",
-        "Chuck Norris can touch MC Hammer.",
-        "Thousands of years ago Chuck Norris came across a bear. It was so terrified that it fled north into the arctic. It was also so terrified that all of its decendents now have white hair.",
-        "Chuck Norris played Russian Roulette with a fully loaded gun and won.",
-        "It takes 14 puppeteers to make Chuck Norris smile, but only 2 to make him destroy an orphanage.",
-        "Chuck Norris is responsible for China's over-population. He hosted a Karate tournament in Beijing and all women within 1,000 miles became pregnant instantly.",
-        "Some people wear Superman pajamas. Superman wears Chuck Norris pajamas.",
-        "Chuck Norris once worked as a weatherman for the San Diego evening news. Every night he would make the same forecast: Partly cloudy with a 75% chance of Pain.",
-        "Simply by pulling on both ends, Chuck Norris can stretch diamonds back into coal.",
-        "When Chuck Norris does a pushup, he isn't lifting himself up, he's pushing the Earth down.",
-        "Chuck Norris invented the bolt-action rifle, liquor, sexual intercourse, and football-- in that order.",
-        "A high tide means Chuck Norris is flying over your coast. The tide is caused by God pissing his pants.",
-        "Chuck Norris keeps his friends close and his enemies closer. Close enough to drop them with one round house kick to the face.",
-        "There is in fact an 'I' in Norris, but there is no 'team'. Not even close.",
-        "Scotty in Star Trek often says \"Ye cannae change the laws of physics.\" This is untrue. Chuck Norris can change the laws of physics. With his fists.",
-        "An anagram for Walker Texas Ranger is KARATE WRANGLER SEX. I don't know what that is, but it sounds AWESOME.",
-        "Chuck Norris doesn't stub his toes. He accidentally destroys chairs, bedframes, and sidewalks.",
-        "Using his trademark roundhouse kick, Chuck Norris once made a fieldgoal in RJ Stadium in Tampa Bay from the 50 yard line of Qualcomm stadium in San Diego.",
-        "Chuck Norris roundhouse kicks don't really kill people. They wipe out their entire existence from the space-time continuum.",
-        "Chuck Norris does not own a stove, oven, or microwave , because revenge is a dish best served cold.",
-        "Tom Clancy has to pay royalties to Chuck Norris because \"The Sum of All Fears\" is the name of Chuck Norris' autobiography.",
-        "Chuck Norris can slam a revolving door.",
-        "Chuck Norris built a better mousetrap, but the world was too frightened to beat a path to his door.",
-        "The original draft of The Lord of the Rings featured Chuck Norris instead of Frodo Baggins. It was only 5 pages long, as Chuck roundhouse-kicked Sauron's ass halfway through the first chapter.",
-        "Hellen Keller's favorite color is Chuck Norris.",
-        "Chuck Norris eats beef jerky and craps gunpowder. Then, he uses that gunpowder to make a bullet, which he uses to kill a cow and make more beef jerky. Some people refer to this as the \"Circle of Life.\"",
-        "If, by some incredible space-time paradox, Chuck Norris would ever fight himself, he'd win. Period.",
-        "Chuck Norris is currently suing myspace for taking the name of what he calls everything around you.",
-        "The crossing lights in Chuck Norris's home town say \"Die slowly\" and \"die quickly\". They each have a picture of Chuck Norris punching or kicking a pedestrian.",
-        "Science Fact: Roundhouse kicks are comprised primarily of an element called Chucktanium.",
-        "Chuck Norris proved that we are alone in the universe. We weren't before his first space expedition.",
-        "Superman once watched an episode of Walker, Texas Ranger. He then cried himself to sleep.",
-        "Chuck Norris doesn't step on toes. Chuck Norris steps on necks.",
-        "The movie \"Delta Force\" was extremely hard to make because Chuck had to downplay his abilities. The first few cuts were completely unbelievable.",
-        "Movie trivia: The movie \"Invasion U.S.A.\" is, in fact, a documentary.",
-        "Chuck Norris does not \"style\" his hair. It lays perfectly in place out of sheer terror.",
-        "There is no such thing as global warming. Chuck Norris was cold, so he turned the sun up.",
-        "A study showed the leading causes of death in the United States are: 1. Heart disease, 2. Chuck Norris, 3. Cancer",
-        "It's widely believed that Jesus was Chuck Norris' stunt double for crucifixion due to the fact that it is impossible for nails to pierce Chuck Norris' skin.",
-        "Chuck Norris did in fact, build Rome in a day.",
-        "Along with his black belt, Chuck Norris often chooses to wear brown shoes. No one has DARED call him on it. Ever.",
-        "Once you go Norris, you are physically unable to go back.",
-        "Ninjas want to grow up to be just like Chuck Norris. But usually they grow up just to be killed by Chuck Norris.",
-        "Chuck Norris once sued Burger King after they refused to put razor wire in his Whopper Jr, insisting that that actually is \"his\" way.",
-        "The last thing you hear before Chuck Norris gives you a roundhouse kick? No one knows because dead men tell no tales.",
-        "Chuck Norris doesn't play god. Playing is for children.",
-        "As a teen, Chuck Norris had sex with every nun in a convent tucked away in the hills of Tuscany. Nine months later the nuns gave birth to the 1972 Miami Dolphins, the only undefeated and untied team in professional football history.",
-        "Chuck Norris is the only person in the world that can actually email a roundhouse kick.",
-        "Chuck Norris won super bowls VII and VIII singlehandedly before unexpectedly retiring to pursue a career in ass-kicking.",
-        "Wo hu cang long. The translation from Mandarin Chinese reads: \"Crouching Chuck, Hidden Norris\"",
-        "Chuck Norris can set ants on fire with a magnifying glass. At night.",
-        "Some kids play Kick the can. Chuck Norris played Kick the keg.",
-        "'Icy-Hot' is too weak for Chuck Norris. After a workout, Chuck Norris rubs his muscles down with liquid-hot MAGMA.",
-        "Chuck Norris cannot love, he can only not kill.",
-        "When Chuck Norris was a baby, he didn't suck his mother's breast. His mother served him whiskey, straight out of the bottle.",
-        "According to Einstein's theory of relativity, Chuck Norris can actually roundhouse kick you yesterday.",
-        "Chuck Norris once pulled out a single hair from his beard and skewered three men through the heart with it.",
-        "In an act of great philanthropy, Chuck made a generous donation to the American Cancer Society. He donated 6,000 dead bodies for scientific research.",
-        "Chuck Norris? favourite cut of meat is the roundhouse.",
-        "When J. Robert Oppenheimer said \"I am become death, the destroyer Of worlds\", He was not referring to the atomic bomb. He was referring to the Chuck Norris halloween costume he was wearing.",
-        "Chuck Norris recently had the idea to sell his urine as a canned beverage. We know this beverage as Red Bull.",
-        "In a recent survey it was discovered the 94% of American women lost their virginity to Chuck Norris. The other 6% were incredibly fat or ugly.",
-        "Chuck Norris invented a language that incorporates karate and roundhouse kicks. So next time Chuck Norris is kicking your ass, don?t be offended or hurt, he may be just trying to tell you he likes your hat.",
-        "If at first you don't succeed, you're not Chuck Norris.",
-        "If Chuck Norris were a calendar, every month would be named Chucktober, and every day he'd kick your ass.",
-        "Chuck Norris's show is called Walker: Texas Ranger, because Chuck Norris doesn't run.",
-        "MacGyver can build an airplane out of gum and paper clips, but Chuck Norris can roundhouse-kick his head through a wall and take it.",
-        "Behind every successful man, there is a woman. Behind every dead man, there is Chuck Norris.",
-        "Chuck Norris brushes his teeth with a mixture of iron shavings, industrial paint remover, and wood-grain alcohol.",
-        "The easiest way to determine Chuck Norris' age is to cut him in half and count the rings.",
-        "There is endless debate about the existence of the human soul. Well it does exist and Chuck Norris finds it delicious.",
-        "Most boots are made for walkin'. Chuck Norris' boots ain't that merciful.",
-        "The US did not boycott the 1980 Summer Olympics in Moscow due to political reasons: Chuck Norris killed the entire US team with a single round-house kick during TaeKwonDo practice.",
-        "Chuck Norris wears a live rattlesnake as a condom.",
-        "The Bible was originally titled \"Chuck Norris and Friends\"",
-        "Chuck Norris began selling the Total Gym as an ill-fated attempt to make his day-to-day opponents less laughably pathetic.",
-        "Do you know why Baskin Robbins only has 31 flavors? Because Chuck Norris doesn't like Fudge Ripple.",
-        "When Chuck Norris says \"More cowbell\", he MEANS it.",
-        "On the set of Walker Texas Ranger Chuck Norris brought a dying lamb back to life by nuzzling it with his beard. As the onlookers gathered, the lamb sprang to life. Chuck Norris then roundhouse kicked it, killing it instantly. This was just to prove that the good Chuck givet",
-        "Chuck Norris was what Willis was talkin' about.",
-        "Google won't search for Chuck Norris because it knows you don't find Chuck Norris, he finds you.",
-        "Chuck Norris can lead a horse to water AND make it drink.",
-        "Nagasaki never had a bomb dropped on it. Chuck Norris jumped out of a plane and punched the ground",
-        "It is scientifically impossible for Chuck Norris to have had a mortal father. The most popular theory is that he went back in time and fathered himself.",
-        "Chuck Norris destroyed the periodic table, because Chuck Norris only recognizes the element of surprise.",
-        "It is believed dinosaurs are extinct due to a giant meteor. That's true if you want to call Chuck Norris a giant meteor.",
-        "Chuck Norris shot the sheriff, but he round house kicked the deputy.",
-        "That's not Chuck Norris doing push-ups -- that's Chuck Norris moving the Earth away from the path of a deadly asteroid.",
-        "Chuck Norris can judge a book by its cover.",
-        "Nothing can escape the gravity of a black hole, except for Chuck Norris. Chuck Norris eats black holes. They taste like chicken.",
-        "Chuck Norris does not play the lottery. It doesn't have nearly enough balls.",
-        "How many Chuck Norris' does it take to change a light bulb? None, Chuck Norris prefers to kill in the dark.",
-        "As President Roosevelt said: \"We have nothing to fear but fear itself. And Chuck Norris.\"",
-        "Chuck Norris just says \"no\" to drugs. If he said \"yes\", it would collapse Colombia's infrastructure.",
-        "Crime does not pay - unless you are an undertaker following Walker, Texas Ranger, on a routine patrol.",
-        "Chuck Norris invented the internet? just so he had a place to store his porn.",
-        "Chuck Norris does not own a house. He walks into random houses and people move.",
-        "It is better to give than to receive. This is especially true of a Chuck Norris roundhouse kick.",
-        "Chuck Norris is the only person to ever win a staring contest against Ray Charles and Stevie Wonder.",
-        "Industrial logging isn't the cause of deforestation. Chuck Norris needs toothpicks.",
-        "Chuck Norris smells what the Rock is cooking... because the Rock is Chuck Norris' personal chef.",
-        "When Chuck Norris plays Oregon Trail, his family does not die from cholera or dysentery, but rather, roundhouse kicks to the face. He also requires no wagon, since he carries the oxen, axels, and buffalo meat on his back. He always makes it to Oregon before you.",
-        "Chuck Norris is the reason why Waldo is hiding.",
-        "\"Brokeback Mountain\" is not just a movie. It's also what Chuck Norris calls the pile of dead ninjas in his front yard.",
-        "When God said, \"let there be light\", Chuck Norris said, \"say 'please'.\"",
-        "Chuck Norris does not eat. Food understands that the only safe haven from Chuck Norris' fists is inside his own body.",
-        "One day Chuck Norris walked down the street with a massive erection. There were no survivors.",
-        "Chuck Norris built a time machine and went back in time to stop the JFK assassination. As Oswald shot, Chuck met all three bullets with his beard, deflecting them. JFK's head exploded out of sheer amazement.",
-        "Chuck Norris uses a night light. Not because Chuck Norris is afraid of the dark, but the dark is afraid of Chuck Norris.",
-        "When Bruce Banner gets mad, he turns into the Hulk. When the Hulk gets mad, he turns into Chuck Norris.",
-        "Chuck Norris kills anyone that asks: \"Do you want fries with that?\". Because by now everyone should know that Chuck doesn't want fries with anything. Ever.",
-        "Chuck Norris once kicked a horse in the chin. Its descendants are known today as Giraffes.",
-        "Sticks and stones may break your bones, but a Chuck Norris glare will liquefy your kidneys.",
-        "Human cloning is outlawed because of Chuck Norris, because then it would be possible for a Chuck Norris roundhouse kick to meet another Chuck Norris roundhouse kick. Physicists theorize that this contact would end the universe.",
-        "Chuck Norris once went skydiving, but promised never to do it again. One Grand Canyon is enough.",
-        "Chuck Norris's version of a \"chocolate milkshake\" is a raw porterhouse wrapped around ten Hershey bars, and doused in diesel fuel.",
-        "In a fight between Batman and Darth Vader, the winner would be Chuck Norris.",
-        "Chuck Norris puts his pants on one leg at a time, just like the rest of us. The only difference is, then he kills people.",
-        "Everybody loves Raymond. Except Chuck Norris.",
-        "Contrary to popular belief, the Titanic didn't hit an iceberg. The ship was off course and ran into Chuck Norris while he was doing the backstroke across the Atlantic.",
-        "Chuck Norris got his drivers license at the age of 16. Seconds.",
-        "Chuck Norris? sperm is so badass, he had sex with Nicole Kidman, and 7 months later she prematurely gave birth to a Ford Excursion.",
-        "Chuck Norris can win at solitaire with only 18 cards.",
-        "Chuck Norris once shat blood - the blood of 11,940 natives he had killed and eaten.",
-        "Maslow's theory of higher needs does not apply to Chuck Norris. He only has two needs: killing people and finding people to kill.",
-        "The truth will set you free. Unless Chuck Norris has you, in which case, forget it buddy!",
-        "Kryptonite has been found to contain trace elements of Chuck Norris roundhouse kicks to the face. This is why it is so deadly to Superman.",
-        "Saddam Hussein was not found hiding in a \"hole.\" Saddam was roundhouse-kicked in the head by Chuck Norris in Kansas, which sent him through the earth, stopping just short of the surface of Iraq.",
-        "Chuck Norris doesn't look both ways before he crosses the street... he just roundhouses any cars that get too close.",
-        "Chuck Norris does not have to answer the phone. His beard picks up the incoming electrical impulses and translates them into audible sound.",
-        "How many roundhouse kicks does it take to get to the center of a tootsie pop? Just one. From Chuck Norris.",
-        "Chuck Norris doesnt wear a watch, HE decides what time it is."
-            
-    };
-    
-    
-}
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package MV3500Cohort2019JulySeptember.homework2.Brennenstuhl;
+
+/**
+ * homework assignment
+ * @author tobia
+ */
+public class ChuckNorris {
+ 
+    //Defining an Array for all the Facts about Chuck Norris
+    //Credit: http://www.icndb.com/the-jokes-2/
+    
+    String[] facts = new String[]{"MacGyver can build an airplane out of gum and paper clips. Chuck Norris can kill him and take it.",
+        "If you ask Chuck Norris what time it is, he always answers \"Two seconds till\". After you ask \"Two seconds to what?\", he roundhouse kicks you in the face.",
+        "When Chuck Norris goes to donate blood, he declines the syringe, and instead requests a hand gun and a bucket.",
+        "Pluto is actually an orbiting group of British soldiers from the American Revolution who entered space after the Chuck gave them a roundhouse kick to the face.",
+        "In an average living room there are 1,242 objects Chuck Norris could use to kill you, including the room itself.",
+        "Chuck Norris doesn't shower, he only takes blood baths.",
+        "Chuck Norris can hit you so hard that he can actually alter your DNA. Decades from now your descendants will occasionally clutch their heads and yell \"What The Hell was That?\".",
+        "In the Bible, Jesus turned water into wine. But then Chuck Norris turned that wine into beer.",
+        "Chuck Norris is the only human being to display the Heisenberg uncertainty principle - you can never know both exactly where and how quickly he will roundhouse-kick you in the face.",
+        "Faster than a speeding bullet... More powerful than a locomotive... Able to leap tall buildings in a single bound... These are some of Chuck Norris's warm-up exercises.",
+        "Teenage Mutant Ninja Turtles is based on a true story: Chuck Norris once swallowed a turtle whole, and when he crapped it out, the turtle was six feet tall and had learned karate.",
+        "Someone once tried to tell Chuck Norris that roundhouse kicks aren't the best way to kick someone. This has been recorded by historians as the worst mistake anyone has ever made.",
+        "Chuck Norris has two speeds: Walk and Kill.",
+        "The opening scene of the movie \"Saving Private Ryan\" is loosely based on games of dodgeball Chuck Norris played in second grade.",
+        "Fool me once, shame on you. Fool Chuck Norris once and he will roundhouse kick you in the face.",
+        "Chuck Norris originally appeared in the \"Street Fighter II\" video game, but was removed by Beta Testers because every button caused him to do a roundhouse kick. When asked about this glitch, Norris replied \"That's no glitch.\"",
+        "If you spell Chuck Norris in Scrabble, you win. Forever.",
+        "Someone once videotaped Chuck Norris getting pissed off. It was called Walker: Texas Chain Saw Masacre.",
+        "A handicapped parking sign does not signify that this spot is for handicapped people. It is actually in fact a warning, that the spot belongs to Chuck Norris and that you will be handicapped if you park there.",
+        "Chuck Norris doesn't wash his clothes. He disembowels them.",
+        "Chuck Norris doesn't churn butter. He roundhouse kicks the cows and the butter comes straight out.",
+        "Police label anyone attacking Chuck Norris as a Code 45-11.... A suicide.",
+        "Chuck Norris is the only man to ever defeat a brick wall in a game of tennis.",
+        "Chuck Norris once ate three 72 oz. steaks in one hour. He spent the first 45 minutes having sex with his waitress.",
+        "There is no theory of evolution, just a list of creatures Chuck Norris allows to live.",
+        "Chuck Norris can win a game of Connect Four in only three moves.",
+        "CNN was originally created as the \"Chuck Norris Network\" to update Americans with on-the-spot ass kicking in real-time.",
+        "Chuck Norris invented Kentucky Fried Chicken's famous secret recipe with eleven herbs and spices. Nobody ever mentions the twelfth ingredient: Fear.",
+        "When Chuck Norris sends in his taxes, he sends blank forms and includes only a picture of himself, crouched and ready to attack. Chuck Norris has not had to pay taxes, ever.",
+        "Chuck Norris drives an ice cream truck covered in human skulls.",
+        "Most people have 23 pairs of chromosomes. Chuck Norris has 72... and they're all poisonous.",
+        "The Great Wall of China was originally created to keep Chuck Norris out. It failed miserably.",
+        "Chuck Norris is ten feet tall, weighs two-tons, breathes fire, and could eat a hammer and take a shotgun blast standing.",
+        "Crop circles are Chuck Norris' way of telling the world that sometimes corn needs to lie down.",
+        "Chuck Norris once roundhouse kicked someone so hard that his foot broke the speed of light, went back in time, and killed Amelia Earhart while she was flying over the Pacific Ocean.",
+        "When Chuck Norris calls 1-900 numbers, he doesn't get charged. He holds up the phone and money falls out.",
+        "Chuck Norris once ate a whole cake before his friends could tell him there was a stripper in it.",
+        "Some people like to eat frogs' legs. Chuck Norris likes to eat lizard legs. Hence, snakes.",
+        "There are no races, only countries of people Chuck Norris has beaten to different shades of black and blue.",
+        "When Chuck Norris was denied an Egg McMuffin at McDonald's because it was 10:35, he roundhouse kicked the store so hard it became a Wendy's.",
+        "Chuck Norris can't finish a \"color by numbers\" because his markers are filled with the blood of his victims. Unfortunately, all blood is dark red.",
+        "A Chuck Norris-delivered Roundhouse Kick is the preferred method of execution in 16 states.",
+        "When Chuck Norris falls in water, Chuck Norris doesn't get wet. Water gets Chuck Norris.",
+        "Scientists have estimated that the energy given off during the Big Bang is roughly equal to 1CNRhK (Chuck Norris Roundhouse Kick).",
+        "Chuck Norris' house has no doors, only walls that he walks through.",
+        "When Chuck Norris has sex with a man, it won't be because he is gay. It will be because he has run out of women.",
+        "How much wood would a woodchuck chuck if a woodchuck could Chuck Norris? All of it.",
+        "Chuck Norris doesn't actually write books, the words assemble themselves out of fear.",
+        "In honor of Chuck Norris, all McDonald's in Texas have an even larger size than the super-size. When ordering, just ask to be Chucksized.",
+        "Chuck Norris can believe it's not butter.",
+        "If tapped, a Chuck Norris roundhouse kick could power the country of Australia for 44 minutes.",
+        "Chuck Norris can divide by zero.",
+        "The grass is always greener on the other side, unless Chuck Norris has been there. In that case the grass is most likely soaked in blood and tears.",
+        "Newton's Third Law is wrong: Although it states that for each action, there is an equal and opposite reaction, there is no force equal in reaction to a Chuck Norris roundhouse kick.",
+        "Chuck Norris invented his own type of karate. It's called Chuck-Will-Kill.",
+        "When an episode of Walker Texas Ranger was aired in France, the French surrendered to Chuck Norris just to be on the safe side.",
+        "While urinating, Chuck Norris is easily capable of welding titanium.",
+        "When Chuck Norris talks, everybody listens. And dies.",
+        "When Steven Seagal kills a ninja, he only takes its hide. When Chuck Norris kills a ninja, he uses every part.",
+        "Wilt Chamberlain claims to have slept with more than 20,000 women in his lifetime. Chuck Norris calls this \"a slow Tuesday.\"",
+        "Contrary to popular belief, there is indeed enough Chuck Norris to go around.",
+        "Chuck Norris doesnt shave; he kicks himself in the face. The only thing that can cut Chuck Norris is Chuck Norris.",
+        "For some, the left testicle is larger than the right one. For Chuck Norris, each testicle is larger than the other one.",
+        "Chuck Norris always knows the EXACT location of Carmen SanDiego.",
+        "When taking the SAT, write \"Chuck Norris\" for every answer. You will score over 8000.",
+        "Chuck Norris invented black. In fact, he invented the entire spectrum of visible light. Except pink. Tom Cruise invented pink.",
+        "When you're Chuck Norris, anything + anything is equal to 1. One roundhouse kick to the face.",
+        "Chuck Norris has the greatest Poker-Face of all time. He won the 1983 World Series of Poker, despite holding only a Joker, a Get out of Jail Free Monopoly card, a 2 of clubs, 7 of spades and a green #4 card from the game UNO.",
+        "On his birthday, Chuck Norris randomly selects one lucky child to be thrown into the sun.",
+        "Nobody doesn't like Sara Lee. Except Chuck Norris.",
+        "Chuck Norris doesn't throw up if he drinks too much. Chuck Norris throws down!",
+        "In the beginning there was nothing...then Chuck Norris Roundhouse kicked that nothing in the face and said \"Get a job\". That is the story of the universe.",
+        "Chuck Norris has 12 moons. One of those moons is the Earth.",
+        "Chuck Norris grinds his coffee with his teeth and boils the water with his own rage.",
+        "Archaeologists unearthed an old english dictionary dating back to the year 1236. It defined \"victim\" as \"one who has encountered Chuck Norris\"",
+        "Chuck Norris ordered a Big Mac at Burger King, and got one.",
+        "Chuck Norris and Mr. T walked into a bar. The bar was instantly destroyed, as that level of awesome cannot be contained in one building.",
+        "If you Google search \"Chuck Norris getting his ass kicked\" you will generate zero results. It just doesn't happen.",
+        "Chuck Norris can drink an entire gallon of milk in thirty-seven seconds.",
+        "Little known medical fact: Chuck Norris invented the Caesarean section when he roundhouse-kicked his way out of his mother's womb.",
+        "Chuck Norris doesn't bowl strikes, he just knocks down one pin and the other nine faint.",
+        "The show Survivor had the original premise of putting people on an island with Chuck Norris. There were no survivors, and nobody is brave enough to go to the island to retrieve the footage.",
+        "It takes Chuck Norris 20 minutes to watch 60 Minutes.",
+        "You know how they say if you die in your dream then you will die in real life? In actuality, if you dream of death then Chuck Norris will find you and kill you.",
+        "Chuck Norris has a deep and abiding respect for human life... unless it gets in his way.",
+        "The Bermuda Triangle used to be the Bermuda Square, until Chuck Norris Roundhouse kicked one of the corners off.",
+        "When Chuck Norris is in a crowded area, he doesn't walk around people. He walks through them.",
+        "Chuck Norris once ate an entire bottle of sleeping pills. They made him blink.",
+        "James Cameron wanted Chuck Norris to play the Terminator. However, upon reflection, he realized that would have turned his movie into a documentary, so he went with Arnold Schwarzenegger.",
+        "Chuck Norris can touch MC Hammer.",
+        "Thousands of years ago Chuck Norris came across a bear. It was so terrified that it fled north into the arctic. It was also so terrified that all of its decendents now have white hair.",
+        "Chuck Norris played Russian Roulette with a fully loaded gun and won.",
+        "It takes 14 puppeteers to make Chuck Norris smile, but only 2 to make him destroy an orphanage.",
+        "Chuck Norris is responsible for China's over-population. He hosted a Karate tournament in Beijing and all women within 1,000 miles became pregnant instantly.",
+        "Some people wear Superman pajamas. Superman wears Chuck Norris pajamas.",
+        "Chuck Norris once worked as a weatherman for the San Diego evening news. Every night he would make the same forecast: Partly cloudy with a 75% chance of Pain.",
+        "Simply by pulling on both ends, Chuck Norris can stretch diamonds back into coal.",
+        "When Chuck Norris does a pushup, he isn't lifting himself up, he's pushing the Earth down.",
+        "Chuck Norris invented the bolt-action rifle, liquor, sexual intercourse, and football-- in that order.",
+        "A high tide means Chuck Norris is flying over your coast. The tide is caused by God pissing his pants.",
+        "Chuck Norris keeps his friends close and his enemies closer. Close enough to drop them with one round house kick to the face.",
+        "There is in fact an 'I' in Norris, but there is no 'team'. Not even close.",
+        "Scotty in Star Trek often says \"Ye cannae change the laws of physics.\" This is untrue. Chuck Norris can change the laws of physics. With his fists.",
+        "An anagram for Walker Texas Ranger is KARATE WRANGLER SEX. I don't know what that is, but it sounds AWESOME.",
+        "Chuck Norris doesn't stub his toes. He accidentally destroys chairs, bedframes, and sidewalks.",
+        "Using his trademark roundhouse kick, Chuck Norris once made a fieldgoal in RJ Stadium in Tampa Bay from the 50 yard line of Qualcomm stadium in San Diego.",
+        "Chuck Norris roundhouse kicks don't really kill people. They wipe out their entire existence from the space-time continuum.",
+        "Chuck Norris does not own a stove, oven, or microwave , because revenge is a dish best served cold.",
+        "Tom Clancy has to pay royalties to Chuck Norris because \"The Sum of All Fears\" is the name of Chuck Norris' autobiography.",
+        "Chuck Norris can slam a revolving door.",
+        "Chuck Norris built a better mousetrap, but the world was too frightened to beat a path to his door.",
+        "The original draft of The Lord of the Rings featured Chuck Norris instead of Frodo Baggins. It was only 5 pages long, as Chuck roundhouse-kicked Sauron's ass halfway through the first chapter.",
+        "Hellen Keller's favorite color is Chuck Norris.",
+        "Chuck Norris eats beef jerky and craps gunpowder. Then, he uses that gunpowder to make a bullet, which he uses to kill a cow and make more beef jerky. Some people refer to this as the \"Circle of Life.\"",
+        "If, by some incredible space-time paradox, Chuck Norris would ever fight himself, he'd win. Period.",
+        "Chuck Norris is currently suing myspace for taking the name of what he calls everything around you.",
+        "The crossing lights in Chuck Norris's home town say \"Die slowly\" and \"die quickly\". They each have a picture of Chuck Norris punching or kicking a pedestrian.",
+        "Science Fact: Roundhouse kicks are comprised primarily of an element called Chucktanium.",
+        "Chuck Norris proved that we are alone in the universe. We weren't before his first space expedition.",
+        "Superman once watched an episode of Walker, Texas Ranger. He then cried himself to sleep.",
+        "Chuck Norris doesn't step on toes. Chuck Norris steps on necks.",
+        "The movie \"Delta Force\" was extremely hard to make because Chuck had to downplay his abilities. The first few cuts were completely unbelievable.",
+        "Movie trivia: The movie \"Invasion U.S.A.\" is, in fact, a documentary.",
+        "Chuck Norris does not \"style\" his hair. It lays perfectly in place out of sheer terror.",
+        "There is no such thing as global warming. Chuck Norris was cold, so he turned the sun up.",
+        "A study showed the leading causes of death in the United States are: 1. Heart disease, 2. Chuck Norris, 3. Cancer",
+        "It's widely believed that Jesus was Chuck Norris' stunt double for crucifixion due to the fact that it is impossible for nails to pierce Chuck Norris' skin.",
+        "Chuck Norris did in fact, build Rome in a day.",
+        "Along with his black belt, Chuck Norris often chooses to wear brown shoes. No one has DARED call him on it. Ever.",
+        "Once you go Norris, you are physically unable to go back.",
+        "Ninjas want to grow up to be just like Chuck Norris. But usually they grow up just to be killed by Chuck Norris.",
+        "Chuck Norris once sued Burger King after they refused to put razor wire in his Whopper Jr, insisting that that actually is \"his\" way.",
+        "The last thing you hear before Chuck Norris gives you a roundhouse kick? No one knows because dead men tell no tales.",
+        "Chuck Norris doesn't play god. Playing is for children.",
+        "As a teen, Chuck Norris had sex with every nun in a convent tucked away in the hills of Tuscany. Nine months later the nuns gave birth to the 1972 Miami Dolphins, the only undefeated and untied team in professional football history.",
+        "Chuck Norris is the only person in the world that can actually email a roundhouse kick.",
+        "Chuck Norris won super bowls VII and VIII singlehandedly before unexpectedly retiring to pursue a career in ass-kicking.",
+        "Wo hu cang long. The translation from Mandarin Chinese reads: \"Crouching Chuck, Hidden Norris\"",
+        "Chuck Norris can set ants on fire with a magnifying glass. At night.",
+        "Some kids play Kick the can. Chuck Norris played Kick the keg.",
+        "'Icy-Hot' is too weak for Chuck Norris. After a workout, Chuck Norris rubs his muscles down with liquid-hot MAGMA.",
+        "Chuck Norris cannot love, he can only not kill.",
+        "When Chuck Norris was a baby, he didn't suck his mother's breast. His mother served him whiskey, straight out of the bottle.",
+        "According to Einstein's theory of relativity, Chuck Norris can actually roundhouse kick you yesterday.",
+        "Chuck Norris once pulled out a single hair from his beard and skewered three men through the heart with it.",
+        "In an act of great philanthropy, Chuck made a generous donation to the American Cancer Society. He donated 6,000 dead bodies for scientific research.",
+        "Chuck Norris? favourite cut of meat is the roundhouse.",
+        "When J. Robert Oppenheimer said \"I am become death, the destroyer Of worlds\", He was not referring to the atomic bomb. He was referring to the Chuck Norris halloween costume he was wearing.",
+        "Chuck Norris recently had the idea to sell his urine as a canned beverage. We know this beverage as Red Bull.",
+        "In a recent survey it was discovered the 94% of American women lost their virginity to Chuck Norris. The other 6% were incredibly fat or ugly.",
+        "Chuck Norris invented a language that incorporates karate and roundhouse kicks. So next time Chuck Norris is kicking your ass, don?t be offended or hurt, he may be just trying to tell you he likes your hat.",
+        "If at first you don't succeed, you're not Chuck Norris.",
+        "If Chuck Norris were a calendar, every month would be named Chucktober, and every day he'd kick your ass.",
+        "Chuck Norris's show is called Walker: Texas Ranger, because Chuck Norris doesn't run.",
+        "MacGyver can build an airplane out of gum and paper clips, but Chuck Norris can roundhouse-kick his head through a wall and take it.",
+        "Behind every successful man, there is a woman. Behind every dead man, there is Chuck Norris.",
+        "Chuck Norris brushes his teeth with a mixture of iron shavings, industrial paint remover, and wood-grain alcohol.",
+        "The easiest way to determine Chuck Norris' age is to cut him in half and count the rings.",
+        "There is endless debate about the existence of the human soul. Well it does exist and Chuck Norris finds it delicious.",
+        "Most boots are made for walkin'. Chuck Norris' boots ain't that merciful.",
+        "The US did not boycott the 1980 Summer Olympics in Moscow due to political reasons: Chuck Norris killed the entire US team with a single round-house kick during TaeKwonDo practice.",
+        "Chuck Norris wears a live rattlesnake as a condom.",
+        "The Bible was originally titled \"Chuck Norris and Friends\"",
+        "Chuck Norris began selling the Total Gym as an ill-fated attempt to make his day-to-day opponents less laughably pathetic.",
+        "Do you know why Baskin Robbins only has 31 flavors? Because Chuck Norris doesn't like Fudge Ripple.",
+        "When Chuck Norris says \"More cowbell\", he MEANS it.",
+        "On the set of Walker Texas Ranger Chuck Norris brought a dying lamb back to life by nuzzling it with his beard. As the onlookers gathered, the lamb sprang to life. Chuck Norris then roundhouse kicked it, killing it instantly. This was just to prove that the good Chuck givet",
+        "Chuck Norris was what Willis was talkin' about.",
+        "Google won't search for Chuck Norris because it knows you don't find Chuck Norris, he finds you.",
+        "Chuck Norris can lead a horse to water AND make it drink.",
+        "Nagasaki never had a bomb dropped on it. Chuck Norris jumped out of a plane and punched the ground",
+        "It is scientifically impossible for Chuck Norris to have had a mortal father. The most popular theory is that he went back in time and fathered himself.",
+        "Chuck Norris destroyed the periodic table, because Chuck Norris only recognizes the element of surprise.",
+        "It is believed dinosaurs are extinct due to a giant meteor. That's true if you want to call Chuck Norris a giant meteor.",
+        "Chuck Norris shot the sheriff, but he round house kicked the deputy.",
+        "That's not Chuck Norris doing push-ups -- that's Chuck Norris moving the Earth away from the path of a deadly asteroid.",
+        "Chuck Norris can judge a book by its cover.",
+        "Nothing can escape the gravity of a black hole, except for Chuck Norris. Chuck Norris eats black holes. They taste like chicken.",
+        "Chuck Norris does not play the lottery. It doesn't have nearly enough balls.",
+        "How many Chuck Norris' does it take to change a light bulb? None, Chuck Norris prefers to kill in the dark.",
+        "As President Roosevelt said: \"We have nothing to fear but fear itself. And Chuck Norris.\"",
+        "Chuck Norris just says \"no\" to drugs. If he said \"yes\", it would collapse Colombia's infrastructure.",
+        "Crime does not pay - unless you are an undertaker following Walker, Texas Ranger, on a routine patrol.",
+        "Chuck Norris invented the internet? just so he had a place to store his porn.",
+        "Chuck Norris does not own a house. He walks into random houses and people move.",
+        "It is better to give than to receive. This is especially true of a Chuck Norris roundhouse kick.",
+        "Chuck Norris is the only person to ever win a staring contest against Ray Charles and Stevie Wonder.",
+        "Industrial logging isn't the cause of deforestation. Chuck Norris needs toothpicks.",
+        "Chuck Norris smells what the Rock is cooking... because the Rock is Chuck Norris' personal chef.",
+        "When Chuck Norris plays Oregon Trail, his family does not die from cholera or dysentery, but rather, roundhouse kicks to the face. He also requires no wagon, since he carries the oxen, axels, and buffalo meat on his back. He always makes it to Oregon before you.",
+        "Chuck Norris is the reason why Waldo is hiding.",
+        "\"Brokeback Mountain\" is not just a movie. It's also what Chuck Norris calls the pile of dead ninjas in his front yard.",
+        "When God said, \"let there be light\", Chuck Norris said, \"say 'please'.\"",
+        "Chuck Norris does not eat. Food understands that the only safe haven from Chuck Norris' fists is inside his own body.",
+        "One day Chuck Norris walked down the street with a massive erection. There were no survivors.",
+        "Chuck Norris built a time machine and went back in time to stop the JFK assassination. As Oswald shot, Chuck met all three bullets with his beard, deflecting them. JFK's head exploded out of sheer amazement.",
+        "Chuck Norris uses a night light. Not because Chuck Norris is afraid of the dark, but the dark is afraid of Chuck Norris.",
+        "When Bruce Banner gets mad, he turns into the Hulk. When the Hulk gets mad, he turns into Chuck Norris.",
+        "Chuck Norris kills anyone that asks: \"Do you want fries with that?\". Because by now everyone should know that Chuck doesn't want fries with anything. Ever.",
+        "Chuck Norris once kicked a horse in the chin. Its descendants are known today as Giraffes.",
+        "Sticks and stones may break your bones, but a Chuck Norris glare will liquefy your kidneys.",
+        "Human cloning is outlawed because of Chuck Norris, because then it would be possible for a Chuck Norris roundhouse kick to meet another Chuck Norris roundhouse kick. Physicists theorize that this contact would end the universe.",
+        "Chuck Norris once went skydiving, but promised never to do it again. One Grand Canyon is enough.",
+        "Chuck Norris's version of a \"chocolate milkshake\" is a raw porterhouse wrapped around ten Hershey bars, and doused in diesel fuel.",
+        "In a fight between Batman and Darth Vader, the winner would be Chuck Norris.",
+        "Chuck Norris puts his pants on one leg at a time, just like the rest of us. The only difference is, then he kills people.",
+        "Everybody loves Raymond. Except Chuck Norris.",
+        "Contrary to popular belief, the Titanic didn't hit an iceberg. The ship was off course and ran into Chuck Norris while he was doing the backstroke across the Atlantic.",
+        "Chuck Norris got his drivers license at the age of 16. Seconds.",
+        "Chuck Norris? sperm is so badass, he had sex with Nicole Kidman, and 7 months later she prematurely gave birth to a Ford Excursion.",
+        "Chuck Norris can win at solitaire with only 18 cards.",
+        "Chuck Norris once shat blood - the blood of 11,940 natives he had killed and eaten.",
+        "Maslow's theory of higher needs does not apply to Chuck Norris. He only has two needs: killing people and finding people to kill.",
+        "The truth will set you free. Unless Chuck Norris has you, in which case, forget it buddy!",
+        "Kryptonite has been found to contain trace elements of Chuck Norris roundhouse kicks to the face. This is why it is so deadly to Superman.",
+        "Saddam Hussein was not found hiding in a \"hole.\" Saddam was roundhouse-kicked in the head by Chuck Norris in Kansas, which sent him through the earth, stopping just short of the surface of Iraq.",
+        "Chuck Norris doesn't look both ways before he crosses the street... he just roundhouses any cars that get too close.",
+        "Chuck Norris does not have to answer the phone. His beard picks up the incoming electrical impulses and translates them into audible sound.",
+        "How many roundhouse kicks does it take to get to the center of a tootsie pop? Just one. From Chuck Norris.",
+        "Chuck Norris doesnt wear a watch, HE decides what time it is."
+            
+    };
+    
+    
+}
diff --git a/assignments/src/MV3500Cohort2019JulySeptember/homework2/McCann/McCannClient.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/McCann/McCannClient.java
index 25fd4051fa4ebd5f3044ec6cb0eddfdc7df300b8..697b28dd97d708daf03d36c3265b6526ca4a546d 100644
--- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/McCann/McCannClient.java
+++ b/assignments/src/MV3500Cohort2019JulySeptember/homework2/McCann/McCannClient.java
@@ -12,7 +12,7 @@ import java.io.InputStreamReader;
 import java.net.Socket;
 
 /**
- *
+ * homework assignment
  * @author ljmm1
  */
 public class McCannClient
diff --git a/assignments/src/MV3500Cohort2019JulySeptember/homework2/McCann/McCannServer.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/McCann/McCannServer.java
index 401089d99c26ea1ba4d0d410cc164c038345289b..6ec97a0fbea0ce8606bdf3243ac22bbc48657a57 100644
--- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/McCann/McCannServer.java
+++ b/assignments/src/MV3500Cohort2019JulySeptember/homework2/McCann/McCannServer.java
@@ -10,7 +10,7 @@ import java.net.*;
 import java.util.Scanner;
 
 /**
- *
+ * homework assignment
  * @author ljmm1
  */
 public class McCannServer {
diff --git a/assignments/src/MV3500Cohort2019JulySeptember/homework4/Brennenstuhl/BrennenstuhlEspduSender.java b/assignments/src/MV3500Cohort2019JulySeptember/homework4/Brennenstuhl/BrennenstuhlEspduSender.java
index 6c18c3dc7294af7876419de78ca8a6917a05540d..87a840993ff428797f4ad5188fff2df253f561c9 100644
--- a/assignments/src/MV3500Cohort2019JulySeptember/homework4/Brennenstuhl/BrennenstuhlEspduSender.java
+++ b/assignments/src/MV3500Cohort2019JulySeptember/homework4/Brennenstuhl/BrennenstuhlEspduSender.java
@@ -34,11 +34,14 @@ public class BrennenstuhlEspduSender
 
     /** Type of network connection */
 	public enum NetworkMode {
-        /** @see <a href="https://en.wikipedia.org/wiki/Unicast">https://en.wikipedia.org/wiki/Unicast</a> */
-		UNICAST,
-        /** @see <a href="https://en.wikipedia.org/wiki/Multicast">https://en.wikipedia.org/wiki/Multicast</a> */
+        /** Unicast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Unicast">https://en.wikipedia.org/wiki/Unicast</a> */
+	UNICAST,
+        /** Multicast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Multicast">https://en.wikipedia.org/wiki/Multicast</a> */
         MULTICAST,
-        /** @see <a href="https://en.wikipedia.org/wiki/Broadcasting_(networking)">https://en.wikipedia.org/wiki/Broadcasting_(networking)</a> */
+        /** Unicast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Broadcasting_(networking)">https://en.wikipedia.org/wiki/Broadcasting_(networking)</a> */
         BROADCAST
 	};
 
diff --git a/assignments/src/MV3500Cohort2019JulySeptember/projects/SchuttFetterolf/AllPduRoundTripTest.java b/assignments/src/MV3500Cohort2019JulySeptember/projects/SchuttFetterolf/AllPduRoundTripTest.java
index 2f7eb31d364b363ae5a8eebfef1c1d15c678be02..bbcfe4e717dfd7db0003ab51451cca56a657e464 100644
--- a/assignments/src/MV3500Cohort2019JulySeptember/projects/SchuttFetterolf/AllPduRoundTripTest.java
+++ b/assignments/src/MV3500Cohort2019JulySeptember/projects/SchuttFetterolf/AllPduRoundTripTest.java
@@ -1,6 +1,6 @@
 // THIS CODE IS FOR REFERENCE ONLY IN THIS DIRECTORY.
 // TO ACCESS FULL FUNCTIONALITY DOWNLOAD THE DIS7 PROJECT FROM GITHUB
-// https://github.com/open-dis/open-dis7-java
+// https://github.com/open-dis/opendis7-java
 ///**
 // * Copyright (c) 2008-2020, MOVES Institute, Naval Postgraduate School (NPS). All rights reserved.
 // * This work is provided under a BSD open-source license, see project license.html and license.txt
diff --git a/assignments/src/MV3500Cohort2019JulySeptember/projects/SchuttFetterolf/CommentPdusTest.java b/assignments/src/MV3500Cohort2019JulySeptember/projects/SchuttFetterolf/CommentPdusTest.java
index ba5cadc66e78264bf353ec55d07da09f4fa25d21..490586eb62f262aa2db5711ec5337a0878959d1a 100644
--- a/assignments/src/MV3500Cohort2019JulySeptember/projects/SchuttFetterolf/CommentPdusTest.java
+++ b/assignments/src/MV3500Cohort2019JulySeptember/projects/SchuttFetterolf/CommentPdusTest.java
@@ -1,6 +1,6 @@
 // THIS CODE IS FOR REFERENCE ONLY IN THIS DIRECTORY.
 // TO ACCESS FULL FUNCTIONALITY DOWNLOAD THE DIS7 PROJECT FROM GITHUB
-// https://github.com/open-dis/open-dis7-java
+// https://github.com/open-dis/opendis7-java
 ///**
 // * Copyright (c) 2008-2020, MOVES Institute, Naval Postgraduate School (NPS). All rights reserved.
 // * This work is provided under a BSD open-source license, see project license.html and license.txt
diff --git a/assignments/src/MV3500Cohort2020JulySeptember/homework1/BrittTcPExample1Telnet.java b/assignments/src/MV3500Cohort2020JulySeptember/homework1/BrittTcPExample1Telnet.java
index 7278c7aee899ded4eb187eb4d07067e55d831d26..59607885e0cd554881ac7d41bdee219935c3e853 100644
--- a/assignments/src/MV3500Cohort2020JulySeptember/homework1/BrittTcPExample1Telnet.java
+++ b/assignments/src/MV3500Cohort2020JulySeptember/homework1/BrittTcPExample1Telnet.java
@@ -9,7 +9,7 @@ import java.net.Socket;
 
 
 /**
- *
+ * homework assignment
  * @author Brittokki
  */
 public class BrittTcPExample1Telnet {
diff --git a/assignments/src/MV3500Cohort2020JulySeptember/homework1/CannonTcpExample1Telnet.java b/assignments/src/MV3500Cohort2020JulySeptember/homework1/CannonTcpExample1Telnet.java
index 28027e300fb799b886b722822c74d601e3aafcb6..3f22000293e9db98cacc9dea451ef5a95998b527 100644
--- a/assignments/src/MV3500Cohort2020JulySeptember/homework1/CannonTcpExample1Telnet.java
+++ b/assignments/src/MV3500Cohort2020JulySeptember/homework1/CannonTcpExample1Telnet.java
@@ -1,61 +1,62 @@
-package MV3500Cohort2020JulySeptember.homework1;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.PrintStream;
-import java.net.ServerSocket;
-import java.net.Socket;
-
-/**
- * Class MV30500
- * Homework 1 that demonstrates how to connect to a TCP telnet server
- * @author chris
- */
-public class CannonTcpExample1Telnet {
-
-    /**
-     * @param args command-line arguments
-     */
-    public static void main(String[] args) {
-        try {
-            System.out.println("TcpExample1Telnet has started and is waiting for a connection.");
-            System.out.println("  help: https://savage.nps.edu/Savage/developers.html#telnet");
-            System.out.println("  enter (telnet localhost 2317) or (nc localhost 2317)...");
-
-            // The ServerSocket waits for a connection from a client.
-            // It returns a Socket object when the connection occurs.
-            ServerSocket serverSocket = new ServerSocket(2317);
-
-            // The Socket object represents the connection between
-            // the server and client, including a full duplex connection
-            Socket clientConnection = serverSocket.accept();
-
-            // Use Java io classes to write text (as opposed to
-            // unknown bytes of some sort) to the client
-            OutputStream os = clientConnection.getOutputStream();
-            PrintStream ps = new PrintStream(os);
-
-            ps.println("This client response was written by Captain Christopher Cannon."); // to remote clientnc
-            System.out.println("This server response was written by Captain Christopher Cannon."); // to server console
-            
-            
-            
-            // "flush()" in important in that it forces a write 
-            // across what is in fact a slow connection
-            ps.flush();
-
-            clientConnection.close();
-            System.out.println("TcpExample1 completed successfully.");
-        } catch (IOException e) {
-            System.out.println("problem with networking: " + e);
-
-            // Program modification: provide more helpful information to user if
-            // exception occurs when running twice at one time
-            // brute force exception checking, can be brittle if exception message changes
-            // if (e.getMessage().equals("Address already in use: NET_Bind")) 
-            if (e instanceof java.net.BindException) {
-                System.out.println("Be sure to stop any other running instances of this program!");
-            }
-        }
-    }
-}
+package MV3500Cohort2020JulySeptember.homework1;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintStream;
+import java.net.ServerSocket;
+import java.net.Socket;
+
+/**
+ * Class MV30500
+ * Homework 1 that demonstrates how to connect to a TCP telnet server
+ * @author chris
+ */
+public class CannonTcpExample1Telnet {
+
+    /**
+     * homework assignment
+     * @param args command-line arguments
+     */
+    public static void main(String[] args) {
+        try {
+            System.out.println("TcpExample1Telnet has started and is waiting for a connection.");
+            System.out.println("  help: https://savage.nps.edu/Savage/developers.html#telnet");
+            System.out.println("  enter (telnet localhost 2317) or (nc localhost 2317)...");
+
+            // The ServerSocket waits for a connection from a client.
+            // It returns a Socket object when the connection occurs.
+            ServerSocket serverSocket = new ServerSocket(2317);
+
+            // The Socket object represents the connection between
+            // the server and client, including a full duplex connection
+            Socket clientConnection = serverSocket.accept();
+
+            // Use Java io classes to write text (as opposed to
+            // unknown bytes of some sort) to the client
+            OutputStream os = clientConnection.getOutputStream();
+            PrintStream ps = new PrintStream(os);
+
+            ps.println("This client response was written by Captain Christopher Cannon."); // to remote clientnc
+            System.out.println("This server response was written by Captain Christopher Cannon."); // to server console
+            
+            
+            
+            // "flush()" in important in that it forces a write 
+            // across what is in fact a slow connection
+            ps.flush();
+
+            clientConnection.close();
+            System.out.println("TcpExample1 completed successfully.");
+        } catch (IOException e) {
+            System.out.println("problem with networking: " + e);
+
+            // Program modification: provide more helpful information to user if
+            // exception occurs when running twice at one time
+            // brute force exception checking, can be brittle if exception message changes
+            // if (e.getMessage().equals("Address already in use: NET_Bind")) 
+            if (e instanceof java.net.BindException) {
+                System.out.println("Be sure to stop any other running instances of this program!");
+            }
+        }
+    }
+}
diff --git a/assignments/src/MV3500Cohort2020JulySeptember/homework1/GaribayTCPExample1Telnet.java b/assignments/src/MV3500Cohort2020JulySeptember/homework1/GaribayTCPExample1Telnet.java
index 7f915e744d25a487c3c91a59fb38d53100938e9f..e8120334a24e8e23757fc0a5ed30d942f02e9c72 100644
--- a/assignments/src/MV3500Cohort2020JulySeptember/homework1/GaribayTCPExample1Telnet.java
+++ b/assignments/src/MV3500Cohort2020JulySeptember/homework1/GaribayTCPExample1Telnet.java
@@ -8,7 +8,7 @@ import java.net.ServerSocket;
 import java.net.Socket;
 
 /**
- *
+ * homework assignment
  * @author chris
  */
 
diff --git a/assignments/src/MV3500Cohort2020JulySeptember/homework1/MahanTCPExample1Telnet.java b/assignments/src/MV3500Cohort2020JulySeptember/homework1/MahanTCPExample1Telnet.java
index 967d2fee510ab3c7c6639c9b11d0971473298ce7..8787375a225ff47af9aed888a57ddbb4a4edefe4 100644
--- a/assignments/src/MV3500Cohort2020JulySeptember/homework1/MahanTCPExample1Telnet.java
+++ b/assignments/src/MV3500Cohort2020JulySeptember/homework1/MahanTCPExample1Telnet.java
@@ -8,7 +8,7 @@ import java.io.PrintStream;
 import java.net.ServerSocket;
 import java.net.Socket;
 /**
- *
+ * homework assignment
  * @author Bill
  */
 public class MahanTCPExample1Telnet
diff --git a/assignments/src/MV3500Cohort2020JulySeptember/homework2/Britt/Britt_Client.java b/assignments/src/MV3500Cohort2020JulySeptember/homework2/Britt/Britt_Client.java
index 99209e87d5b600415094b95e520c91aa714a5cef..10dae13adc1a90889a3b49a4bfbc61a7f4f65070 100644
--- a/assignments/src/MV3500Cohort2020JulySeptember/homework2/Britt/Britt_Client.java
+++ b/assignments/src/MV3500Cohort2020JulySeptember/homework2/Britt/Britt_Client.java
@@ -11,7 +11,7 @@ import java.io.PrintStream;
 import java.net.Socket;
 
 /**
- *
+ * homework assignment
  * @author Brittokki
  */
 public class Britt_Client {
diff --git a/assignments/src/MV3500Cohort2020JulySeptember/homework2/Britt/Britt_Server.java b/assignments/src/MV3500Cohort2020JulySeptember/homework2/Britt/Britt_Server.java
index f70432e0d589237f52df500902a2afb0065c27fe..4e5974c8d2c77ef0af0359cfdc8a938574e32c13 100644
--- a/assignments/src/MV3500Cohort2020JulySeptember/homework2/Britt/Britt_Server.java
+++ b/assignments/src/MV3500Cohort2020JulySeptember/homework2/Britt/Britt_Server.java
@@ -13,7 +13,7 @@ import java.net.ServerSocket;
 import java.net.Socket;
 
 /**
- *
+ * homework assignment
  * @author Brittokki
  */
 public class Britt_Server {
diff --git a/assignments/src/MV3500Cohort2020JulySeptember/homework2/Cannon/CannonServer.java b/assignments/src/MV3500Cohort2020JulySeptember/homework2/Cannon/CannonServer.java
index bd077a6c63bb9017088a39c24bba134f53471d06..d6df7af0801a2d4f032cbb67aee60b02ebcab2be 100644
--- a/assignments/src/MV3500Cohort2020JulySeptember/homework2/Cannon/CannonServer.java
+++ b/assignments/src/MV3500Cohort2020JulySeptember/homework2/Cannon/CannonServer.java
@@ -33,6 +33,7 @@ import java.net.Socket;
 public class CannonServer {
 
     /**
+     * homework assignment
      * @param args command-line arguments
      */
     public static void main(String[] args) {
diff --git a/assignments/src/MV3500Cohort2020JulySeptember/homework2/Garibay/GaribayClient.java b/assignments/src/MV3500Cohort2020JulySeptember/homework2/Garibay/GaribayClient.java
index 705a3b1a1b92c9c391d4c1794b968cbe48cdd096..993c3b47b5121fcedd6cf4c1874d388751985611 100644
--- a/assignments/src/MV3500Cohort2020JulySeptember/homework2/Garibay/GaribayClient.java
+++ b/assignments/src/MV3500Cohort2020JulySeptember/homework2/Garibay/GaribayClient.java
@@ -3,7 +3,7 @@ package MV3500Cohort2020JulySeptember.homework2.Garibay;
 import java.io.*;
 import java.net.*;
 /**
- *
+ * homework assignment
  * @author Chris
  */
 public class GaribayClient {
diff --git a/assignments/src/MV3500Cohort2020JulySeptember/homework2/Garibay/GaribayServer.java b/assignments/src/MV3500Cohort2020JulySeptember/homework2/Garibay/GaribayServer.java
index 7be36855fd8864ef7092baa394ce8e8e0a15fc20..ec4b78f6831cb5e1cf69192151e9983a8299aa63 100644
--- a/assignments/src/MV3500Cohort2020JulySeptember/homework2/Garibay/GaribayServer.java
+++ b/assignments/src/MV3500Cohort2020JulySeptember/homework2/Garibay/GaribayServer.java
@@ -4,7 +4,7 @@ import java.io.*;
 import java.net.*;
 
 /**
- *
+ * homework assignment
  * @author Chris
  */
 public class GaribayServer {
diff --git a/assignments/src/MV3500Cohort2020JulySeptember/homework2/Goericke/GoerickeClient.java b/assignments/src/MV3500Cohort2020JulySeptember/homework2/Goericke/GoerickeClient.java
index 919c8b1ac05de1beb082669583020a97b5217f53..8aec20af7e6b99c6368b27db710f9704f76a25cb 100644
--- a/assignments/src/MV3500Cohort2020JulySeptember/homework2/Goericke/GoerickeClient.java
+++ b/assignments/src/MV3500Cohort2020JulySeptember/homework2/Goericke/GoerickeClient.java
@@ -10,7 +10,7 @@ import java.io.OutputStreamWriter;
 import java.net.Socket;
 
 /**
- *
+ * homework assignment
  * @author stefa
  */
 public class GoerickeClient {
diff --git a/assignments/src/MV3500Cohort2020JulySeptember/homework2/Goericke/GoerickeServer.java b/assignments/src/MV3500Cohort2020JulySeptember/homework2/Goericke/GoerickeServer.java
index 814b78bd60a87c7a21dec9f09c1d4eb97b2a5f5e..4388c4500ba93836645f371509b081557957e6f1 100644
--- a/assignments/src/MV3500Cohort2020JulySeptember/homework2/Goericke/GoerickeServer.java
+++ b/assignments/src/MV3500Cohort2020JulySeptember/homework2/Goericke/GoerickeServer.java
@@ -28,6 +28,7 @@ public class GoerickeServer {
 
 
     /**
+     * Program invocation
      * @param args command-line arguments
      */
     public static void main(String[] args) {
diff --git a/assignments/src/MV3500Cohort2020JulySeptember/homework2/Mahan/Mahan_Client.java b/assignments/src/MV3500Cohort2020JulySeptember/homework2/Mahan/Mahan_Client.java
index 429fc7b3fdc8aae8a407fe2e5b9da3cb0f2deefb..95bb343934f68377e77bac59e88091c9a291d4bf 100644
--- a/assignments/src/MV3500Cohort2020JulySeptember/homework2/Mahan/Mahan_Client.java
+++ b/assignments/src/MV3500Cohort2020JulySeptember/homework2/Mahan/Mahan_Client.java
@@ -3,7 +3,7 @@ package MV3500Cohort2020JulySeptember.homework2.Mahan;
 import java.io.*;
 import java.net.*;
 /**
- *
+ * homework assignment
  * @author Bill
  */
 public class Mahan_Client
diff --git a/assignments/src/MV3500Cohort2020JulySeptember/homework2/Mahan/Mahan_Server.java b/assignments/src/MV3500Cohort2020JulySeptember/homework2/Mahan/Mahan_Server.java
index dcc26646da7a169959570d4fd03f8e8dbade8816..95063404fd03d8253a43e0082bebb401bf774e93 100644
--- a/assignments/src/MV3500Cohort2020JulySeptember/homework2/Mahan/Mahan_Server.java
+++ b/assignments/src/MV3500Cohort2020JulySeptember/homework2/Mahan/Mahan_Server.java
@@ -4,7 +4,7 @@ import java.io.*;
 import java.net.*;
 
 /**
- *
+ * homework assignment
  * @author Bill
  */
 public class Mahan_Server
diff --git a/assignments/src/MV3500Cohort2020JulySeptember/homework3/Cannon/CannonUdpReceiver.java b/assignments/src/MV3500Cohort2020JulySeptember/homework3/Cannon/CannonUdpReceiver.java
index 5fee78c3a77554eb460854e425f2d706d3427a96..4f3bd4a430c195e927d20198ff49dcfa24e1e260 100644
--- a/assignments/src/MV3500Cohort2020JulySeptember/homework3/Cannon/CannonUdpReceiver.java
+++ b/assignments/src/MV3500Cohort2020JulySeptember/homework3/Cannon/CannonUdpReceiver.java
@@ -24,6 +24,7 @@ public class CannonUdpReceiver
     public static final String DESINATION_HOST = "localhost";
 
     /**
+     * homework assignment
      * @param args command-line arguments
      * @throws java.io.IOException invocation error
      */
diff --git a/assignments/src/MV3500Cohort2020JulySeptember/homework3/Garibay/UDPReceiverGaribay.java b/assignments/src/MV3500Cohort2020JulySeptember/homework3/Garibay/UDPReceiverGaribay.java
index 7623d066209db827f9e519e5ea2c6620f2f32a9c..13c4cc6366304fd3cbdadc1bf05ad02ebd5c3897 100644
--- a/assignments/src/MV3500Cohort2020JulySeptember/homework3/Garibay/UDPReceiverGaribay.java
+++ b/assignments/src/MV3500Cohort2020JulySeptember/homework3/Garibay/UDPReceiverGaribay.java
@@ -8,7 +8,7 @@ import java.net.DatagramPacket;
 import java.net.DatagramSocket;
 
 /**
- *
+ * homework assignment
  * @author chris
  */
 public class UDPReceiverGaribay 
diff --git a/assignments/src/MV3500Cohort2020JulySeptember/homework3/Garibay/UDPSenderGaribay.java b/assignments/src/MV3500Cohort2020JulySeptember/homework3/Garibay/UDPSenderGaribay.java
index 7d08bfd78535ff2838bcce94f79f71bacc564ffb..efa26e03192a8f7987724fc10baeb7a1f6c26aab 100644
--- a/assignments/src/MV3500Cohort2020JulySeptember/homework3/Garibay/UDPSenderGaribay.java
+++ b/assignments/src/MV3500Cohort2020JulySeptember/homework3/Garibay/UDPSenderGaribay.java
@@ -9,7 +9,7 @@ import java.net.DatagramSocket;
 import java.net.InetAddress;
 
 /**
- *
+ * homework assignment
  * @author chris
  */
 public class UDPSenderGaribay 
diff --git a/assignments/src/MV3500Cohort2020JulySeptember/homework3/Mahan/MahanUdpSender.java b/assignments/src/MV3500Cohort2020JulySeptember/homework3/Mahan/MahanUdpSender.java
index 964d0fbd5c3093786f733cb7b55cc43fb9619f7c..6d6f015c3747b5c4f118bb0327335f385fdcdc40 100644
--- a/assignments/src/MV3500Cohort2020JulySeptember/homework3/Mahan/MahanUdpSender.java
+++ b/assignments/src/MV3500Cohort2020JulySeptember/homework3/Mahan/MahanUdpSender.java
@@ -4,7 +4,7 @@ import java.io.*;
 import java.net.*;
 
 /**
- *
+ * homework assignment
  * @author Bill
  */
 public class MahanUdpSender
diff --git a/assignments/src/MV3500Cohort2020JulySeptember/homework4/Britt/BrittSimulation.java b/assignments/src/MV3500Cohort2020JulySeptember/homework4/Britt/BrittSimulation.java
index 2bd0debe29df6e87706106408627a229a9987d58..8d00a280ae1909c005eb05b2837caf813b381deb 100644
--- a/assignments/src/MV3500Cohort2020JulySeptember/homework4/Britt/BrittSimulation.java
+++ b/assignments/src/MV3500Cohort2020JulySeptember/homework4/Britt/BrittSimulation.java
@@ -55,6 +55,7 @@ public class BrittSimulation
     }
 
     /**
+     * get networkAddress
      * @return the networkAddress
      */
     public String getNetworkAddress()
@@ -63,6 +64,7 @@ public class BrittSimulation
     }
 
     /**
+     * set networkAddress
      * @param networkAddress the networkAddress to set
      */
     public final void setNetworkAddress(String networkAddress)
@@ -71,6 +73,7 @@ public class BrittSimulation
     }
 
     /**
+     * get networkPort
      * @return the networkPort
      */
     public int getNetworkPort()
@@ -79,6 +82,7 @@ public class BrittSimulation
     }
 
     /**
+     * set networkPort
      * @param networkPort the networkPort to set
      */
     public final void setNetworkPort(int networkPort)
diff --git a/assignments/src/MV3500Cohort2020JulySeptember/homework4/Britt/EspduSender.java b/assignments/src/MV3500Cohort2020JulySeptember/homework4/Britt/EspduSender.java
index 90242df3e45b44a6b89eb1f57ac15bbb83b6c51f..4c90228b4a83d44b657d66203e691589ca866089 100644
--- a/assignments/src/MV3500Cohort2020JulySeptember/homework4/Britt/EspduSender.java
+++ b/assignments/src/MV3500Cohort2020JulySeptember/homework4/Britt/EspduSender.java
@@ -38,11 +38,14 @@ public class EspduSender
 
     /** Type of network connection */
 	public enum NetworkMode {
-        /** @see <a href="https://en.wikipedia.org/wiki/Unicast">https://en.wikipedia.org/wiki/Unicast</a> */
-		UNICAST,
-        /** @see <a href="https://en.wikipedia.org/wiki/Multicast">https://en.wikipedia.org/wiki/Multicast</a> */
+        /** Unicast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Unicast">https://en.wikipedia.org/wiki/Unicast</a> */
+	UNICAST,
+        /** Multicast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Multicast">https://en.wikipedia.org/wiki/Multicast</a> */
         MULTICAST,
-        /** @see <a href="https://en.wikipedia.org/wiki/Broadcasting_(networking)">https://en.wikipedia.org/wiki/Broadcasting_(networking)</a> */
+        /** Broadcast network mode
+         * @see <a href="https://en.wikipedia.org/wiki/Broadcasting_(networking)">https://en.wikipedia.org/wiki/Broadcasting_(networking)</a> */
         BROADCAST
 	};
     
diff --git a/assignments/src/MV3500Cohort2020JulySeptember/homework4/Britt/ExampleSimulationProgram.java b/assignments/src/MV3500Cohort2020JulySeptember/homework4/Britt/ExampleSimulationProgram.java
index a1c82b6a8d3f2a436ba4e877a3103ee2fc024b55..b32306d44c33083de3613cf8de4d42a994a61fe5 100644
--- a/assignments/src/MV3500Cohort2020JulySeptember/homework4/Britt/ExampleSimulationProgram.java
+++ b/assignments/src/MV3500Cohort2020JulySeptember/homework4/Britt/ExampleSimulationProgram.java
@@ -45,6 +45,7 @@ public class ExampleSimulationProgram
     }
 
     /**
+     * get networkAddress
      * @return the networkAddress
      */
     public String getNetworkAddress()
@@ -53,6 +54,7 @@ public class ExampleSimulationProgram
     }
 
     /**
+     * set networkAddress
      * @param networkAddress the networkAddress to set
      */
     public final void setNetworkAddress(String networkAddress)
@@ -61,6 +63,7 @@ public class ExampleSimulationProgram
     }
 
     /**
+     * get networkPort
      * @return the networkPort
      */
     public int getNetworkPort()
@@ -69,6 +72,7 @@ public class ExampleSimulationProgram
     }
 
     /**
+     * set networkPort
      * @param networkPort the networkPort to set
      */
     public final void setNetworkPort(int networkPort)
diff --git a/assignments/src/MV3500Cohort2020JulySeptember/homework4/Cannon/CannonArtillerySimulation.java b/assignments/src/MV3500Cohort2020JulySeptember/homework4/Cannon/CannonArtillerySimulation.java
index 14426a5dd7dafedefe95bec5f5a05f92c4fb4e30..8e610d6d24cc3cfad77aa35f35693c5f9fdd9d08 100644
--- a/assignments/src/MV3500Cohort2020JulySeptember/homework4/Cannon/CannonArtillerySimulation.java
+++ b/assignments/src/MV3500Cohort2020JulySeptember/homework4/Cannon/CannonArtillerySimulation.java
@@ -55,6 +55,7 @@ public class CannonArtillerySimulation {
     }
 
     /**
+     * get networkAddress
      * @return the networkAddress
      */
     public String getNetworkAddress() {
@@ -62,6 +63,7 @@ public class CannonArtillerySimulation {
     }
 
     /**
+     * set networkAddress
      * @param networkAddress the networkAddress to set
      */
     public final void setNetworkAddress(String networkAddress) {
@@ -69,6 +71,7 @@ public class CannonArtillerySimulation {
     }
 
     /**
+     * set networkPort
      * @return the networkPort
      */
     public int getNetworkPort() {
@@ -76,6 +79,7 @@ public class CannonArtillerySimulation {
     }
 
     /**
+     * get networkPort
      * @param networkPort the networkPort to set
      */
     public final void setNetworkPort(int networkPort) {
diff --git a/assignments/src/MV3500Cohort2021JulySeptember/homework1/FisherTCPExample1Telnet.java b/assignments/src/MV3500Cohort2021JulySeptember/homework1/FisherTCPExample1Telnet.java
index 02c665c7ee222eb8b51f601147517ddd9043de22..7655001e8d8590e042bd417cbc6cedcdac99d327 100644
--- a/assignments/src/MV3500Cohort2021JulySeptember/homework1/FisherTCPExample1Telnet.java
+++ b/assignments/src/MV3500Cohort2021JulySeptember/homework1/FisherTCPExample1Telnet.java
@@ -8,7 +8,7 @@ import java.net.ServerSocket;
 import java.net.Socket;
 
 /**
- *
+ * homework assignment
  * @author adfis
  */
 
diff --git a/assignments/src/MV3500Cohort2021JulySeptember/homework1/FrankTCPExample3Client.java b/assignments/src/MV3500Cohort2021JulySeptember/homework1/FrankTCPExample3Client.java
index 187c6c59f16c215f05419f7fd6dec7b0e65e808e..5088e75c61f912125aa12dc551e210cce13cf562 100644
--- a/assignments/src/MV3500Cohort2021JulySeptember/homework1/FrankTCPExample3Client.java
+++ b/assignments/src/MV3500Cohort2021JulySeptember/homework1/FrankTCPExample3Client.java
@@ -7,19 +7,13 @@ import java.io.InputStreamReader;
 import java.io.Reader;
 import java.net.Socket;
 
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
 /**
- *
+ * homework assignment
  * @author justi
  */
 public class FrankTCPExample3Client {
 
-    /**
-     */
+    /** IPv6 default */
     public final static String LOCALHOST = "0:0:0:0:0:0:0:1";
 
     /**
diff --git a/assignments/src/MV3500Cohort2021JulySeptember/homework1/HittnerDomTcpExample1Telnet.java b/assignments/src/MV3500Cohort2021JulySeptember/homework1/HittnerDomTcpExample1Telnet.java
index 9404f23dd9e679af6eb7a4e8388d838a6b149b87..ec37e50b5ff59b0b998dd12abc7a884512a2c62d 100644
--- a/assignments/src/MV3500Cohort2021JulySeptember/homework1/HittnerDomTcpExample1Telnet.java
+++ b/assignments/src/MV3500Cohort2021JulySeptember/homework1/HittnerDomTcpExample1Telnet.java
@@ -8,7 +8,7 @@ import java.net.ServerSocket;
 import java.net.Socket;
 
 /**
- *
+ * homework assignment
  * @author adfis
  */
 
diff --git a/assignments/src/MV3500Cohort2021JulySeptember/homework1/HittnerNickTcpExample1Telnet.java b/assignments/src/MV3500Cohort2021JulySeptember/homework1/HittnerNickTcpExample1Telnet.java
index 7a23828f5a550bde530b97b09898a97487f10b61..2dc1686f7791881759c7971f5bfdf360b2b19d76 100644
--- a/assignments/src/MV3500Cohort2021JulySeptember/homework1/HittnerNickTcpExample1Telnet.java
+++ b/assignments/src/MV3500Cohort2021JulySeptember/homework1/HittnerNickTcpExample1Telnet.java
@@ -8,7 +8,7 @@ import java.net.ServerSocket;
 import java.net.Socket;
 
 /**
- *
+ * homework assignment
  * @author adfis
  */
 
diff --git a/assignments/src/MV3500Cohort2021JulySeptember/homework1/ReynoldsTcpExample1Telnet1.java b/assignments/src/MV3500Cohort2021JulySeptember/homework1/ReynoldsTcpExample1Telnet1.java
index bdd513c2188e808e8828793f1a0bc1beb8359b84..8541e83a90462a21210422e5e616818bdbecaec9 100644
--- a/assignments/src/MV3500Cohort2021JulySeptember/homework1/ReynoldsTcpExample1Telnet1.java
+++ b/assignments/src/MV3500Cohort2021JulySeptember/homework1/ReynoldsTcpExample1Telnet1.java
@@ -8,7 +8,7 @@ import java.net.ServerSocket;
 import java.net.Socket;
 
 /**
- *
+ * homework assignment
  * @author kReynolds
  */
 
diff --git a/assignments/src/MV3500Cohort2021JulySeptember/homework1/RobinsonTcpExample1Telnet.java b/assignments/src/MV3500Cohort2021JulySeptember/homework1/RobinsonTcpExample1Telnet.java
index 5c201f36d6ccefeea1bbc402c462c1d852a8f04f..5ac1aa1797862c494d16b5c458904e0304b11cc3 100644
--- a/assignments/src/MV3500Cohort2021JulySeptember/homework1/RobinsonTcpExample1Telnet.java
+++ b/assignments/src/MV3500Cohort2021JulySeptember/homework1/RobinsonTcpExample1Telnet.java
@@ -7,7 +7,7 @@ import java.net.ServerSocket;
 import java.net.Socket;
 
 /**
- *
+ * homework assignment
  * @author mrobi
  */
 public class RobinsonTcpExample1Telnet
diff --git a/assignments/src/MV3500Cohort2021JulySeptember/homework2/Domonique/HittnerDTcpExampleServer.java b/assignments/src/MV3500Cohort2021JulySeptember/homework2/Domonique/HittnerDTcpExampleServer.java
index 610a9a7dccb332fb42a068f12ed77f243915cd23..935e9450b651c41e006c72a4abc7fecd4a624baa 100644
--- a/assignments/src/MV3500Cohort2021JulySeptember/homework2/Domonique/HittnerDTcpExampleServer.java
+++ b/assignments/src/MV3500Cohort2021JulySeptember/homework2/Domonique/HittnerDTcpExampleServer.java
@@ -4,7 +4,7 @@ import java.io.*;
 import java.net.*;
 
 /**
- *
+ * homework assignment
  * @author Dom Hittner
  */
 public class HittnerDTcpExampleServer {
diff --git a/assignments/src/MV3500Cohort2021JulySeptember/homework2/Frank/FrankClient.java b/assignments/src/MV3500Cohort2021JulySeptember/homework2/Frank/FrankClient.java
index 3202e968aee25f94b146894351c255f4b9eb7523..2f2151e208fc31bc84151eeaee3e814205598117 100644
--- a/assignments/src/MV3500Cohort2021JulySeptember/homework2/Frank/FrankClient.java
+++ b/assignments/src/MV3500Cohort2021JulySeptember/homework2/Frank/FrankClient.java
@@ -26,6 +26,7 @@ import java.net.Socket;
 public class FrankClient {
 
     /**
+     * IPv6 default
      */
     public final static String LOCALHOST = "0:0:0:0:0:0:0:1";
 
diff --git a/assignments/src/MV3500Cohort2021JulySeptember/homework2/Frank/FrankTcpExample3Client.java b/assignments/src/MV3500Cohort2021JulySeptember/homework2/Frank/FrankTcpExample3Client.java
index 12aa0a7270a587b15a67951985dfdfb3f1ebba39..369c03fcf4fcda808852f5fe66edf6dc11c934d4 100644
--- a/assignments/src/MV3500Cohort2021JulySeptember/homework2/Frank/FrankTcpExample3Client.java
+++ b/assignments/src/MV3500Cohort2021JulySeptember/homework2/Frank/FrankTcpExample3Client.java
@@ -13,13 +13,12 @@ import java.net.Socket;
  * and open the template in the editor.
  */
 /**
- *
+ * homework assignment
  * @author justi
  */
 public class FrankTcpExample3Client {
 
-    /**
-     */
+    /** IPv6 default */
     public final static String LOCALHOST = "0:0:0:0:0:0:0:1";
 
     /**
diff --git a/assignments/src/MV3500Cohort2021JulySeptember/homework2/Leckie/LeckieClient.java b/assignments/src/MV3500Cohort2021JulySeptember/homework2/Leckie/LeckieClient.java
index a562830b2833c68dcfd03e7b646847bbbf08ba9a..775fd47dbf660ae42d00d19e37d9bf42d9cdd07d 100644
--- a/assignments/src/MV3500Cohort2021JulySeptember/homework2/Leckie/LeckieClient.java
+++ b/assignments/src/MV3500Cohort2021JulySeptember/homework2/Leckie/LeckieClient.java
@@ -3,7 +3,7 @@ import java.io.*;
 import java.net.*;
 
 /**
- *
+ * homework assignment
  * @author Jacob Leckie
  */
 public class LeckieClient {
diff --git a/assignments/src/MV3500Cohort2021JulySeptember/homework2/Leckie/LeckieServer.java b/assignments/src/MV3500Cohort2021JulySeptember/homework2/Leckie/LeckieServer.java
index 4b4ab8ea7087ccfaa687cbd4ae9fed1c69192ad4..b744cb1562c47f2dfba5e1bcfbf567a500fae04c 100644
--- a/assignments/src/MV3500Cohort2021JulySeptember/homework2/Leckie/LeckieServer.java
+++ b/assignments/src/MV3500Cohort2021JulySeptember/homework2/Leckie/LeckieServer.java
@@ -1,88 +1,88 @@
-package MV3500Cohort2021JulySeptember.homework2.Leckie;
-
-import java.io.*;
-import java.net.*;
-
-/**
- *
- * @author Jacob Leckie
- */
-public class LeckieServer {
-
-    /**
-     * Program invocation, execution starts here
-     * If already compiled, can run using console in directory ../../build/classes/ by invoking \
-     *      java -classpath . TcpExamples.TcpExample3Server
-     * @param args command-line arguments
-     */
-    public static void main(String[] args) {
-        try {
-            
-            // ServerSocket waits for a connection from a client. 
-            // Notice that it is outside the loop; ServerSocket
-            // needs to be made only once.
-            System.out.println(LeckieServer.class.getName() + " has started..."); // it helps debugging to put this on console first
-            
-            ServerSocket serverSocket = new ServerSocket(2317);
-            OutputStream os;
-            PrintStream ps;
-            InetAddress localAddress, remoteAddress;
-            int localPort, remotePort;
-            int serverLoopCount = 0;
-
-            // Server is up and waiting (i.e. "blocked" or paused)
-            // Loop, infinitely, waiting for client connections.
-            // Stop the program somewhere else.
-            while (true) { 
-                
-                // block until connected to a client
-                try (Socket clientConnectionSocket = serverSocket.accept())
-                {
-                    serverLoopCount++; // increment at beginning of loop for reliability
-                    
-                    // Now hook everything up (i.e. set up the streams), Java style:
-                    os = clientConnectionSocket.getOutputStream();
-                    ps = new PrintStream(os);
-                    ps.println("I told you " + serverLoopCount + " time, go clean your room!"); // this gets sent back to client!
-                    
-                    // Print some information locally about the Socket connection.
-                    // This includes the port and IP numbers on both sides (the socket pair).
-                     localAddress = clientConnectionSocket.getLocalAddress();
-                    remoteAddress = clientConnectionSocket.getInetAddress();
-                        localPort = clientConnectionSocket.getLocalPort();
-                       remotePort = clientConnectionSocket.getPort();
-                       
-                    System.out.print ("Server loop " + serverLoopCount + ": ");
-                    
-                    // My socket pair connection looks like this, to localhost:
-                    // Socket pair: (( /0:0:0:0:0:0:0:1, 2317 ), ( /0:0:0:0:0:0:0:1, 54876 ))
-                    // Socket pair: (( /0:0:0:0:0:0:0:1, 2317 ), ( /0:0:0:0:0:0:0:1, 54881 ))
-                    
-                    // Why is the first IP/port the same, while the second set has different ports?
-                    System.out.println(LeckieServer.class.getName() + " socket pair showing host name, address, port:");
-                    System.out.println("  (( " + 
-                         localAddress.getHostName() + "=" +  localAddress.getHostAddress() + ", " + localPort + " ), ( " + 
-                        remoteAddress.getHostName() + "=" + remoteAddress.getHostAddress() + ", " + remotePort + " ))");
-                    
-                    if ( localAddress.getHostName().equals( localAddress.getHostAddress()) ||
-                        remoteAddress.getHostName().equals(remoteAddress.getHostAddress()))
-                        System.out.println("  note HostName matches address if host has no DNS name");
-                    
-                    // Notice the use of flush() and try w/ resources. Without
-                    // the try w/ resources the Socket object may stay open for
-                    // a while after the client has stopped needing this
-                    // connection. try w/ resources explicitly ends the connection.
-                    ps.flush();
-                    // like it or not, you're outta here!
-                }
-            }
-        } catch (IOException e) {
-            System.err.println("Problem with " + LeckieServer.class.getName() + " networking: " + e);
-
-            // Provide more helpful information to user if exception occurs due to running twice at one time
-            if (e instanceof java.net.BindException) {
-                System.err.println("*** Be sure to stop any other running instances of programs using this port!");
-            }
-        }
-    }
-}
+package MV3500Cohort2021JulySeptember.homework2.Leckie;
+
+import java.io.*;
+import java.net.*;
+
+/**
+ * homework assignment
+ * @author Jacob Leckie
+ */
+public class LeckieServer {
+
+    /**
+     * Program invocation, execution starts here
+     * If already compiled, can run using console in directory ../../build/classes/ by invoking \
+     *      java -classpath . TcpExamples.TcpExample3Server
+     * @param args command-line arguments
+     */
+    public static void main(String[] args) {
+        try {
+            
+            // ServerSocket waits for a connection from a client. 
+            // Notice that it is outside the loop; ServerSocket
+            // needs to be made only once.
+            System.out.println(LeckieServer.class.getName() + " has started..."); // it helps debugging to put this on console first
+            
+            ServerSocket serverSocket = new ServerSocket(2317);
+            OutputStream os;
+            PrintStream ps;
+            InetAddress localAddress, remoteAddress;
+            int localPort, remotePort;
+            int serverLoopCount = 0;
+
+            // Server is up and waiting (i.e. "blocked" or paused)
+            // Loop, infinitely, waiting for client connections.
+            // Stop the program somewhere else.
+            while (true) { 
+                
+                // block until connected to a client
+                try (Socket clientConnectionSocket = serverSocket.accept())
+                {
+                    serverLoopCount++; // increment at beginning of loop for reliability
+                    
+                    // Now hook everything up (i.e. set up the streams), Java style:
+                    os = clientConnectionSocket.getOutputStream();
+                    ps = new PrintStream(os);
+                    ps.println("I told you " + serverLoopCount + " time, go clean your room!"); // this gets sent back to client!
+                    
+                    // Print some information locally about the Socket connection.
+                    // This includes the port and IP numbers on both sides (the socket pair).
+                     localAddress = clientConnectionSocket.getLocalAddress();
+                    remoteAddress = clientConnectionSocket.getInetAddress();
+                        localPort = clientConnectionSocket.getLocalPort();
+                       remotePort = clientConnectionSocket.getPort();
+                       
+                    System.out.print ("Server loop " + serverLoopCount + ": ");
+                    
+                    // My socket pair connection looks like this, to localhost:
+                    // Socket pair: (( /0:0:0:0:0:0:0:1, 2317 ), ( /0:0:0:0:0:0:0:1, 54876 ))
+                    // Socket pair: (( /0:0:0:0:0:0:0:1, 2317 ), ( /0:0:0:0:0:0:0:1, 54881 ))
+                    
+                    // Why is the first IP/port the same, while the second set has different ports?
+                    System.out.println(LeckieServer.class.getName() + " socket pair showing host name, address, port:");
+                    System.out.println("  (( " + 
+                         localAddress.getHostName() + "=" +  localAddress.getHostAddress() + ", " + localPort + " ), ( " + 
+                        remoteAddress.getHostName() + "=" + remoteAddress.getHostAddress() + ", " + remotePort + " ))");
+                    
+                    if ( localAddress.getHostName().equals( localAddress.getHostAddress()) ||
+                        remoteAddress.getHostName().equals(remoteAddress.getHostAddress()))
+                        System.out.println("  note HostName matches address if host has no DNS name");
+                    
+                    // Notice the use of flush() and try w/ resources. Without
+                    // the try w/ resources the Socket object may stay open for
+                    // a while after the client has stopped needing this
+                    // connection. try w/ resources explicitly ends the connection.
+                    ps.flush();
+                    // like it or not, you're outta here!
+                }
+            }
+        } catch (IOException e) {
+            System.err.println("Problem with " + LeckieServer.class.getName() + " networking: " + e);
+
+            // Provide more helpful information to user if exception occurs due to running twice at one time
+            if (e instanceof java.net.BindException) {
+                System.err.println("*** Be sure to stop any other running instances of programs using this port!");
+            }
+        }
+    }
+}
diff --git a/assignments/src/MV3500Cohort2021JulySeptember/homework2/Morris/MorrisTCPExample3Client.java b/assignments/src/MV3500Cohort2021JulySeptember/homework2/Morris/MorrisTCPExample3Client.java
index 1464b865580f738842569c01878f7ba40a6af9b9..ccc21fa78dde8145f5c48a9c226dc24d229b1a52 100644
--- a/assignments/src/MV3500Cohort2021JulySeptember/homework2/Morris/MorrisTCPExample3Client.java
+++ b/assignments/src/MV3500Cohort2021JulySeptember/homework2/Morris/MorrisTCPExample3Client.java
@@ -6,7 +6,7 @@ import java.io.*;
 import java.net.*;
 
 /**
- *
+ * homework assignment
  * @author johnmorris
  */
 public class MorrisTCPExample3Client {
diff --git a/assignments/src/MV3500Cohort2021JulySeptember/homework2/Robinson/RobinsonTCP3exClient.java b/assignments/src/MV3500Cohort2021JulySeptember/homework2/Robinson/RobinsonTCP3exClient.java
index 4228bde09f9efeff42cfa86c692f5b12836c7706..fcb54752a70392e9568a222cd7f783ba06a7f7e6 100644
--- a/assignments/src/MV3500Cohort2021JulySeptember/homework2/Robinson/RobinsonTCP3exClient.java
+++ b/assignments/src/MV3500Cohort2021JulySeptember/homework2/Robinson/RobinsonTCP3exClient.java
@@ -8,7 +8,7 @@ import java.io.Reader;
 import java.net.Socket;
 
 /**
- *
+ * homework assignment
  * @author mrobi
  */
 public class RobinsonTCP3exClient {
diff --git a/assignments/src/MV3500Cohort2021JulySeptember/homework2/Schlessel/SchlesselClient.java b/assignments/src/MV3500Cohort2021JulySeptember/homework2/Schlessel/SchlesselClient.java
index a4dfad9f5e10c36a261eca54290b7d687bf83ee3..de34ad6dd17b0bd566064e34cdbcd42a2315d0b7 100644
--- a/assignments/src/MV3500Cohort2021JulySeptember/homework2/Schlessel/SchlesselClient.java
+++ b/assignments/src/MV3500Cohort2021JulySeptember/homework2/Schlessel/SchlesselClient.java
@@ -4,6 +4,7 @@ import java.io.*;
 import java.net.*;
 
 /**
+ * homework assignment
  * @author schlessel
  */
 public class SchlesselClient {
diff --git a/assignments/src/MV3500Cohort2021JulySeptember/homework2/Schlessel/SchlesselServer.java b/assignments/src/MV3500Cohort2021JulySeptember/homework2/Schlessel/SchlesselServer.java
index 517979db8ba0d4d6eab5a9073cf82234ee93085b..5f0e7d3350f29d5080e366b32a892f18a2f4c102 100644
--- a/assignments/src/MV3500Cohort2021JulySeptember/homework2/Schlessel/SchlesselServer.java
+++ b/assignments/src/MV3500Cohort2021JulySeptember/homework2/Schlessel/SchlesselServer.java
@@ -4,6 +4,7 @@ import java.io.*;
 import java.net.*;
 
 /**
+ * homework assignment
  * @author schlessel
  */
 public class SchlesselServer {
diff --git a/assignments/src/MV3500Cohort2021JulySeptember/homework3/Allen/ExampleSimulationProgramAllen_3.java b/assignments/src/MV3500Cohort2021JulySeptember/homework3/Allen/ExampleSimulationProgramAllen_3.java
index 7f2f79cde298f08e13ff8328496d6a6f8ea7778c..33ca72aad1f18a69ecf0914dccab93ebd16597f5 100644
--- a/assignments/src/MV3500Cohort2021JulySeptember/homework3/Allen/ExampleSimulationProgramAllen_3.java
+++ b/assignments/src/MV3500Cohort2021JulySeptember/homework3/Allen/ExampleSimulationProgramAllen_3.java
@@ -1,509 +1,515 @@
-/**
- * Copyright (c) 2008-2021, MOVES Institute, Naval Postgraduate School (NPS). All rights reserved.
- * This work is provided under a BSD open-source license, see project license.html and license.txt
- * 
- * This Program is a modified version of ExampleSimulationProgram in order to see the 
- * verbose plain text pdu log. This simulates a firewall identifying a malicious packet
- * and tracing its source before destroying it - updated September 12, 2021 to ensure
- * correct file pushed to Gitlab.
- * 
- * @author snapp
- */
-package MV3500Cohort2021JulySeptember.homework3.Allen;
-
-import edu.nps.moves.dis7.enumerations.*; // match any
-import edu.nps.moves.dis7.pdus.*;         // match any of the PDU classes, easier than listing individually
-import edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface;
-import edu.nps.moves.dis7.utilities.PduFactory;
-import edu.nps.moves.dis7.utilities.stream.PduRecorder;
-import java.util.ArrayList;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-/** The purpose of this program is to provide an easily modifiable example simulation program
- *  that includes DIS-capable entities doing tasks and reporting them to the network.
- *  Default settings include PDU recording turned on by default.
- */
-public class ExampleSimulationProgramAllen_3
-{
-    private      boolean verboseComments         = true;
-    static final String  NETWORK_ADDRESS_DEFAULT  = "239.1.2.3";
-    static final int     NETWORK_PORT_DEFAULT     = 3000;
-    static       String  networkAddress           = NETWORK_ADDRESS_DEFAULT;
-    static       int     networkPort              = NETWORK_PORT_DEFAULT;
-                 String  DEFAULT_OUTPUT_DIRECTORY = "./pduLog";
-    
-    private EntityID createFriendFireWall() {
-        EntityID FNFireWallID = new EntityID(); // 1.1.225.1.1.1 Platform,Cyber,USA,FireWall
-        FNFireWallID.setSiteID(13);
-        FNFireWallID.setApplicationID(43);
-        FNFireWallID.setEntityID(103);
-        return FNFireWallID;
-    }
-    
-    private EntityType createFriendFireWallType() {
-        EntityType FNFireWallType = new EntityType();
-        FNFireWallType.setEntityKind(EntityKind.PLATFORM);
-        FNFireWallType.setDomain(Domain.inst(PlatformDomain.OTHER));
-        FNFireWallType.setCountry(Country.UNITED_STATES_OF_AMERICA_USA);
-        FNFireWallType.setCategory(3);
-        FNFireWallType.setSubCategory(1);
-        FNFireWallType.setSpecific(1);
-        return FNFireWallType;
-    }
-    
-        private EntityID createMalPacket() {
-        EntityID MalPacketID = new EntityID(); // 1.1.45.1.7.1 Platform,Cyber,China,MaliciousPacket
-        MalPacketID.setSiteID(66);
-        MalPacketID.setApplicationID(666);
-        MalPacketID.setEntityID(6666);
-        return MalPacketID;
-    }
-    
-    private EntityType createMalPacketType() {
-        EntityType MalPacketType = new EntityType();
-        MalPacketType.setEntityKind(EntityKind.PLATFORM);
-        MalPacketType.setDomain(Domain.inst(PlatformDomain.OTHER));
-        MalPacketType.setCountry(Country.CHINA_PEOPLES_REPUBLIC_OF_CHN);
-        MalPacketType.setCategory(3);
-        MalPacketType.setSubCategory(1);
-        MalPacketType.setSpecific(1);
-        return MalPacketType;
-    }
-    
-    private MunitionDescriptor createTraceroute() {
-
-        EntityType TracerouteType = new EntityType(); //2.2.225.2.13.1
-        TracerouteType.setEntityKind(EntityKind.MUNITION);
-        TracerouteType.setDomain(Domain.inst(PlatformDomain.OTHER));
-        TracerouteType.setCountry(Country.UNITED_STATES_OF_AMERICA_USA);
-        TracerouteType.setCategory(2);
-        TracerouteType.setSubCategory(8);
-        TracerouteType.setSpecific(1);
-        MunitionDescriptor Traceroute = new MunitionDescriptor();
-        Traceroute.setMunitionType(TracerouteType);
-        Traceroute.setQuantity(1000);
-        Traceroute.setFuse(MunitionDescriptorFuse.CONTACT);
-        Traceroute.setRate(200);
-        return Traceroute;
-    }
-                 
-    /**
-     * This runSimulationLoops() method is for you, a
-     * programmer-modifiable method for defining and running a new simulation of interest.
-     * Welcome! Other parts of this program handle bookkeeping and plumbing tasks so that
-     * you can focus on your model entities and activities.
-     * Expandable support includes DIS EntityStatePdu, FirePdu and CommentPdu all available for 
-     * modification and sending in a simulation loop.
-     * Continuous improvement efforts seek to make this program as easy and straightforward
-     * as possible for DIS simulationists to use and adapt.
-     * All of the other methods are setup, teardown and configuration that you may find
-     * interesting, even helpful, but don't really have to worry about.
-     */
-    @SuppressWarnings("SleepWhileInLoop") // yes we do that
-    public void runSimulationLoops ()
-    {
-      try
-      {
-        /** seconds for real-time execution (not simulation time, which may or may not be the same) */
-        final double  SIMULATION_LOOP_DURATION_SECONDS  =  1.0; 
-        final int     SIMULATION_MAX_LOOP_COUNT = 10; // be deliberate out out there!  also avoid infinite loops.
-              int     simulationLoopCount = 0;        // variable, initialized at 0
-              boolean simulationComplete = false;     // sentinel variable as termination condition,, are we done yet?
-              boolean fireBool = false;
-              boolean destBool = false;
-        
-        // TODO reset clock to zero each time for consistent outputs
-        
-        // Your model setup: define participants.  who's who in this zoo?
-        // Assuming you keep track of entity objects...  here is some support for for Entity 1.
-        
-        // create PDU object for US Firewall and set its values.
-        //EntityID       entityID_1    = new EntityID();
-        //entityID_1.setSiteID(1).setApplicationID(2).setEntityID(3); // made-up example ID; 
-        
-        EntityStatePdu entityStatePdu_1 = pduFactory.makeEntityStatePdu();
-        entityStatePdu_1.setEntityID(createFriendFireWall());
-        entityStatePdu_1.setEntityType(createFriendFireWallType());
-        entityStatePdu_1.getEntityLocation().setX(0);
-        entityStatePdu_1.setForceId(ForceID.FRIENDLY);
-        
-        // TODO someday, use enumerations; is there a unique site triplet for MOVES Institute?
-        // create PDU object for Malware Packet and set its values.
-        //EntityID       entityID_2    = new EntityID();
-        //entityID_2.setSiteID(4).setApplicationID(5).setEntityID(6);
-        
-        EntityStatePdu entityStatePdu_2 = pduFactory.makeEntityStatePdu();
-        entityStatePdu_2.setEntityID(createMalPacket());
-        entityStatePdu_2.setEntityType(createMalPacketType());
-        entityStatePdu_2.getEntityLocation().setX(7);
-        entityStatePdu_2.setForceId(ForceID.OPPOSING);
-        
-        int MalPacketPingsReceived = 0;
-
-        FirePdu        firePdu       = pduFactory.makeFirePdu(); // for entity 1 first  weapon (possible traceroute)
-        // should we customize this munition?  what is it for your simulation?
-        EntityID fireID = new EntityID();
-        fireID.setSiteID(13);
-        fireID.setApplicationID(43);
-        fireID.setEntityID(103);
-        EntityID targetID = new EntityID();
-        targetID.setSiteID(66);
-        targetID.setApplicationID(666);
-        targetID.setEntityID(6666);
-        
-        firePdu.setFiringEntityID(fireID);
-        firePdu.setTargetEntityID(targetID);
-        
-        firePdu.setDescriptor(createTraceroute()); // calling create Traceroute Method
-        
-        EntityID TracerouteID = new EntityID();
-        TracerouteID.setEntityID(1);
-        firePdu.setMunitionExpendibleID(TracerouteID);
-
-        CommentReliablePdu MalPacketDestroyedComment = pduFactory.makeCommentReliablePdu("Malware Packet DESTROYED BY Firewall");
-        CommentReliablePdu MalPacketDetectedComment = pduFactory.makeCommentReliablePdu("Firewall Detects Malware engage Traceroute");
-        
-        // TODO simulation management PDUs for startup, planning to design special class support
-        
-        //DetonationPdu detonationPdu = pduFactory.makeDetonationPdu();
-        //detonationPdu.setDescriptor(pDescriptor);
-        
-        
-        // loop the simulation while allowed, programmer can set additional conditions to break out and finish
-        while (simulationLoopCount < SIMULATION_MAX_LOOP_COUNT)  // are we done yet?
-        {
-            simulationLoopCount++; // good practice: increment loop counter as first action in that loop
-            
-            // =============================================================================================
-            // * your own simulation code starts here! *
-            // =============================================================================================
-            
-            //  are there any other variables to modify at the beginning of your loop?
-            
-            // compute a track, update an ESPDU, whatever it is that your model is doing...
-            
-            // Where is my entity?  Insert changes in position; this sample only changes X position.
-            entityStatePdu_1.getEntityLocation().setX(entityStatePdu_1.getEntityLocation().getX()); // stationary defensive posture
-            entityStatePdu_2.getEntityLocation().setX(entityStatePdu_2.getEntityLocation().getX() - 1.0); // 1m per timestep
-            
-            // decide whether to fire, and then update the firePdu.  Hmmm, you might want a target to shoot at!
-            Double range = entityStatePdu_2.getEntityLocation().getX();
-            System.out.println("range: " + range + " hops from our Network DMZ!");
-
-            if (range < 5) { // Range 5
-                if (!fireBool) {
-                    sendSinglePdu(MalPacketDetectedComment);
-                }
-                fireBool = true;
-                System.out.println("Entity#" + firePdu.getFiringEntityID().getEntityID() + " is firing " + firePdu.getDescriptor().getMunitionType().getDomain() + "." + firePdu.getDescriptor().getMunitionType().getCountry() + "." + firePdu.getDescriptor().getMunitionType().getCategory() + "." + firePdu.getDescriptor().getMunitionType().getSubCategory() + "." + firePdu.getDescriptor().getMunitionType().getSpecific() + "." + " at Entity#" + firePdu.getTargetEntityID().getEntityID());
-
-                if (firePdu.getTargetEntityID().getEntityID() == 6666) {
-                    MalPacketPingsReceived += 1;
-                    if (MalPacketPingsReceived > 1) {
-                        // The Firewall destroys the MalPacket
-
-                        System.out.println("Malware Packet DESTROYED BY Firewall after " + MalPacketPingsReceived + "pings from the traceroute.");
-                        narrativeMessage4 = "Destroyed MalPacket";
-                        destBool = true;
-                        simulationComplete = true;
-
-                    }
-                }
-            }
-            // etc. etc. your code goes here for your simulation of interest
-                
-            // something happens between my simulation entities, la de da de da...
-            System.out.println ("... My simulation just did something, no really...");
-            
-            
-            // make your reports: narrative code for CommentPdu here (set all to empty strings to avoid sending)
-            narrativeMessage1 = "MV3500 ExampleSimulationProgramAllen_3";
-            narrativeMessage2 = "runSimulation() loop " + simulationLoopCount;
-            narrativeMessage3 = "this is working!"; // intentionally blank for testing
-
-            // your loop termination condition goes here
-            if (simulationLoopCount > 4) // for example
-            {
-                simulationComplete = true;
-            }      
-            // =============================================================================================
-            // * your own simulation code is finished here! *
-            // =============================================================================================
-            
-            // staying synchronized with timestep: wait duration for elapsed time in this loop
-            // Thread.sleep needs a (long) parameter for milliseconds, which are clumsy to use sometimes
-            Thread.sleep((long)(SIMULATION_LOOP_DURATION_SECONDS * 1000)); // seconds * (1000 msec/sec) = milliseconds
-            System.out.println ("... [Pausing for " + SIMULATION_LOOP_DURATION_SECONDS + " seconds]");
-            
-            // OK now send the status PDUs for this loop, and then continue
-            System.out.println ("sending PDUs for simulation step " + simulationLoopCount + ", monitor loopback to confirm sent");
-            sendAllPdusForLoopTimestep(entityStatePdu_1, firePdu, timeStepComment, narrativeMessage1, narrativeMessage2, narrativeMessage3);
-            sendSinglePdu(entityStatePdu_2); // me too i.e. 2!
-            System.out.println ("... [PDUs successfully sent for this loop]");
-            
-            // ===============================
-            // loop now finished, check whether to terminate if simulation complete, otherwise continue
-            if (simulationComplete || (simulationLoopCount > 10000)) // for example; including fail-safe condition is good
-            {
-                //sendSinglePdu(detonationPdu);
-                System.out.println ("... [Termination condition met, simulationComplete=" + simulationComplete + "]"); // ", final loopCount=" + loopCount + 
-                break;
-            }
-        }   // end of simulation loop
-        
-        narrativeMessage2 = "runSimulation() completed successfully"; // all done
-        sendCommentPdu(narrativeComment, narrativeMessage1, narrativeMessage2, narrativeMessage3);
-        System.out.println ("... [final CommentPdu successfully sent for simulation]");
-        // TODO simulation management PDUs
-      } 
-      catch (InterruptedException iex) // handle any exception that your code might choose to provoke!
-      {
-        Logger.getLogger(ExampleSimulationProgramAllen_3.class.getName()).log(Level.SEVERE, null, iex);
-      }
-    }
-    /* **************************** infrastructure code, modification is seldom needed ************************* */
-                 
-    String narrativeMessage1 = new String();
-    String narrativeMessage2 = new String();
-    String narrativeMessage3 = new String();
-    String narrativeMessage4 = new String();
-          
-    /* VariableRecordType enumerations have potential use with CommentPdu logs */
-    /* TODO contrast to EntityType */
-    VariableRecordType descriptionComment = VariableRecordType.DESCRIPTION;
-    VariableRecordType   narrativeComment = VariableRecordType.COMPLETE_EVENT_REPORT;
-    VariableRecordType      statusComment = VariableRecordType.APPLICATION_STATUS;
-    VariableRecordType    timeStepComment = VariableRecordType.APPLICATION_TIMESTEP;
-    VariableRecordType       otherComment = VariableRecordType.OTHER;
-        
-	/**
-	 * Output prefix to identify this class, helps with logging
-	 */
-    private final static String TRACE_PREFIX = "[" + ExampleSimulationProgramAllen_3.class.getName() + "] ";
-    
-    // class variables
-    PduFactory                              pduFactory = new PduFactory();
-    DisThreadedNetworkInterface             disNetworkInterface;
-    DisThreadedNetworkInterface.PduListener pduListener;
-    Pdu                                     receivedPdu;
-    PduRecorder                             pduRecorder;
-    
-    /**
-     * Constructor design goal: additional built-in initialization conveniences can go here
-     * to keep student efforts focused on the runSimulation() method.
-     */
-    public ExampleSimulationProgramAllen_3()
-    {
-        // Constructor is under consideration.  Constructor is not currently needed.
-    }
-    
-    /**
-     * Utility Constructor that allows your example simulation program to override default network address and port
-     * @param address network address to use
-     * @param port corresponding network port to use
-     */
-    public ExampleSimulationProgramAllen_3(String address, int port)
-    {
-        setNetworkAddress(address);
-        
-        setNetworkPort(port);
-    }
-
-    /**
-     * @return the networkAddress
-     */
-    public String getNetworkAddress()
-    {
-        return networkAddress;
-    }
-
-    /**
-     * @param newNetworkAddress the networkAddress to set
-     */
-    public final void setNetworkAddress(String newNetworkAddress)
-    {
-        ExampleSimulationProgramAllen_3.networkAddress = newNetworkAddress;
-    }
-
-    /**
-     * @return the networkPort
-     */
-    public int getNetworkPort()
-    {
-        return networkPort;
-    }
-
-    /**
-     * @param newNetworkPort the networkPort to set
-     */
-    public final void setNetworkPort(int newNetworkPort)
-    {
-        ExampleSimulationProgramAllen_3.networkPort = newNetworkPort;
-    }
-
-    /**
-     * Initialize network interface, choosing best available network interface
-     */
-    public void setUpNetworkInterface()
-    {
-        disNetworkInterface = new DisThreadedNetworkInterface(getNetworkAddress(), getNetworkPort());
-        disNetworkInterface.setDescriptor ("ExampleSimulationProgramAllen_3 pdu looping");
-        
-        System.out.println("Network confirmation:" +
-               " address=" + disNetworkInterface.getAddress()+ //  disNetworkInterface.getMulticastGroup() + 
-                  " port=" + disNetworkInterface.getPort());   // + disNetworkInterface.getDisPort());
-        pduListener = new DisThreadedNetworkInterface.PduListener()
-        {
-            /** Callback handler for listener */
-            @Override
-            public void incomingPdu(Pdu newPdu)
-            {
-                receivedPdu = newPdu;
-            }
-        };
-        disNetworkInterface.addListener(pduListener);
-        
-        String outputDirectory = DEFAULT_OUTPUT_DIRECTORY;
-        System.out.println("Beginning pdu save to directory " + outputDirectory);
-        pduRecorder = new PduRecorder(outputDirectory, getNetworkAddress(), getNetworkPort()); // assumes save
-        pduRecorder.setDescriptor ("ExampleSimulationProgramAllen_3 pduRecorder");
-        pduRecorder.start(); // begin running
-    }
-
-    /** All done, release network resources */
-    public void tearDownNetworkInterface()
-    {
-        pduRecorder.stop();
-
-        disNetworkInterface.removeListener(pduListener);
-        
-        disNetworkInterface.close();
-//      disNetworkInterface.kill(); // renamed as close(), deprecated
-//      disNetworkInterface = null; // making sure no possibility of zombie process remaining...
-    }
-
-    /** 
-     * Send a single Protocol Data Unit (PDU) of any type
-     * @param pdu the pdu to send
-     */
-    private void sendSinglePdu(Pdu pdu)
-    {
-        try
-        {
-            disNetworkInterface.send(pdu);
-            Thread.sleep(100); // TODO consider refactoring the wait logic and moving externally
-        } 
-        catch (InterruptedException ex)
-        {
-            System.err.println(this.getClass().getName() + " Error sending PDU: " + ex.getLocalizedMessage());
-            System.exit(1);
-        }
-    }
-
-    /**
-     * Send Comment PDU
-     * @see <a href="https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html">Passing Information to a Method or a Constructor</a> Arbitrary Number of Arguments
-     * @param commentType    enumeration value describing purpose of the narrative comment
-     * @param comments       String array of narrative comments
-     */
-    public void sendCommentPdu(VariableRecordType commentType,
-                                     // vararg... variable-length set of String comments can optionally follow
-                                        String... comments)
-    {
-        sendAllPdusForLoopTimestep (null, null, commentType, comments);
-    }
-
-    /**
-     * Send EntityState, Fire, Comment PDUs that got updated for this loop, reflecting state of current simulation timestep.
-     * @see <a href="https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html">Passing Information to a Method or a Constructor</a> Arbitrary Number of Arguments
-     * @param entityStatePdu the ESPDU to send, if any
-     * @param firePdu        the FirePDU to send, if any
-     * @param commentType    enumeration value describing purpose of the narrative comment
-     * @param comments       String array of narrative comments
-     */
-    public void sendAllPdusForLoopTimestep(EntityStatePdu entityStatePdu,
-                                   FirePdu firePdu,
-                        VariableRecordType commentType,
-                              // vararg... variable-length set of String comments can optionally follow
-                                 String... comments)
-    {
-        if (entityStatePdu != null)
-            sendSinglePdu(entityStatePdu);
-            
-        if (firePdu != null)
-            sendSinglePdu(firePdu); // bang
-        
-        if ((comments != null) && (comments.length > 0))
-        {
-            ArrayList<String> newCommentsList = new ArrayList<>();
-            for (String comment : comments)
-            {
-                if (!comment.isEmpty())
-                {
-                    newCommentsList.add(comment); // OK found something to send
-                }
-            }
-            if (!newCommentsList.isEmpty())
-            {
-                if (commentType == null)
-                    commentType = otherComment; // fallback value otherComment
-                // now build the commentPdu from these string inputs, thus constructing a narrative entry
-                CommentPdu commentPdu = pduFactory.makeCommentPdu(commentType, newCommentsList.toArray(new String[0])); // comments);
-                sendSinglePdu(commentPdu);
-                if (isVerboseComments())
-                    System.out.println("*** [Narrative comment sent: " + commentType.name() + "] " + newCommentsList.toString());
-            }
-        }
-    }
-  
-    /**
-     * Main method is first executed when a program instance is loaded.
-     * @see <a href="https://docs.oracle.com/javase/tutorial/getStarted/application/index.html">Java Tutorials: A Closer Look at the "Hello World!" Application</a>
-     * @param args command-line arguments are an array of optional String parameters that are passed from execution environment during invocation
-     */
-    public static void main(String[] args)
-    {
-        System.out.println(TRACE_PREFIX + "started...");
-        
-        ExampleSimulationProgramAllen_3 thisProgram = new ExampleSimulationProgramAllen_3(); // creates instance
-        
-        // initial execution: can handle args array of initialization arguments here
-        if (args.length == 2)
-        {
-            if ((args[0] != null) && !args[0].isEmpty())
-                thisProgram.setNetworkAddress(args[0]);
-            
-            if ((args[1] != null) && !args[1].isEmpty())
-                thisProgram.setNetworkPort(Integer.parseInt(args[1]));
-        }
-        else if (args.length != 0)
-        {
-            System.err.println("Usage: " + thisProgram.getClass().getName() + " [address port]");
-            System.exit(-1);
-        }
-        // OK here we go...
-
-        thisProgram.setUpNetworkInterface();
-
-        thisProgram.runSimulationLoops (); // ... your simulation execution code goes in there ...
-        
-        thisProgram.tearDownNetworkInterface(); // make sure no processes are left lingering
-        
-        System.out.println(TRACE_PREFIX + "complete."); // report successful completion
-    }
-
-    /**
-     * @return whether verboseComments mode is enabled
-     */
-    public boolean isVerboseComments() {
-        return verboseComments;
-    }
-
-    /**
-     * @param newVerboseComments whether verboseComments mode is enabled
-     */
-    public void setVerboseComments(boolean newVerboseComments) {
-        this.verboseComments = newVerboseComments;
-    }
-}
+/**
+ * Copyright (c) 2008-2021, MOVES Institute, Naval Postgraduate School (NPS). All rights reserved.
+ * This work is provided under a BSD open-source license, see project license.html and license.txt
+ * 
+ * This Program is a modified version of ExampleSimulationProgram in order to see the 
+ * verbose plain text pdu log. This simulates a firewall identifying a malicious packet
+ * and tracing its source before destroying it - updated September 12, 2021 to ensure
+ * correct file pushed to Gitlab.
+ * 
+ * @author snapp
+ */
+package MV3500Cohort2021JulySeptember.homework3.Allen;
+
+import edu.nps.moves.dis7.enumerations.*; // match any
+import edu.nps.moves.dis7.pdus.*;         // match any of the PDU classes, easier than listing individually
+import edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface;
+import edu.nps.moves.dis7.utilities.PduFactory;
+import edu.nps.moves.dis7.utilities.stream.PduRecorder;
+import java.util.ArrayList;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/** The purpose of this program is to provide an easily modifiable example simulation program
+ *  that includes DIS-capable entities doing tasks and reporting them to the network.
+ *  Default settings include PDU recording turned on by default.
+ */
+public class ExampleSimulationProgramAllen_3
+{
+    private      boolean verboseComments         = true;
+    static final String  NETWORK_ADDRESS_DEFAULT  = "239.1.2.3";
+    static final int     NETWORK_PORT_DEFAULT     = 3000;
+    static       String  networkAddress           = NETWORK_ADDRESS_DEFAULT;
+    static       int     networkPort              = NETWORK_PORT_DEFAULT;
+                 String  DEFAULT_OUTPUT_DIRECTORY = "./pduLog";
+    
+    private EntityID createFriendFireWall() {
+        EntityID FNFireWallID = new EntityID(); // 1.1.225.1.1.1 Platform,Cyber,USA,FireWall
+        FNFireWallID.setSiteID(13);
+        FNFireWallID.setApplicationID(43);
+        FNFireWallID.setEntityID(103);
+        return FNFireWallID;
+    }
+    
+    private EntityType createFriendFireWallType() {
+        EntityType FNFireWallType = new EntityType();
+        FNFireWallType.setEntityKind(EntityKind.PLATFORM);
+        FNFireWallType.setDomain(Domain.inst(PlatformDomain.OTHER));
+        FNFireWallType.setCountry(Country.UNITED_STATES_OF_AMERICA_USA);
+        FNFireWallType.setCategory(3);
+        FNFireWallType.setSubCategory(1);
+        FNFireWallType.setSpecific(1);
+        return FNFireWallType;
+    }
+    
+        private EntityID createMalPacket() {
+        EntityID MalPacketID = new EntityID(); // 1.1.45.1.7.1 Platform,Cyber,China,MaliciousPacket
+        MalPacketID.setSiteID(66);
+        MalPacketID.setApplicationID(666);
+        MalPacketID.setEntityID(6666);
+        return MalPacketID;
+    }
+    
+    private EntityType createMalPacketType() {
+        EntityType MalPacketType = new EntityType();
+        MalPacketType.setEntityKind(EntityKind.PLATFORM);
+        MalPacketType.setDomain(Domain.inst(PlatformDomain.OTHER));
+        MalPacketType.setCountry(Country.CHINA_PEOPLES_REPUBLIC_OF_CHN);
+        MalPacketType.setCategory(3);
+        MalPacketType.setSubCategory(1);
+        MalPacketType.setSpecific(1);
+        return MalPacketType;
+    }
+    
+    private MunitionDescriptor createTraceroute() {
+
+        EntityType TracerouteType = new EntityType(); //2.2.225.2.13.1
+        TracerouteType.setEntityKind(EntityKind.MUNITION);
+        TracerouteType.setDomain(Domain.inst(PlatformDomain.OTHER));
+        TracerouteType.setCountry(Country.UNITED_STATES_OF_AMERICA_USA);
+        TracerouteType.setCategory(2);
+        TracerouteType.setSubCategory(8);
+        TracerouteType.setSpecific(1);
+        MunitionDescriptor Traceroute = new MunitionDescriptor();
+        Traceroute.setMunitionType(TracerouteType);
+        Traceroute.setQuantity(1000);
+        Traceroute.setFuse(MunitionDescriptorFuse.CONTACT);
+        Traceroute.setRate(200);
+        return Traceroute;
+    }
+                 
+    /**
+     * This runSimulationLoops() method is for you, a
+     * programmer-modifiable method for defining and running a new simulation of interest.
+     * Welcome! Other parts of this program handle bookkeeping and plumbing tasks so that
+     * you can focus on your model entities and activities.
+     * Expandable support includes DIS EntityStatePdu, FirePdu and CommentPdu all available for 
+     * modification and sending in a simulation loop.
+     * Continuous improvement efforts seek to make this program as easy and straightforward
+     * as possible for DIS simulationists to use and adapt.
+     * All of the other methods are setup, teardown and configuration that you may find
+     * interesting, even helpful, but don't really have to worry about.
+     */
+    @SuppressWarnings("SleepWhileInLoop") // yes we do that
+    public void runSimulationLoops ()
+    {
+      try
+      {
+        /** seconds for real-time execution (not simulation time, which may or may not be the same) */
+        final double  SIMULATION_LOOP_DURATION_SECONDS  =  1.0; 
+        final int     SIMULATION_MAX_LOOP_COUNT = 10; // be deliberate out out there!  also avoid infinite loops.
+              int     simulationLoopCount = 0;        // variable, initialized at 0
+              boolean simulationComplete = false;     // sentinel variable as termination condition,, are we done yet?
+              boolean fireBool = false;
+              boolean destBool = false;
+        
+        // TODO reset clock to zero each time for consistent outputs
+        
+        // Your model setup: define participants.  who's who in this zoo?
+        // Assuming you keep track of entity objects...  here is some support for for Entity 1.
+        
+        // create PDU object for US Firewall and set its values.
+        //EntityID       entityID_1    = new EntityID();
+        //entityID_1.setSiteID(1).setApplicationID(2).setEntityID(3); // made-up example ID; 
+        
+        EntityStatePdu entityStatePdu_1 = pduFactory.makeEntityStatePdu();
+        entityStatePdu_1.setEntityID(createFriendFireWall());
+        entityStatePdu_1.setEntityType(createFriendFireWallType());
+        entityStatePdu_1.getEntityLocation().setX(0);
+        entityStatePdu_1.setForceId(ForceID.FRIENDLY);
+        
+        // TODO someday, use enumerations; is there a unique site triplet for MOVES Institute?
+        // create PDU object for Malware Packet and set its values.
+        //EntityID       entityID_2    = new EntityID();
+        //entityID_2.setSiteID(4).setApplicationID(5).setEntityID(6);
+        
+        EntityStatePdu entityStatePdu_2 = pduFactory.makeEntityStatePdu();
+        entityStatePdu_2.setEntityID(createMalPacket());
+        entityStatePdu_2.setEntityType(createMalPacketType());
+        entityStatePdu_2.getEntityLocation().setX(7);
+        entityStatePdu_2.setForceId(ForceID.OPPOSING);
+        
+        int MalPacketPingsReceived = 0;
+
+        FirePdu        firePdu       = pduFactory.makeFirePdu(); // for entity 1 first  weapon (possible traceroute)
+        // should we customize this munition?  what is it for your simulation?
+        EntityID fireID = new EntityID();
+        fireID.setSiteID(13);
+        fireID.setApplicationID(43);
+        fireID.setEntityID(103);
+        EntityID targetID = new EntityID();
+        targetID.setSiteID(66);
+        targetID.setApplicationID(666);
+        targetID.setEntityID(6666);
+        
+        firePdu.setFiringEntityID(fireID);
+        firePdu.setTargetEntityID(targetID);
+        
+        firePdu.setDescriptor(createTraceroute()); // calling create Traceroute Method
+        
+        EntityID TracerouteID = new EntityID();
+        TracerouteID.setEntityID(1);
+        firePdu.setMunitionExpendibleID(TracerouteID);
+
+        CommentReliablePdu MalPacketDestroyedComment = pduFactory.makeCommentReliablePdu("Malware Packet DESTROYED BY Firewall");
+        CommentReliablePdu MalPacketDetectedComment = pduFactory.makeCommentReliablePdu("Firewall Detects Malware engage Traceroute");
+        
+        // TODO simulation management PDUs for startup, planning to design special class support
+        
+        //DetonationPdu detonationPdu = pduFactory.makeDetonationPdu();
+        //detonationPdu.setDescriptor(pDescriptor);
+        
+        
+        // loop the simulation while allowed, programmer can set additional conditions to break out and finish
+        while (simulationLoopCount < SIMULATION_MAX_LOOP_COUNT)  // are we done yet?
+        {
+            simulationLoopCount++; // good practice: increment loop counter as first action in that loop
+            
+            // =============================================================================================
+            // * your own simulation code starts here! *
+            // =============================================================================================
+            
+            //  are there any other variables to modify at the beginning of your loop?
+            
+            // compute a track, update an ESPDU, whatever it is that your model is doing...
+            
+            // Where is my entity?  Insert changes in position; this sample only changes X position.
+            entityStatePdu_1.getEntityLocation().setX(entityStatePdu_1.getEntityLocation().getX()); // stationary defensive posture
+            entityStatePdu_2.getEntityLocation().setX(entityStatePdu_2.getEntityLocation().getX() - 1.0); // 1m per timestep
+            
+            // decide whether to fire, and then update the firePdu.  Hmmm, you might want a target to shoot at!
+            Double range = entityStatePdu_2.getEntityLocation().getX();
+            System.out.println("range: " + range + " hops from our Network DMZ!");
+
+            if (range < 5) { // Range 5
+                if (!fireBool) {
+                    sendSinglePdu(MalPacketDetectedComment);
+                }
+                fireBool = true;
+                System.out.println("Entity#" + firePdu.getFiringEntityID().getEntityID() + " is firing " + firePdu.getDescriptor().getMunitionType().getDomain() + "." + firePdu.getDescriptor().getMunitionType().getCountry() + "." + firePdu.getDescriptor().getMunitionType().getCategory() + "." + firePdu.getDescriptor().getMunitionType().getSubCategory() + "." + firePdu.getDescriptor().getMunitionType().getSpecific() + "." + " at Entity#" + firePdu.getTargetEntityID().getEntityID());
+
+                if (firePdu.getTargetEntityID().getEntityID() == 6666) {
+                    MalPacketPingsReceived += 1;
+                    if (MalPacketPingsReceived > 1) {
+                        // The Firewall destroys the MalPacket
+
+                        System.out.println("Malware Packet DESTROYED BY Firewall after " + MalPacketPingsReceived + "pings from the traceroute.");
+                        narrativeMessage4 = "Destroyed MalPacket";
+                        destBool = true;
+                        simulationComplete = true;
+
+                    }
+                }
+            }
+            // etc. etc. your code goes here for your simulation of interest
+                
+            // something happens between my simulation entities, la de da de da...
+            System.out.println ("... My simulation just did something, no really...");
+            
+            
+            // make your reports: narrative code for CommentPdu here (set all to empty strings to avoid sending)
+            narrativeMessage1 = "MV3500 ExampleSimulationProgramAllen_3";
+            narrativeMessage2 = "runSimulation() loop " + simulationLoopCount;
+            narrativeMessage3 = "this is working!"; // intentionally blank for testing
+
+            // your loop termination condition goes here
+            if (simulationLoopCount > 4) // for example
+            {
+                simulationComplete = true;
+            }      
+            // =============================================================================================
+            // * your own simulation code is finished here! *
+            // =============================================================================================
+            
+            // staying synchronized with timestep: wait duration for elapsed time in this loop
+            // Thread.sleep needs a (long) parameter for milliseconds, which are clumsy to use sometimes
+            Thread.sleep((long)(SIMULATION_LOOP_DURATION_SECONDS * 1000)); // seconds * (1000 msec/sec) = milliseconds
+            System.out.println ("... [Pausing for " + SIMULATION_LOOP_DURATION_SECONDS + " seconds]");
+            
+            // OK now send the status PDUs for this loop, and then continue
+            System.out.println ("sending PDUs for simulation step " + simulationLoopCount + ", monitor loopback to confirm sent");
+            sendAllPdusForLoopTimestep(entityStatePdu_1, firePdu, timeStepComment, narrativeMessage1, narrativeMessage2, narrativeMessage3);
+            sendSinglePdu(entityStatePdu_2); // me too i.e. 2!
+            System.out.println ("... [PDUs successfully sent for this loop]");
+            
+            // ===============================
+            // loop now finished, check whether to terminate if simulation complete, otherwise continue
+            if (simulationComplete || (simulationLoopCount > 10000)) // for example; including fail-safe condition is good
+            {
+                //sendSinglePdu(detonationPdu);
+                System.out.println ("... [Termination condition met, simulationComplete=" + simulationComplete + "]"); // ", final loopCount=" + loopCount + 
+                break;
+            }
+        }   // end of simulation loop
+        
+        narrativeMessage2 = "runSimulation() completed successfully"; // all done
+        sendCommentPdu(narrativeComment, narrativeMessage1, narrativeMessage2, narrativeMessage3);
+        System.out.println ("... [final CommentPdu successfully sent for simulation]");
+        // TODO simulation management PDUs
+      } 
+      catch (InterruptedException iex) // handle any exception that your code might choose to provoke!
+      {
+        Logger.getLogger(ExampleSimulationProgramAllen_3.class.getName()).log(Level.SEVERE, null, iex);
+      }
+    }
+    /* **************************** infrastructure code, modification is seldom needed ************************* */
+                 
+    String narrativeMessage1 = new String();
+    String narrativeMessage2 = new String();
+    String narrativeMessage3 = new String();
+    String narrativeMessage4 = new String();
+          
+    /* VariableRecordType enumerations have potential use with CommentPdu logs */
+    /* TODO contrast to EntityType */
+    VariableRecordType descriptionComment = VariableRecordType.DESCRIPTION;
+    VariableRecordType   narrativeComment = VariableRecordType.COMPLETE_EVENT_REPORT;
+    VariableRecordType      statusComment = VariableRecordType.APPLICATION_STATUS;
+    VariableRecordType    timeStepComment = VariableRecordType.APPLICATION_TIMESTEP;
+    VariableRecordType       otherComment = VariableRecordType.OTHER;
+        
+	/**
+	 * Output prefix to identify this class, helps with logging
+	 */
+    private final static String TRACE_PREFIX = "[" + ExampleSimulationProgramAllen_3.class.getName() + "] ";
+    
+    // class variables
+    PduFactory                              pduFactory = new PduFactory();
+    DisThreadedNetworkInterface             disNetworkInterface;
+    DisThreadedNetworkInterface.PduListener pduListener;
+    Pdu                                     receivedPdu;
+    PduRecorder                             pduRecorder;
+    
+    /**
+     * Constructor design goal: additional built-in initialization conveniences can go here
+     * to keep student efforts focused on the runSimulation() method.
+     */
+    public ExampleSimulationProgramAllen_3()
+    {
+        // Constructor is under consideration.  Constructor is not currently needed.
+    }
+    
+    /**
+     * Utility Constructor that allows your example simulation program to override default network address and port
+     * @param address network address to use
+     * @param port corresponding network port to use
+     */
+    public ExampleSimulationProgramAllen_3(String address, int port)
+    {
+        setNetworkAddress(address);
+        
+        setNetworkPort(port);
+    }
+
+    /**
+     * get networkAddress
+     * @return the networkAddress
+     */
+    public String getNetworkAddress()
+    {
+        return networkAddress;
+    }
+
+    /**
+     * set networkAddress
+     * @param newNetworkAddress the networkAddress to set
+     */
+    public final void setNetworkAddress(String newNetworkAddress)
+    {
+        ExampleSimulationProgramAllen_3.networkAddress = newNetworkAddress;
+    }
+
+    /**
+     * get networkPort
+     * @return the networkPort
+     */
+    public int getNetworkPort()
+    {
+        return networkPort;
+    }
+
+    /**
+     * set networkPort
+     * @param newNetworkPort the networkPort to set
+     */
+    public final void setNetworkPort(int newNetworkPort)
+    {
+        ExampleSimulationProgramAllen_3.networkPort = newNetworkPort;
+    }
+
+    /**
+     * Initialize network interface, choosing best available network interface
+     */
+    public void setUpNetworkInterface()
+    {
+        disNetworkInterface = new DisThreadedNetworkInterface(getNetworkAddress(), getNetworkPort());
+        disNetworkInterface.setDescriptor ("ExampleSimulationProgramAllen_3 pdu looping");
+        
+        System.out.println("Network confirmation:" +
+               " address=" + disNetworkInterface.getAddress()+ //  disNetworkInterface.getMulticastGroup() + 
+                  " port=" + disNetworkInterface.getPort());   // + disNetworkInterface.getDisPort());
+        pduListener = new DisThreadedNetworkInterface.PduListener()
+        {
+            /** Callback handler for listener */
+            @Override
+            public void incomingPdu(Pdu newPdu)
+            {
+                receivedPdu = newPdu;
+            }
+        };
+        disNetworkInterface.addListener(pduListener);
+        
+        String outputDirectory = DEFAULT_OUTPUT_DIRECTORY;
+        System.out.println("Beginning pdu save to directory " + outputDirectory);
+        pduRecorder = new PduRecorder(outputDirectory, getNetworkAddress(), getNetworkPort()); // assumes save
+        pduRecorder.setDescriptor ("ExampleSimulationProgramAllen_3 pduRecorder");
+        pduRecorder.start(); // begin running
+    }
+
+    /** All done, release network resources */
+    public void tearDownNetworkInterface()
+    {
+        pduRecorder.stop();
+
+        disNetworkInterface.removeListener(pduListener);
+        
+        disNetworkInterface.close();
+//      disNetworkInterface.kill(); // renamed as close(), deprecated
+//      disNetworkInterface = null; // making sure no possibility of zombie process remaining...
+    }
+
+    /** 
+     * Send a single Protocol Data Unit (PDU) of any type
+     * @param pdu the pdu to send
+     */
+    private void sendSinglePdu(Pdu pdu)
+    {
+        try
+        {
+            disNetworkInterface.send(pdu);
+            Thread.sleep(100); // TODO consider refactoring the wait logic and moving externally
+        } 
+        catch (InterruptedException ex)
+        {
+            System.err.println(this.getClass().getName() + " Error sending PDU: " + ex.getLocalizedMessage());
+            System.exit(1);
+        }
+    }
+
+    /**
+     * Send Comment PDU
+     * @see <a href="https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html">Passing Information to a Method or a Constructor</a> Arbitrary Number of Arguments
+     * @param commentType    enumeration value describing purpose of the narrative comment
+     * @param comments       String array of narrative comments
+     */
+    public void sendCommentPdu(VariableRecordType commentType,
+                                     // vararg... variable-length set of String comments can optionally follow
+                                        String... comments)
+    {
+        sendAllPdusForLoopTimestep (null, null, commentType, comments);
+    }
+
+    /**
+     * Send EntityState, Fire, Comment PDUs that got updated for this loop, reflecting state of current simulation timestep.
+     * @see <a href="https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html">Passing Information to a Method or a Constructor</a> Arbitrary Number of Arguments
+     * @param entityStatePdu the ESPDU to send, if any
+     * @param firePdu        the FirePDU to send, if any
+     * @param commentType    enumeration value describing purpose of the narrative comment
+     * @param comments       String array of narrative comments
+     */
+    public void sendAllPdusForLoopTimestep(EntityStatePdu entityStatePdu,
+                                   FirePdu firePdu,
+                        VariableRecordType commentType,
+                              // vararg... variable-length set of String comments can optionally follow
+                                 String... comments)
+    {
+        if (entityStatePdu != null)
+            sendSinglePdu(entityStatePdu);
+            
+        if (firePdu != null)
+            sendSinglePdu(firePdu); // bang
+        
+        if ((comments != null) && (comments.length > 0))
+        {
+            ArrayList<String> newCommentsList = new ArrayList<>();
+            for (String comment : comments)
+            {
+                if (!comment.isEmpty())
+                {
+                    newCommentsList.add(comment); // OK found something to send
+                }
+            }
+            if (!newCommentsList.isEmpty())
+            {
+                if (commentType == null)
+                    commentType = otherComment; // fallback value otherComment
+                // now build the commentPdu from these string inputs, thus constructing a narrative entry
+                CommentPdu commentPdu = pduFactory.makeCommentPdu(commentType, newCommentsList.toArray(new String[0])); // comments);
+                sendSinglePdu(commentPdu);
+                if (isVerboseComments())
+                    System.out.println("*** [Narrative comment sent: " + commentType.name() + "] " + newCommentsList.toString());
+            }
+        }
+    }
+  
+    /**
+     * Main method is first executed when a program instance is loaded.
+     * @see <a href="https://docs.oracle.com/javase/tutorial/getStarted/application/index.html">Java Tutorials: A Closer Look at the "Hello World!" Application</a>
+     * @param args command-line arguments are an array of optional String parameters that are passed from execution environment during invocation
+     */
+    public static void main(String[] args)
+    {
+        System.out.println(TRACE_PREFIX + "started...");
+        
+        ExampleSimulationProgramAllen_3 thisProgram = new ExampleSimulationProgramAllen_3(); // creates instance
+        
+        // initial execution: can handle args array of initialization arguments here
+        if (args.length == 2)
+        {
+            if ((args[0] != null) && !args[0].isEmpty())
+                thisProgram.setNetworkAddress(args[0]);
+            
+            if ((args[1] != null) && !args[1].isEmpty())
+                thisProgram.setNetworkPort(Integer.parseInt(args[1]));
+        }
+        else if (args.length != 0)
+        {
+            System.err.println("Usage: " + thisProgram.getClass().getName() + " [address port]");
+            System.exit(-1);
+        }
+        // OK here we go...
+
+        thisProgram.setUpNetworkInterface();
+
+        thisProgram.runSimulationLoops (); // ... your simulation execution code goes in there ...
+        
+        thisProgram.tearDownNetworkInterface(); // make sure no processes are left lingering
+        
+        System.out.println(TRACE_PREFIX + "complete."); // report successful completion
+    }
+
+    /**
+     * get whether verbose comments are enabled
+     * @return whether verboseComments mode is enabled
+     */
+    public boolean isVerboseComments() {
+        return verboseComments;
+    }
+
+    /**
+     * set whether verbose comments are enabled
+     * @param newVerboseComments whether verboseComments mode is enabled
+     */
+    public void setVerboseComments(boolean newVerboseComments) {
+        this.verboseComments = newVerboseComments;
+    }
+}
diff --git a/assignments/src/MV3500Cohort2021JulySeptember/homework3/Fisher/ExampleSimulationProgramFisher_2.java b/assignments/src/MV3500Cohort2021JulySeptember/homework3/Fisher/ExampleSimulationProgramFisher_2.java
index 7a61cc06c0e23c9acf6485443e0e763b3b1d557b..49d8edab8812e25e584b3b947ddf575f9aed5b9a 100644
--- a/assignments/src/MV3500Cohort2021JulySeptember/homework3/Fisher/ExampleSimulationProgramFisher_2.java
+++ b/assignments/src/MV3500Cohort2021JulySeptember/homework3/Fisher/ExampleSimulationProgramFisher_2.java
@@ -1,404 +1,410 @@
-/**
- * Copyright (c) 2008-2021, MOVES Institute, Naval Postgraduate School (NPS). All rights reserved.
- * This work is provided under a BSD open-source license, see project license.html and license.txt
- * 
- * This Program is a modified version of ExampleSimulationProgramFisher in order to see the 
- * verbose plain text pdu log. I was unable to figure out the issue in my original code,
- * so I just copied the example and pasted my additions into this file.
- * 
- * @author adfis
- */
-package MV3500Cohort2021JulySeptember.homework3.Fisher;
-
-import edu.nps.moves.dis7.enumerations.*; // match any
-import edu.nps.moves.dis7.pdus.*;         // match any of the PDU classes, easier than listing individually
-import edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface;
-import edu.nps.moves.dis7.utilities.PduFactory;
-import edu.nps.moves.dis7.utilities.stream.PduRecorder;
-import java.util.ArrayList;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-/** The purpose of this program is to provide an easily modifiable example simulation program
- *  that includes DIS-capable entities doing tasks and reporting them to the network.
- *  Default settings include PDU recording turned on by default.
- */
-public class ExampleSimulationProgramFisher_2
-{
-    private      boolean verboseComments         = true;
-    static final String  NETWORK_ADDRESS_DEFAULT  = "239.1.2.3";
-    static final int     NETWORK_PORT_DEFAULT     = 3000;
-    static       String  networkAddress           = NETWORK_ADDRESS_DEFAULT;
-    static       int     networkPort              = NETWORK_PORT_DEFAULT;
-                 String  DEFAULT_OUTPUT_DIRECTORY = "./pduLog";
-                 
-    /**
-     * This runSimulationLoops() method is for you, a
-     * programmer-modifiable method for defining and running a new simulation of interest.
-     * Welcome! Other parts of this program handle bookkeeping and plumbing tasks so that
-     * you can focus on your model entities and activities.
-     * Expandable support includes DIS EntityStatePdu, FirePdu and CommentPdu all available for 
-     * modification and sending in a simulation loop.
-     * Continuous improvement efforts seek to make this program as easy and straightforward
-     * as possible for DIS simulationists to use and adapt.
-     * All of the other methods are setup, teardown and configuration that you may find
-     * interesting, even helpful, but don't really have to worry about.
-     */
-    @SuppressWarnings("SleepWhileInLoop") // yes we do that
-    public void runSimulationLoops ()
-    {
-      try
-      {
-        /** seconds for real-time execution (not simulation time, which may or may not be the same) */
-        final double  SIMULATION_LOOP_DURATION_SECONDS  =  1.0; 
-        final int     SIMULATION_MAX_LOOP_COUNT = 10; // be deliberate out out there!  also avoid infinite loops.
-              int     simulationLoopCount = 0;        // variable, initialized at 0
-              boolean simulationComplete = false;     // sentinel variable as termination condition,, are we done yet?
-        
-        // TODO reset clock to zero each time for consistent outputs
-        
-        // Your model setup: define participants.  who's who in this zoo?
-        // Assuming you keep track of entity objects...  here is some support for for Entity 1.
-        
-        // create PDU objects and set their values.
-        EntityID       entityID_1    = new EntityID();
-        entityID_1.setSiteID(1).setApplicationID(2).setEntityID(3); // made-up example ID; 
-        // create PDU objects and set their values.
-        EntityID       entityID_2    = new EntityID();
-        entityID_2.setSiteID(4).setApplicationID(5).setEntityID(6);
-        // TODO someday, use enumerations; is there a unique site triplet for MOVES Institute?
-
-        EntityStatePdu entityStatePdu_1 = pduFactory.makeEntityStatePdu();
-        entityStatePdu_1.setEntityID(entityID_1);
-        entityStatePdu_1.setForceId(ForceID.FRIENDLY);
-
-        EntityStatePdu entityStatePdu_2 = pduFactory.makeEntityStatePdu();
-        entityStatePdu_2.setEntityID(entityID_2);
-        entityStatePdu_2.getEntityLocation().setX(10);
-        entityStatePdu_2.setForceId(ForceID.OPPOSING);
-
-        FirePdu        firePdu_1a       = pduFactory.makeFirePdu(); // for entity 1 first  weapon (if any)
-        FirePdu        firePdu_1b       = pduFactory.makeFirePdu(); // for entity 1 second weapon (if any)
-        // should we customize this munition?  what is it for your simulation?
-        firePdu_1a.setRange(1500.0f);
-        Vector3Float pVelocity = new Vector3Float();
-        pVelocity.setX(1.0f);
-        pVelocity.setY(5.0f);
-        pVelocity.setZ(0.0f);
-        firePdu_1a.setVelocity(pVelocity);
-        
-        // TODO simulation management PDUs for startup, planning to design special class support
-        MunitionDescriptor pDescriotor = new MunitionDescriptor();
-        pDescriotor.setQuantity(10).setRate(30);
-        DetonationPdu detonationPdu = pduFactory.makeDetonationPdu();
-        detonationPdu.setDescriptor(pDescriotor);
-        
-        
-        // loop the simulation while allowed, programmer can set additional conditions to break out and finish
-        while (simulationLoopCount < SIMULATION_MAX_LOOP_COUNT)  // are we done yet?
-        {
-            simulationLoopCount++; // good practice: increment loop counter as first action in that loop
-            
-            // =============================================================================================
-            // * your own simulation code starts here! *
-            // =============================================================================================
-            
-            //  are there any other variables to modify at the beginning of your loop?
-            
-            // compute a track, update an ESPDU, whatever it is that your model is doing...
-            
-            // Where is my entity?  Insert changes in position; this sample only changes X position.
-            entityStatePdu_1.getEntityLocation().setX(entityStatePdu_1.getEntityLocation().getX() + 1.0); // 1m per timestep
-            entityStatePdu_2.getEntityLocation().setX(entityStatePdu_2.getEntityLocation().getX() - 1.0);
-            
-            // decide whether to fire, and then update the firePdu.  Hmmm, you might want a target to shoort at!
-            
-            // etc. etc. your code goes here for your simulation of interest
-                
-            // something happens between my simulation entities, la de da de da...
-            System.out.println ("... My simulation just did something, no really...");
-            
-            
-            // make your reports: narrative code for CommentPdu here (set all to empty strings to avoid sending)
-            narrativeMessage1 = "MV3500 ExampleSimulationProgramFisher_2";
-            narrativeMessage2 = "runSimulation() loop " + simulationLoopCount;
-            narrativeMessage3 = "this is working!"; // intentionally blank for testing
-
-            // your loop termination condition goes here
-            if (simulationLoopCount > 4) // for example
-            {
-                simulationComplete = true;
-            }      
-            // =============================================================================================
-            // * your own simulation code is finished here! *
-            // =============================================================================================
-            
-            // staying synchronized with timestep: wait duration for elapsed time in this loop
-            // Thread.sleep needs a (long) parameter for milliseconds, which are clumsy to use sometimes
-            Thread.sleep((long)(SIMULATION_LOOP_DURATION_SECONDS * 1000)); // seconds * (1000 msec/sec) = milliseconds
-            System.out.println ("... [Pausing for " + SIMULATION_LOOP_DURATION_SECONDS + " seconds]");
-            
-            // OK now send the status PDUs for this loop, and then continue
-            System.out.println ("sending PDUs for simulation step " + simulationLoopCount + ", monitor loopback to confirm sent");
-            sendAllPdusForLoopTimestep(entityStatePdu_1, firePdu_1a, timeStepComment, narrativeMessage1, narrativeMessage2, narrativeMessage3);
-            sendSinglePdu(entityStatePdu_2); // me too i.e. 2!
-            System.out.println ("... [PDUs successfully sent for this loop]");
-            
-            // ===============================
-            // loop now finished, check whether to terminate if simulation complete, otherwise continue
-            if (simulationComplete || (simulationLoopCount > 10000)) // for example; including fail-safe condition is good
-            {
-                sendSinglePdu(detonationPdu);
-                System.out.println ("... [Termination condition met, simulationComplete=" + simulationComplete + "]"); // ", final loopCount=" + loopCount + 
-                break;
-            }
-        }   // end of simulation loop
-        
-        narrativeMessage2 = "runSimulation() completed successfully"; // all done
-        sendCommentPdu(narrativeComment, narrativeMessage1, narrativeMessage2, narrativeMessage3);
-        System.out.println ("... [final CommentPdu successfully sent for simulation]");
-        // TODO simulation management PDUs
-      } 
-      catch (InterruptedException iex) // handle any exception that your code might choose to provoke!
-      {
-        Logger.getLogger(ExampleSimulationProgramFisher_2.class.getName()).log(Level.SEVERE, null, iex);
-      }
-    }
-    /* **************************** infrastructure code, modification is seldom needed ************************* */
-                 
-    String narrativeMessage1 = new String();
-    String narrativeMessage2 = new String();
-    String narrativeMessage3 = new String();
-          
-    /* VariableRecordType enumerations have potential use with CommentPdu logs */
-    /* TODO contrast to EntityType */
-    VariableRecordType descriptionComment = VariableRecordType.DESCRIPTION;
-    VariableRecordType   narrativeComment = VariableRecordType.COMPLETE_EVENT_REPORT;
-    VariableRecordType      statusComment = VariableRecordType.APPLICATION_STATUS;
-    VariableRecordType    timeStepComment = VariableRecordType.APPLICATION_TIMESTEP;
-    VariableRecordType       otherComment = VariableRecordType.OTHER;
-        
-	/**
-	 * Output prefix to identify this class, helps with logging
-	 */
-    private final static String TRACE_PREFIX = "[" + ExampleSimulationProgramFisher_2.class.getName() + "] ";
-    
-    // class variables
-    PduFactory                              pduFactory = new PduFactory();
-    DisThreadedNetworkInterface             disNetworkInterface;
-    DisThreadedNetworkInterface.PduListener pduListener;
-    Pdu                                     receivedPdu;
-    PduRecorder                             pduRecorder;
-    
-    /**
-     * Constructor design goal: additional built-in initialization conveniences can go here
-     * to keep student efforts focused on the runSimulation() method.
-     */
-    public ExampleSimulationProgramFisher_2()
-    {
-        // Constructor is under consideration.  Constructor is not currently needed.
-    }
-    
-    /**
-     * Utility Constructor that allows your example simulation program to override default network address and port
-     * @param address network address to use
-     * @param port corresponding network port to use
-     */
-    public ExampleSimulationProgramFisher_2(String address, int port)
-    {
-        setNetworkAddress(address);
-        
-        setNetworkPort(port);
-    }
-
-    /**
-     * @return the networkAddress
-     */
-    public String getNetworkAddress()
-    {
-        return networkAddress;
-    }
-
-    /**
-     * @param newNetworkAddress the networkAddress to set
-     */
-    public final void setNetworkAddress(String newNetworkAddress)
-    {
-        ExampleSimulationProgramFisher_2.networkAddress = newNetworkAddress;
-    }
-
-    /**
-     * @return the networkPort
-     */
-    public int getNetworkPort()
-    {
-        return networkPort;
-    }
-
-    /**
-     * @param newNetworkPort the networkPort to set
-     */
-    public final void setNetworkPort(int newNetworkPort)
-    {
-        ExampleSimulationProgramFisher_2.networkPort = newNetworkPort;
-    }
-
-    /**
-     * Initialize network interface, choosing best available network interface
-     */
-    public void setUpNetworkInterface()
-    {
-        disNetworkInterface = new DisThreadedNetworkInterface(getNetworkAddress(), getNetworkPort());
-        disNetworkInterface.setDescriptor ("ExampleSimulationProgramFisher_2 pdu looping");
-        
-        System.out.println("Network confirmation:" +
-               " address=" + disNetworkInterface.getAddress() + //  disNetworkInterface.getMulticastGroup() + 
-                  " port=" + disNetworkInterface.getPort());    // + disNetworkInterface.getDisPort());
-        pduListener = (Pdu newPdu) -> {
-            receivedPdu = newPdu;
-        } /** Callback handler for listener */ ;
-        disNetworkInterface.addListener(pduListener);
-        
-        String outputDirectory = DEFAULT_OUTPUT_DIRECTORY;
-        System.out.println("Beginning pdu save to directory " + outputDirectory);
-        pduRecorder = new PduRecorder(outputDirectory, getNetworkAddress(), getNetworkPort()); // assumes save
-        pduRecorder.setDescriptor ("ExampleSimulationProgramFisher_2 pduRecorder");
-        pduRecorder.start(); // begin running
-    }
-
-    /** All done, release network resources */
-    public void tearDownNetworkInterface()
-    {
-        pduRecorder.stop();
-
-        disNetworkInterface.removeListener(pduListener);
-        
-        disNetworkInterface.close();
-//      disNetworkInterface.kill(); // renamed as close(), deprecated
-//      disNetworkInterface = null; // making sure no possibility of zombie process remaining...
-    }
-
-    /** 
-     * Send a single Protocol Data Unit (PDU) of any type
-     * @param pdu the pdu to send
-     */
-    private void sendSinglePdu(Pdu pdu)
-    {
-        try
-        {
-            disNetworkInterface.send(pdu);
-            Thread.sleep(100); // TODO consider refactoring the wait logic and moving externally
-        } 
-        catch (InterruptedException ex)
-        {
-            System.err.println(this.getClass().getName() + " Error sending PDU: " + ex.getLocalizedMessage());
-            System.exit(1);
-        }
-    }
-
-    /**
-     * Send Comment PDU
-     * @see <a href="https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html">Passing Information to a Method or a Constructor</a> Arbitrary Number of Arguments
-     * @param commentType    enumeration value describing purpose of the narrative comment
-     * @param comments       String array of narrative comments
-     */
-    public void sendCommentPdu(VariableRecordType commentType,
-                                     // vararg... variable-length set of String comments can optionally follow
-                                        String... comments)
-    {
-        sendAllPdusForLoopTimestep (null, null, commentType, comments);
-    }
-
-    /**
-     * Send EntityState, Fire, Comment PDUs that got updated for this loop, reflecting state of current simulation timestep.
-     * @see <a href="https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html">Passing Information to a Method or a Constructor</a> Arbitrary Number of Arguments
-     * @param entityStatePdu the ESPDU to send, if any
-     * @param firePdu        the FirePDU to send, if any
-     * @param commentType    enumeration value describing purpose of the narrative comment
-     * @param comments       String array of narrative comments
-     */
-    public void sendAllPdusForLoopTimestep(EntityStatePdu entityStatePdu,
-                                   FirePdu firePdu,
-                        VariableRecordType commentType,
-                              // vararg... variable-length set of String comments can optionally follow
-                                 String... comments)
-    {
-        if (entityStatePdu != null)
-            sendSinglePdu(entityStatePdu);
-            
-        if (firePdu != null)
-            sendSinglePdu(firePdu); // bang
-        
-        if ((comments != null) && (comments.length > 0))
-        {
-            ArrayList<String> newCommentsList = new ArrayList<>();
-            for (String comment : comments)
-            {
-                if (!comment.isEmpty())
-                {
-                    newCommentsList.add(comment); // OK found something to send
-                }
-            }
-            if (!newCommentsList.isEmpty())
-            {
-                if (commentType == null)
-                    commentType = otherComment; // fallback value otherComment
-                // now build the commentPdu from these string inputs, thus constructing a narrative entry
-                CommentPdu commentPdu = pduFactory.makeCommentPdu(commentType, newCommentsList.toArray(new String[0])); // comments);
-                sendSinglePdu(commentPdu);
-                if (isVerboseComments())
-                    System.out.println("*** [Narrative comment sent: " + commentType.name() + "] " + newCommentsList.toString());
-            }
-        }
-    }
-  
-    /**
-     * Main method is first executed when a program instance is loaded.
-     * @see <a href="https://docs.oracle.com/javase/tutorial/getStarted/application/index.html">Java Tutorials: A Closer Look at the "Hello World!" Application</a>
-     * @param args command-line arguments are an array of optional String parameters that are passed from execution environment during invocation
-     */
-    public static void main(String[] args)
-    {
-        System.out.println(TRACE_PREFIX + "started...");
-        
-        ExampleSimulationProgramFisher_2 thisProgram = new ExampleSimulationProgramFisher_2(); // creates instance
-        
-        // initial execution: can handle args array of initialization arguments here
-        if (args.length == 2)
-        {
-            if ((args[0] != null) && !args[0].isEmpty())
-                thisProgram.setNetworkAddress(args[0]);
-            
-            if ((args[1] != null) && !args[1].isEmpty())
-                thisProgram.setNetworkPort(Integer.parseInt(args[1]));
-        }
-        else if (args.length != 0)
-        {
-            System.err.println("Usage: " + thisProgram.getClass().getName() + " [address port]");
-            System.exit(-1);
-        }
-        // OK here we go...
-
-        thisProgram.setUpNetworkInterface();
-
-        thisProgram.runSimulationLoops (); // ... your simulation execution code goes in there ...
-        
-        thisProgram.tearDownNetworkInterface(); // make sure no processes are left lingering
-        
-        System.out.println(TRACE_PREFIX + "complete."); // report successful completion
-    }
-
-    /**
-     * @return whether verboseComments mode is enabled
-     */
-    public boolean isVerboseComments() {
-        return verboseComments;
-    }
-
-    /**
-     * @param newVerboseComments whether verboseComments mode is enabled
-     */
-    public void setVerboseComments(boolean newVerboseComments) {
-        this.verboseComments = newVerboseComments;
-    }
-}
+/**
+ * Copyright (c) 2008-2021, MOVES Institute, Naval Postgraduate School (NPS). All rights reserved.
+ * This work is provided under a BSD open-source license, see project license.html and license.txt
+ * 
+ * This Program is a modified version of ExampleSimulationProgramFisher in order to see the 
+ * verbose plain text pdu log. I was unable to figure out the issue in my original code,
+ * so I just copied the example and pasted my additions into this file.
+ * 
+ * @author adfis
+ */
+package MV3500Cohort2021JulySeptember.homework3.Fisher;
+
+import edu.nps.moves.dis7.enumerations.*; // match any
+import edu.nps.moves.dis7.pdus.*;         // match any of the PDU classes, easier than listing individually
+import edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface;
+import edu.nps.moves.dis7.utilities.PduFactory;
+import edu.nps.moves.dis7.utilities.stream.PduRecorder;
+import java.util.ArrayList;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/** The purpose of this program is to provide an easily modifiable example simulation program
+ *  that includes DIS-capable entities doing tasks and reporting them to the network.
+ *  Default settings include PDU recording turned on by default.
+ */
+public class ExampleSimulationProgramFisher_2
+{
+    private      boolean verboseComments         = true;
+    static final String  NETWORK_ADDRESS_DEFAULT  = "239.1.2.3";
+    static final int     NETWORK_PORT_DEFAULT     = 3000;
+    static       String  networkAddress           = NETWORK_ADDRESS_DEFAULT;
+    static       int     networkPort              = NETWORK_PORT_DEFAULT;
+                 String  DEFAULT_OUTPUT_DIRECTORY = "./pduLog";
+                 
+    /**
+     * This runSimulationLoops() method is for you, a
+     * programmer-modifiable method for defining and running a new simulation of interest.
+     * Welcome! Other parts of this program handle bookkeeping and plumbing tasks so that
+     * you can focus on your model entities and activities.
+     * Expandable support includes DIS EntityStatePdu, FirePdu and CommentPdu all available for 
+     * modification and sending in a simulation loop.
+     * Continuous improvement efforts seek to make this program as easy and straightforward
+     * as possible for DIS simulationists to use and adapt.
+     * All of the other methods are setup, teardown and configuration that you may find
+     * interesting, even helpful, but don't really have to worry about.
+     */
+    @SuppressWarnings("SleepWhileInLoop") // yes we do that
+    public void runSimulationLoops ()
+    {
+      try
+      {
+        /** seconds for real-time execution (not simulation time, which may or may not be the same) */
+        final double  SIMULATION_LOOP_DURATION_SECONDS  =  1.0; 
+        final int     SIMULATION_MAX_LOOP_COUNT = 10; // be deliberate out out there!  also avoid infinite loops.
+              int     simulationLoopCount = 0;        // variable, initialized at 0
+              boolean simulationComplete = false;     // sentinel variable as termination condition,, are we done yet?
+        
+        // TODO reset clock to zero each time for consistent outputs
+        
+        // Your model setup: define participants.  who's who in this zoo?
+        // Assuming you keep track of entity objects...  here is some support for for Entity 1.
+        
+        // create PDU objects and set their values.
+        EntityID       entityID_1    = new EntityID();
+        entityID_1.setSiteID(1).setApplicationID(2).setEntityID(3); // made-up example ID; 
+        // create PDU objects and set their values.
+        EntityID       entityID_2    = new EntityID();
+        entityID_2.setSiteID(4).setApplicationID(5).setEntityID(6);
+        // TODO someday, use enumerations; is there a unique site triplet for MOVES Institute?
+
+        EntityStatePdu entityStatePdu_1 = pduFactory.makeEntityStatePdu();
+        entityStatePdu_1.setEntityID(entityID_1);
+        entityStatePdu_1.setForceId(ForceID.FRIENDLY);
+
+        EntityStatePdu entityStatePdu_2 = pduFactory.makeEntityStatePdu();
+        entityStatePdu_2.setEntityID(entityID_2);
+        entityStatePdu_2.getEntityLocation().setX(10);
+        entityStatePdu_2.setForceId(ForceID.OPPOSING);
+
+        FirePdu        firePdu_1a       = pduFactory.makeFirePdu(); // for entity 1 first  weapon (if any)
+        FirePdu        firePdu_1b       = pduFactory.makeFirePdu(); // for entity 1 second weapon (if any)
+        // should we customize this munition?  what is it for your simulation?
+        firePdu_1a.setRange(1500.0f);
+        Vector3Float pVelocity = new Vector3Float();
+        pVelocity.setX(1.0f);
+        pVelocity.setY(5.0f);
+        pVelocity.setZ(0.0f);
+        firePdu_1a.setVelocity(pVelocity);
+        
+        // TODO simulation management PDUs for startup, planning to design special class support
+        MunitionDescriptor pDescriotor = new MunitionDescriptor();
+        pDescriotor.setQuantity(10).setRate(30);
+        DetonationPdu detonationPdu = pduFactory.makeDetonationPdu();
+        detonationPdu.setDescriptor(pDescriotor);
+        
+        
+        // loop the simulation while allowed, programmer can set additional conditions to break out and finish
+        while (simulationLoopCount < SIMULATION_MAX_LOOP_COUNT)  // are we done yet?
+        {
+            simulationLoopCount++; // good practice: increment loop counter as first action in that loop
+            
+            // =============================================================================================
+            // * your own simulation code starts here! *
+            // =============================================================================================
+            
+            //  are there any other variables to modify at the beginning of your loop?
+            
+            // compute a track, update an ESPDU, whatever it is that your model is doing...
+            
+            // Where is my entity?  Insert changes in position; this sample only changes X position.
+            entityStatePdu_1.getEntityLocation().setX(entityStatePdu_1.getEntityLocation().getX() + 1.0); // 1m per timestep
+            entityStatePdu_2.getEntityLocation().setX(entityStatePdu_2.getEntityLocation().getX() - 1.0);
+            
+            // decide whether to fire, and then update the firePdu.  Hmmm, you might want a target to shoort at!
+            
+            // etc. etc. your code goes here for your simulation of interest
+                
+            // something happens between my simulation entities, la de da de da...
+            System.out.println ("... My simulation just did something, no really...");
+            
+            
+            // make your reports: narrative code for CommentPdu here (set all to empty strings to avoid sending)
+            narrativeMessage1 = "MV3500 ExampleSimulationProgramFisher_2";
+            narrativeMessage2 = "runSimulation() loop " + simulationLoopCount;
+            narrativeMessage3 = "this is working!"; // intentionally blank for testing
+
+            // your loop termination condition goes here
+            if (simulationLoopCount > 4) // for example
+            {
+                simulationComplete = true;
+            }      
+            // =============================================================================================
+            // * your own simulation code is finished here! *
+            // =============================================================================================
+            
+            // staying synchronized with timestep: wait duration for elapsed time in this loop
+            // Thread.sleep needs a (long) parameter for milliseconds, which are clumsy to use sometimes
+            Thread.sleep((long)(SIMULATION_LOOP_DURATION_SECONDS * 1000)); // seconds * (1000 msec/sec) = milliseconds
+            System.out.println ("... [Pausing for " + SIMULATION_LOOP_DURATION_SECONDS + " seconds]");
+            
+            // OK now send the status PDUs for this loop, and then continue
+            System.out.println ("sending PDUs for simulation step " + simulationLoopCount + ", monitor loopback to confirm sent");
+            sendAllPdusForLoopTimestep(entityStatePdu_1, firePdu_1a, timeStepComment, narrativeMessage1, narrativeMessage2, narrativeMessage3);
+            sendSinglePdu(entityStatePdu_2); // me too i.e. 2!
+            System.out.println ("... [PDUs successfully sent for this loop]");
+            
+            // ===============================
+            // loop now finished, check whether to terminate if simulation complete, otherwise continue
+            if (simulationComplete || (simulationLoopCount > 10000)) // for example; including fail-safe condition is good
+            {
+                sendSinglePdu(detonationPdu);
+                System.out.println ("... [Termination condition met, simulationComplete=" + simulationComplete + "]"); // ", final loopCount=" + loopCount + 
+                break;
+            }
+        }   // end of simulation loop
+        
+        narrativeMessage2 = "runSimulation() completed successfully"; // all done
+        sendCommentPdu(narrativeComment, narrativeMessage1, narrativeMessage2, narrativeMessage3);
+        System.out.println ("... [final CommentPdu successfully sent for simulation]");
+        // TODO simulation management PDUs
+      } 
+      catch (InterruptedException iex) // handle any exception that your code might choose to provoke!
+      {
+        Logger.getLogger(ExampleSimulationProgramFisher_2.class.getName()).log(Level.SEVERE, null, iex);
+      }
+    }
+    /* **************************** infrastructure code, modification is seldom needed ************************* */
+                 
+    String narrativeMessage1 = new String();
+    String narrativeMessage2 = new String();
+    String narrativeMessage3 = new String();
+          
+    /* VariableRecordType enumerations have potential use with CommentPdu logs */
+    /* TODO contrast to EntityType */
+    VariableRecordType descriptionComment = VariableRecordType.DESCRIPTION;
+    VariableRecordType   narrativeComment = VariableRecordType.COMPLETE_EVENT_REPORT;
+    VariableRecordType      statusComment = VariableRecordType.APPLICATION_STATUS;
+    VariableRecordType    timeStepComment = VariableRecordType.APPLICATION_TIMESTEP;
+    VariableRecordType       otherComment = VariableRecordType.OTHER;
+        
+	/**
+	 * Output prefix to identify this class, helps with logging
+	 */
+    private final static String TRACE_PREFIX = "[" + ExampleSimulationProgramFisher_2.class.getName() + "] ";
+    
+    // class variables
+    PduFactory                              pduFactory = new PduFactory();
+    DisThreadedNetworkInterface             disNetworkInterface;
+    DisThreadedNetworkInterface.PduListener pduListener;
+    Pdu                                     receivedPdu;
+    PduRecorder                             pduRecorder;
+    
+    /**
+     * Constructor design goal: additional built-in initialization conveniences can go here
+     * to keep student efforts focused on the runSimulation() method.
+     */
+    public ExampleSimulationProgramFisher_2()
+    {
+        // Constructor is under consideration.  Constructor is not currently needed.
+    }
+    
+    /**
+     * Utility Constructor that allows your example simulation program to override default network address and port
+     * @param address network address to use
+     * @param port corresponding network port to use
+     */
+    public ExampleSimulationProgramFisher_2(String address, int port)
+    {
+        setNetworkAddress(address);
+        
+        setNetworkPort(port);
+    }
+
+    /**
+     * get networkAddress
+     * @return the networkAddress
+     */
+    public String getNetworkAddress()
+    {
+        return networkAddress;
+    }
+
+    /**
+     * set networkAddress
+     * @param newNetworkAddress the networkAddress to set
+     */
+    public final void setNetworkAddress(String newNetworkAddress)
+    {
+        ExampleSimulationProgramFisher_2.networkAddress = newNetworkAddress;
+    }
+
+    /**
+     * get networkPort
+     * @return the networkPort
+     */
+    public int getNetworkPort()
+    {
+        return networkPort;
+    }
+
+    /**
+     * set networkPort
+     * @param newNetworkPort the networkPort to set
+     */
+    public final void setNetworkPort(int newNetworkPort)
+    {
+        ExampleSimulationProgramFisher_2.networkPort = newNetworkPort;
+    }
+
+    /**
+     * Initialize network interface, choosing best available network interface
+     */
+    public void setUpNetworkInterface()
+    {
+        disNetworkInterface = new DisThreadedNetworkInterface(getNetworkAddress(), getNetworkPort());
+        disNetworkInterface.setDescriptor ("ExampleSimulationProgramFisher_2 pdu looping");
+        
+        System.out.println("Network confirmation:" +
+               " address=" + disNetworkInterface.getAddress() + //  disNetworkInterface.getMulticastGroup() + 
+                  " port=" + disNetworkInterface.getPort());    // + disNetworkInterface.getDisPort());
+        pduListener = (Pdu newPdu) -> {
+            receivedPdu = newPdu;
+        } /** Callback handler for listener */ ;
+        disNetworkInterface.addListener(pduListener);
+        
+        String outputDirectory = DEFAULT_OUTPUT_DIRECTORY;
+        System.out.println("Beginning pdu save to directory " + outputDirectory);
+        pduRecorder = new PduRecorder(outputDirectory, getNetworkAddress(), getNetworkPort()); // assumes save
+        pduRecorder.setDescriptor ("ExampleSimulationProgramFisher_2 pduRecorder");
+        pduRecorder.start(); // begin running
+    }
+
+    /** All done, release network resources */
+    public void tearDownNetworkInterface()
+    {
+        pduRecorder.stop();
+
+        disNetworkInterface.removeListener(pduListener);
+        
+        disNetworkInterface.close();
+//      disNetworkInterface.kill(); // renamed as close(), deprecated
+//      disNetworkInterface = null; // making sure no possibility of zombie process remaining...
+    }
+
+    /** 
+     * Send a single Protocol Data Unit (PDU) of any type
+     * @param pdu the pdu to send
+     */
+    private void sendSinglePdu(Pdu pdu)
+    {
+        try
+        {
+            disNetworkInterface.send(pdu);
+            Thread.sleep(100); // TODO consider refactoring the wait logic and moving externally
+        } 
+        catch (InterruptedException ex)
+        {
+            System.err.println(this.getClass().getName() + " Error sending PDU: " + ex.getLocalizedMessage());
+            System.exit(1);
+        }
+    }
+
+    /**
+     * Send Comment PDU
+     * @see <a href="https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html">Passing Information to a Method or a Constructor</a> Arbitrary Number of Arguments
+     * @param commentType    enumeration value describing purpose of the narrative comment
+     * @param comments       String array of narrative comments
+     */
+    public void sendCommentPdu(VariableRecordType commentType,
+                                     // vararg... variable-length set of String comments can optionally follow
+                                        String... comments)
+    {
+        sendAllPdusForLoopTimestep (null, null, commentType, comments);
+    }
+
+    /**
+     * Send EntityState, Fire, Comment PDUs that got updated for this loop, reflecting state of current simulation timestep.
+     * @see <a href="https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html">Passing Information to a Method or a Constructor</a> Arbitrary Number of Arguments
+     * @param entityStatePdu the ESPDU to send, if any
+     * @param firePdu        the FirePDU to send, if any
+     * @param commentType    enumeration value describing purpose of the narrative comment
+     * @param comments       String array of narrative comments
+     */
+    public void sendAllPdusForLoopTimestep(EntityStatePdu entityStatePdu,
+                                   FirePdu firePdu,
+                        VariableRecordType commentType,
+                              // vararg... variable-length set of String comments can optionally follow
+                                 String... comments)
+    {
+        if (entityStatePdu != null)
+            sendSinglePdu(entityStatePdu);
+            
+        if (firePdu != null)
+            sendSinglePdu(firePdu); // bang
+        
+        if ((comments != null) && (comments.length > 0))
+        {
+            ArrayList<String> newCommentsList = new ArrayList<>();
+            for (String comment : comments)
+            {
+                if (!comment.isEmpty())
+                {
+                    newCommentsList.add(comment); // OK found something to send
+                }
+            }
+            if (!newCommentsList.isEmpty())
+            {
+                if (commentType == null)
+                    commentType = otherComment; // fallback value otherComment
+                // now build the commentPdu from these string inputs, thus constructing a narrative entry
+                CommentPdu commentPdu = pduFactory.makeCommentPdu(commentType, newCommentsList.toArray(new String[0])); // comments);
+                sendSinglePdu(commentPdu);
+                if (isVerboseComments())
+                    System.out.println("*** [Narrative comment sent: " + commentType.name() + "] " + newCommentsList.toString());
+            }
+        }
+    }
+  
+    /**
+     * Main method is first executed when a program instance is loaded.
+     * @see <a href="https://docs.oracle.com/javase/tutorial/getStarted/application/index.html">Java Tutorials: A Closer Look at the "Hello World!" Application</a>
+     * @param args command-line arguments are an array of optional String parameters that are passed from execution environment during invocation
+     */
+    public static void main(String[] args)
+    {
+        System.out.println(TRACE_PREFIX + "started...");
+        
+        ExampleSimulationProgramFisher_2 thisProgram = new ExampleSimulationProgramFisher_2(); // creates instance
+        
+        // initial execution: can handle args array of initialization arguments here
+        if (args.length == 2)
+        {
+            if ((args[0] != null) && !args[0].isEmpty())
+                thisProgram.setNetworkAddress(args[0]);
+            
+            if ((args[1] != null) && !args[1].isEmpty())
+                thisProgram.setNetworkPort(Integer.parseInt(args[1]));
+        }
+        else if (args.length != 0)
+        {
+            System.err.println("Usage: " + thisProgram.getClass().getName() + " [address port]");
+            System.exit(-1);
+        }
+        // OK here we go...
+
+        thisProgram.setUpNetworkInterface();
+
+        thisProgram.runSimulationLoops (); // ... your simulation execution code goes in there ...
+        
+        thisProgram.tearDownNetworkInterface(); // make sure no processes are left lingering
+        
+        System.out.println(TRACE_PREFIX + "complete."); // report successful completion
+    }
+
+    /**
+     * get whether verbose comments are enabled
+     * @return whether verboseComments mode is enabled
+     */
+    public boolean isVerboseComments() {
+        return verboseComments;
+    }
+
+    /**
+     * set whether verbose comments are enabled
+     * @param newVerboseComments whether verboseComments mode is enabled
+     */
+    public void setVerboseComments(boolean newVerboseComments) {
+        this.verboseComments = newVerboseComments;
+    }
+}
diff --git a/assignments/src/MV3500Cohort2021JulySeptember/homework3/Frank/FrankAssignmentThreeSimulation.java b/assignments/src/MV3500Cohort2021JulySeptember/homework3/Frank/FrankAssignmentThreeSimulation.java
index 8bf1230d2b583dd2e7db947450f6834b2a838ff4..836c3e84ca82f37bf215175bd6608f572814d042 100644
--- a/assignments/src/MV3500Cohort2021JulySeptember/homework3/Frank/FrankAssignmentThreeSimulation.java
+++ b/assignments/src/MV3500Cohort2021JulySeptember/homework3/Frank/FrankAssignmentThreeSimulation.java
@@ -332,6 +332,7 @@ public class FrankAssignmentThreeSimulation {
     }
 
     /**
+     * get networkAddress
      * @return the networkAddress
      */
     public String getNetworkAddress() {
@@ -339,6 +340,7 @@ public class FrankAssignmentThreeSimulation {
     }
 
     /**
+     * set networkAddress
      * @param newNetworkAddress the networkAddress to set
      */
     public final void setNetworkAddress(String newNetworkAddress) {
@@ -346,6 +348,7 @@ public class FrankAssignmentThreeSimulation {
     }
 
     /**
+     * get networkPort
      * @return the networkPort
      */
     public int getNetworkPort() {
@@ -353,6 +356,7 @@ public class FrankAssignmentThreeSimulation {
     }
 
     /**
+     * set networkPort
      * @param newNetworkPort the networkPort to set
      */
     public final void setNetworkPort(int newNetworkPort) {
@@ -518,6 +522,7 @@ public class FrankAssignmentThreeSimulation {
     }
 
     /**
+     * get whether verbose comments are enabled
      * @return whether verboseComments mode is enabled
      */
     public boolean isVerboseComments() {
@@ -525,6 +530,7 @@ public class FrankAssignmentThreeSimulation {
     }
 
     /**
+     * set whether verbose comments are enabled
      * @param newVerboseComments whether verboseComments mode is enabled
      */
     public void setVerboseComments(boolean newVerboseComments) {
diff --git a/assignments/src/MV3500Cohort2021JulySeptember/homework3/HittnerDom/HittnerDom3HW.java b/assignments/src/MV3500Cohort2021JulySeptember/homework3/HittnerDom/HittnerDom3HW.java
index 1cee812aad2f2fa8b1c4355e9d84a71c67f93ced..e91042ce0735000ad35d9e2021ff6f0c7e90f922 100644
--- a/assignments/src/MV3500Cohort2021JulySeptember/homework3/HittnerDom/HittnerDom3HW.java
+++ b/assignments/src/MV3500Cohort2021JulySeptember/homework3/HittnerDom/HittnerDom3HW.java
@@ -195,6 +195,7 @@ public class HittnerDom3HW
     }
 
     /**
+     * get networkAddress
      * @return the networkAddress
      */
     public String getNetworkAddress()
@@ -203,6 +204,7 @@ public class HittnerDom3HW
     }
 
     /**
+     * set networkAddress
      * @param newNetworkAddress the networkAddress to set
      */
     public final void setNetworkAddress(String newNetworkAddress)
@@ -211,6 +213,7 @@ public class HittnerDom3HW
     }
 
     /**
+     * get networkPort
      * @return the networkPort
      */
     public int getNetworkPort()
@@ -219,6 +222,7 @@ public class HittnerDom3HW
     }
 
     /**
+     * set networkPort
      * @param newNetworkPort the networkPort to set
      */
     public final void setNetworkPort(int newNetworkPort)
@@ -373,6 +377,7 @@ public class HittnerDom3HW
     }
 
     /**
+     * get whether verbose comments are enabled
      * @return whether verboseComments mode is enabled
      */
     public boolean isVerboseComments() {
@@ -380,6 +385,7 @@ public class HittnerDom3HW
     }
 
     /**
+     * set whether verbose comments are enabled
      * @param newVerboseComments whether verboseComments mode is enabled
      */
     public void setVerboseComments(boolean newVerboseComments) {
diff --git a/assignments/src/MV3500Cohort2021JulySeptember/homework3/McNeely/ExampleSimulationProgramMcNeely.java b/assignments/src/MV3500Cohort2021JulySeptember/homework3/McNeely/ExampleSimulationProgramMcNeely.java
index e681bab63d4f91f36e7da7e00faf6f6a233dfd43..c6116b78ed2c82c912b5d000911060c6512ceab3 100644
--- a/assignments/src/MV3500Cohort2021JulySeptember/homework3/McNeely/ExampleSimulationProgramMcNeely.java
+++ b/assignments/src/MV3500Cohort2021JulySeptember/homework3/McNeely/ExampleSimulationProgramMcNeely.java
@@ -177,6 +177,7 @@ public class ExampleSimulationProgramMcNeely
     }
 
     /**
+     * get networkAddress
      * @return the networkAddress
      */
     public String getNetworkAddress()
@@ -185,6 +186,7 @@ public class ExampleSimulationProgramMcNeely
     }
 
     /**
+     * set networkAddress
      * @param newNetworkAddress the networkAddress to set
      */
     public final void setNetworkAddress(String newNetworkAddress)
@@ -193,6 +195,7 @@ public class ExampleSimulationProgramMcNeely
     }
 
     /**
+     * get networkPort
      * @return the networkPort
      */
     public int getNetworkPort()
@@ -201,6 +204,7 @@ public class ExampleSimulationProgramMcNeely
     }
 
     /**
+     * set networkPort
      * @param newNetworkPort the networkPort to set
      */
     public final void setNetworkPort(int newNetworkPort)
@@ -355,6 +359,7 @@ public class ExampleSimulationProgramMcNeely
     }
 
     /**
+     * get whether verbose comments are enabled
      * @return whether verboseComments mode is enabled
      */
     public boolean isVerboseComments() {
@@ -362,6 +367,7 @@ public class ExampleSimulationProgramMcNeely
     }
 
     /**
+     * set whether verbose comments are enabled
      * @param newVerboseComments whether verboseComments mode is enabled
      */
     public void setVerboseComments(boolean newVerboseComments) {
diff --git a/assignments/src/MV3500Cohort2021JulySeptember/homework3/Reynolds/ExampleSimulationProgramReynolds.java b/assignments/src/MV3500Cohort2021JulySeptember/homework3/Reynolds/ExampleSimulationProgramReynolds.java
index 683bd0501ce14a8b4a40df74aa94683f18c30940..13ca42dfa88849cff312d39ece3de90ff9f00d68 100644
--- a/assignments/src/MV3500Cohort2021JulySeptember/homework3/Reynolds/ExampleSimulationProgramReynolds.java
+++ b/assignments/src/MV3500Cohort2021JulySeptember/homework3/Reynolds/ExampleSimulationProgramReynolds.java
@@ -1,526 +1,532 @@
-/**
- * Copyright (c) 2008-2021, MOVES Institute, Naval Postgraduate School (NPS). All rights reserved.
- * This work is provided under a BSD open-source license, see project license.html and license.txt
- *
- * This Program is a modified version of ExampleSimulationProgram in order to see the
- * verbose plain text pdu log. This simulates a battle between two opposing
- * spacecraft traveling toward each other at an equal rate.
- *
- * @author snapp
- */
-package MV3500Cohort2021JulySeptember.homework3.Reynolds;
-
-import edu.nps.moves.dis7.enumerations.*; // match any
-import edu.nps.moves.dis7.pdus.*;         // match any of the PDU classes, easier than listing individually
-import edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface;
-import edu.nps.moves.dis7.utilities.PduFactory;
-import edu.nps.moves.dis7.utilities.stream.PduRecorder;
-import java.util.ArrayList;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-/**
- * The purpose of this program is to provide an easily modifiable example
- * simulation program that includes DIS-capable entities doing tasks and
- * reporting them to the network. Default settings include PDU recording turned
- * on by default.
- */
-public class ExampleSimulationProgramReynolds {
-
-    private boolean verboseComments = true;
-    static final String NETWORK_ADDRESS_DEFAULT = "239.1.2.3";
-    static final int NETWORK_PORT_DEFAULT = 3000;
-    static String networkAddress = NETWORK_ADDRESS_DEFAULT;
-    static int networkPort = NETWORK_PORT_DEFAULT;
-    String DEFAULT_OUTPUT_DIRECTORY = "./pduLog";
-
-    private EntityID createFriendSpaceCraft() {
-        EntityID FNSPaceCraftID = new EntityID(); // 1.1.225.1.1.1 Platform,Cyber,USA,SpaceCraft
-        FNSPaceCraftID.setSiteID(1);
-        FNSPaceCraftID.setApplicationID(1);
-        FNSPaceCraftID.setEntityID(1);
-        return FNSPaceCraftID;
-    }
-
-    private EntityType createFriendSpaceCraftType() {
-        EntityType FNSpaceCraftType = new EntityType();
-        FNSpaceCraftType.setEntityKind(EntityKind.PLATFORM);
-        FNSpaceCraftType.setDomain(Domain.inst(PlatformDomain.SPACE));
-        FNSpaceCraftType.setCountry(Country.UNITED_STATES_OF_AMERICA_USA);
-        FNSpaceCraftType.setCategory(3);
-        FNSpaceCraftType.setSubCategory(1);
-        FNSpaceCraftType.setSpecific(1);
-        return FNSpaceCraftType;
-    }
-
-    private EntityID createHostileSpaceCraft() {
-        EntityID HHostileSpaceCraftID = new EntityID(); // 1.1.45.1.7.1 Platform,Space,Russia,HostileSpaceCraft
-
-        HHostileSpaceCraftID.setSiteID(2);
-        HHostileSpaceCraftID.setApplicationID(2);
-        HHostileSpaceCraftID.setEntityID(2);
-        return HHostileSpaceCraftID;
-    }
-
-    private EntityType createHostileSpaceCraftType() {
-        EntityType HostileSpaceCraftType = new EntityType();
-        HostileSpaceCraftType.setEntityKind(EntityKind.PLATFORM);
-        HostileSpaceCraftType.setDomain(Domain.inst(PlatformDomain.SPACE));
-        HostileSpaceCraftType.setCountry(Country.RUSSIA_RUS);
-        HostileSpaceCraftType.setCategory(3);
-        HostileSpaceCraftType.setSubCategory(1);
-        HostileSpaceCraftType.setSpecific(1);
-        return HostileSpaceCraftType;
-    }
-
-    private MunitionDescriptor createPulseTorpedo() {
-
-        EntityType PulseTorpedoType = new EntityType(); //2.2.225.2.13.1
-        PulseTorpedoType.setEntityKind(EntityKind.MUNITION);
-        PulseTorpedoType.setDomain(Domain.inst(PlatformDomain.SPACE));
-        PulseTorpedoType.setCountry(Country.UNITED_STATES_OF_AMERICA_USA);
-        PulseTorpedoType.setCategory(1);
-        PulseTorpedoType.setSubCategory(3);
-        PulseTorpedoType.setSpecific(1);
-        MunitionDescriptor PulseTorpedo = new MunitionDescriptor();
-        PulseTorpedo.setMunitionType(PulseTorpedoType);
-        PulseTorpedo.setQuantity(1000);
-        PulseTorpedo.setFuse(MunitionDescriptorFuse.CONTACT);
-        PulseTorpedo.setRate(200);
-        return PulseTorpedo;
-    }
-
-    /**
-     * This runSimulationLoops() method is for you, a programmer-modifiable
-     * method for defining and running a new simulation of interest. Welcome!
-     * Other parts of this program handle bookkeeping and plumbing tasks so that
-     * you can focus on your model entities and activities. Expandable support
-     * includes DIS EntityStatePdu, FirePdu and CommentPdu all available for
-     * modification and sending in a simulation loop. Continuous improvement
-     * efforts seek to make this program as easy and straightforward as possible
-     * for DIS simulationists to use and adapt. All of the other methods are
-     * setup, teardown and configuration that you may find interesting, even
-     * helpful, but don't really have to worry about.
-     */
-    @SuppressWarnings("SleepWhileInLoop") // yes we do that
-    public void runSimulationLoops() {
-        try {
-            /**
-             * seconds for real-time execution (not simulation time, which may
-             * or may not be the same)
-             */
-            final double SIMULATION_LOOP_DURATION_SECONDS = 1.0;
-            final int SIMULATION_MAX_LOOP_COUNT = 10; // be deliberate out out there!  also avoid infinite loops.
-            int simulationLoopCount = 0;        // variable, initialized at 0
-            boolean simulationComplete = false;     // sentinel variable as termination condition,, are we done yet?
-            boolean fireBool = false;
-            boolean destBool = false;
-            int TorpedoDamageRecieved = 0;
-
-            // TODO reset clock to zero each time for consistent outputs
-            // Your model setup: define participants.  who's who in this zoo?
-            // Assuming you keep track of entity objects...  here is some support for for Entity 1.
-            // create PDU object for US SpaceCraft and set its values.
-            EntityStatePdu entityStatePdu_1 = pduFactory.makeEntityStatePdu();
-            entityStatePdu_1.setEntityID(createFriendSpaceCraft());
-            entityStatePdu_1.setEntityType(createFriendSpaceCraftType());
-            entityStatePdu_1.getEntityLocation().setX(-10);
-            entityStatePdu_1.setForceId(ForceID.FRIENDLY);
-
-            // TODO someday, use enumerations; is there a unique site triplet for MOVES Institute?
-            // create PDU object for Hostile SpaceCraft and set its values.
-            EntityStatePdu entityStatePdu_2 = pduFactory.makeEntityStatePdu();
-            entityStatePdu_2.setEntityID(createHostileSpaceCraft());
-            entityStatePdu_2.setEntityType(createHostileSpaceCraftType());
-            entityStatePdu_2.getEntityLocation().setX(10);
-            entityStatePdu_2.setForceId(ForceID.OPPOSING);
-
-            FirePdu firePdu = pduFactory.makeFirePdu(); // for entity 1 first  weapon (possible traceroute)
-            // should we customize this munition?  what is it for your simulation?
-            EntityID fireID = new EntityID();
-            fireID.setSiteID(1);
-            fireID.setApplicationID(1);
-            fireID.setEntityID(1);
-            EntityID targetID = new EntityID();
-            targetID.setSiteID(2);
-            targetID.setApplicationID(2);
-            targetID.setEntityID(2);
-
-            firePdu.setFiringEntityID(fireID);
-            firePdu.setTargetEntityID(targetID);
-
-            firePdu.setDescriptor(createPulseTorpedo()); // calling create PulseTorpedo Method
-
-            EntityID TracerouteID = new EntityID();
-            TracerouteID.setEntityID(1);
-            firePdu.setMunitionExpendibleID(TracerouteID);
-
-            CommentReliablePdu HostileSpaceCraftDestroyedComment = pduFactory.makeCommentReliablePdu("Hostile SpaceCraft  DESTROYED BY Friendly SpaceCraft");
-            CommentReliablePdu HostileSpaceCraftDetectedComment = pduFactory.makeCommentReliablePdu("Friendly SpaceCraft Detects Hostile SpaceCraft engage Pulse Torpedo's");
-
-            // TODO simulation management PDUs for startup, planning to design special class support
-            //DetonationPdu detonationPdu = pduFactory.makeDetonationPdu();
-            //detonationPdu.setDescriptor(pDescriptor);
-            // loop the simulation while allowed, programmer can set additional conditions to break out and finish
-            while (simulationLoopCount < SIMULATION_MAX_LOOP_COUNT) // are we done yet?
-            {
-                simulationLoopCount++; // good practice: increment loop counter as first action in that loop
-
-                // =============================================================================================
-                // * your own simulation code starts here! *
-                // =============================================================================================
-                //  are there any other variables to modify at the beginning of your loop?
-                // compute a track, update an ESPDU, whatever it is that your model is doing...
-                // Where is my entity?  Insert changes in position; this sample only changes X position.
-                entityStatePdu_1.getEntityLocation().setX(entityStatePdu_1.getEntityLocation().getX() + 1.0); // stationary defensive posture
-                entityStatePdu_2.getEntityLocation().setX(entityStatePdu_2.getEntityLocation().getX() - 1.0); // 1m per timestep
-
-                // decide whether to fire, and then update the firePdu.  Hmmm, you might want a target to shoot at!
-                Double range = entityStatePdu_2.getEntityLocation().getX();
-                System.out.println("range: " + range + " clicks from friendly assets!");
-
-                if (range <= 5) { // Range 5
-                    if (!fireBool) {
-                        sendSinglePdu(HostileSpaceCraftDetectedComment);
-                        // Inform the user of the detection
-                        System.out.println("Friendly SpaceCraft Detects Hostile SpaceCraft from "
-                                + entityStatePdu_2.getEntityType().getCountry()
-                                + "... Engaging with Pulse Torpedo's");
-                    }
-                    fireBool = true;
-                    System.out.println("Entity#"
-                            + firePdu.getFiringEntityID().getEntityID()
-                            + " is firing "
-                            + firePdu.getDescriptor().getMunitionType().getDomain()
-                            + "."
-                            + firePdu.getDescriptor().getMunitionType().getCountry()
-                            + "."
-                            + firePdu.getDescriptor().getMunitionType().getCategory()
-                            + "."
-                            + firePdu.getDescriptor().getMunitionType().getSubCategory()
-                            + "."
-                            + firePdu.getDescriptor().getMunitionType().getSpecific()
-                            + "."
-                            + " at Entity#" + firePdu.getTargetEntityID().getEntityID()
-                            + " from " + entityStatePdu_2.getEntityType().getCountry());
-
-                    if (firePdu.getTargetEntityID().getEntityID() == 6666) {
-                        TorpedoDamageRecieved += 1;
-                        if (TorpedoDamageRecieved > 1) {
-                            // The Friendly destroys the Hostile
-
-                            System.out.println("Hostile SpaceCraft DESTROYED BY Friendly SpaceCraft after "
-                                    + TorpedoDamageRecieved
-                                    + "direct hits from the Pulse Torpedo's.");
-                            narrativeMessage4 = "Destroyed Hostile SpaceCraft";
-                            destBool = true;
-                            simulationComplete = true;
-
-                        }
-                    }
-                }
-                // etc. etc. your code goes here for your simulation of interest
-
-                // something happens between my simulation entities, la de da de da...
-                System.out.println("... Scanning for Engagements...");
-
-                // make your reports: narrative code for CommentPdu here (set all to empty strings to avoid sending)
-                narrativeMessage1 = "MV3500 ExampleSimulationProgramReynolds";
-                narrativeMessage2 = "runSimulation() loop " + simulationLoopCount;
-                narrativeMessage3 = "verified PDUs for simulation!"; // intentionally blank for testing
-
-                // your loop termination condition goes here
-                if (simulationLoopCount > 4) // for example
-                {
-                    simulationComplete = true;
-                }
-                // =============================================================================================
-                // * your own simulation code is finished here! *
-                // =============================================================================================
-
-                // staying synchronized with timestep: wait duration for elapsed time in this loop
-                // Thread.sleep needs a (long) parameter for milliseconds, which are clumsy to use sometimes
-                Thread.sleep((long) (SIMULATION_LOOP_DURATION_SECONDS * 1000)); // seconds * (1000 msec/sec) = milliseconds
-                System.out.println("... [Pausing for " + SIMULATION_LOOP_DURATION_SECONDS + " seconds] \n");
-
-                // OK now send the status PDUs for this loop, and then continue
-                System.out.println("sending PDUs for simulation step " + simulationLoopCount + ", monitor loopback to confirm sent");
-                sendAllPdusForLoopTimestep(
-                        entityStatePdu_1,
-                        firePdu,
-                        timeStepComment,
-                        narrativeMessage1,
-                        narrativeMessage2,
-                        narrativeMessage3
-                );
-                sendSinglePdu(entityStatePdu_2); // me too i.e. 2!
-                System.out.println("... [PDUs successfully sent for this loop] \n");
-
-                // ===============================
-                // loop now finished, check whether to terminate if simulation complete, otherwise continue
-                if (simulationComplete || (simulationLoopCount > 10000)) // for example; including fail-safe condition is good
-                {
-                    //sendSinglePdu(detonationPdu);
-                    System.out.println("... [Termination condition met, simulationComplete = " + simulationComplete + "]"); // ", final loopCount=" + loopCount + 
-                    break;
-                }
-            }   // end of simulation loop
-
-            narrativeMessage2 = "runSimulation() completed successfully"; // all done
-            sendCommentPdu(narrativeComment, narrativeMessage1, narrativeMessage2, narrativeMessage3);
-            System.out.println("... [final CommentPdu successfully sent for simulation]");
-            // TODO simulation management PDUs
-        } catch (InterruptedException iex) // handle any exception that your code might choose to provoke!
-        {
-            Logger.getLogger(ExampleSimulationProgramReynolds.class.getName()).log(Level.SEVERE, null, iex);
-        }
-    }
-    /* **************************** infrastructure code, modification is seldom needed ************************* */
-
-    String narrativeMessage1 = new String();
-    String narrativeMessage2 = new String();
-    String narrativeMessage3 = new String();
-    String narrativeMessage4 = new String();
-
-    /* VariableRecordType enumerations have potential use with CommentPdu logs */
- /* TODO contrast to EntityType */
-    VariableRecordType descriptionComment = VariableRecordType.DESCRIPTION;
-    VariableRecordType narrativeComment = VariableRecordType.COMPLETE_EVENT_REPORT;
-    VariableRecordType statusComment = VariableRecordType.APPLICATION_STATUS;
-    VariableRecordType timeStepComment = VariableRecordType.APPLICATION_TIMESTEP;
-    VariableRecordType otherComment = VariableRecordType.OTHER;
-
-    /**
-     * Output prefix to identify this class, helps with logging
-     */
-    private final static String TRACE_PREFIX = "[" + ExampleSimulationProgramReynolds.class.getName() + "] ";
-
-    // class variables
-    PduFactory pduFactory = new PduFactory();
-    DisThreadedNetworkInterface disNetworkInterface;
-    DisThreadedNetworkInterface.PduListener pduListener;
-    Pdu receivedPdu;
-    PduRecorder pduRecorder;
-
-    /**
-     * Constructor design goal: additional built-in initialization conveniences
-     * can go here to keep student efforts focused on the runSimulation()
-     * method.
-     */
-    public ExampleSimulationProgramReynolds() {
-        // Constructor is under consideration.  Constructor is not currently needed.
-    }
-
-    /**
-     * Utility Constructor that allows your example simulation program to
-     * override default network address and port
-     *
-     * @param address network address to use
-     * @param port corresponding network port to use
-     */
-    public ExampleSimulationProgramReynolds(String address, int port) {
-        setNetworkAddress(address);
-
-        setNetworkPort(port);
-    }
-
-    /**
-     * @return the networkAddress
-     */
-    public String getNetworkAddress() {
-        return networkAddress;
-    }
-
-    /**
-     * @param newNetworkAddress the networkAddress to set
-     */
-    public final void setNetworkAddress(String newNetworkAddress) {
-        ExampleSimulationProgramReynolds.networkAddress = newNetworkAddress;
-    }
-
-    /**
-     * @return the networkPort
-     */
-    public int getNetworkPort() {
-        return networkPort;
-    }
-
-    /**
-     * @param newNetworkPort the networkPort to set
-     */
-    public final void setNetworkPort(int newNetworkPort) {
-        ExampleSimulationProgramReynolds.networkPort = newNetworkPort;
-    }
-
-    /**
-     * Initialize network interface, choosing best available network interface
-     */
-    public void setUpNetworkInterface() {
-        disNetworkInterface = new DisThreadedNetworkInterface(getNetworkAddress(), getNetworkPort());
-        disNetworkInterface.setDescriptor("ExampleSimulationProgramReynolds pdu looping");
-
-        System.out.println("Network confirmation:"
-                + " address=" + disNetworkInterface.getAddress()
-                + //  disNetworkInterface.getMulticastGroup() + 
-                " port=" + disNetworkInterface.getPort());   // + disNetworkInterface.getDisPort());
-        pduListener = new DisThreadedNetworkInterface.PduListener() {
-            /**
-             * Callback handler for listener
-             */
-            @Override
-            public void incomingPdu(Pdu newPdu) {
-                receivedPdu = newPdu;
-            }
-        };
-        disNetworkInterface.addListener(pduListener);
-
-        String outputDirectory = DEFAULT_OUTPUT_DIRECTORY;
-        System.out.println("Beginning pdu save to directory " + outputDirectory);
-        pduRecorder = new PduRecorder(outputDirectory, getNetworkAddress(), getNetworkPort()); // assumes save
-        pduRecorder.setDescriptor("ExampleSimulationProgramReynolds pduRecorder");
-        pduRecorder.start(); // begin running
-    }
-
-    /**
-     * All done, release network resources
-     */
-    public void tearDownNetworkInterface() {
-        pduRecorder.stop();
-
-        disNetworkInterface.removeListener(pduListener);
-
-        disNetworkInterface.close();
-//      disNetworkInterface.kill(); // renamed as close(), deprecated
-//      disNetworkInterface = null; // making sure no possibility of zombie process remaining...
-    }
-
-    /**
-     * Send a single Protocol Data Unit (PDU) of any type
-     *
-     * @param pdu the pdu to send
-     */
-    private void sendSinglePdu(Pdu pdu) {
-        try {
-            disNetworkInterface.send(pdu);
-            Thread.sleep(100); // TODO consider refactoring the wait logic and moving externally
-        } catch (InterruptedException ex) {
-            System.err.println(this.getClass().getName() + " Error sending PDU: " + ex.getLocalizedMessage());
-            System.exit(1);
-        }
-    }
-
-    /**
-     * Send Comment PDU
-     *
-     * @see
-     * <a href="https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html">Passing
-     * Information to a Method or a Constructor</a> Arbitrary Number of
-     * Arguments
-     * @param commentType enumeration value describing purpose of the narrative
-     * comment
-     * @param comments String array of narrative comments
-     */
-    public void sendCommentPdu(VariableRecordType commentType,
-            // vararg... variable-length set of String comments can optionally follow
-            String... comments) {
-        sendAllPdusForLoopTimestep(null, null, commentType, comments);
-    }
-
-    /**
-     * Send EntityState, Fire, Comment PDUs that got updated for this loop,
-     * reflecting state of current simulation timestep.
-     *
-     * @see
-     * <a href="https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html">Passing
-     * Information to a Method or a Constructor</a> Arbitrary Number of
-     * Arguments
-     * @param entityStatePdu the ESPDU to send, if any
-     * @param firePdu the FirePDU to send, if any
-     * @param commentType enumeration value describing purpose of the narrative
-     * comment
-     * @param comments String array of narrative comments
-     */
-    public void sendAllPdusForLoopTimestep(EntityStatePdu entityStatePdu,
-            FirePdu firePdu,
-            VariableRecordType commentType,
-            // vararg... variable-length set of String comments can optionally follow
-            String... comments) {
-        if (entityStatePdu != null) {
-            sendSinglePdu(entityStatePdu);
-        }
-
-        if (firePdu != null) {
-            sendSinglePdu(firePdu); // bang
-        }
-        if ((comments != null) && (comments.length > 0)) {
-            ArrayList<String> newCommentsList = new ArrayList<>();
-            for (String comment : comments) {
-                if (!comment.isEmpty()) {
-                    newCommentsList.add(comment); // OK found something to send
-                }
-            }
-            if (!newCommentsList.isEmpty()) {
-                if (commentType == null) {
-                    commentType = otherComment; // fallback value otherComment
-                }                // now build the commentPdu from these string inputs, thus constructing a narrative entry
-                CommentPdu commentPdu = pduFactory.makeCommentPdu(commentType, newCommentsList.toArray(new String[0])); // comments);
-                sendSinglePdu(commentPdu);
-                if (isVerboseComments()) {
-                    System.out.println("*** [Narrative comment sent: " + commentType.name() + "] " + newCommentsList.toString());
-                }
-            }
-        }
-    }
-
-    /**
-     * Main method is first executed when a program instance is loaded.
-     *
-     * @see
-     * <a href="https://docs.oracle.com/javase/tutorial/getStarted/application/index.html">Java
-     * Tutorials: A Closer Look at the "Hello World!" Application</a>
-     * @param args command-line arguments are an array of optional String
-     * parameters that are passed from execution environment during invocation
-     */
-    public static void main(String[] args) {
-        System.out.println(TRACE_PREFIX + "started...");
-
-        ExampleSimulationProgramReynolds thisProgram = new ExampleSimulationProgramReynolds(); // creates instance
-
-        // initial execution: can handle args array of initialization arguments here
-        if (args.length == 2) {
-            if ((args[0] != null) && !args[0].isEmpty()) {
-                thisProgram.setNetworkAddress(args[0]);
-            }
-
-            if ((args[1] != null) && !args[1].isEmpty()) {
-                thisProgram.setNetworkPort(Integer.parseInt(args[1]));
-            }
-        } else if (args.length != 0) {
-            System.err.println("Usage: " + thisProgram.getClass().getName() + " [address port]");
-            System.exit(-1);
-        }
-        // OK here we go...
-
-        thisProgram.setUpNetworkInterface();
-
-        thisProgram.runSimulationLoops(); // ... your simulation execution code goes in there ...
-
-        thisProgram.tearDownNetworkInterface(); // make sure no processes are left lingering
-
-        System.out.println(TRACE_PREFIX + "complete."); // report successful completion
-    }
-
-    /**
-     * @return whether verboseComments mode is enabled
-     */
-    public boolean isVerboseComments() {
-        return verboseComments;
-    }
-
-    /**
-     * @param newVerboseComments whether verboseComments mode is enabled
-     */
-    public void setVerboseComments(boolean newVerboseComments) {
-        this.verboseComments = newVerboseComments;
-    }
-}
+/**
+ * Copyright (c) 2008-2021, MOVES Institute, Naval Postgraduate School (NPS). All rights reserved.
+ * This work is provided under a BSD open-source license, see project license.html and license.txt
+ *
+ * This Program is a modified version of ExampleSimulationProgram in order to see the
+ * verbose plain text pdu log. This simulates a battle between two opposing
+ * spacecraft traveling toward each other at an equal rate.
+ *
+ * @author snapp
+ */
+package MV3500Cohort2021JulySeptember.homework3.Reynolds;
+
+import edu.nps.moves.dis7.enumerations.*; // match any
+import edu.nps.moves.dis7.pdus.*;         // match any of the PDU classes, easier than listing individually
+import edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface;
+import edu.nps.moves.dis7.utilities.PduFactory;
+import edu.nps.moves.dis7.utilities.stream.PduRecorder;
+import java.util.ArrayList;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * The purpose of this program is to provide an easily modifiable example
+ * simulation program that includes DIS-capable entities doing tasks and
+ * reporting them to the network. Default settings include PDU recording turned
+ * on by default.
+ */
+public class ExampleSimulationProgramReynolds {
+
+    private boolean verboseComments = true;
+    static final String NETWORK_ADDRESS_DEFAULT = "239.1.2.3";
+    static final int NETWORK_PORT_DEFAULT = 3000;
+    static String networkAddress = NETWORK_ADDRESS_DEFAULT;
+    static int networkPort = NETWORK_PORT_DEFAULT;
+    String DEFAULT_OUTPUT_DIRECTORY = "./pduLog";
+
+    private EntityID createFriendSpaceCraft() {
+        EntityID FNSPaceCraftID = new EntityID(); // 1.1.225.1.1.1 Platform,Cyber,USA,SpaceCraft
+        FNSPaceCraftID.setSiteID(1);
+        FNSPaceCraftID.setApplicationID(1);
+        FNSPaceCraftID.setEntityID(1);
+        return FNSPaceCraftID;
+    }
+
+    private EntityType createFriendSpaceCraftType() {
+        EntityType FNSpaceCraftType = new EntityType();
+        FNSpaceCraftType.setEntityKind(EntityKind.PLATFORM);
+        FNSpaceCraftType.setDomain(Domain.inst(PlatformDomain.SPACE));
+        FNSpaceCraftType.setCountry(Country.UNITED_STATES_OF_AMERICA_USA);
+        FNSpaceCraftType.setCategory(3);
+        FNSpaceCraftType.setSubCategory(1);
+        FNSpaceCraftType.setSpecific(1);
+        return FNSpaceCraftType;
+    }
+
+    private EntityID createHostileSpaceCraft() {
+        EntityID HHostileSpaceCraftID = new EntityID(); // 1.1.45.1.7.1 Platform,Space,Russia,HostileSpaceCraft
+
+        HHostileSpaceCraftID.setSiteID(2);
+        HHostileSpaceCraftID.setApplicationID(2);
+        HHostileSpaceCraftID.setEntityID(2);
+        return HHostileSpaceCraftID;
+    }
+
+    private EntityType createHostileSpaceCraftType() {
+        EntityType HostileSpaceCraftType = new EntityType();
+        HostileSpaceCraftType.setEntityKind(EntityKind.PLATFORM);
+        HostileSpaceCraftType.setDomain(Domain.inst(PlatformDomain.SPACE));
+        HostileSpaceCraftType.setCountry(Country.RUSSIA_RUS);
+        HostileSpaceCraftType.setCategory(3);
+        HostileSpaceCraftType.setSubCategory(1);
+        HostileSpaceCraftType.setSpecific(1);
+        return HostileSpaceCraftType;
+    }
+
+    private MunitionDescriptor createPulseTorpedo() {
+
+        EntityType PulseTorpedoType = new EntityType(); //2.2.225.2.13.1
+        PulseTorpedoType.setEntityKind(EntityKind.MUNITION);
+        PulseTorpedoType.setDomain(Domain.inst(PlatformDomain.SPACE));
+        PulseTorpedoType.setCountry(Country.UNITED_STATES_OF_AMERICA_USA);
+        PulseTorpedoType.setCategory(1);
+        PulseTorpedoType.setSubCategory(3);
+        PulseTorpedoType.setSpecific(1);
+        MunitionDescriptor PulseTorpedo = new MunitionDescriptor();
+        PulseTorpedo.setMunitionType(PulseTorpedoType);
+        PulseTorpedo.setQuantity(1000);
+        PulseTorpedo.setFuse(MunitionDescriptorFuse.CONTACT);
+        PulseTorpedo.setRate(200);
+        return PulseTorpedo;
+    }
+
+    /**
+     * This runSimulationLoops() method is for you, a programmer-modifiable
+     * method for defining and running a new simulation of interest. Welcome!
+     * Other parts of this program handle bookkeeping and plumbing tasks so that
+     * you can focus on your model entities and activities. Expandable support
+     * includes DIS EntityStatePdu, FirePdu and CommentPdu all available for
+     * modification and sending in a simulation loop. Continuous improvement
+     * efforts seek to make this program as easy and straightforward as possible
+     * for DIS simulationists to use and adapt. All of the other methods are
+     * setup, teardown and configuration that you may find interesting, even
+     * helpful, but don't really have to worry about.
+     */
+    @SuppressWarnings("SleepWhileInLoop") // yes we do that
+    public void runSimulationLoops() {
+        try {
+            /**
+             * seconds for real-time execution (not simulation time, which may
+             * or may not be the same)
+             */
+            final double SIMULATION_LOOP_DURATION_SECONDS = 1.0;
+            final int SIMULATION_MAX_LOOP_COUNT = 10; // be deliberate out out there!  also avoid infinite loops.
+            int simulationLoopCount = 0;        // variable, initialized at 0
+            boolean simulationComplete = false;     // sentinel variable as termination condition,, are we done yet?
+            boolean fireBool = false;
+            boolean destBool = false;
+            int TorpedoDamageRecieved = 0;
+
+            // TODO reset clock to zero each time for consistent outputs
+            // Your model setup: define participants.  who's who in this zoo?
+            // Assuming you keep track of entity objects...  here is some support for for Entity 1.
+            // create PDU object for US SpaceCraft and set its values.
+            EntityStatePdu entityStatePdu_1 = pduFactory.makeEntityStatePdu();
+            entityStatePdu_1.setEntityID(createFriendSpaceCraft());
+            entityStatePdu_1.setEntityType(createFriendSpaceCraftType());
+            entityStatePdu_1.getEntityLocation().setX(-10);
+            entityStatePdu_1.setForceId(ForceID.FRIENDLY);
+
+            // TODO someday, use enumerations; is there a unique site triplet for MOVES Institute?
+            // create PDU object for Hostile SpaceCraft and set its values.
+            EntityStatePdu entityStatePdu_2 = pduFactory.makeEntityStatePdu();
+            entityStatePdu_2.setEntityID(createHostileSpaceCraft());
+            entityStatePdu_2.setEntityType(createHostileSpaceCraftType());
+            entityStatePdu_2.getEntityLocation().setX(10);
+            entityStatePdu_2.setForceId(ForceID.OPPOSING);
+
+            FirePdu firePdu = pduFactory.makeFirePdu(); // for entity 1 first  weapon (possible traceroute)
+            // should we customize this munition?  what is it for your simulation?
+            EntityID fireID = new EntityID();
+            fireID.setSiteID(1);
+            fireID.setApplicationID(1);
+            fireID.setEntityID(1);
+            EntityID targetID = new EntityID();
+            targetID.setSiteID(2);
+            targetID.setApplicationID(2);
+            targetID.setEntityID(2);
+
+            firePdu.setFiringEntityID(fireID);
+            firePdu.setTargetEntityID(targetID);
+
+            firePdu.setDescriptor(createPulseTorpedo()); // calling create PulseTorpedo Method
+
+            EntityID TracerouteID = new EntityID();
+            TracerouteID.setEntityID(1);
+            firePdu.setMunitionExpendibleID(TracerouteID);
+
+            CommentReliablePdu HostileSpaceCraftDestroyedComment = pduFactory.makeCommentReliablePdu("Hostile SpaceCraft  DESTROYED BY Friendly SpaceCraft");
+            CommentReliablePdu HostileSpaceCraftDetectedComment = pduFactory.makeCommentReliablePdu("Friendly SpaceCraft Detects Hostile SpaceCraft engage Pulse Torpedo's");
+
+            // TODO simulation management PDUs for startup, planning to design special class support
+            //DetonationPdu detonationPdu = pduFactory.makeDetonationPdu();
+            //detonationPdu.setDescriptor(pDescriptor);
+            // loop the simulation while allowed, programmer can set additional conditions to break out and finish
+            while (simulationLoopCount < SIMULATION_MAX_LOOP_COUNT) // are we done yet?
+            {
+                simulationLoopCount++; // good practice: increment loop counter as first action in that loop
+
+                // =============================================================================================
+                // * your own simulation code starts here! *
+                // =============================================================================================
+                //  are there any other variables to modify at the beginning of your loop?
+                // compute a track, update an ESPDU, whatever it is that your model is doing...
+                // Where is my entity?  Insert changes in position; this sample only changes X position.
+                entityStatePdu_1.getEntityLocation().setX(entityStatePdu_1.getEntityLocation().getX() + 1.0); // stationary defensive posture
+                entityStatePdu_2.getEntityLocation().setX(entityStatePdu_2.getEntityLocation().getX() - 1.0); // 1m per timestep
+
+                // decide whether to fire, and then update the firePdu.  Hmmm, you might want a target to shoot at!
+                Double range = entityStatePdu_2.getEntityLocation().getX();
+                System.out.println("range: " + range + " clicks from friendly assets!");
+
+                if (range <= 5) { // Range 5
+                    if (!fireBool) {
+                        sendSinglePdu(HostileSpaceCraftDetectedComment);
+                        // Inform the user of the detection
+                        System.out.println("Friendly SpaceCraft Detects Hostile SpaceCraft from "
+                                + entityStatePdu_2.getEntityType().getCountry()
+                                + "... Engaging with Pulse Torpedo's");
+                    }
+                    fireBool = true;
+                    System.out.println("Entity#"
+                            + firePdu.getFiringEntityID().getEntityID()
+                            + " is firing "
+                            + firePdu.getDescriptor().getMunitionType().getDomain()
+                            + "."
+                            + firePdu.getDescriptor().getMunitionType().getCountry()
+                            + "."
+                            + firePdu.getDescriptor().getMunitionType().getCategory()
+                            + "."
+                            + firePdu.getDescriptor().getMunitionType().getSubCategory()
+                            + "."
+                            + firePdu.getDescriptor().getMunitionType().getSpecific()
+                            + "."
+                            + " at Entity#" + firePdu.getTargetEntityID().getEntityID()
+                            + " from " + entityStatePdu_2.getEntityType().getCountry());
+
+                    if (firePdu.getTargetEntityID().getEntityID() == 6666) {
+                        TorpedoDamageRecieved += 1;
+                        if (TorpedoDamageRecieved > 1) {
+                            // The Friendly destroys the Hostile
+
+                            System.out.println("Hostile SpaceCraft DESTROYED BY Friendly SpaceCraft after "
+                                    + TorpedoDamageRecieved
+                                    + "direct hits from the Pulse Torpedo's.");
+                            narrativeMessage4 = "Destroyed Hostile SpaceCraft";
+                            destBool = true;
+                            simulationComplete = true;
+
+                        }
+                    }
+                }
+                // etc. etc. your code goes here for your simulation of interest
+
+                // something happens between my simulation entities, la de da de da...
+                System.out.println("... Scanning for Engagements...");
+
+                // make your reports: narrative code for CommentPdu here (set all to empty strings to avoid sending)
+                narrativeMessage1 = "MV3500 ExampleSimulationProgramReynolds";
+                narrativeMessage2 = "runSimulation() loop " + simulationLoopCount;
+                narrativeMessage3 = "verified PDUs for simulation!"; // intentionally blank for testing
+
+                // your loop termination condition goes here
+                if (simulationLoopCount > 4) // for example
+                {
+                    simulationComplete = true;
+                }
+                // =============================================================================================
+                // * your own simulation code is finished here! *
+                // =============================================================================================
+
+                // staying synchronized with timestep: wait duration for elapsed time in this loop
+                // Thread.sleep needs a (long) parameter for milliseconds, which are clumsy to use sometimes
+                Thread.sleep((long) (SIMULATION_LOOP_DURATION_SECONDS * 1000)); // seconds * (1000 msec/sec) = milliseconds
+                System.out.println("... [Pausing for " + SIMULATION_LOOP_DURATION_SECONDS + " seconds] \n");
+
+                // OK now send the status PDUs for this loop, and then continue
+                System.out.println("sending PDUs for simulation step " + simulationLoopCount + ", monitor loopback to confirm sent");
+                sendAllPdusForLoopTimestep(
+                        entityStatePdu_1,
+                        firePdu,
+                        timeStepComment,
+                        narrativeMessage1,
+                        narrativeMessage2,
+                        narrativeMessage3
+                );
+                sendSinglePdu(entityStatePdu_2); // me too i.e. 2!
+                System.out.println("... [PDUs successfully sent for this loop] \n");
+
+                // ===============================
+                // loop now finished, check whether to terminate if simulation complete, otherwise continue
+                if (simulationComplete || (simulationLoopCount > 10000)) // for example; including fail-safe condition is good
+                {
+                    //sendSinglePdu(detonationPdu);
+                    System.out.println("... [Termination condition met, simulationComplete = " + simulationComplete + "]"); // ", final loopCount=" + loopCount + 
+                    break;
+                }
+            }   // end of simulation loop
+
+            narrativeMessage2 = "runSimulation() completed successfully"; // all done
+            sendCommentPdu(narrativeComment, narrativeMessage1, narrativeMessage2, narrativeMessage3);
+            System.out.println("... [final CommentPdu successfully sent for simulation]");
+            // TODO simulation management PDUs
+        } catch (InterruptedException iex) // handle any exception that your code might choose to provoke!
+        {
+            Logger.getLogger(ExampleSimulationProgramReynolds.class.getName()).log(Level.SEVERE, null, iex);
+        }
+    }
+    /* **************************** infrastructure code, modification is seldom needed ************************* */
+
+    String narrativeMessage1 = new String();
+    String narrativeMessage2 = new String();
+    String narrativeMessage3 = new String();
+    String narrativeMessage4 = new String();
+
+    /* VariableRecordType enumerations have potential use with CommentPdu logs */
+ /* TODO contrast to EntityType */
+    VariableRecordType descriptionComment = VariableRecordType.DESCRIPTION;
+    VariableRecordType narrativeComment = VariableRecordType.COMPLETE_EVENT_REPORT;
+    VariableRecordType statusComment = VariableRecordType.APPLICATION_STATUS;
+    VariableRecordType timeStepComment = VariableRecordType.APPLICATION_TIMESTEP;
+    VariableRecordType otherComment = VariableRecordType.OTHER;
+
+    /**
+     * Output prefix to identify this class, helps with logging
+     */
+    private final static String TRACE_PREFIX = "[" + ExampleSimulationProgramReynolds.class.getName() + "] ";
+
+    // class variables
+    PduFactory pduFactory = new PduFactory();
+    DisThreadedNetworkInterface disNetworkInterface;
+    DisThreadedNetworkInterface.PduListener pduListener;
+    Pdu receivedPdu;
+    PduRecorder pduRecorder;
+
+    /**
+     * Constructor design goal: additional built-in initialization conveniences
+     * can go here to keep student efforts focused on the runSimulation()
+     * method.
+     */
+    public ExampleSimulationProgramReynolds() {
+        // Constructor is under consideration.  Constructor is not currently needed.
+    }
+
+    /**
+     * Utility Constructor that allows your example simulation program to
+     * override default network address and port
+     *
+     * @param address network address to use
+     * @param port corresponding network port to use
+     */
+    public ExampleSimulationProgramReynolds(String address, int port) {
+        setNetworkAddress(address);
+
+        setNetworkPort(port);
+    }
+
+    /**
+     * get networkAddress
+     * @return the networkAddress
+     */
+    public String getNetworkAddress() {
+        return networkAddress;
+    }
+
+    /**
+     * set networkAddress
+     * @param newNetworkAddress the networkAddress to set
+     */
+    public final void setNetworkAddress(String newNetworkAddress) {
+        ExampleSimulationProgramReynolds.networkAddress = newNetworkAddress;
+    }
+
+    /**
+     * get networkPort
+     * @return the networkPort
+     */
+    public int getNetworkPort() {
+        return networkPort;
+    }
+
+    /**
+     * set networkPort
+     * @param newNetworkPort the networkPort to set
+     */
+    public final void setNetworkPort(int newNetworkPort) {
+        ExampleSimulationProgramReynolds.networkPort = newNetworkPort;
+    }
+
+    /**
+     * Initialize network interface, choosing best available network interface
+     */
+    public void setUpNetworkInterface() {
+        disNetworkInterface = new DisThreadedNetworkInterface(getNetworkAddress(), getNetworkPort());
+        disNetworkInterface.setDescriptor("ExampleSimulationProgramReynolds pdu looping");
+
+        System.out.println("Network confirmation:"
+                + " address=" + disNetworkInterface.getAddress()
+                + //  disNetworkInterface.getMulticastGroup() + 
+                " port=" + disNetworkInterface.getPort());   // + disNetworkInterface.getDisPort());
+        pduListener = new DisThreadedNetworkInterface.PduListener() {
+            /**
+             * Callback handler for listener
+             */
+            @Override
+            public void incomingPdu(Pdu newPdu) {
+                receivedPdu = newPdu;
+            }
+        };
+        disNetworkInterface.addListener(pduListener);
+
+        String outputDirectory = DEFAULT_OUTPUT_DIRECTORY;
+        System.out.println("Beginning pdu save to directory " + outputDirectory);
+        pduRecorder = new PduRecorder(outputDirectory, getNetworkAddress(), getNetworkPort()); // assumes save
+        pduRecorder.setDescriptor("ExampleSimulationProgramReynolds pduRecorder");
+        pduRecorder.start(); // begin running
+    }
+
+    /**
+     * All done, release network resources
+     */
+    public void tearDownNetworkInterface() {
+        pduRecorder.stop();
+
+        disNetworkInterface.removeListener(pduListener);
+
+        disNetworkInterface.close();
+//      disNetworkInterface.kill(); // renamed as close(), deprecated
+//      disNetworkInterface = null; // making sure no possibility of zombie process remaining...
+    }
+
+    /**
+     * Send a single Protocol Data Unit (PDU) of any type
+     *
+     * @param pdu the pdu to send
+     */
+    private void sendSinglePdu(Pdu pdu) {
+        try {
+            disNetworkInterface.send(pdu);
+            Thread.sleep(100); // TODO consider refactoring the wait logic and moving externally
+        } catch (InterruptedException ex) {
+            System.err.println(this.getClass().getName() + " Error sending PDU: " + ex.getLocalizedMessage());
+            System.exit(1);
+        }
+    }
+
+    /**
+     * Send Comment PDU
+     *
+     * @see
+     * <a href="https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html">Passing
+     * Information to a Method or a Constructor</a> Arbitrary Number of
+     * Arguments
+     * @param commentType enumeration value describing purpose of the narrative
+     * comment
+     * @param comments String array of narrative comments
+     */
+    public void sendCommentPdu(VariableRecordType commentType,
+            // vararg... variable-length set of String comments can optionally follow
+            String... comments) {
+        sendAllPdusForLoopTimestep(null, null, commentType, comments);
+    }
+
+    /**
+     * Send EntityState, Fire, Comment PDUs that got updated for this loop,
+     * reflecting state of current simulation timestep.
+     *
+     * @see
+     * <a href="https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html">Passing
+     * Information to a Method or a Constructor</a> Arbitrary Number of
+     * Arguments
+     * @param entityStatePdu the ESPDU to send, if any
+     * @param firePdu the FirePDU to send, if any
+     * @param commentType enumeration value describing purpose of the narrative
+     * comment
+     * @param comments String array of narrative comments
+     */
+    public void sendAllPdusForLoopTimestep(EntityStatePdu entityStatePdu,
+            FirePdu firePdu,
+            VariableRecordType commentType,
+            // vararg... variable-length set of String comments can optionally follow
+            String... comments) {
+        if (entityStatePdu != null) {
+            sendSinglePdu(entityStatePdu);
+        }
+
+        if (firePdu != null) {
+            sendSinglePdu(firePdu); // bang
+        }
+        if ((comments != null) && (comments.length > 0)) {
+            ArrayList<String> newCommentsList = new ArrayList<>();
+            for (String comment : comments) {
+                if (!comment.isEmpty()) {
+                    newCommentsList.add(comment); // OK found something to send
+                }
+            }
+            if (!newCommentsList.isEmpty()) {
+                if (commentType == null) {
+                    commentType = otherComment; // fallback value otherComment
+                }                // now build the commentPdu from these string inputs, thus constructing a narrative entry
+                CommentPdu commentPdu = pduFactory.makeCommentPdu(commentType, newCommentsList.toArray(new String[0])); // comments);
+                sendSinglePdu(commentPdu);
+                if (isVerboseComments()) {
+                    System.out.println("*** [Narrative comment sent: " + commentType.name() + "] " + newCommentsList.toString());
+                }
+            }
+        }
+    }
+
+    /**
+     * Main method is first executed when a program instance is loaded.
+     *
+     * @see
+     * <a href="https://docs.oracle.com/javase/tutorial/getStarted/application/index.html">Java
+     * Tutorials: A Closer Look at the "Hello World!" Application</a>
+     * @param args command-line arguments are an array of optional String
+     * parameters that are passed from execution environment during invocation
+     */
+    public static void main(String[] args) {
+        System.out.println(TRACE_PREFIX + "started...");
+
+        ExampleSimulationProgramReynolds thisProgram = new ExampleSimulationProgramReynolds(); // creates instance
+
+        // initial execution: can handle args array of initialization arguments here
+        if (args.length == 2) {
+            if ((args[0] != null) && !args[0].isEmpty()) {
+                thisProgram.setNetworkAddress(args[0]);
+            }
+
+            if ((args[1] != null) && !args[1].isEmpty()) {
+                thisProgram.setNetworkPort(Integer.parseInt(args[1]));
+            }
+        } else if (args.length != 0) {
+            System.err.println("Usage: " + thisProgram.getClass().getName() + " [address port]");
+            System.exit(-1);
+        }
+        // OK here we go...
+
+        thisProgram.setUpNetworkInterface();
+
+        thisProgram.runSimulationLoops(); // ... your simulation execution code goes in there ...
+
+        thisProgram.tearDownNetworkInterface(); // make sure no processes are left lingering
+
+        System.out.println(TRACE_PREFIX + "complete."); // report successful completion
+    }
+
+    /**
+     * get whether verbose comments are enabled
+     * @return whether verboseComments mode is enabled
+     */
+    public boolean isVerboseComments() {
+        return verboseComments;
+    }
+
+    /**
+     * set whether verbose comments are enabled
+     * @param newVerboseComments whether verboseComments mode is enabled
+     */
+    public void setVerboseComments(boolean newVerboseComments) {
+        this.verboseComments = newVerboseComments;
+    }
+}
diff --git a/assignments/src/MV3500Cohort2021JulySeptember/homework3/Schlessel/ExampleSimulationProgram.java b/assignments/src/MV3500Cohort2021JulySeptember/homework3/Schlessel/ExampleSimulationProgram.java
index 180af60c3995169247301d3c75c025ee904bf357..c872519ffc6cbddd1dc9708513d1d873cdc30137 100644
--- a/assignments/src/MV3500Cohort2021JulySeptember/homework3/Schlessel/ExampleSimulationProgram.java
+++ b/assignments/src/MV3500Cohort2021JulySeptember/homework3/Schlessel/ExampleSimulationProgram.java
@@ -197,6 +197,7 @@ public class ExampleSimulationProgram
     }
 
     /**
+     * get networkAddress
      * @return the networkAddress
      */
     public String getNetworkAddress()
@@ -205,6 +206,7 @@ public class ExampleSimulationProgram
     }
 
     /**
+     * set networkAddress
      * @param newNetworkAddress the networkAddress to set
      */
     public final void setNetworkAddress(String newNetworkAddress)
@@ -213,6 +215,7 @@ public class ExampleSimulationProgram
     }
 
     /**
+     * get networkPort
      * @return the networkPort
      */
     public int getNetworkPort()
@@ -221,6 +224,7 @@ public class ExampleSimulationProgram
     }
 
     /**
+     * set networkPort
      * @param newNetworkPort the networkPort to set
      */
     public final void setNetworkPort(int newNetworkPort)
@@ -381,6 +385,7 @@ public class ExampleSimulationProgram
     }
 
     /**
+     * get verboseComments sentinel
      * @return whether verboseComments mode is enabled
      */
     public boolean isVerboseComments() {
@@ -388,6 +393,7 @@ public class ExampleSimulationProgram
     }
 
     /**
+     * set verboseComments sentinel
      * @param newVerboseComments whether verboseComments mode is enabled
      */
     public void setVerboseComments(boolean newVerboseComments) {
diff --git a/assignments/src/MV3500Cohort2021JulySeptember/homework4/AllPduAssessmentTemplate.md b/assignments/src/MV3500Cohort2021JulySeptember/homework4/AllPduAssessmentTemplate.md
index 8488d4e76e1e5f94e525436cac0ac4f0007f9321..13a04729ee715a211ed6f053c0d870e635f4dc24 100644
--- a/assignments/src/MV3500Cohort2021JulySeptember/homework4/AllPduAssessmentTemplate.md
+++ b/assignments/src/MV3500Cohort2021JulySeptember/homework4/AllPduAssessmentTemplate.md
@@ -2,126 +2,126 @@
 
 | PDU type and PDUs | ID    | &nbsp; &nbsp; Assess |                  | IEEE Standard 1278.1-2012 |
 |-------------------|:-----:|:-----------------------------|:----------------:|:-------------------|
-| _EntityInformationInteractionFamilyPduType_ | _1_ | | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/EntityInformationInteractionFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EntityInformationInteractionFamilyPduType.html) | Section 5.3.3. Common superclass for EntityState, Collision, collision-elastic, and entity state update PDUs. |
-| 1.&nbsp;EntityStatePdu | 1 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/EntityStatePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EntityStatePdu.html) | 7.2.2. Represents the position and state of one entity in the world. See 5.3.2. (length of list found in field numberOfVariableParameters) |
-| 2.&nbsp;CollisionPdu | 4 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/CollisionPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_CollisionPdu.html) | 7.2.3 Collisions between entities shall be communicated by issuing a Collision PDU. See 5.3.3. |
-| 3.&nbsp;CollisionElasticPdu | 66 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/CollisionElasticPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_CollisionElasticPdu.html) | 7.2.4 Information about elastic collisions in a DIS exercise shall be communicated using a Collision-Elastic PDU. See 5.3.4. |
-| 4.&nbsp;EntityStateUpdatePdu | 67 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/EntityStateUpdatePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EntityStateUpdatePdu.html) | 7.2.5. Nonstatic information about a particular entity may be communicated by issuing an Entity State Update PDU. 5.3.5. (length of list found in field numberOfVariableParameters) |
-| 5.&nbsp;AttributePdu | 72 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/AttributePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_AttributePdu.html) | 7.2.6. Information about individual attributes for a particular entity, other object, or event may be communicated using an Attribute PDU. The Attribute PDU shall not be used to exchange data available in any other PDU except where explicitly mentioned in the PDU issuance instructions within this standard. See 5.3.6. (length of list found in field numberAttributeRecordSet) |
+| _EntityInformationInteractionFamilyPduType_ | _1_ | | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/EntityInformationInteractionFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EntityInformationInteractionFamilyPduType.html) | Section 5.3.3. Common superclass for EntityState, Collision, collision-elastic, and entity state update PDUs. |
+| 1.&nbsp;EntityStatePdu | 1 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/EntityStatePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EntityStatePdu.html) | 7.2.2. Represents the position and state of one entity in the world. See 5.3.2. (length of list found in field numberOfVariableParameters) |
+| 2.&nbsp;CollisionPdu | 4 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/CollisionPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_CollisionPdu.html) | 7.2.3 Collisions between entities shall be communicated by issuing a Collision PDU. See 5.3.3. |
+| 3.&nbsp;CollisionElasticPdu | 66 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/CollisionElasticPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_CollisionElasticPdu.html) | 7.2.4 Information about elastic collisions in a DIS exercise shall be communicated using a Collision-Elastic PDU. See 5.3.4. |
+| 4.&nbsp;EntityStateUpdatePdu | 67 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/EntityStateUpdatePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EntityStateUpdatePdu.html) | 7.2.5. Nonstatic information about a particular entity may be communicated by issuing an Entity State Update PDU. 5.3.5. (length of list found in field numberOfVariableParameters) |
+| 5.&nbsp;AttributePdu | 72 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/AttributePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_AttributePdu.html) | 7.2.6. Information about individual attributes for a particular entity, other object, or event may be communicated using an Attribute PDU. The Attribute PDU shall not be used to exchange data available in any other PDU except where explicitly mentioned in the PDU issuance instructions within this standard. See 5.3.6. (length of list found in field numberAttributeRecordSet) |
 
 | PDU type and PDUs | ID    | &nbsp; &nbsp; Assess |                  | IEEE Standard 1278.1-2012 |
 |-------------------|:-----:|:-----------------------------|:----------------:|:-------------------|
-| _WarfareFamilyPduType_ | _2_ | | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/WarfareFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_WarfareFamilyPduType.html) | Abstract superclass for fire and detonation pdus that have shared information. Section 7.3 |
-| 1.&nbsp;FirePdu | 2 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/FirePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_FirePdu.html) | 7.3.2 Used to communicate the firing of a weapon or expendable. |
-| 2.&nbsp;DetonationPdu | 3 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/DetonationPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DetonationPdu.html) | 7.3.3 Used to communicate the detonation or impact of munitions, as well as non-munition explosions, the burst or initial bloom of chaff, and the ignition of a flare. (length of list found in field numberOfVariableParameters) |
-| 3.&nbsp;DirectedEnergyFirePdu | 68 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/DirectedEnergyFirePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DirectedEnergyFirePdu.html) | 7.3.4 Used to communicate the firing of a directed energy weapon. (length of list found in field numberOfDERecords) |
-| 4.&nbsp;EntityDamageStatusPdu | 69 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/EntityDamageStatusPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EntityDamageStatusPdu.html) | 7.3.5 Used to communicate detailed damage information sustained by an entity regardless of the source of the damage. (length of list found in field numberOfDamageDescription) |
+| _WarfareFamilyPduType_ | _2_ | | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/WarfareFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_WarfareFamilyPduType.html) | Abstract superclass for fire and detonation pdus that have shared information. Section 7.3 |
+| 1.&nbsp;FirePdu | 2 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/FirePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_FirePdu.html) | 7.3.2 Used to communicate the firing of a weapon or expendable. |
+| 2.&nbsp;DetonationPdu | 3 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/DetonationPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DetonationPdu.html) | 7.3.3 Used to communicate the detonation or impact of munitions, as well as non-munition explosions, the burst or initial bloom of chaff, and the ignition of a flare. (length of list found in field numberOfVariableParameters) |
+| 3.&nbsp;DirectedEnergyFirePdu | 68 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/DirectedEnergyFirePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DirectedEnergyFirePdu.html) | 7.3.4 Used to communicate the firing of a directed energy weapon. (length of list found in field numberOfDERecords) |
+| 4.&nbsp;EntityDamageStatusPdu | 69 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/EntityDamageStatusPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EntityDamageStatusPdu.html) | 7.3.5 Used to communicate detailed damage information sustained by an entity regardless of the source of the damage. (length of list found in field numberOfDamageDescription) |
 
 | PDU type and PDUs | ID    | &nbsp; &nbsp; Assess |                  | IEEE Standard 1278.1-2012 |
 |-------------------|:-----:|:-----------------------------|:----------------:|:-------------------|
-| _LogisticsFamilyPduType_ | _3_ | | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/LogisticsFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_LogisticsFamilyPduType.html) | Abstract superclass for logistics PDUs. Section 7.4 |
-| 1.&nbsp;ServiceRequestPdu | 5 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/ServiceRequestPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ServiceRequestPdu.html) | 5.5.5 Communicate information associated with one entity requesting a service from another. (length of list found in field numberOfSupplyTypes) |
-| 2.&nbsp;ResupplyOfferPdu | 6 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/ResupplyOfferPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ResupplyOfferPdu.html) | 5.5.6 Communicate the offer of supplies by a supplying entity to a receiving entity. (length of list found in field numberOfSupplyTypes) |
-| 3.&nbsp;ResupplyReceivedPdu | 7 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/ResupplyReceivedPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ResupplyReceivedPdu.html) | 5.5.7 Used to acknowledge the receipt of supplies by the receiving entity. (length of list found in field numberOfSupplyTypes) |
-| 4.&nbsp;ResupplyCancelPdu | 8 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/ResupplyCancelPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ResupplyCancelPdu.html) | 5.5.8 Used to communicate the canceling of a resupply service provided through logistics support. |
-| 5.&nbsp;RepairCompletePdu | 9 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/RepairCompletePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_RepairCompletePdu.html) | 5.5.10 Used by the repairing entity to communicate the repair that has been performed for the entity that requested repair service. |
-| 6.&nbsp;RepairResponsePdu | 10 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/RepairResponsePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_RepairResponsePdu.html) | 5.5.11 used by the receiving entity to acknowledge the receipt of a Repair Complete PDU |
+| _LogisticsFamilyPduType_ | _3_ | | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/LogisticsFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_LogisticsFamilyPduType.html) | Abstract superclass for logistics PDUs. Section 7.4 |
+| 1.&nbsp;ServiceRequestPdu | 5 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/ServiceRequestPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ServiceRequestPdu.html) | 5.5.5 Communicate information associated with one entity requesting a service from another. (length of list found in field numberOfSupplyTypes) |
+| 2.&nbsp;ResupplyOfferPdu | 6 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/ResupplyOfferPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ResupplyOfferPdu.html) | 5.5.6 Communicate the offer of supplies by a supplying entity to a receiving entity. (length of list found in field numberOfSupplyTypes) |
+| 3.&nbsp;ResupplyReceivedPdu | 7 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/ResupplyReceivedPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ResupplyReceivedPdu.html) | 5.5.7 Used to acknowledge the receipt of supplies by the receiving entity. (length of list found in field numberOfSupplyTypes) |
+| 4.&nbsp;ResupplyCancelPdu | 8 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/ResupplyCancelPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ResupplyCancelPdu.html) | 5.5.8 Used to communicate the canceling of a resupply service provided through logistics support. |
+| 5.&nbsp;RepairCompletePdu | 9 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/RepairCompletePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_RepairCompletePdu.html) | 5.5.10 Used by the repairing entity to communicate the repair that has been performed for the entity that requested repair service. |
+| 6.&nbsp;RepairResponsePdu | 10 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/RepairResponsePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_RepairResponsePdu.html) | 5.5.11 used by the receiving entity to acknowledge the receipt of a Repair Complete PDU |
 
 | PDU type and PDUs | ID    | &nbsp; &nbsp; Assess |                  | IEEE Standard 1278.1-2012 |
 |-------------------|:-----:|:-----------------------------|:----------------:|:-------------------|
-| _RadioCommunicationsFamilyPduType_ | _4_ | | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/RadioCommunicationsFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_RadioCommunicationsFamilyPduType.html) | Abstract superclass for radio communications PDUs. Section 7.7 |
-| 1.&nbsp;TransmitterPdu | 25 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/TransmitterPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_TransmitterPdu.html) | 5.8.3 Communicates the state of a particular radio transmitter or simple intercom. (length of list found in field modulationParameterCount antennaPatternCount) |
-| 2.&nbsp;SignalPdu | 26 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/SignalPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SignalPdu.html) | 5.8.4 Conveys the audio or digital data carried by the simulated radio or intercom transmission. |
-| 3.&nbsp;ReceiverPdu | 27 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/ReceiverPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ReceiverPdu.html) | 5.8.5 Communicates the state of a particular radio receiver. Its primary application is in communicating state information to radio network monitors, data loggers, and similar applications for use in debugging, supervision, and after-action review. |
-| 4.&nbsp;IntercomSignalPdu | 31 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/IntercomSignalPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_IntercomSignalPdu.html) | 5.8.6 Conveys the audio or digital data that is used to communicate between simulated intercom devices (length of list found in field dataLength) |
-| 5.&nbsp;IntercomControlPdu | 32 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/IntercomControlPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_IntercomControlPdu.html) | 5.8.7 Communicates the state of a particular intercom device, request an action of another intercom device, or respond to an action request. (length of list found in field intercomParametersLength) |
+| _RadioCommunicationsFamilyPduType_ | _4_ | | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/RadioCommunicationsFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_RadioCommunicationsFamilyPduType.html) | Abstract superclass for radio communications PDUs. Section 7.7 |
+| 1.&nbsp;TransmitterPdu | 25 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/TransmitterPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_TransmitterPdu.html) | 5.8.3 Communicates the state of a particular radio transmitter or simple intercom. (length of list found in field modulationParameterCount antennaPatternCount) |
+| 2.&nbsp;SignalPdu | 26 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/SignalPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SignalPdu.html) | 5.8.4 Conveys the audio or digital data carried by the simulated radio or intercom transmission. |
+| 3.&nbsp;ReceiverPdu | 27 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/ReceiverPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ReceiverPdu.html) | 5.8.5 Communicates the state of a particular radio receiver. Its primary application is in communicating state information to radio network monitors, data loggers, and similar applications for use in debugging, supervision, and after-action review. |
+| 4.&nbsp;IntercomSignalPdu | 31 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/IntercomSignalPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_IntercomSignalPdu.html) | 5.8.6 Conveys the audio or digital data that is used to communicate between simulated intercom devices (length of list found in field dataLength) |
+| 5.&nbsp;IntercomControlPdu | 32 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/IntercomControlPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_IntercomControlPdu.html) | 5.8.7 Communicates the state of a particular intercom device, request an action of another intercom device, or respond to an action request. (length of list found in field intercomParametersLength) |
 
 | PDU type and PDUs | ID    | &nbsp; &nbsp; Assess |                  | IEEE Standard 1278.1-2012 |
 |-------------------|:-----:|:-----------------------------|:----------------:|:-------------------|
-| _SimulationManagementFamilyPduType_ | _5_ | | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/SimulationManagementFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SimulationManagementFamilyPduType.html) | First part of a simulation management (SIMAN) PDU and SIMAN-Reliability (SIMAN-R) PDU. Sectionn 6.2.81 |
-| 1.&nbsp;CreateEntityPdu | 11 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/CreateEntityPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_CreateEntityPdu.html) | Section 7.5.2. Create a new entity. See 5.6.5.2. |
-| 2.&nbsp;RemoveEntityPdu | 12 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/RemoveEntityPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_RemoveEntityPdu.html) | Section 7.5.3 The removal of an entity from an exercise shall be communicated with a Remove Entity PDU. See 5.6.5.3. |
-| 3.&nbsp;StartResumePdu | 13 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/StartResumePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_StartResumePdu.html) | Section 7.5.4. Start or resume an entity or exercise. See 5.6.5.4. |
-| 4.&nbsp;StopFreezePdu | 14 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/StopFreezePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_StopFreezePdu.html) | Section 7.5.5. Stop or freeze an enity or exercise. See 5.6.5.5 |
-| 5.&nbsp;AcknowledgePdu | 15 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/AcknowledgePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_AcknowledgePdu.html) | 7.5.6 Acknowledges the receipt of a Start/Resume PDU, Stop/Freeze PDU, Create Entity PDU, or Remove Entity PDU. See 5.6.5.6. |
-| 6.&nbsp;ActionRequestPdu | 16 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/ActionRequestPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ActionRequestPdu.html) | 7.5.7 A request from an SM to a managed entity to perform a specified action. See 5.6.5.7 (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
-| 7.&nbsp;ActionResponsePdu | 17 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/ActionResponsePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ActionResponsePdu.html) | Section 7.5.8. When an entity receives an Action Request PDU, that entity shall acknowledge the receipt of the Action Request PDU with an Action Response PDU. See 5.6.5.8. (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
-| 8.&nbsp;DataQueryPdu | 18 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/DataQueryPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DataQueryPdu.html) | Section 7.5.9. Request for data from an entity. See 5.6.5.9 (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
-| 9.&nbsp;SetDataPdu | 19 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/SetDataPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SetDataPdu.html) | Section 7.5.10. Initializing or changing internal state information shall be communicated using a Set Data PDU. See 5.6.5.10 (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
-| 10.&nbsp;DataPdu | 20 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/DataPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DataPdu.html) | 7.5.11 Information issued in response to a Data Query PDU or Set Data PDU. Section 5.6.5.11 (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
-| 11.&nbsp;EventReportPdu | 21 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/EventReportPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EventReportPdu.html) | 7.5.12 Reports occurance of a significant event to the simulation manager. See 5.6.5.12. (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
-| 12.&nbsp;CommentPdu | 22 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/CommentPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_CommentPdu.html) | 7.5.13 Used to enter arbitrary messages (character strings, for example). See 5.6.5.13 (length of list found in field numberOfVariableDatumRecords) |
+| _SimulationManagementFamilyPduType_ | _5_ | | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/SimulationManagementFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SimulationManagementFamilyPduType.html) | First part of a simulation management (SIMAN) PDU and SIMAN-Reliability (SIMAN-R) PDU. Sectionn 6.2.81 |
+| 1.&nbsp;CreateEntityPdu | 11 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/CreateEntityPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_CreateEntityPdu.html) | Section 7.5.2. Create a new entity. See 5.6.5.2. |
+| 2.&nbsp;RemoveEntityPdu | 12 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/RemoveEntityPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_RemoveEntityPdu.html) | Section 7.5.3 The removal of an entity from an exercise shall be communicated with a Remove Entity PDU. See 5.6.5.3. |
+| 3.&nbsp;StartResumePdu | 13 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/StartResumePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_StartResumePdu.html) | Section 7.5.4. Start or resume an entity or exercise. See 5.6.5.4. |
+| 4.&nbsp;StopFreezePdu | 14 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/StopFreezePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_StopFreezePdu.html) | Section 7.5.5. Stop or freeze an enity or exercise. See 5.6.5.5 |
+| 5.&nbsp;AcknowledgePdu | 15 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/AcknowledgePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_AcknowledgePdu.html) | 7.5.6 Acknowledges the receipt of a Start/Resume PDU, Stop/Freeze PDU, Create Entity PDU, or Remove Entity PDU. See 5.6.5.6. |
+| 6.&nbsp;ActionRequestPdu | 16 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/ActionRequestPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ActionRequestPdu.html) | 7.5.7 A request from an SM to a managed entity to perform a specified action. See 5.6.5.7 (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
+| 7.&nbsp;ActionResponsePdu | 17 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/ActionResponsePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ActionResponsePdu.html) | Section 7.5.8. When an entity receives an Action Request PDU, that entity shall acknowledge the receipt of the Action Request PDU with an Action Response PDU. See 5.6.5.8. (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
+| 8.&nbsp;DataQueryPdu | 18 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/DataQueryPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DataQueryPdu.html) | Section 7.5.9. Request for data from an entity. See 5.6.5.9 (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
+| 9.&nbsp;SetDataPdu | 19 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/SetDataPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SetDataPdu.html) | Section 7.5.10. Initializing or changing internal state information shall be communicated using a Set Data PDU. See 5.6.5.10 (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
+| 10.&nbsp;DataPdu | 20 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/DataPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DataPdu.html) | 7.5.11 Information issued in response to a Data Query PDU or Set Data PDU. Section 5.6.5.11 (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
+| 11.&nbsp;EventReportPdu | 21 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/EventReportPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EventReportPdu.html) | 7.5.12 Reports occurance of a significant event to the simulation manager. See 5.6.5.12. (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
+| 12.&nbsp;CommentPdu | 22 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/CommentPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_CommentPdu.html) | 7.5.13 Used to enter arbitrary messages (character strings, for example). See 5.6.5.13 (length of list found in field numberOfVariableDatumRecords) |
 
 | PDU type and PDUs | ID    | &nbsp; &nbsp; Assess |                  | IEEE Standard 1278.1-2012 |
 |-------------------|:-----:|:-----------------------------|:----------------:|:-------------------|
-| _DistributedEmissionsRegenerationFamilyPduType_ | _6_ | | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/DistributedEmissionsRegenerationFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DistributedEmissionsRegenerationFamilyPduType.html) | Section 5.3.7. Electronic Emissions. Abstract superclass for distributed emissions PDU |
-| 1.&nbsp;ElectromagneticEmissionPdu | 23 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/ElectromagneticEmissionPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ElectromagneticEmissionPdu.html) | 7.6.2 Communicate active electromagnetic emissions, including radar and radar-related electronic warfare (e.g., jamming). Exceptions include IFF interrogations and replies, navigation aids, voice, beacon and data radio communications, directed energy weapons, and laser ranging and designation systems, which are handled by other PDUs. Section 5.3.7.1. (length of list found in field numberOfSystems) |
-| 2.&nbsp;DesignatorPdu | 24 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/DesignatorPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DesignatorPdu.html) | 7.6.3 Handles designating operations. See 5.3.7.2. |
-| 3.&nbsp;IFFLayer2Pdu | 28 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/IFFLayer2Pdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_IFFLayer2Pdu.html) | Section 5.3.7.4.2 When present, layer 2 should follow layer 1 and have the following fields. This requires manual cleanup. the beamData attribute semantics are used in multiple ways. UNFINSISHED (length of list found in field numberOfParameters) |
-| 4.&nbsp;IFFPdu <br /> IdentificationFriendOrFoePdu | 28 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/IFFPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_IFFPdu.html) | 7.6.5.1 Information about military and civilian interrogators, transponders, and specific other electronic systems. See 5.7.6 |
-| 5.&nbsp;UnderwaterAcousticPdu | 29 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/UnderwaterAcousticPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_UnderwaterAcousticPdu.html) | 7.6.4 Information about underwater acoustic emmissions. See 5.7.5. (length of list found in field numberOfShafts numberOfAPAs numberOfUAEmitterSystems) |
-| 6.&nbsp;SEESPdu <br /> SupplementalEmissionEntityStatePdu | 30 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/SEESPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SEESPdu.html) | 7.6.6 Certain supplemental information on an entity’s physical state and emissions. See 5.7.7 (length of list found in field numberOfPropulsionSystems numberOfVectoringNozzleSystems) |
+| _DistributedEmissionsRegenerationFamilyPduType_ | _6_ | | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/DistributedEmissionsRegenerationFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DistributedEmissionsRegenerationFamilyPduType.html) | Section 5.3.7. Electronic Emissions. Abstract superclass for distributed emissions PDU |
+| 1.&nbsp;ElectromagneticEmissionPdu | 23 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/ElectromagneticEmissionPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ElectromagneticEmissionPdu.html) | 7.6.2 Communicate active electromagnetic emissions, including radar and radar-related electronic warfare (e.g., jamming). Exceptions include IFF interrogations and replies, navigation aids, voice, beacon and data radio communications, directed energy weapons, and laser ranging and designation systems, which are handled by other PDUs. Section 5.3.7.1. (length of list found in field numberOfSystems) |
+| 2.&nbsp;DesignatorPdu | 24 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/DesignatorPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DesignatorPdu.html) | 7.6.3 Handles designating operations. See 5.3.7.2. |
+| 3.&nbsp;IFFLayer2Pdu | 28 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/IFFLayer2Pdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_IFFLayer2Pdu.html) | Section 5.3.7.4.2 When present, layer 2 should follow layer 1 and have the following fields. This requires manual cleanup. the beamData attribute semantics are used in multiple ways. UNFINSISHED (length of list found in field numberOfParameters) |
+| 4.&nbsp;IFFPdu <br /> IdentificationFriendOrFoePdu | 28 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/IFFPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_IFFPdu.html) | 7.6.5.1 Information about military and civilian interrogators, transponders, and specific other electronic systems. See 5.7.6 |
+| 5.&nbsp;UnderwaterAcousticPdu | 29 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/UnderwaterAcousticPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_UnderwaterAcousticPdu.html) | 7.6.4 Information about underwater acoustic emmissions. See 5.7.5. (length of list found in field numberOfShafts numberOfAPAs numberOfUAEmitterSystems) |
+| 6.&nbsp;SEESPdu <br /> SupplementalEmissionEntityStatePdu | 30 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/SEESPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SEESPdu.html) | 7.6.6 Certain supplemental information on an entity’s physical state and emissions. See 5.7.7 (length of list found in field numberOfPropulsionSystems numberOfVectoringNozzleSystems) |
 
 | PDU type and PDUs | ID    | &nbsp; &nbsp; Assess |                  | IEEE Standard 1278.1-2012 |
 |-------------------|:-----:|:-----------------------------|:----------------:|:-------------------|
-| _EntityManagementFamilyPduType_ | _7_ | | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/EntityManagementFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EntityManagementFamilyPduType.html) | Managment of grouping of PDUs, and more. Section 7.8 |
-| 1.&nbsp;AggregateStatePdu | 33 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/AggregateStatePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_AggregateStatePdu.html) | 5.9.2.2 The Aggregate State PDU shall be used to communicate the state and other pertinent information about an aggregated unit. (length of list found in field numberOfDisAggregates numberOfDisEntities numberOfSilentAggregateTypes numberOfSilentEntityTypes numberOfVariableDatumRecords) |
-| 2.&nbsp;IsGroupOfPdu | 34 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/IsGroupOfPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_IsGroupOfPdu.html) | 5.9.3.1 The IsGroupOf PDU shall communicate information about the individual states of a group of entities, including state information that is necessary for the receiving simulation applications to represent the issuing group of entities in the simulation applications’ own simulation. (length of list found in field numberOfGroupedEntities) |
-| 3.&nbsp;TransferOwnershipPdu | 35 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/TransferOwnershipPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_TransferOwnershipPdu.html) | Information initiating the dyanic allocation and control of simulation entities between two simulation applications. |
-| 4.&nbsp;IsPartOfPdu | 36 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/IsPartOfPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_IsPartOfPdu.html) | 5.9.5 Used to request hierarchical linkage of separately hosted simulation entities |
+| _EntityManagementFamilyPduType_ | _7_ | | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/EntityManagementFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EntityManagementFamilyPduType.html) | Managment of grouping of PDUs, and more. Section 7.8 |
+| 1.&nbsp;AggregateStatePdu | 33 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/AggregateStatePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_AggregateStatePdu.html) | 5.9.2.2 The Aggregate State PDU shall be used to communicate the state and other pertinent information about an aggregated unit. (length of list found in field numberOfDisAggregates numberOfDisEntities numberOfSilentAggregateTypes numberOfSilentEntityTypes numberOfVariableDatumRecords) |
+| 2.&nbsp;IsGroupOfPdu | 34 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/IsGroupOfPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_IsGroupOfPdu.html) | 5.9.3.1 The IsGroupOf PDU shall communicate information about the individual states of a group of entities, including state information that is necessary for the receiving simulation applications to represent the issuing group of entities in the simulation applications’ own simulation. (length of list found in field numberOfGroupedEntities) |
+| 3.&nbsp;TransferOwnershipPdu | 35 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/TransferOwnershipPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_TransferOwnershipPdu.html) | Information initiating the dyanic allocation and control of simulation entities between two simulation applications. |
+| 4.&nbsp;IsPartOfPdu | 36 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/IsPartOfPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_IsPartOfPdu.html) | 5.9.5 Used to request hierarchical linkage of separately hosted simulation entities |
 
 | PDU type and PDUs | ID    | &nbsp; &nbsp; Assess |                  | IEEE Standard 1278.1-2012 |
 |-------------------|:-----:|:-----------------------------|:----------------:|:-------------------|
-| _MinefieldFamilyPduType_ | _8_ | | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/MinefieldFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_MinefieldFamilyPduType.html) | Abstract superclass for PDUs relating to minefields. Section 7.9 |
-| 1.&nbsp;MinefieldStatePdu | 37 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/MinefieldStatePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_MinefieldStatePdu.html) | 5.10.2 Communicate information about the minefield, including the location, perimeter, and types of mines contained within it. (length of list found in field numberOfPerimeterPoints numberOfMineTypes) |
-| 2.&nbsp;MinefieldQueryPdu | 38 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/MinefieldQueryPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_MinefieldQueryPdu.html) | 5.10.3 Contains information about the requesting entity and the region and mine types of interest to the requesting entity. (length of list found in field numberOfPerimeterPoints numberOfSensorTypes) |
-| 3.&nbsp;MinefieldDataPdu | 39 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/MinefieldDataPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_MinefieldDataPdu.html) | 5.10.4 Information about the location and status of a collection of mines in a minefield is conveyed through the Minefield Data PDU on an individual mine basis. (length of list found in field numberOfSensorTypes numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu) |
-| 4.&nbsp;MinefieldResponseNACKPdu | 40 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/MinefieldResponseNACKPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_MinefieldResponseNACKPdu.html) | 5.10.5 Contains information about the requesting entity and the PDU(s) that were not received in response to a query. NACK = Negative Acknowledgment. (length of list found in field numberOfMissingPdus) |
+| _MinefieldFamilyPduType_ | _8_ | | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/MinefieldFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_MinefieldFamilyPduType.html) | Abstract superclass for PDUs relating to minefields. Section 7.9 |
+| 1.&nbsp;MinefieldStatePdu | 37 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/MinefieldStatePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_MinefieldStatePdu.html) | 5.10.2 Communicate information about the minefield, including the location, perimeter, and types of mines contained within it. (length of list found in field numberOfPerimeterPoints numberOfMineTypes) |
+| 2.&nbsp;MinefieldQueryPdu | 38 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/MinefieldQueryPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_MinefieldQueryPdu.html) | 5.10.3 Contains information about the requesting entity and the region and mine types of interest to the requesting entity. (length of list found in field numberOfPerimeterPoints numberOfSensorTypes) |
+| 3.&nbsp;MinefieldDataPdu | 39 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/MinefieldDataPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_MinefieldDataPdu.html) | 5.10.4 Information about the location and status of a collection of mines in a minefield is conveyed through the Minefield Data PDU on an individual mine basis. (length of list found in field numberOfSensorTypes numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu) |
+| 4.&nbsp;MinefieldResponseNACKPdu | 40 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/MinefieldResponseNACKPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_MinefieldResponseNACKPdu.html) | 5.10.5 Contains information about the requesting entity and the PDU(s) that were not received in response to a query. NACK = Negative Acknowledgment. (length of list found in field numberOfMissingPdus) |
 
 | PDU type and PDUs | ID    | &nbsp; &nbsp; Assess |                  | IEEE Standard 1278.1-2012 |
 |-------------------|:-----:|:-----------------------------|:----------------:|:-------------------|
-| _SyntheticEnvironmentFamilyPduType_ | _9_ | | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/SyntheticEnvironmentFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SyntheticEnvironmentFamilyPduType.html) | Section 5.3.11: Abstract superclass for synthetic environment PDUs |
-| 1.&nbsp;EnvironmentalProcessPdu | 41 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/EnvironmentalProcessPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EnvironmentalProcessPdu.html) | 7.10.2 Used to communicate information about environmental effects and processes. (length of list found in field numberOfEnvironmentRecords) |
-| 2.&nbsp;GriddedDataPdu | 42 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/GriddedDataPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_GriddedDataPdu.html) | 7.10.3 Used to communicate information about global, spatially varying environmental effects. (length of list found in field numberOfGridAxes numberOfGridAxes) |
-| 3.&nbsp;PointObjectStatePdu | 43 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/PointObjectStatePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_PointObjectStatePdu.html) | 7.10.4 Used to communicate detailed information about the addition/modification of a synthetic environment object that is geometrically anchored to the terrain with a single point. |
-| 4.&nbsp;LinearObjectStatePdu | 44 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/LinearObjectStatePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_LinearObjectStatePdu.html) | 7.10.5 Used to communicate detailed information about the addition/modification of a synthetic environment object that is geometrically anchored to the terrain with one point and has size and orientation. (length of list found in field numberOfLinearSegments) |
-| 5.&nbsp;ArealObjectStatePdu | 45 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/ArealObjectStatePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ArealObjectStatePdu.html) | 7.10.6 Used to communicate detailed information about the addition/modification of a synthetic environment object that is geometrically anchored to the terrain with a set of three or more points that come to a closure. (length of list found in field numberOfPoints) |
+| _SyntheticEnvironmentFamilyPduType_ | _9_ | | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/SyntheticEnvironmentFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SyntheticEnvironmentFamilyPduType.html) | Section 5.3.11: Abstract superclass for synthetic environment PDUs |
+| 1.&nbsp;EnvironmentalProcessPdu | 41 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/EnvironmentalProcessPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EnvironmentalProcessPdu.html) | 7.10.2 Used to communicate information about environmental effects and processes. (length of list found in field numberOfEnvironmentRecords) |
+| 2.&nbsp;GriddedDataPdu | 42 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/GriddedDataPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_GriddedDataPdu.html) | 7.10.3 Used to communicate information about global, spatially varying environmental effects. (length of list found in field numberOfGridAxes numberOfGridAxes) |
+| 3.&nbsp;PointObjectStatePdu | 43 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/PointObjectStatePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_PointObjectStatePdu.html) | 7.10.4 Used to communicate detailed information about the addition/modification of a synthetic environment object that is geometrically anchored to the terrain with a single point. |
+| 4.&nbsp;LinearObjectStatePdu | 44 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/LinearObjectStatePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_LinearObjectStatePdu.html) | 7.10.5 Used to communicate detailed information about the addition/modification of a synthetic environment object that is geometrically anchored to the terrain with one point and has size and orientation. (length of list found in field numberOfLinearSegments) |
+| 5.&nbsp;ArealObjectStatePdu | 45 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/ArealObjectStatePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ArealObjectStatePdu.html) | 7.10.6 Used to communicate detailed information about the addition/modification of a synthetic environment object that is geometrically anchored to the terrain with a set of three or more points that come to a closure. (length of list found in field numberOfPoints) |
 
 | PDU type and PDUs | ID    | &nbsp; &nbsp; Assess |                  | IEEE Standard 1278.1-2012 |
 |-------------------|:-----:|:-----------------------------|:----------------:|:-------------------|
-| _SimulationManagementWithReliabilityFamilyPduType_ | _10_ | | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/SimulationManagementWithReliabilityFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SimulationManagementWithReliabilityFamilyPduType.html) | Simulation Management with Reliability PDUs with reliability service levels in a DIS exercise are an alternative to the Simulation Management PDUs, and may or may not be required for participation in an DIS exercise, |
-| 1.&nbsp;CreateEntityRPdu <br /> CreateEntityReliablePdu | 51 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/CreateEntityRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_CreateEntityRPdu.html) | 5.12.4.2 Serves the same function as the Create Entity PDU but with the addition of reliability service levels. |
-| 2.&nbsp;RemoveEntityRPdu <br /> RemoveEntityReliablePdu | 52 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/RemoveEntityRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_RemoveEntityRPdu.html) | 5.12.4.3 Contains the same information as found in the Remove Entity PDU with the addition of the level of reliability service to be used for the removal action being requested. |
-| 3.&nbsp;StartResumeRPdu <br /> StartResumeReliablePdu | 53 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/StartResumeRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_StartResumeRPdu.html) | 5.12.4.4 Serves the same function as the Start/Resume PDU but with the addition of reliability service levels |
-| 4.&nbsp;StopFreezeRPdu <br /> StopFreezeReliablePdu | 54 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/StopFreezeRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_StopFreezeRPdu.html) | 5.12.4.5 Serves the same function as the Stop/Freeze PDU (see 5.6.5.5.1) but with the addition of reliability service levels. |
-| 5.&nbsp;AcknowledgeRPdu <br /> AcknowledgeReliablePdu | 55 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/AcknowledgeRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_AcknowledgeRPdu.html) | 5.12.4.6 Serves the same function as the Acknowledge PDU but is used to acknowledge the receipt of a Create Entity-R PDU, a Remove Entity-R PDU, a Start/Resume-R PDU, or a Stop/Freeze-R PDU. |
-| 6.&nbsp;ActionRequestRPdu <br /> ActionRequestReliablePdu | 56 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/ActionRequestRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ActionRequestRPdu.html) | 5.12.4.7 Serves the same function as the Action Request PDU but with the addition of reliability service levels. (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
-| 7.&nbsp;ActionResponseRPdu <br /> ActionResponseReliablePdu | 57 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/ActionResponseRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ActionResponseRPdu.html) | 5.12.4.8 Serves the same function as the Action Response PDU (see 5.6.5.8.1) but is used to acknowledge the receipt of an Action Request-R PDU. (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
-| 8.&nbsp;DataQueryRPdu <br /> DataQueryReliablePdu | 58 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/DataQueryRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DataQueryRPdu.html) | 5.12.4.9 Serves the same function as the Data Query PDU but with the addition of reliability service levels (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
-| 9.&nbsp;SetDataRPdu <br /> SetDataReliablePdu | 59 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/SetDataRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SetDataRPdu.html) | 5.12.4.10 Serves the same function as the Set Data PDU but with the addition of reliability service levels. (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
-| 10.&nbsp;DataRPdu <br /> DataReliablePdu | 60 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/DataRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DataRPdu.html) | 5.12.4.11 Serves the same function as the Data PDU but with the addition of reliability service levels and is used in response to a Data Query-R PDU, a Data-R PDU, or a Set Data-R PDU. (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
-| 11.&nbsp;EventReportRPdu <br /> EventReportReliablePdu | 61 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/EventReportRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EventReportRPdu.html) | 5.12.4.12 Contains the same information as found in the Event Report PDU. (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
-| 12.&nbsp;CommentRPdu <br /> CommentReliablePdu | 62 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/CommentRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_CommentRPdu.html) | 5.12.4.13 Serves the same function as the Comment PDU. (length of list found in field numberOfVariableDatumRecords) |
-| 13.&nbsp;RecordRPdu <br /> RecordReliablePdu | 63 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/RecordRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_RecordRPdu.html) | 5.12.4.16 Used to respond to a Record Query-R PDU or a Set Record-R PDU. It is used to provide information requested in a Record Query-R PDU, to confirm the information received in a Set Record-R PDU, and to confirm the receipt of a periodic or unsolicited Record-R PDU when the acknowledged service level is used. (length of list found in field numberOfRecordSets) |
-| 14.&nbsp;SetRecordRPdu <br /> SetRecordReliablePdu | 64 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/SetRecordRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SetRecordRPdu.html) | 5.12.4.15 Used to set or change certain parameter values. These parameter values are contained within a record format as compared to the datum format used in the Set Data-R PDU. (length of list found in field numberOfRecordSets) |
-| 15.&nbsp;RecordQueryRPdu <br /> RecordQueryReliablePdu | 65 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/RecordQueryRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_RecordQueryRPdu.html) | 5.12.4.14 Used to communicate a request for data in record format. (length of list found in field numberOfRecords) |
+| _SimulationManagementWithReliabilityFamilyPduType_ | _10_ | | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/SimulationManagementWithReliabilityFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SimulationManagementWithReliabilityFamilyPduType.html) | Simulation Management with Reliability PDUs with reliability service levels in a DIS exercise are an alternative to the Simulation Management PDUs, and may or may not be required for participation in an DIS exercise, |
+| 1.&nbsp;CreateEntityRPdu <br /> CreateEntityReliablePdu | 51 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/CreateEntityRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_CreateEntityRPdu.html) | 5.12.4.2 Serves the same function as the Create Entity PDU but with the addition of reliability service levels. |
+| 2.&nbsp;RemoveEntityRPdu <br /> RemoveEntityReliablePdu | 52 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/RemoveEntityRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_RemoveEntityRPdu.html) | 5.12.4.3 Contains the same information as found in the Remove Entity PDU with the addition of the level of reliability service to be used for the removal action being requested. |
+| 3.&nbsp;StartResumeRPdu <br /> StartResumeReliablePdu | 53 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/StartResumeRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_StartResumeRPdu.html) | 5.12.4.4 Serves the same function as the Start/Resume PDU but with the addition of reliability service levels |
+| 4.&nbsp;StopFreezeRPdu <br /> StopFreezeReliablePdu | 54 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/StopFreezeRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_StopFreezeRPdu.html) | 5.12.4.5 Serves the same function as the Stop/Freeze PDU (see 5.6.5.5.1) but with the addition of reliability service levels. |
+| 5.&nbsp;AcknowledgeRPdu <br /> AcknowledgeReliablePdu | 55 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/AcknowledgeRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_AcknowledgeRPdu.html) | 5.12.4.6 Serves the same function as the Acknowledge PDU but is used to acknowledge the receipt of a Create Entity-R PDU, a Remove Entity-R PDU, a Start/Resume-R PDU, or a Stop/Freeze-R PDU. |
+| 6.&nbsp;ActionRequestRPdu <br /> ActionRequestReliablePdu | 56 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/ActionRequestRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ActionRequestRPdu.html) | 5.12.4.7 Serves the same function as the Action Request PDU but with the addition of reliability service levels. (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
+| 7.&nbsp;ActionResponseRPdu <br /> ActionResponseReliablePdu | 57 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/ActionResponseRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ActionResponseRPdu.html) | 5.12.4.8 Serves the same function as the Action Response PDU (see 5.6.5.8.1) but is used to acknowledge the receipt of an Action Request-R PDU. (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
+| 8.&nbsp;DataQueryRPdu <br /> DataQueryReliablePdu | 58 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/DataQueryRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DataQueryRPdu.html) | 5.12.4.9 Serves the same function as the Data Query PDU but with the addition of reliability service levels (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
+| 9.&nbsp;SetDataRPdu <br /> SetDataReliablePdu | 59 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/SetDataRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SetDataRPdu.html) | 5.12.4.10 Serves the same function as the Set Data PDU but with the addition of reliability service levels. (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
+| 10.&nbsp;DataRPdu <br /> DataReliablePdu | 60 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/DataRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DataRPdu.html) | 5.12.4.11 Serves the same function as the Data PDU but with the addition of reliability service levels and is used in response to a Data Query-R PDU, a Data-R PDU, or a Set Data-R PDU. (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
+| 11.&nbsp;EventReportRPdu <br /> EventReportReliablePdu | 61 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/EventReportRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EventReportRPdu.html) | 5.12.4.12 Contains the same information as found in the Event Report PDU. (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
+| 12.&nbsp;CommentRPdu <br /> CommentReliablePdu | 62 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/CommentRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_CommentRPdu.html) | 5.12.4.13 Serves the same function as the Comment PDU. (length of list found in field numberOfVariableDatumRecords) |
+| 13.&nbsp;RecordRPdu <br /> RecordReliablePdu | 63 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/RecordRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_RecordRPdu.html) | 5.12.4.16 Used to respond to a Record Query-R PDU or a Set Record-R PDU. It is used to provide information requested in a Record Query-R PDU, to confirm the information received in a Set Record-R PDU, and to confirm the receipt of a periodic or unsolicited Record-R PDU when the acknowledged service level is used. (length of list found in field numberOfRecordSets) |
+| 14.&nbsp;SetRecordRPdu <br /> SetRecordReliablePdu | 64 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/SetRecordRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SetRecordRPdu.html) | 5.12.4.15 Used to set or change certain parameter values. These parameter values are contained within a record format as compared to the datum format used in the Set Data-R PDU. (length of list found in field numberOfRecordSets) |
+| 15.&nbsp;RecordQueryRPdu <br /> RecordQueryReliablePdu | 65 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/RecordQueryRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_RecordQueryRPdu.html) | 5.12.4.14 Used to communicate a request for data in record format. (length of list found in field numberOfRecords) |
 
 | PDU type and PDUs | ID    | &nbsp; &nbsp; Assess |                  | IEEE Standard 1278.1-2012 |
 |-------------------|:-----:|:-----------------------------|:----------------:|:-------------------|
-| _LiveEntityFamilyPduType_ | _11_ | | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/LiveEntityFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_LiveEntityFamilyPduType.html) | Does not inherit from PduBase. See section 9. |
-| 1.&nbsp;TSPIPdu <br /> TimeSpacePositionInformationPdu | 46 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/TSPIPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_TSPIPdu.html) | 9.4.2 The Time Space Position Information (TSPI) PDU shall communicate information about the LE’s state vector. (length of list found in field systemSpecificDataLength) |
-| 2.&nbsp;AppearancePdu | 47 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/AppearancePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_AppearancePdu.html) | 9.4.3 Communicate information about the appearance of a live entity. |
-| 3.&nbsp;ArticulatedPartsPdu | 48 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/ArticulatedPartsPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ArticulatedPartsPdu.html) | 9.4.4 Communicate information about an entity’s articulated and attached parts. (length of list found in field numberOfParameterRecords) |
-| 4.&nbsp;LEFirePdu <br /> LiveEntityFirePdu | 49 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/LEFirePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_LEFirePdu.html) | 9.4.5 Representation of weapons fire in a DIS exercise involving LEs. |
-| 5.&nbsp;LEDetonationPdu <br /> LiveEntityDetonationPdu | 50 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/LEDetonationPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_LEDetonationPdu.html) | 9.4.6 Communicate information associated with the impact or detonation of a munition. |
+| _LiveEntityFamilyPduType_ | _11_ | | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/LiveEntityFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_LiveEntityFamilyPduType.html) | Does not inherit from PduBase. See section 9. |
+| 1.&nbsp;TSPIPdu <br /> TimeSpacePositionInformationPdu | 46 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/TSPIPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_TSPIPdu.html) | 9.4.2 The Time Space Position Information (TSPI) PDU shall communicate information about the LE’s state vector. (length of list found in field systemSpecificDataLength) |
+| 2.&nbsp;AppearancePdu | 47 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/AppearancePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_AppearancePdu.html) | 9.4.3 Communicate information about the appearance of a live entity. |
+| 3.&nbsp;ArticulatedPartsPdu | 48 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/ArticulatedPartsPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ArticulatedPartsPdu.html) | 9.4.4 Communicate information about an entity’s articulated and attached parts. (length of list found in field numberOfParameterRecords) |
+| 4.&nbsp;LEFirePdu <br /> LiveEntityFirePdu | 49 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/LEFirePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_LEFirePdu.html) | 9.4.5 Representation of weapons fire in a DIS exercise involving LEs. |
+| 5.&nbsp;LEDetonationPdu <br /> LiveEntityDetonationPdu | 50 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/LEDetonationPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_LEDetonationPdu.html) | 9.4.6 Communicate information associated with the impact or detonation of a munition. |
 
 | PDU type and PDUs | ID    | &nbsp; &nbsp; Assess |                  | IEEE Standard 1278.1-2012 |
 |-------------------|:-----:|:-----------------------------|:----------------:|:-------------------|
-| _LiveEntityPduType_ | _11_ | | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/LiveEntityPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_LiveEntityPduType.html) | The live entity PDUs have a slightly different header |
+| _LiveEntityPduType_ | _11_ | | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/LiveEntityPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_LiveEntityPduType.html) | The live entity PDUs have a slightly different header |
 
 | PDU type and PDUs | ID    | &nbsp; &nbsp; Assess |                  | IEEE Standard 1278.1-2012 |
 |-------------------|:-----:|:-----------------------------|:----------------:|:-------------------|
-| _InformationOperationsFamilyPduType_ | _13_ | | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/InformationOperationsFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_InformationOperationsFamilyPduType.html) | Information operations (IO) are the integrated employment of electronic warfare (EW), computer network operations (CNO), psychological operations (PSYOP), military deception (MILDEC), and operations security (OPSEC), along with specific supporting capabilities, to influence, disrupt, corrupt, or otherwise affect enemy information and decision making while protecting friendly information operations. |
-| 1.&nbsp;InformationOperationsActionPdu | 70 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/InformationOperationsActionPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_InformationOperationsActionPdu.html) | 5.13.3.1 Used to communicate an IO attack or the effects of an IO attack on one or more target entities. (length of list found in field numberOfIORecords) |
-| 2.&nbsp;InformationOperationsReportPdu | 71 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/InformationOperationsReportPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_InformationOperationsReportPdu.html) | 5.13.4.1 Used to communicate the effects of an IO attack on one or more target entities. (length of list found in field numberOfIORecords) |
+| _InformationOperationsFamilyPduType_ | _13_ | | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/InformationOperationsFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_InformationOperationsFamilyPduType.html) | Information operations (IO) are the integrated employment of electronic warfare (EW), computer network operations (CNO), psychological operations (PSYOP), military deception (MILDEC), and operations security (OPSEC), along with specific supporting capabilities, to influence, disrupt, corrupt, or otherwise affect enemy information and decision making while protecting friendly information operations. |
+| 1.&nbsp;InformationOperationsActionPdu | 70 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/InformationOperationsActionPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_InformationOperationsActionPdu.html) | 5.13.3.1 Used to communicate an IO attack or the effects of an IO attack on one or more target entities. (length of list found in field numberOfIORecords) |
+| 2.&nbsp;InformationOperationsReportPdu | 71 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/InformationOperationsReportPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_InformationOperationsReportPdu.html) | 5.13.4.1 Used to communicate the effects of an IO attack on one or more target entities. (length of list found in field numberOfIORecords) |
 
diff --git a/assignments/src/MV3500Cohort2021JulySeptember/homework4/Allen/AllPduAssessmentAllen.md b/assignments/src/MV3500Cohort2021JulySeptember/homework4/Allen/AllPduAssessmentAllen.md
index 451e6374b4b0f0489c2dae43d89f0eff8caed333..7d0b0d44f65849a2c5baf91bec1cbdad9e7514c6 100644
--- a/assignments/src/MV3500Cohort2021JulySeptember/homework4/Allen/AllPduAssessmentAllen.md
+++ b/assignments/src/MV3500Cohort2021JulySeptember/homework4/Allen/AllPduAssessmentAllen.md
@@ -2,126 +2,126 @@
 
 | PDU type and PDUs | ID    | &nbsp; &nbsp; Assess |                  | IEEE Standard 1278.1-2012 |
 |-------------------|:-----:|:-----------------------------|:----------------:|:-------------------|
-| _EntityInformationInteractionFamilyPduType_ | _1_ | | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/EntityInformationInteractionFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EntityInformationInteractionFamilyPduType.html) | Section 5.3.3. Common superclass for EntityState, Collision, collision-elastic, and entity state update PDUs. |
-| 1.&nbsp;EntityStatePdu | 1 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/EntityStatePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EntityStatePdu.html) | 7.2.2. Represents the position and state of one entity in the world. See 5.3.2. (length of list found in field numberOfVariableParameters) |
-| 2.&nbsp;CollisionPdu | 4 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/CollisionPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_CollisionPdu.html) | 7.2.3 Collisions between entities shall be communicated by issuing a Collision PDU. See 5.3.3. |
-| 3.&nbsp;CollisionElasticPdu | 66 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/CollisionElasticPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_CollisionElasticPdu.html) | 7.2.4 Information about elastic collisions in a DIS exercise shall be communicated using a Collision-Elastic PDU. See 5.3.4. |
-| 4.&nbsp;EntityStateUpdatePdu | 67 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/EntityStateUpdatePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EntityStateUpdatePdu.html) | 7.2.5. Nonstatic information about a particular entity may be communicated by issuing an Entity State Update PDU. 5.3.5. (length of list found in field numberOfVariableParameters) |
-| 5.&nbsp;AttributePdu | 72 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/AttributePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_AttributePdu.html) | 7.2.6. Information about individual attributes for a particular entity, other object, or event may be communicated using an Attribute PDU. The Attribute PDU shall not be used to exchange data available in any other PDU except where explicitly mentioned in the PDU issuance instructions within this standard. See 5.3.6. (length of list found in field numberAttributeRecordSet) |
+| _EntityInformationInteractionFamilyPduType_ | _1_ | | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/EntityInformationInteractionFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EntityInformationInteractionFamilyPduType.html) | Section 5.3.3. Common superclass for EntityState, Collision, collision-elastic, and entity state update PDUs. |
+| 1.&nbsp;EntityStatePdu | 1 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/EntityStatePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EntityStatePdu.html) | 7.2.2. Represents the position and state of one entity in the world. See 5.3.2. (length of list found in field numberOfVariableParameters) |
+| 2.&nbsp;CollisionPdu | 4 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/CollisionPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_CollisionPdu.html) | 7.2.3 Collisions between entities shall be communicated by issuing a Collision PDU. See 5.3.3. |
+| 3.&nbsp;CollisionElasticPdu | 66 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/CollisionElasticPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_CollisionElasticPdu.html) | 7.2.4 Information about elastic collisions in a DIS exercise shall be communicated using a Collision-Elastic PDU. See 5.3.4. |
+| 4.&nbsp;EntityStateUpdatePdu | 67 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/EntityStateUpdatePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EntityStateUpdatePdu.html) | 7.2.5. Nonstatic information about a particular entity may be communicated by issuing an Entity State Update PDU. 5.3.5. (length of list found in field numberOfVariableParameters) |
+| 5.&nbsp;AttributePdu | 72 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/AttributePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_AttributePdu.html) | 7.2.6. Information about individual attributes for a particular entity, other object, or event may be communicated using an Attribute PDU. The Attribute PDU shall not be used to exchange data available in any other PDU except where explicitly mentioned in the PDU issuance instructions within this standard. See 5.3.6. (length of list found in field numberAttributeRecordSet) |
 
 | PDU type and PDUs | ID    | &nbsp; &nbsp; Assess |                  | IEEE Standard 1278.1-2012 |
 |-------------------|:-----:|:-----------------------------|:----------------:|:-------------------|
-| _WarfareFamilyPduType_ | _2_ | | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/WarfareFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_WarfareFamilyPduType.html) | Abstract superclass for fire and detonation pdus that have shared information. Section 7.3 |
-| 1.&nbsp;FirePdu | 2 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/FirePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_FirePdu.html) | 7.3.2 Used to communicate the firing of a weapon or expendable. |
-| 2.&nbsp;DetonationPdu | 3 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/DetonationPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DetonationPdu.html) | 7.3.3 Used to communicate the detonation or impact of munitions, as well as non-munition explosions, the burst or initial bloom of chaff, and the ignition of a flare. (length of list found in field numberOfVariableParameters) |
-| 3.&nbsp;DirectedEnergyFirePdu | 68 | <ul> <li> - [1 ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/DirectedEnergyFirePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DirectedEnergyFirePdu.html) | 7.3.4 Used to communicate the firing of a directed energy weapon. (length of list found in field numberOfDERecords) |
-| 4.&nbsp;EntityDamageStatusPdu | 69 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/EntityDamageStatusPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EntityDamageStatusPdu.html) | 7.3.5 Used to communicate detailed damage information sustained by an entity regardless of the source of the damage. (length of list found in field numberOfDamageDescription) |
+| _WarfareFamilyPduType_ | _2_ | | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/WarfareFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_WarfareFamilyPduType.html) | Abstract superclass for fire and detonation pdus that have shared information. Section 7.3 |
+| 1.&nbsp;FirePdu | 2 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/FirePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_FirePdu.html) | 7.3.2 Used to communicate the firing of a weapon or expendable. |
+| 2.&nbsp;DetonationPdu | 3 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/DetonationPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DetonationPdu.html) | 7.3.3 Used to communicate the detonation or impact of munitions, as well as non-munition explosions, the burst or initial bloom of chaff, and the ignition of a flare. (length of list found in field numberOfVariableParameters) |
+| 3.&nbsp;DirectedEnergyFirePdu | 68 | <ul> <li> - [1 ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/DirectedEnergyFirePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DirectedEnergyFirePdu.html) | 7.3.4 Used to communicate the firing of a directed energy weapon. (length of list found in field numberOfDERecords) |
+| 4.&nbsp;EntityDamageStatusPdu | 69 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/EntityDamageStatusPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EntityDamageStatusPdu.html) | 7.3.5 Used to communicate detailed damage information sustained by an entity regardless of the source of the damage. (length of list found in field numberOfDamageDescription) |
 
 | PDU type and PDUs | ID    | &nbsp; &nbsp; Assess |                  | IEEE Standard 1278.1-2012 |
 |-------------------|:-----:|:-----------------------------|:----------------:|:-------------------|
-| _LogisticsFamilyPduType_ | _3_ | | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/LogisticsFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_LogisticsFamilyPduType.html) | Abstract superclass for logistics PDUs. Section 7.4 |
-| 1.&nbsp;ServiceRequestPdu | 5 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/ServiceRequestPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ServiceRequestPdu.html) | 5.5.5 Communicate information associated with one entity requesting a service from another. (length of list found in field numberOfSupplyTypes) |
-| 2.&nbsp;ResupplyOfferPdu | 6 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/ResupplyOfferPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ResupplyOfferPdu.html) | 5.5.6 Communicate the offer of supplies by a supplying entity to a receiving entity. (length of list found in field numberOfSupplyTypes) |
-| 3.&nbsp;ResupplyReceivedPdu | 7 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/ResupplyReceivedPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ResupplyReceivedPdu.html) | 5.5.7 Used to acknowledge the receipt of supplies by the receiving entity. (length of list found in field numberOfSupplyTypes) |
-| 4.&nbsp;ResupplyCancelPdu | 8 | <ul> <li> - [1 ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/ResupplyCancelPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ResupplyCancelPdu.html) | 5.5.8 Used to communicate the canceling of a resupply service provided through logistics support. |
-| 5.&nbsp;RepairCompletePdu | 9 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/RepairCompletePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_RepairCompletePdu.html) | 5.5.10 Used by the repairing entity to communicate the repair that has been performed for the entity that requested repair service. |
-| 6.&nbsp;RepairResponsePdu | 10 | <ul> <li> - [1 ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/RepairResponsePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_RepairResponsePdu.html) | 5.5.11 used by the receiving entity to acknowledge the receipt of a Repair Complete PDU |
+| _LogisticsFamilyPduType_ | _3_ | | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/LogisticsFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_LogisticsFamilyPduType.html) | Abstract superclass for logistics PDUs. Section 7.4 |
+| 1.&nbsp;ServiceRequestPdu | 5 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/ServiceRequestPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ServiceRequestPdu.html) | 5.5.5 Communicate information associated with one entity requesting a service from another. (length of list found in field numberOfSupplyTypes) |
+| 2.&nbsp;ResupplyOfferPdu | 6 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/ResupplyOfferPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ResupplyOfferPdu.html) | 5.5.6 Communicate the offer of supplies by a supplying entity to a receiving entity. (length of list found in field numberOfSupplyTypes) |
+| 3.&nbsp;ResupplyReceivedPdu | 7 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/ResupplyReceivedPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ResupplyReceivedPdu.html) | 5.5.7 Used to acknowledge the receipt of supplies by the receiving entity. (length of list found in field numberOfSupplyTypes) |
+| 4.&nbsp;ResupplyCancelPdu | 8 | <ul> <li> - [1 ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/ResupplyCancelPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ResupplyCancelPdu.html) | 5.5.8 Used to communicate the canceling of a resupply service provided through logistics support. |
+| 5.&nbsp;RepairCompletePdu | 9 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/RepairCompletePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_RepairCompletePdu.html) | 5.5.10 Used by the repairing entity to communicate the repair that has been performed for the entity that requested repair service. |
+| 6.&nbsp;RepairResponsePdu | 10 | <ul> <li> - [1 ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/RepairResponsePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_RepairResponsePdu.html) | 5.5.11 used by the receiving entity to acknowledge the receipt of a Repair Complete PDU |
 
 | PDU type and PDUs | ID    | &nbsp; &nbsp; Assess |                  | IEEE Standard 1278.1-2012 |
 |-------------------|:-----:|:-----------------------------|:----------------:|:-------------------|
-| _RadioCommunicationsFamilyPduType_ | _4_ | | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/RadioCommunicationsFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_RadioCommunicationsFamilyPduType.html) | Abstract superclass for radio communications PDUs. Section 7.7 |
-| 1.&nbsp;TransmitterPdu | 25 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/TransmitterPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_TransmitterPdu.html) | 5.8.3 Communicates the state of a particular radio transmitter or simple intercom. (length of list found in field modulationParameterCount antennaPatternCount) |
-| 2.&nbsp;SignalPdu | 26 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/SignalPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SignalPdu.html) | 5.8.4 Conveys the audio or digital data carried by the simulated radio or intercom transmission. |
-| 3.&nbsp;ReceiverPdu | 27 | <ul> <li> - [1 ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/ReceiverPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ReceiverPdu.html) | 5.8.5 Communicates the state of a particular radio receiver. Its primary application is in communicating state information to radio network monitors, data loggers, and similar applications for use in debugging, supervision, and after-action review. |
-| 4.&nbsp;IntercomSignalPdu | 31 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/IntercomSignalPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_IntercomSignalPdu.html) | 5.8.6 Conveys the audio or digital data that is used to communicate between simulated intercom devices (length of list found in field dataLength) |
-| 5.&nbsp;IntercomControlPdu | 32 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/IntercomControlPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_IntercomControlPdu.html) | 5.8.7 Communicates the state of a particular intercom device, request an action of another intercom device, or respond to an action request. (length of list found in field intercomParametersLength) |
+| _RadioCommunicationsFamilyPduType_ | _4_ | | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/RadioCommunicationsFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_RadioCommunicationsFamilyPduType.html) | Abstract superclass for radio communications PDUs. Section 7.7 |
+| 1.&nbsp;TransmitterPdu | 25 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/TransmitterPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_TransmitterPdu.html) | 5.8.3 Communicates the state of a particular radio transmitter or simple intercom. (length of list found in field modulationParameterCount antennaPatternCount) |
+| 2.&nbsp;SignalPdu | 26 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/SignalPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SignalPdu.html) | 5.8.4 Conveys the audio or digital data carried by the simulated radio or intercom transmission. |
+| 3.&nbsp;ReceiverPdu | 27 | <ul> <li> - [1 ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/ReceiverPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ReceiverPdu.html) | 5.8.5 Communicates the state of a particular radio receiver. Its primary application is in communicating state information to radio network monitors, data loggers, and similar applications for use in debugging, supervision, and after-action review. |
+| 4.&nbsp;IntercomSignalPdu | 31 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/IntercomSignalPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_IntercomSignalPdu.html) | 5.8.6 Conveys the audio or digital data that is used to communicate between simulated intercom devices (length of list found in field dataLength) |
+| 5.&nbsp;IntercomControlPdu | 32 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/IntercomControlPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_IntercomControlPdu.html) | 5.8.7 Communicates the state of a particular intercom device, request an action of another intercom device, or respond to an action request. (length of list found in field intercomParametersLength) |
 
 | PDU type and PDUs | ID    | &nbsp; &nbsp; Assess |                  | IEEE Standard 1278.1-2012 |
 |-------------------|:-----:|:-----------------------------|:----------------:|:-------------------|
-| _SimulationManagementFamilyPduType_ | _5_ | | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/SimulationManagementFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SimulationManagementFamilyPduType.html) | First part of a simulation management (SIMAN) PDU and SIMAN-Reliability (SIMAN-R) PDU. Sectionn 6.2.81 |
-| 1.&nbsp;CreateEntityPdu | 11 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/CreateEntityPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_CreateEntityPdu.html) | Section 7.5.2. Create a new entity. See 5.6.5.2. |
-| 2.&nbsp;RemoveEntityPdu | 12 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/RemoveEntityPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_RemoveEntityPdu.html) | Section 7.5.3 The removal of an entity from an exercise shall be communicated with a Remove Entity PDU. See 5.6.5.3. |
-| 3.&nbsp;StartResumePdu | 13 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/StartResumePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_StartResumePdu.html) | Section 7.5.4. Start or resume an entity or exercise. See 5.6.5.4. |
-| 4.&nbsp;StopFreezePdu | 14 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/StopFreezePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_StopFreezePdu.html) | Section 7.5.5. Stop or freeze an enity or exercise. See 5.6.5.5 |
-| 5.&nbsp;AcknowledgePdu | 15 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/AcknowledgePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_AcknowledgePdu.html) | 7.5.6 Acknowledges the receipt of a Start/Resume PDU, Stop/Freeze PDU, Create Entity PDU, or Remove Entity PDU. See 5.6.5.6. |
-| 6.&nbsp;ActionRequestPdu | 16 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/ActionRequestPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ActionRequestPdu.html) | 7.5.7 A request from an SM to a managed entity to perform a specified action. See 5.6.5.7 (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
-| 7.&nbsp;ActionResponsePdu | 17 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/ActionResponsePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ActionResponsePdu.html) | Section 7.5.8. When an entity receives an Action Request PDU, that entity shall acknowledge the receipt of the Action Request PDU with an Action Response PDU. See 5.6.5.8. (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
-| 8.&nbsp;DataQueryPdu | 18 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/DataQueryPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DataQueryPdu.html) | Section 7.5.9. Request for data from an entity. See 5.6.5.9 (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
-| 9.&nbsp;SetDataPdu | 19 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/SetDataPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SetDataPdu.html) | Section 7.5.10. Initializing or changing internal state information shall be communicated using a Set Data PDU. See 5.6.5.10 (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
-| 10.&nbsp;DataPdu | 20 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/DataPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DataPdu.html) | 7.5.11 Information issued in response to a Data Query PDU or Set Data PDU. Section 5.6.5.11 (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
-| 11.&nbsp;EventReportPdu | 21 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/EventReportPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EventReportPdu.html) | 7.5.12 Reports occurance of a significant event to the simulation manager. See 5.6.5.12. (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
-| 12.&nbsp;CommentPdu | 22 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/CommentPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_CommentPdu.html) | 7.5.13 Used to enter arbitrary messages (character strings, for example). See 5.6.5.13 (length of list found in field numberOfVariableDatumRecords) |
+| _SimulationManagementFamilyPduType_ | _5_ | | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/SimulationManagementFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SimulationManagementFamilyPduType.html) | First part of a simulation management (SIMAN) PDU and SIMAN-Reliability (SIMAN-R) PDU. Sectionn 6.2.81 |
+| 1.&nbsp;CreateEntityPdu | 11 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/CreateEntityPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_CreateEntityPdu.html) | Section 7.5.2. Create a new entity. See 5.6.5.2. |
+| 2.&nbsp;RemoveEntityPdu | 12 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/RemoveEntityPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_RemoveEntityPdu.html) | Section 7.5.3 The removal of an entity from an exercise shall be communicated with a Remove Entity PDU. See 5.6.5.3. |
+| 3.&nbsp;StartResumePdu | 13 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/StartResumePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_StartResumePdu.html) | Section 7.5.4. Start or resume an entity or exercise. See 5.6.5.4. |
+| 4.&nbsp;StopFreezePdu | 14 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/StopFreezePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_StopFreezePdu.html) | Section 7.5.5. Stop or freeze an enity or exercise. See 5.6.5.5 |
+| 5.&nbsp;AcknowledgePdu | 15 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/AcknowledgePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_AcknowledgePdu.html) | 7.5.6 Acknowledges the receipt of a Start/Resume PDU, Stop/Freeze PDU, Create Entity PDU, or Remove Entity PDU. See 5.6.5.6. |
+| 6.&nbsp;ActionRequestPdu | 16 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/ActionRequestPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ActionRequestPdu.html) | 7.5.7 A request from an SM to a managed entity to perform a specified action. See 5.6.5.7 (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
+| 7.&nbsp;ActionResponsePdu | 17 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/ActionResponsePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ActionResponsePdu.html) | Section 7.5.8. When an entity receives an Action Request PDU, that entity shall acknowledge the receipt of the Action Request PDU with an Action Response PDU. See 5.6.5.8. (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
+| 8.&nbsp;DataQueryPdu | 18 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/DataQueryPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DataQueryPdu.html) | Section 7.5.9. Request for data from an entity. See 5.6.5.9 (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
+| 9.&nbsp;SetDataPdu | 19 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/SetDataPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SetDataPdu.html) | Section 7.5.10. Initializing or changing internal state information shall be communicated using a Set Data PDU. See 5.6.5.10 (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
+| 10.&nbsp;DataPdu | 20 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/DataPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DataPdu.html) | 7.5.11 Information issued in response to a Data Query PDU or Set Data PDU. Section 5.6.5.11 (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
+| 11.&nbsp;EventReportPdu | 21 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/EventReportPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EventReportPdu.html) | 7.5.12 Reports occurance of a significant event to the simulation manager. See 5.6.5.12. (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
+| 12.&nbsp;CommentPdu | 22 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/CommentPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_CommentPdu.html) | 7.5.13 Used to enter arbitrary messages (character strings, for example). See 5.6.5.13 (length of list found in field numberOfVariableDatumRecords) |
 
 | PDU type and PDUs | ID    | &nbsp; &nbsp; Assess |                  | IEEE Standard 1278.1-2012 |
 |-------------------|:-----:|:-----------------------------|:----------------:|:-------------------|
-| _DistributedEmissionsRegenerationFamilyPduType_ | _6_ | | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/DistributedEmissionsRegenerationFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DistributedEmissionsRegenerationFamilyPduType.html) | Section 5.3.7. Electronic Emissions. Abstract superclass for distributed emissions PDU |
-| 1.&nbsp;ElectromagneticEmissionPdu | 23 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/ElectromagneticEmissionPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ElectromagneticEmissionPdu.html) | 7.6.2 Communicate active electromagnetic emissions, including radar and radar-related electronic warfare (e.g., jamming). Exceptions include IFF interrogations and replies, navigation aids, voice, beacon and data radio communications, directed energy weapons, and laser ranging and designation systems, which are handled by other PDUs. Section 5.3.7.1. (length of list found in field numberOfSystems) |
-| 2.&nbsp;DesignatorPdu | 24 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/DesignatorPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DesignatorPdu.html) | 7.6.3 Handles designating operations. See 5.3.7.2. |
-| 3.&nbsp;IFFLayer2Pdu | 28 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/IFFLayer2Pdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_IFFLayer2Pdu.html) | Section 5.3.7.4.2 When present, layer 2 should follow layer 1 and have the following fields. This requires manual cleanup. the beamData attribute semantics are used in multiple ways. UNFINSISHED (length of list found in field numberOfParameters) |
-| 4.&nbsp;IFFPdu <br /> IdentificationFriendOrFoePdu | 28 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/IFFPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_IFFPdu.html) | 7.6.5.1 Information about military and civilian interrogators, transponders, and specific other electronic systems. See 5.7.6 |
-| 5.&nbsp;UnderwaterAcousticPdu | 29 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/UnderwaterAcousticPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_UnderwaterAcousticPdu.html) | 7.6.4 Information about underwater acoustic emmissions. See 5.7.5. (length of list found in field numberOfShafts numberOfAPAs numberOfUAEmitterSystems) |
-| 6.&nbsp;SEESPdu <br /> SupplementalEmissionEntityStatePdu | 30 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/SEESPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SEESPdu.html) | 7.6.6 Certain supplemental information on an entity’s physical state and emissions. See 5.7.7 (length of list found in field numberOfPropulsionSystems numberOfVectoringNozzleSystems) |
+| _DistributedEmissionsRegenerationFamilyPduType_ | _6_ | | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/DistributedEmissionsRegenerationFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DistributedEmissionsRegenerationFamilyPduType.html) | Section 5.3.7. Electronic Emissions. Abstract superclass for distributed emissions PDU |
+| 1.&nbsp;ElectromagneticEmissionPdu | 23 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/ElectromagneticEmissionPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ElectromagneticEmissionPdu.html) | 7.6.2 Communicate active electromagnetic emissions, including radar and radar-related electronic warfare (e.g., jamming). Exceptions include IFF interrogations and replies, navigation aids, voice, beacon and data radio communications, directed energy weapons, and laser ranging and designation systems, which are handled by other PDUs. Section 5.3.7.1. (length of list found in field numberOfSystems) |
+| 2.&nbsp;DesignatorPdu | 24 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/DesignatorPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DesignatorPdu.html) | 7.6.3 Handles designating operations. See 5.3.7.2. |
+| 3.&nbsp;IFFLayer2Pdu | 28 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/IFFLayer2Pdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_IFFLayer2Pdu.html) | Section 5.3.7.4.2 When present, layer 2 should follow layer 1 and have the following fields. This requires manual cleanup. the beamData attribute semantics are used in multiple ways. UNFINSISHED (length of list found in field numberOfParameters) |
+| 4.&nbsp;IFFPdu <br /> IdentificationFriendOrFoePdu | 28 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/IFFPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_IFFPdu.html) | 7.6.5.1 Information about military and civilian interrogators, transponders, and specific other electronic systems. See 5.7.6 |
+| 5.&nbsp;UnderwaterAcousticPdu | 29 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/UnderwaterAcousticPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_UnderwaterAcousticPdu.html) | 7.6.4 Information about underwater acoustic emmissions. See 5.7.5. (length of list found in field numberOfShafts numberOfAPAs numberOfUAEmitterSystems) |
+| 6.&nbsp;SEESPdu <br /> SupplementalEmissionEntityStatePdu | 30 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/SEESPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SEESPdu.html) | 7.6.6 Certain supplemental information on an entity’s physical state and emissions. See 5.7.7 (length of list found in field numberOfPropulsionSystems numberOfVectoringNozzleSystems) |
 
 | PDU type and PDUs | ID    | &nbsp; &nbsp; Assess |                  | IEEE Standard 1278.1-2012 |
 |-------------------|:-----:|:-----------------------------|:----------------:|:-------------------|
-| _EntityManagementFamilyPduType_ | _7_ | | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/EntityManagementFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EntityManagementFamilyPduType.html) | Managment of grouping of PDUs, and more. Section 7.8 |
-| 1.&nbsp;AggregateStatePdu | 33 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/AggregateStatePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_AggregateStatePdu.html) | 5.9.2.2 The Aggregate State PDU shall be used to communicate the state and other pertinent information about an aggregated unit. (length of list found in field numberOfDisAggregates numberOfDisEntities numberOfSilentAggregateTypes numberOfSilentEntityTypes numberOfVariableDatumRecords) |
-| 2.&nbsp;IsGroupOfPdu | 34 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/IsGroupOfPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_IsGroupOfPdu.html) | 5.9.3.1 The IsGroupOf PDU shall communicate information about the individual states of a group of entities, including state information that is necessary for the receiving simulation applications to represent the issuing group of entities in the simulation applications’ own simulation. (length of list found in field numberOfGroupedEntities) |
-| 3.&nbsp;TransferOwnershipPdu | 35 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/TransferOwnershipPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_TransferOwnershipPdu.html) | Information initiating the dyanic allocation and control of simulation entities between two simulation applications. |
-| 4.&nbsp;IsPartOfPdu | 36 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/IsPartOfPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_IsPartOfPdu.html) | 5.9.5 Used to request hierarchical linkage of separately hosted simulation entities |
+| _EntityManagementFamilyPduType_ | _7_ | | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/EntityManagementFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EntityManagementFamilyPduType.html) | Managment of grouping of PDUs, and more. Section 7.8 |
+| 1.&nbsp;AggregateStatePdu | 33 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/AggregateStatePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_AggregateStatePdu.html) | 5.9.2.2 The Aggregate State PDU shall be used to communicate the state and other pertinent information about an aggregated unit. (length of list found in field numberOfDisAggregates numberOfDisEntities numberOfSilentAggregateTypes numberOfSilentEntityTypes numberOfVariableDatumRecords) |
+| 2.&nbsp;IsGroupOfPdu | 34 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/IsGroupOfPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_IsGroupOfPdu.html) | 5.9.3.1 The IsGroupOf PDU shall communicate information about the individual states of a group of entities, including state information that is necessary for the receiving simulation applications to represent the issuing group of entities in the simulation applications’ own simulation. (length of list found in field numberOfGroupedEntities) |
+| 3.&nbsp;TransferOwnershipPdu | 35 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/TransferOwnershipPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_TransferOwnershipPdu.html) | Information initiating the dyanic allocation and control of simulation entities between two simulation applications. |
+| 4.&nbsp;IsPartOfPdu | 36 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/IsPartOfPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_IsPartOfPdu.html) | 5.9.5 Used to request hierarchical linkage of separately hosted simulation entities |
 
 | PDU type and PDUs | ID    | &nbsp; &nbsp; Assess |                  | IEEE Standard 1278.1-2012 |
 |-------------------|:-----:|:-----------------------------|:----------------:|:-------------------|
-| _MinefieldFamilyPduType_ | _8_ | | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/MinefieldFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_MinefieldFamilyPduType.html) | Abstract superclass for PDUs relating to minefields. Section 7.9 |
-| 1.&nbsp;MinefieldStatePdu | 37 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/MinefieldStatePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_MinefieldStatePdu.html) | 5.10.2 Communicate information about the minefield, including the location, perimeter, and types of mines contained within it. (length of list found in field numberOfPerimeterPoints numberOfMineTypes) |
-| 2.&nbsp;MinefieldQueryPdu | 38 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/MinefieldQueryPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_MinefieldQueryPdu.html) | 5.10.3 Contains information about the requesting entity and the region and mine types of interest to the requesting entity. (length of list found in field numberOfPerimeterPoints numberOfSensorTypes) |
-| 3.&nbsp;MinefieldDataPdu | 39 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/MinefieldDataPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_MinefieldDataPdu.html) | 5.10.4 Information about the location and status of a collection of mines in a minefield is conveyed through the Minefield Data PDU on an individual mine basis. (length of list found in field numberOfSensorTypes numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu) |
-| 4.&nbsp;MinefieldResponseNACKPdu | 40 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/MinefieldResponseNACKPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_MinefieldResponseNACKPdu.html) | 5.10.5 Contains information about the requesting entity and the PDU(s) that were not received in response to a query. NACK = Negative Acknowledgment. (length of list found in field numberOfMissingPdus) |
+| _MinefieldFamilyPduType_ | _8_ | | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/MinefieldFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_MinefieldFamilyPduType.html) | Abstract superclass for PDUs relating to minefields. Section 7.9 |
+| 1.&nbsp;MinefieldStatePdu | 37 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/MinefieldStatePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_MinefieldStatePdu.html) | 5.10.2 Communicate information about the minefield, including the location, perimeter, and types of mines contained within it. (length of list found in field numberOfPerimeterPoints numberOfMineTypes) |
+| 2.&nbsp;MinefieldQueryPdu | 38 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/MinefieldQueryPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_MinefieldQueryPdu.html) | 5.10.3 Contains information about the requesting entity and the region and mine types of interest to the requesting entity. (length of list found in field numberOfPerimeterPoints numberOfSensorTypes) |
+| 3.&nbsp;MinefieldDataPdu | 39 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/MinefieldDataPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_MinefieldDataPdu.html) | 5.10.4 Information about the location and status of a collection of mines in a minefield is conveyed through the Minefield Data PDU on an individual mine basis. (length of list found in field numberOfSensorTypes numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu numberOfMinesInThisPdu) |
+| 4.&nbsp;MinefieldResponseNACKPdu | 40 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/MinefieldResponseNACKPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_MinefieldResponseNACKPdu.html) | 5.10.5 Contains information about the requesting entity and the PDU(s) that were not received in response to a query. NACK = Negative Acknowledgment. (length of list found in field numberOfMissingPdus) |
 
 | PDU type and PDUs | ID    | &nbsp; &nbsp; Assess |                  | IEEE Standard 1278.1-2012 |
 |-------------------|:-----:|:-----------------------------|:----------------:|:-------------------|
-| _SyntheticEnvironmentFamilyPduType_ | _9_ | | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/SyntheticEnvironmentFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SyntheticEnvironmentFamilyPduType.html) | Section 5.3.11: Abstract superclass for synthetic environment PDUs |
-| 1.&nbsp;EnvironmentalProcessPdu | 41 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/EnvironmentalProcessPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EnvironmentalProcessPdu.html) | 7.10.2 Used to communicate information about environmental effects and processes. (length of list found in field numberOfEnvironmentRecords) |
-| 2.&nbsp;GriddedDataPdu | 42 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/GriddedDataPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_GriddedDataPdu.html) | 7.10.3 Used to communicate information about global, spatially varying environmental effects. (length of list found in field numberOfGridAxes numberOfGridAxes) |
-| 3.&nbsp;PointObjectStatePdu | 43 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/PointObjectStatePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_PointObjectStatePdu.html) | 7.10.4 Used to communicate detailed information about the addition/modification of a synthetic environment object that is geometrically anchored to the terrain with a single point. |
-| 4.&nbsp;LinearObjectStatePdu | 44 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/LinearObjectStatePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_LinearObjectStatePdu.html) | 7.10.5 Used to communicate detailed information about the addition/modification of a synthetic environment object that is geometrically anchored to the terrain with one point and has size and orientation. (length of list found in field numberOfLinearSegments) |
-| 5.&nbsp;ArealObjectStatePdu | 45 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/ArealObjectStatePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ArealObjectStatePdu.html) | 7.10.6 Used to communicate detailed information about the addition/modification of a synthetic environment object that is geometrically anchored to the terrain with a set of three or more points that come to a closure. (length of list found in field numberOfPoints) |
+| _SyntheticEnvironmentFamilyPduType_ | _9_ | | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/SyntheticEnvironmentFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SyntheticEnvironmentFamilyPduType.html) | Section 5.3.11: Abstract superclass for synthetic environment PDUs |
+| 1.&nbsp;EnvironmentalProcessPdu | 41 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/EnvironmentalProcessPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EnvironmentalProcessPdu.html) | 7.10.2 Used to communicate information about environmental effects and processes. (length of list found in field numberOfEnvironmentRecords) |
+| 2.&nbsp;GriddedDataPdu | 42 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/GriddedDataPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_GriddedDataPdu.html) | 7.10.3 Used to communicate information about global, spatially varying environmental effects. (length of list found in field numberOfGridAxes numberOfGridAxes) |
+| 3.&nbsp;PointObjectStatePdu | 43 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/PointObjectStatePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_PointObjectStatePdu.html) | 7.10.4 Used to communicate detailed information about the addition/modification of a synthetic environment object that is geometrically anchored to the terrain with a single point. |
+| 4.&nbsp;LinearObjectStatePdu | 44 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/LinearObjectStatePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_LinearObjectStatePdu.html) | 7.10.5 Used to communicate detailed information about the addition/modification of a synthetic environment object that is geometrically anchored to the terrain with one point and has size and orientation. (length of list found in field numberOfLinearSegments) |
+| 5.&nbsp;ArealObjectStatePdu | 45 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/ArealObjectStatePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ArealObjectStatePdu.html) | 7.10.6 Used to communicate detailed information about the addition/modification of a synthetic environment object that is geometrically anchored to the terrain with a set of three or more points that come to a closure. (length of list found in field numberOfPoints) |
 
 | PDU type and PDUs | ID    | &nbsp; &nbsp; Assess |                  | IEEE Standard 1278.1-2012 |
 |-------------------|:-----:|:-----------------------------|:----------------:|:-------------------|
-| _SimulationManagementWithReliabilityFamilyPduType_ | _10_ | | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/SimulationManagementWithReliabilityFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SimulationManagementWithReliabilityFamilyPduType.html) | Simulation Management with Reliability PDUs with reliability service levels in a DIS exercise are an alternative to the Simulation Management PDUs, and may or may not be required for participation in an DIS exercise, |
-| 1.&nbsp;CreateEntityRPdu <br /> CreateEntityReliablePdu | 51 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/CreateEntityRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_CreateEntityRPdu.html) | 5.12.4.2 Serves the same function as the Create Entity PDU but with the addition of reliability service levels. |
-| 2.&nbsp;RemoveEntityRPdu <br /> RemoveEntityReliablePdu | 52 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/RemoveEntityRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_RemoveEntityRPdu.html) | 5.12.4.3 Contains the same information as found in the Remove Entity PDU with the addition of the level of reliability service to be used for the removal action being requested. |
-| 3.&nbsp;StartResumeRPdu <br /> StartResumeReliablePdu | 53 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/StartResumeRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_StartResumeRPdu.html) | 5.12.4.4 Serves the same function as the Start/Resume PDU but with the addition of reliability service levels |
-| 4.&nbsp;StopFreezeRPdu <br /> StopFreezeReliablePdu | 54 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/StopFreezeRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_StopFreezeRPdu.html) | 5.12.4.5 Serves the same function as the Stop/Freeze PDU (see 5.6.5.5.1) but with the addition of reliability service levels. |
-| 5.&nbsp;AcknowledgeRPdu <br /> AcknowledgeReliablePdu | 55 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/AcknowledgeRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_AcknowledgeRPdu.html) | 5.12.4.6 Serves the same function as the Acknowledge PDU but is used to acknowledge the receipt of a Create Entity-R PDU, a Remove Entity-R PDU, a Start/Resume-R PDU, or a Stop/Freeze-R PDU. |
-| 6.&nbsp;ActionRequestRPdu <br /> ActionRequestReliablePdu | 56 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/ActionRequestRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ActionRequestRPdu.html) | 5.12.4.7 Serves the same function as the Action Request PDU but with the addition of reliability service levels. (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
-| 7.&nbsp;ActionResponseRPdu <br /> ActionResponseReliablePdu | 57 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/ActionResponseRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ActionResponseRPdu.html) | 5.12.4.8 Serves the same function as the Action Response PDU (see 5.6.5.8.1) but is used to acknowledge the receipt of an Action Request-R PDU. (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
-| 8.&nbsp;DataQueryRPdu <br /> DataQueryReliablePdu | 58 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/DataQueryRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DataQueryRPdu.html) | 5.12.4.9 Serves the same function as the Data Query PDU but with the addition of reliability service levels (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
-| 9.&nbsp;SetDataRPdu <br /> SetDataReliablePdu | 59 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/SetDataRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SetDataRPdu.html) | 5.12.4.10 Serves the same function as the Set Data PDU but with the addition of reliability service levels. (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
-| 10.&nbsp;DataRPdu <br /> DataReliablePdu | 60 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/DataRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DataRPdu.html) | 5.12.4.11 Serves the same function as the Data PDU but with the addition of reliability service levels and is used in response to a Data Query-R PDU, a Data-R PDU, or a Set Data-R PDU. (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
-| 11.&nbsp;EventReportRPdu <br /> EventReportReliablePdu | 61 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/EventReportRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EventReportRPdu.html) | 5.12.4.12 Contains the same information as found in the Event Report PDU. (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
-| 12.&nbsp;CommentRPdu <br /> CommentReliablePdu | 62 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/CommentRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_CommentRPdu.html) | 5.12.4.13 Serves the same function as the Comment PDU. (length of list found in field numberOfVariableDatumRecords) |
-| 13.&nbsp;RecordRPdu <br /> RecordReliablePdu | 63 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/RecordRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_RecordRPdu.html) | 5.12.4.16 Used to respond to a Record Query-R PDU or a Set Record-R PDU. It is used to provide information requested in a Record Query-R PDU, to confirm the information received in a Set Record-R PDU, and to confirm the receipt of a periodic or unsolicited Record-R PDU when the acknowledged service level is used. (length of list found in field numberOfRecordSets) |
-| 14.&nbsp;SetRecordRPdu <br /> SetRecordReliablePdu | 64 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/SetRecordRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SetRecordRPdu.html) | 5.12.4.15 Used to set or change certain parameter values. These parameter values are contained within a record format as compared to the datum format used in the Set Data-R PDU. (length of list found in field numberOfRecordSets) |
-| 15.&nbsp;RecordQueryRPdu <br /> RecordQueryReliablePdu | 65 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/RecordQueryRPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_RecordQueryRPdu.html) | 5.12.4.14 Used to communicate a request for data in record format. (length of list found in field numberOfRecords) |
+| _SimulationManagementWithReliabilityFamilyPduType_ | _10_ | | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/SimulationManagementWithReliabilityFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SimulationManagementWithReliabilityFamilyPduType.html) | Simulation Management with Reliability PDUs with reliability service levels in a DIS exercise are an alternative to the Simulation Management PDUs, and may or may not be required for participation in an DIS exercise, |
+| 1.&nbsp;CreateEntityRPdu <br /> CreateEntityReliablePdu | 51 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/CreateEntityRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_CreateEntityRPdu.html) | 5.12.4.2 Serves the same function as the Create Entity PDU but with the addition of reliability service levels. |
+| 2.&nbsp;RemoveEntityRPdu <br /> RemoveEntityReliablePdu | 52 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/RemoveEntityRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_RemoveEntityRPdu.html) | 5.12.4.3 Contains the same information as found in the Remove Entity PDU with the addition of the level of reliability service to be used for the removal action being requested. |
+| 3.&nbsp;StartResumeRPdu <br /> StartResumeReliablePdu | 53 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/StartResumeRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_StartResumeRPdu.html) | 5.12.4.4 Serves the same function as the Start/Resume PDU but with the addition of reliability service levels |
+| 4.&nbsp;StopFreezeRPdu <br /> StopFreezeReliablePdu | 54 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/StopFreezeRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_StopFreezeRPdu.html) | 5.12.4.5 Serves the same function as the Stop/Freeze PDU (see 5.6.5.5.1) but with the addition of reliability service levels. |
+| 5.&nbsp;AcknowledgeRPdu <br /> AcknowledgeReliablePdu | 55 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/AcknowledgeRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_AcknowledgeRPdu.html) | 5.12.4.6 Serves the same function as the Acknowledge PDU but is used to acknowledge the receipt of a Create Entity-R PDU, a Remove Entity-R PDU, a Start/Resume-R PDU, or a Stop/Freeze-R PDU. |
+| 6.&nbsp;ActionRequestRPdu <br /> ActionRequestReliablePdu | 56 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/ActionRequestRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ActionRequestRPdu.html) | 5.12.4.7 Serves the same function as the Action Request PDU but with the addition of reliability service levels. (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
+| 7.&nbsp;ActionResponseRPdu <br /> ActionResponseReliablePdu | 57 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/ActionResponseRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ActionResponseRPdu.html) | 5.12.4.8 Serves the same function as the Action Response PDU (see 5.6.5.8.1) but is used to acknowledge the receipt of an Action Request-R PDU. (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
+| 8.&nbsp;DataQueryRPdu <br /> DataQueryReliablePdu | 58 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/DataQueryRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DataQueryRPdu.html) | 5.12.4.9 Serves the same function as the Data Query PDU but with the addition of reliability service levels (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
+| 9.&nbsp;SetDataRPdu <br /> SetDataReliablePdu | 59 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/SetDataRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SetDataRPdu.html) | 5.12.4.10 Serves the same function as the Set Data PDU but with the addition of reliability service levels. (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
+| 10.&nbsp;DataRPdu <br /> DataReliablePdu | 60 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/DataRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_DataRPdu.html) | 5.12.4.11 Serves the same function as the Data PDU but with the addition of reliability service levels and is used in response to a Data Query-R PDU, a Data-R PDU, or a Set Data-R PDU. (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
+| 11.&nbsp;EventReportRPdu <br /> EventReportReliablePdu | 61 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/EventReportRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_EventReportRPdu.html) | 5.12.4.12 Contains the same information as found in the Event Report PDU. (length of list found in field numberOfFixedDatumRecords numberOfVariableDatumRecords) |
+| 12.&nbsp;CommentRPdu <br /> CommentReliablePdu | 62 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/CommentRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_CommentRPdu.html) | 5.12.4.13 Serves the same function as the Comment PDU. (length of list found in field numberOfVariableDatumRecords) |
+| 13.&nbsp;RecordRPdu <br /> RecordReliablePdu | 63 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/RecordRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_RecordRPdu.html) | 5.12.4.16 Used to respond to a Record Query-R PDU or a Set Record-R PDU. It is used to provide information requested in a Record Query-R PDU, to confirm the information received in a Set Record-R PDU, and to confirm the receipt of a periodic or unsolicited Record-R PDU when the acknowledged service level is used. (length of list found in field numberOfRecordSets) |
+| 14.&nbsp;SetRecordRPdu <br /> SetRecordReliablePdu | 64 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/SetRecordRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_SetRecordRPdu.html) | 5.12.4.15 Used to set or change certain parameter values. These parameter values are contained within a record format as compared to the datum format used in the Set Data-R PDU. (length of list found in field numberOfRecordSets) |
+| 15.&nbsp;RecordQueryRPdu <br /> RecordQueryReliablePdu | 65 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/RecordQueryRPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_RecordQueryRPdu.html) | 5.12.4.14 Used to communicate a request for data in record format. (length of list found in field numberOfRecords) |
 
 | PDU type and PDUs | ID    | &nbsp; &nbsp; Assess |                  | IEEE Standard 1278.1-2012 |
 |-------------------|:-----:|:-----------------------------|:----------------:|:-------------------|
-| _LiveEntityFamilyPduType_ | _11_ | | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/LiveEntityFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_LiveEntityFamilyPduType.html) | Does not inherit from PduBase. See section 9. |
-| 1.&nbsp;TSPIPdu <br /> TimeSpacePositionInformationPdu | 46 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/TSPIPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_TSPIPdu.html) | 9.4.2 The Time Space Position Information (TSPI) PDU shall communicate information about the LE’s state vector. (length of list found in field systemSpecificDataLength) |
-| 2.&nbsp;AppearancePdu | 47 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/AppearancePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_AppearancePdu.html) | 9.4.3 Communicate information about the appearance of a live entity. |
-| 3.&nbsp;ArticulatedPartsPdu | 48 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/ArticulatedPartsPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ArticulatedPartsPdu.html) | 9.4.4 Communicate information about an entity’s articulated and attached parts. (length of list found in field numberOfParameterRecords) |
-| 4.&nbsp;LEFirePdu <br /> LiveEntityFirePdu | 49 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/LEFirePdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_LEFirePdu.html) | 9.4.5 Representation of weapons fire in a DIS exercise involving LEs. |
-| 5.&nbsp;LEDetonationPdu <br /> LiveEntityDetonationPdu | 50 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/LEDetonationPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_LEDetonationPdu.html) | 9.4.6 Communicate information associated with the impact or detonation of a munition. |
+| _LiveEntityFamilyPduType_ | _11_ | | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/LiveEntityFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_LiveEntityFamilyPduType.html) | Does not inherit from PduBase. See section 9. |
+| 1.&nbsp;TSPIPdu <br /> TimeSpacePositionInformationPdu | 46 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/TSPIPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_TSPIPdu.html) | 9.4.2 The Time Space Position Information (TSPI) PDU shall communicate information about the LE’s state vector. (length of list found in field systemSpecificDataLength) |
+| 2.&nbsp;AppearancePdu | 47 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/AppearancePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_AppearancePdu.html) | 9.4.3 Communicate information about the appearance of a live entity. |
+| 3.&nbsp;ArticulatedPartsPdu | 48 | <ul> <li> - [ ] relevant? </li> <li> - [ ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/ArticulatedPartsPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_ArticulatedPartsPdu.html) | 9.4.4 Communicate information about an entity’s articulated and attached parts. (length of list found in field numberOfParameterRecords) |
+| 4.&nbsp;LEFirePdu <br /> LiveEntityFirePdu | 49 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/LEFirePdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_LEFirePdu.html) | 9.4.5 Representation of weapons fire in a DIS exercise involving LEs. |
+| 5.&nbsp;LEDetonationPdu <br /> LiveEntityDetonationPdu | 50 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/LEDetonationPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_LEDetonationPdu.html) | 9.4.6 Communicate information associated with the impact or detonation of a munition. |
 
 | PDU type and PDUs | ID    | &nbsp; &nbsp; Assess |                  | IEEE Standard 1278.1-2012 |
 |-------------------|:-----:|:-----------------------------|:----------------:|:-------------------|
-| _LiveEntityPduType_ | _11_ | | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/LiveEntityPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_LiveEntityPduType.html) | The live entity PDUs have a slightly different header |
+| _LiveEntityPduType_ | _11_ | | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/LiveEntityPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_LiveEntityPduType.html) | The live entity PDUs have a slightly different header |
 
 | PDU type and PDUs | ID    | &nbsp; &nbsp; Assess |                  | IEEE Standard 1278.1-2012 |
 |-------------------|:-----:|:-----------------------------|:----------------:|:-------------------|
-| _InformationOperationsFamilyPduType_ | _13_ | | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/InformationOperationsFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_InformationOperationsFamilyPduType.html) | Information operations (IO) are the integrated employment of electronic warfare (EW), computer network operations (CNO), psychological operations (PSYOP), military deception (MILDEC), and operations security (OPSEC), along with specific supporting capabilities, to influence, disrupt, corrupt, or otherwise affect enemy information and decision making while protecting friendly information operations. |
-| 1.&nbsp;InformationOperationsActionPdu | 70 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/InformationOperationsActionPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_InformationOperationsActionPdu.html) | 5.13.3.1 Used to communicate an IO attack or the effects of an IO attack on one or more target entities. (length of list found in field numberOfIORecords) |
-| 2.&nbsp;InformationOperationsReportPdu | 71 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/open-dis7-java/javadoc/edu/nps/moves/dis7/pdus/InformationOperationsReportPdu.html)  [Schemadoc](https://savage.nps.edu/open-dis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_InformationOperationsReportPdu.html) | 5.13.4.1 Used to communicate the effects of an IO attack on one or more target entities. (length of list found in field numberOfIORecords) |
+| _InformationOperationsFamilyPduType_ | _13_ | | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/InformationOperationsFamilyPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_InformationOperationsFamilyPduType.html) | Information operations (IO) are the integrated employment of electronic warfare (EW), computer network operations (CNO), psychological operations (PSYOP), military deception (MILDEC), and operations security (OPSEC), along with specific supporting capabilities, to influence, disrupt, corrupt, or otherwise affect enemy information and decision making while protecting friendly information operations. |
+| 1.&nbsp;InformationOperationsActionPdu | 70 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/InformationOperationsActionPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_InformationOperationsActionPdu.html) | 5.13.3.1 Used to communicate an IO attack or the effects of an IO attack on one or more target entities. (length of list found in field numberOfIORecords) |
+| 2.&nbsp;InformationOperationsReportPdu | 71 | <ul> <li> - [1 ] relevant? </li> <li> - [1 ] in use? </li> </ul> | [Javadoc](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/pdus/InformationOperationsReportPdu.html)  [Schemadoc](https://savage.nps.edu/opendis7-java/xml/SchemaDocumentation/DIS_7_2012.autogenerated_InformationOperationsReportPdu.html) | 5.13.4.1 Used to communicate the effects of an IO attack on one or more target entities. (length of list found in field numberOfIORecords) |
 
diff --git a/assignments/src/MV3500Cohort2021JulySeptember/projects/McneelyLeckieProject/McneelyLeckieReceiver.java b/assignments/src/MV3500Cohort2021JulySeptember/projects/McneelyLeckieProject/McneelyLeckieReceiver.java
index 02b4a19ac705628714942b287e526375bf83217a..49ad9b068c31ebb74768819c44fa725885f05c47 100644
--- a/assignments/src/MV3500Cohort2021JulySeptember/projects/McneelyLeckieProject/McneelyLeckieReceiver.java
+++ b/assignments/src/MV3500Cohort2021JulySeptember/projects/McneelyLeckieProject/McneelyLeckieReceiver.java
@@ -1,153 +1,153 @@
-
-
-package MV3500Cohort2021JulySeptember.projects.McneelyLeckieProject;
-
-import edu.nps.moves.dis.CommentPdu;
-import edu.nps.moves.dis.OneByteChunk;
-import edu.nps.moves.dis.Pdu;
-import edu.nps.moves.dis.VariableDatum;
-import edu.nps.moves.disenum.PduType;
-import edu.nps.moves.disutil.PduFactory;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.net.DatagramPacket;
-import java.net.InetAddress;
-import java.net.MulticastSocket;
-import java.util.ArrayList;
-
-/**
- *
- * @author Justin Mcneely
- * @author Jacob Leckie
- */
-
-
-public class McneelyLeckieReceiver {
-
-  /** socket parameter of interest */
-    public static final int    MULTICAST_PORT  = 3000;
-    /** socket parameter of interest */
-    public static final String MULTICAST_GROUP = "239.1.2.15"; 
-//    public static final String MULTICAST_GROUP = "192.168.1.247";
-    /** socket parameter of interest */
-    static final boolean USE_FAST_ESPDU = false;
-
-    /**
-     * Program invocation, execution starts here
-     * @param args command-line arguments
-     */
-    @SuppressWarnings("deprecation")
-    public static void main(String[] args) 
-    {
-        
-                PduFactory      factory;
-        try
-        {
-        
-            // This is a java/IPv6 problem. You should also add it to the
-            // arguments used to start the app, eg -Djava.net.preferIPv4Stack=true
-            // set in the "run" section of preferences. Also, typically
-            // netbeans must be restarted after these settings.
-            // https://stackoverflow.com/questions/18747134/getting-cant-assign-requested-address-java-net-socketexception-using-ehcache
-            //System.setProperty("java.net.preferIPv4Stack", "true");
-            //System.out.println("DisExamples.PduReceiver started...");
-            
-            /*MulticastSocket multicastSocket = new MulticastSocket(DESTINATION_PORT);
-            multicastSocket.setTimeToLive(TTL);
-            InetAddress multicastAddress = InetAddress.getByName(MULTICAST_ADDRESS);
-            System.out.println(multicastAddress);            
-            // Join group useful on receiving side
-            multicastSocket.joinGroup(multicastAddress);
-            // You can join multiple groups here*/
-            System.setProperty("java.net.preferIPv4Stack", "true");
-            System.out.println("DisExamples.PduReceiver started... ORDER RECIEVED!");
-            
-            MulticastSocket socket  = new MulticastSocket  (MULTICAST_PORT);
-            InetAddress address = InetAddress.getByName(MULTICAST_GROUP);
-            socket.joinGroup(address);
-            
-            factory = new PduFactory();
-            
-            int count = 0;
-            int partsAvail = 6;
-            int partsSent = 0;
-            
-            while(true)
-            {
-
-                byte[] packetArray = new byte[1500];
-                DatagramPacket packet = new DatagramPacket(packetArray, packetArray.length);
-                
-                socket.receive(packet);
-                
-                Pdu pdu = factory.createPdu (packet.getData());
-		if (pdu != null)
-		{
-                    short pduType        = pdu.getPduType();
-                    String pduTypeName   = pdu.getClass().getName();
-                    short protocolFamily = pdu.getProtocolFamily(); // TODO get string enumeration
-                    
-                    if(pdu.getPduTypeEnum() == PduType.COMMENT){
-                        CommentPdu cPdu = (CommentPdu)pdu;
-                        @SuppressWarnings("unchecked")
-                        ArrayList<VariableDatum> payload = (ArrayList)cPdu.getVariableDatums();
-                        VariableDatum payloadWrapper = payload.get(0);
-                        @SuppressWarnings("unchecked")
-                        ArrayList<OneByteChunk> oBC = (ArrayList)payloadWrapper.getVariableData();
-                        
-                        //byte[] imageByte = new byte[100000];
-                        
-                        /*for(int i = 0; i < oBC.size(); i++){
-                            imageByte[i] = oBC.get(i).getOtherParameters()[0];
-                        }
-                        
-                        ByteArrayInputStream bais = new ByteArrayInputStream(imageByte);
-                        BufferedImage bimage = ImageIO.read(bais);
-                        //image = bimage;
-                        JFrame frame = new JFrame();
-                        frame.setSize(300, 300);
-                        //JLabel label = new JLabel(new ImageIcon(image));
-                        //frame.add(label);
-                        frame.setVisible(true);
-                        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);*/
-                    }
-                                    count++;
-
-                    if(count >= 1){
-                        partsAvail-=1;
-                        partsSent+=1;
-                    }
-                    System.out.println("Marine Aircraft Logistics Squadron 29: Wolverines!");
-                    System.out.println("Status Update: " + count + " NSN ID: 1874542689");
-                                       
-                    StringBuilder message = new StringBuilder();
-                    message.append("received DIS PDU: ");
-                    
-                    message.append("pduType ");
-                    if (pduType <= 1500) {
-			message.append(" ");
-			message.append(pduType).append(" ").append(pduTypeName);
-			message.append(", protocolFamily=").append(protocolFamily);
-                        System.out.println(message.toString());
-                    }
-                    
-                }
-                else System.out.println("received packet but pdu is null, packet.getData().length=" + packet.getData().length + ", error...");               
-                System.out.println("______________________________________________________");
-                
-                ByteArrayInputStream bais = new ByteArrayInputStream(packet.getData());
-//                DataInputStream dis = new DataInputStream(bais);
-                //float firstNumber = dis.readInt();
-                //float secondNumber = dis.readInt();
-                //float thirdNumber = dis.readInt(); 
-                
-
-            }
-        }
-        catch(IOException e)
-        {
-            System.out.println(e);
-        }
-    }
-    
-}
+
+
+package MV3500Cohort2021JulySeptember.projects.McneelyLeckieProject;
+
+import edu.nps.moves.dis.CommentPdu;
+import edu.nps.moves.dis.OneByteChunk;
+import edu.nps.moves.dis.Pdu;
+import edu.nps.moves.dis.VariableDatum;
+import edu.nps.moves.disenum.PduType;
+import edu.nps.moves.disutil.PduFactory;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.net.DatagramPacket;
+import java.net.InetAddress;
+import java.net.MulticastSocket;
+import java.util.ArrayList;
+
+/**
+ * homework assignment
+ * @author Justin Mcneely
+ * @author Jacob Leckie
+ */
+
+
+public class McneelyLeckieReceiver {
+
+  /** socket parameter of interest */
+    public static final int    MULTICAST_PORT  = 3000;
+    /** socket parameter of interest */
+    public static final String MULTICAST_GROUP = "239.1.2.15"; 
+//    public static final String MULTICAST_GROUP = "192.168.1.247";
+    /** socket parameter of interest */
+    static final boolean USE_FAST_ESPDU = false;
+
+    /**
+     * Program invocation, execution starts here
+     * @param args command-line arguments
+     */
+    @SuppressWarnings("deprecation")
+    public static void main(String[] args) 
+    {
+        
+                PduFactory      factory;
+        try
+        {
+        
+            // This is a java/IPv6 problem. You should also add it to the
+            // arguments used to start the app, eg -Djava.net.preferIPv4Stack=true
+            // set in the "run" section of preferences. Also, typically
+            // netbeans must be restarted after these settings.
+            // https://stackoverflow.com/questions/18747134/getting-cant-assign-requested-address-java-net-socketexception-using-ehcache
+            //System.setProperty("java.net.preferIPv4Stack", "true");
+            //System.out.println("DisExamples.PduReceiver started...");
+            
+            /*MulticastSocket multicastSocket = new MulticastSocket(DESTINATION_PORT);
+            multicastSocket.setTimeToLive(TTL);
+            InetAddress multicastAddress = InetAddress.getByName(MULTICAST_ADDRESS);
+            System.out.println(multicastAddress);            
+            // Join group useful on receiving side
+            multicastSocket.joinGroup(multicastAddress);
+            // You can join multiple groups here*/
+            System.setProperty("java.net.preferIPv4Stack", "true");
+            System.out.println("DisExamples.PduReceiver started... ORDER RECIEVED!");
+            
+            MulticastSocket socket  = new MulticastSocket  (MULTICAST_PORT);
+            InetAddress address = InetAddress.getByName(MULTICAST_GROUP);
+            socket.joinGroup(address);
+            
+            factory = new PduFactory();
+            
+            int count = 0;
+            int partsAvail = 6;
+            int partsSent = 0;
+            
+            while(true)
+            {
+
+                byte[] packetArray = new byte[1500];
+                DatagramPacket packet = new DatagramPacket(packetArray, packetArray.length);
+                
+                socket.receive(packet);
+                
+                Pdu pdu = factory.createPdu (packet.getData());
+		if (pdu != null)
+		{
+                    short pduType        = pdu.getPduType();
+                    String pduTypeName   = pdu.getClass().getName();
+                    short protocolFamily = pdu.getProtocolFamily(); // TODO get string enumeration
+                    
+                    if(pdu.getPduTypeEnum() == PduType.COMMENT){
+                        CommentPdu cPdu = (CommentPdu)pdu;
+                        @SuppressWarnings("unchecked")
+                        ArrayList<VariableDatum> payload = (ArrayList)cPdu.getVariableDatums();
+                        VariableDatum payloadWrapper = payload.get(0);
+                        @SuppressWarnings("unchecked")
+                        ArrayList<OneByteChunk> oBC = (ArrayList)payloadWrapper.getVariableData();
+                        
+                        //byte[] imageByte = new byte[100000];
+                        
+                        /*for(int i = 0; i < oBC.size(); i++){
+                            imageByte[i] = oBC.get(i).getOtherParameters()[0];
+                        }
+                        
+                        ByteArrayInputStream bais = new ByteArrayInputStream(imageByte);
+                        BufferedImage bimage = ImageIO.read(bais);
+                        //image = bimage;
+                        JFrame frame = new JFrame();
+                        frame.setSize(300, 300);
+                        //JLabel label = new JLabel(new ImageIcon(image));
+                        //frame.add(label);
+                        frame.setVisible(true);
+                        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);*/
+                    }
+                                    count++;
+
+                    if(count >= 1){
+                        partsAvail-=1;
+                        partsSent+=1;
+                    }
+                    System.out.println("Marine Aircraft Logistics Squadron 29: Wolverines!");
+                    System.out.println("Status Update: " + count + " NSN ID: 1874542689");
+                                       
+                    StringBuilder message = new StringBuilder();
+                    message.append("received DIS PDU: ");
+                    
+                    message.append("pduType ");
+                    if (pduType <= 1500) {
+			message.append(" ");
+			message.append(pduType).append(" ").append(pduTypeName);
+			message.append(", protocolFamily=").append(protocolFamily);
+                        System.out.println(message.toString());
+                    }
+                    
+                }
+                else System.out.println("received packet but pdu is null, packet.getData().length=" + packet.getData().length + ", error...");               
+                System.out.println("______________________________________________________");
+                
+                ByteArrayInputStream bais = new ByteArrayInputStream(packet.getData());
+//                DataInputStream dis = new DataInputStream(bais);
+                //float firstNumber = dis.readInt();
+                //float secondNumber = dis.readInt();
+                //float thirdNumber = dis.readInt(); 
+                
+
+            }
+        }
+        catch(IOException e)
+        {
+            System.out.println(e);
+        }
+    }
+    
+}
diff --git a/assignments/src/MV3500Cohort2021JulySeptember/projects/McneelyLeckieProject/McneelyLeckieSender.java b/assignments/src/MV3500Cohort2021JulySeptember/projects/McneelyLeckieProject/McneelyLeckieSender.java
index 587a53a202192244fc77e617aebf65269ae4e923..3ecd00a12de1e3bfc2f7e2b962492401dd7d48c5 100644
--- a/assignments/src/MV3500Cohort2021JulySeptember/projects/McneelyLeckieProject/McneelyLeckieSender.java
+++ b/assignments/src/MV3500Cohort2021JulySeptember/projects/McneelyLeckieProject/McneelyLeckieSender.java
@@ -1,206 +1,206 @@
-
-package MV3500Cohort2021JulySeptember.projects.McneelyLeckieProject;
-
-import edu.nps.moves.dis.CommentPdu;
-import edu.nps.moves.dis.EntityStatePdu;
-import edu.nps.moves.dis.OneByteChunk;
-import edu.nps.moves.dis.Pdu;
-import edu.nps.moves.dis.ResupplyOfferPdu;
-import edu.nps.moves.dis.ResupplyReceivedPdu;
-import edu.nps.moves.dis.ServiceRequestPdu;
-import edu.nps.moves.dis.VariableDatum;
-import edu.nps.moves.disenum.PduType;
-import java.io.ByteArrayOutputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.net.DatagramPacket;
-import java.net.InetAddress;
-import java.net.MulticastSocket;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.List;
-
-
-/**
- *
- * @author Justin Mcneely
- * @author Jacob Leckie
- 
- *Future work to expand on the project.
- * 
- * 1. security via specific channels or encryption
- * 2. PDU fidelity
- * 3. Checkpoints to stop the code and wait for a location update
- * 4. Timestamps for supply updates
- */
-
-public class McneelyLeckieSender {
-
-    /** Default multicast group address we send on. */
-    public static final String DEFAULT_MULTICAST_ADDRESS = "239.1.2.15";
-    /** socket parameter of interest */
-    public static final int DESTINATION_PORT = 1717;
-    /** Default multicast port used, matches Wire-shark DIS capture default */
-    public static final int    DEFAULT_MULTICAST_PORT    = 3000;
-
-	
-    private int port;
-    InetAddress multicastAddress;
-
-    /** Object constructor
-	 * @param port TCP port of interest
-	 * @param multicast address of interest  */
-    public McneelyLeckieSender (int port, String multicast) 
-    {
-        try
-	{
-            System.setProperty("java.net.preferIPv4Stack", "true");
-            this.port = port;
-            multicastAddress = InetAddress.getByName(multicast);
-            //MulticastSocket multicastSocket = new MulticastSocket(1718);
-            //multicastSocket.setTimeToLive(TTL);
-            InetAddress multicastAddress = InetAddress.getByName(DEFAULT_MULTICAST_ADDRESS);
-            System.out.println(multicastAddress);            
-            // Join group useful on receiving side
-            //multicastSocket.joinGroup(multicastAddress);
-            // You can join multiple groups here
-            if (!multicastAddress.isMulticastAddress())
-            {
-                System.out.println("Not a multicast address: " + multicast);
-            }
-        } 
-		catch (UnknownHostException e) {
-            System.out.println("Unable to open socket: " + e);
-        }
-    }
-
-    /**
-     * Run the program
-     */
-    @SuppressWarnings("deprecation")
-    public void run()
-	{
-		System.out.println("DisExamples.PduSender started...");
-        try {
-           
-            List<Pdu> generatedPdus = new ArrayList<>();
-            MulticastSocket multicastSocket = new MulticastSocket(1718);
-            //multicastSocket.setTimeToLive(TTL);
-            //InetAddress multicastAddress = InetAddress.getByName(MULTICAST_ADDRESS);
-            System.out.println(multicastAddress);            
-            // Join group useful on receiving side
-            multicastSocket.joinGroup(multicastAddress);
-            // You can join multiple groups here
-
-            // Loop through all the enumerated PDU types, create a PDU for each type,
-            // and add that PDU to a list.
-            for (PduType pdu : PduType.values()) {
-                Pdu aPdu = null;
-
-                switch (pdu) // using enumeration values from edu.nps.moves.disenum.*
-				{
-                    case ENTITY_STATE:
-                        aPdu = new EntityStatePdu();
-                        break;
-                        
-                    case COMMENT:
-                        aPdu = new CommentPdu();
-                        CommentPdu cPdu = (CommentPdu)aPdu;
-                        
-                        
-                        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-   
-                        byte[] buffer;
-                        buffer = baos.toByteArray();
-                        DatagramPacket packet = new DatagramPacket(buffer, buffer.length, multicastAddress, DESTINATION_PORT);
-//                        System.out.println("Sending Request");
-                        for(int idx = 0; idx <= 6; idx++)
-                        {
-                            multicastSocket.send(packet);
-//                            Thread.sleep(2000); // Send 100, one per second
-                            System.out.println("Sending Request");
-                            System.out.println("Sent multicast DIS PDU packet " + idx + " of 6");
-                        }                   
-                        ArrayList<VariableDatum> payload = new ArrayList<>();
-                        ArrayList<OneByteChunk> payloadWrapper = new ArrayList<>();
-                        VariableDatum variableDatum = new VariableDatum();
-       
-                       
-
-                        variableDatum.setVariableData(payloadWrapper);
-                        
-                        payload.add(variableDatum);
-                        cPdu.setVariableDatums(payload);
-                        break;
-
-                    case SERVICE_REQUEST:
-                        aPdu = new ServiceRequestPdu();
-                        break;
-
-                    case RESUPPLY_OFFER:
-                        aPdu = new ResupplyOfferPdu();
-                        break;
-
-                    case RESUPPLY_RECEIVED:
-                        aPdu = new ResupplyReceivedPdu();
-                        break;
-
-                    default:
-//                        System.out.print("PDU of type " + pdu + " not supported, created or sent ");
-//                        System.out.println();
-                }
-                if (aPdu != null)
-		{
-                    generatedPdus.add(aPdu);
-                }
-            }
-
-            // Sort the created PDUs by class name
-//            Collections.sort(generatedPdus, new ClassNameComparator());
-            
-
-            // Send the PDUs we created
-            InetAddress localMulticastAddress = InetAddress.getByName(DEFAULT_MULTICAST_ADDRESS);
-            MulticastSocket socket = new MulticastSocket(DEFAULT_MULTICAST_PORT);
-            socket.joinGroup(localMulticastAddress);
-
-            for (int idx = 0; idx < generatedPdus.size(); idx++)
-		{
-                ByteArrayOutputStream baos = new ByteArrayOutputStream();
-                DataOutputStream dos = new DataOutputStream(baos);
-                byte[] buffer;
-
-                Pdu aPdu = generatedPdus.get(idx);
-
-                aPdu.marshal(dos);
-
-                buffer = baos.toByteArray();
-                DatagramPacket packet = new DatagramPacket(buffer, buffer.length, localMulticastAddress, DEFAULT_MULTICAST_PORT);
-                socket.send(packet);
-                System.out.println("Sent PDU of type " + aPdu.getClass().getName());
-            }
-            
-        } catch (IOException e)
-		{
-            System.out.println(e);
-        }
-    }
-
-    /**
-     * Program invocation, execution starts here
-     * @param args command-line arguments
-     */
-    public static void main(String args[])
-	{
-        if (args.length == 2) {
-            McneelyLeckieSender sender = new McneelyLeckieSender(Integer.parseInt(args[0]), args[1]);
-            sender.run();
-        } else {
-            System.out.println("Usage:   PduSender <port> <multicast group>");
-            System.out.println("Default: PduSender  " + DEFAULT_MULTICAST_PORT + "   " + DEFAULT_MULTICAST_ADDRESS);
-            McneelyLeckieSender sender = new  McneelyLeckieSender(DEFAULT_MULTICAST_PORT, DEFAULT_MULTICAST_ADDRESS);
-            sender.run();
-        }
-    }
-    
-}
+
+package MV3500Cohort2021JulySeptember.projects.McneelyLeckieProject;
+
+import edu.nps.moves.dis.CommentPdu;
+import edu.nps.moves.dis.EntityStatePdu;
+import edu.nps.moves.dis.OneByteChunk;
+import edu.nps.moves.dis.Pdu;
+import edu.nps.moves.dis.ResupplyOfferPdu;
+import edu.nps.moves.dis.ResupplyReceivedPdu;
+import edu.nps.moves.dis.ServiceRequestPdu;
+import edu.nps.moves.dis.VariableDatum;
+import edu.nps.moves.disenum.PduType;
+import java.io.ByteArrayOutputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.net.DatagramPacket;
+import java.net.InetAddress;
+import java.net.MulticastSocket;
+import java.net.UnknownHostException;
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * homework assignment
+ * @author Justin Mcneely
+ * @author Jacob Leckie
+ 
+ *Future work to expand on the project.
+ * 
+ * 1. security via specific channels or encryption
+ * 2. PDU fidelity
+ * 3. Checkpoints to stop the code and wait for a location update
+ * 4. Timestamps for supply updates
+ */
+
+public class McneelyLeckieSender {
+
+    /** Default multicast group address we send on. */
+    public static final String DEFAULT_MULTICAST_ADDRESS = "239.1.2.15";
+    /** socket parameter of interest */
+    public static final int DESTINATION_PORT = 1717;
+    /** Default multicast port used, matches Wire-shark DIS capture default */
+    public static final int    DEFAULT_MULTICAST_PORT    = 3000;
+
+	
+    private int port;
+    InetAddress multicastAddress;
+
+    /** Object constructor
+	 * @param port TCP port of interest
+	 * @param multicast address of interest  */
+    public McneelyLeckieSender (int port, String multicast) 
+    {
+        try
+	{
+            System.setProperty("java.net.preferIPv4Stack", "true");
+            this.port = port;
+            multicastAddress = InetAddress.getByName(multicast);
+            //MulticastSocket multicastSocket = new MulticastSocket(1718);
+            //multicastSocket.setTimeToLive(TTL);
+            InetAddress multicastAddress = InetAddress.getByName(DEFAULT_MULTICAST_ADDRESS);
+            System.out.println(multicastAddress);            
+            // Join group useful on receiving side
+            //multicastSocket.joinGroup(multicastAddress);
+            // You can join multiple groups here
+            if (!multicastAddress.isMulticastAddress())
+            {
+                System.out.println("Not a multicast address: " + multicast);
+            }
+        } 
+		catch (UnknownHostException e) {
+            System.out.println("Unable to open socket: " + e);
+        }
+    }
+
+    /**
+     * Run the program
+     */
+    @SuppressWarnings("deprecation")
+    public void run()
+	{
+		System.out.println("DisExamples.PduSender started...");
+        try {
+           
+            List<Pdu> generatedPdus = new ArrayList<>();
+            MulticastSocket multicastSocket = new MulticastSocket(1718);
+            //multicastSocket.setTimeToLive(TTL);
+            //InetAddress multicastAddress = InetAddress.getByName(MULTICAST_ADDRESS);
+            System.out.println(multicastAddress);            
+            // Join group useful on receiving side
+            multicastSocket.joinGroup(multicastAddress);
+            // You can join multiple groups here
+
+            // Loop through all the enumerated PDU types, create a PDU for each type,
+            // and add that PDU to a list.
+            for (PduType pdu : PduType.values()) {
+                Pdu aPdu = null;
+
+                switch (pdu) // using enumeration values from edu.nps.moves.disenum.*
+				{
+                    case ENTITY_STATE:
+                        aPdu = new EntityStatePdu();
+                        break;
+                        
+                    case COMMENT:
+                        aPdu = new CommentPdu();
+                        CommentPdu cPdu = (CommentPdu)aPdu;
+                        
+                        
+                        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+   
+                        byte[] buffer;
+                        buffer = baos.toByteArray();
+                        DatagramPacket packet = new DatagramPacket(buffer, buffer.length, multicastAddress, DESTINATION_PORT);
+//                        System.out.println("Sending Request");
+                        for(int idx = 0; idx <= 6; idx++)
+                        {
+                            multicastSocket.send(packet);
+//                            Thread.sleep(2000); // Send 100, one per second
+                            System.out.println("Sending Request");
+                            System.out.println("Sent multicast DIS PDU packet " + idx + " of 6");
+                        }                   
+                        ArrayList<VariableDatum> payload = new ArrayList<>();
+                        ArrayList<OneByteChunk> payloadWrapper = new ArrayList<>();
+                        VariableDatum variableDatum = new VariableDatum();
+       
+                       
+
+                        variableDatum.setVariableData(payloadWrapper);
+                        
+                        payload.add(variableDatum);
+                        cPdu.setVariableDatums(payload);
+                        break;
+
+                    case SERVICE_REQUEST:
+                        aPdu = new ServiceRequestPdu();
+                        break;
+
+                    case RESUPPLY_OFFER:
+                        aPdu = new ResupplyOfferPdu();
+                        break;
+
+                    case RESUPPLY_RECEIVED:
+                        aPdu = new ResupplyReceivedPdu();
+                        break;
+
+                    default:
+//                        System.out.print("PDU of type " + pdu + " not supported, created or sent ");
+//                        System.out.println();
+                }
+                if (aPdu != null)
+		{
+                    generatedPdus.add(aPdu);
+                }
+            }
+
+            // Sort the created PDUs by class name
+//            Collections.sort(generatedPdus, new ClassNameComparator());
+            
+
+            // Send the PDUs we created
+            InetAddress localMulticastAddress = InetAddress.getByName(DEFAULT_MULTICAST_ADDRESS);
+            MulticastSocket socket = new MulticastSocket(DEFAULT_MULTICAST_PORT);
+            socket.joinGroup(localMulticastAddress);
+
+            for (int idx = 0; idx < generatedPdus.size(); idx++)
+		{
+                ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                DataOutputStream dos = new DataOutputStream(baos);
+                byte[] buffer;
+
+                Pdu aPdu = generatedPdus.get(idx);
+
+                aPdu.marshal(dos);
+
+                buffer = baos.toByteArray();
+                DatagramPacket packet = new DatagramPacket(buffer, buffer.length, localMulticastAddress, DEFAULT_MULTICAST_PORT);
+                socket.send(packet);
+                System.out.println("Sent PDU of type " + aPdu.getClass().getName());
+            }
+            
+        } catch (IOException e)
+		{
+            System.out.println(e);
+        }
+    }
+
+    /**
+     * Program invocation, execution starts here
+     * @param args command-line arguments
+     */
+    public static void main(String args[])
+	{
+        if (args.length == 2) {
+            McneelyLeckieSender sender = new McneelyLeckieSender(Integer.parseInt(args[0]), args[1]);
+            sender.run();
+        } else {
+            System.out.println("Usage:   PduSender <port> <multicast group>");
+            System.out.println("Default: PduSender  " + DEFAULT_MULTICAST_PORT + "   " + DEFAULT_MULTICAST_ADDRESS);
+            McneelyLeckieSender sender = new  McneelyLeckieSender(DEFAULT_MULTICAST_PORT, DEFAULT_MULTICAST_ADDRESS);
+            sender.run();
+        }
+    }
+    
+}