diff --git a/examples/src/OpenDis7Examples/AllPduReceiver.java b/examples/src/OpenDis7Examples/AllPduReceiver.java
index f51eccc1de74f8a9d8d6892552462e5f5d159595..d5534da3ce71538f93ee1f5f4f9fb4d5195ffcb4 100644
--- a/examples/src/OpenDis7Examples/AllPduReceiver.java
+++ b/examples/src/OpenDis7Examples/AllPduReceiver.java
@@ -1,11 +1,10 @@
 package OpenDis7Examples;
 
-import java.net.*;
-import java.io.*;
-
-import edu.nps.moves.dis7.pdus.*;
 import edu.nps.moves.dis7.enumerations.*;
+import edu.nps.moves.dis7.pdus.*;
 import edu.nps.moves.dis7.utilities.PduFactory;
+import java.io.*;
+import java.net.*;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -32,6 +31,8 @@ public class AllPduReceiver
         MulticastSocket multicastSocket;
         InetAddress     multicastInetAddress;
         PduFactory      pduFactory = new PduFactory();
+        PduFactory.TimestampStyle       timestampStyle        = PduFactory.TimestampStyle.YEAR;
+        pduFactory.setTimestampStyle(timestampStyle);
 
         System.out.println(TRACE_PREFIX + "started...");
 
@@ -81,12 +82,12 @@ public class AllPduReceiver
                 for (Pdu nextPdu : pduBundle) // iterator loop through PDU bundle
                 {
                     DisPduType currentPduType       = nextPdu.getPduType(); //short  currentPduType = nextPdu.getPduType();
-                    String     currentPduTypeName   = nextPdu.getClass().getName();
+                    String     currentPduTypeName   = nextPdu.getClass().getSimpleName();
                     String     currentPduFamilyName = nextPdu.getClass().getSuperclass().getSimpleName();
                     DISProtocolFamily currentProtocolFamilyID = nextPdu.getProtocolFamily(); //short  currentProtocolFamilyID = nextPdu.getProtocolFamily();
 
                     StringBuilder message = new StringBuilder();
-                    message.append(DisTime.timeStampToString(nextPdu.getTimestamp())).append(" ");
+                    message.append(DisTime.timestampToString(nextPdu.getTimestamp())).append(" ");
                     message.append("received new DIS PDU ");
                     String currentPduTypePadded     = String.format("%-48s", currentPduType);     // - indicates right padding of whitespace
                     message.append(currentPduTypePadded);
diff --git a/examples/src/OpenDis7Examples/AllPduSender.java b/examples/src/OpenDis7Examples/AllPduSender.java
index 12815bb62d5c7da782d02f986ca6ef0489269e04..fa61e6257722e87debfead9847f6e6d01df2a0c3 100755
--- a/examples/src/OpenDis7Examples/AllPduSender.java
+++ b/examples/src/OpenDis7Examples/AllPduSender.java
@@ -504,7 +504,7 @@ public class AllPduSender
 //                          currentPduTypeValuePadded + " " + 
                             currentPduTypePadded + 
                             "(packet.getLength()=" + packetLengthPadded + ")" + // diagnostic, beware of ever-growing packet size!
-                            " of type " + aPdu.getClass().getName());
+                            " of type " + aPdu.getClass().getSimpleName());
 
                         Thread.sleep(THREAD_SLEEP_INTERVAL); // pause for debugging, if zero this process still yields
                     } 
diff --git a/examples/src/OpenDis7Examples/AllPduSenderLog.txt b/examples/src/OpenDis7Examples/AllPduSenderLog.txt
index 30d936dd6310fe9032234ded58d3a7386ead3cc2..fc7c8c363541e26bb3891140850837d0d0e89a21 100644
--- a/examples/src/OpenDis7Examples/AllPduSenderLog.txt
+++ b/examples/src/OpenDis7Examples/AllPduSenderLog.txt
@@ -15,77 +15,77 @@ Preparing CommentPDU:
    "Hello CommentPDU"
    "Here is a second line of text in this comment."
 Send the 72 PDUs we created...
-Sent packet # 1, DisPduType 01 ENTITY_STATE                       (packet.getLength()=144) of type edu.nps.moves.dis7.pdus.EntityStatePdu
-Sent packet # 2, DisPduType 02 FIRE                               (packet.getLength()= 96) of type edu.nps.moves.dis7.pdus.FirePdu
-Sent packet # 3, DisPduType 03 DETONATION                         (packet.getLength()=104) of type edu.nps.moves.dis7.pdus.DetonationPdu
-Sent packet # 4, DisPduType 04 COLLISION                          (packet.getLength()= 60) of type edu.nps.moves.dis7.pdus.CollisionPdu
-Sent packet # 5, DisPduType 05 SERVICE_REQUEST                    (packet.getLength()= 28) of type edu.nps.moves.dis7.pdus.ServiceRequestPdu
-Sent packet # 6, DisPduType 06 RESUPPLY_OFFER                     (packet.getLength()= 28) of type edu.nps.moves.dis7.pdus.ResupplyOfferPdu
-Sent packet # 7, DisPduType 07 RESUPPLY_RECEIVED                  (packet.getLength()= 28) of type edu.nps.moves.dis7.pdus.ResupplyReceivedPdu
-Sent packet # 8, DisPduType 08 RESUPPLY_CANCEL                    (packet.getLength()= 24) of type edu.nps.moves.dis7.pdus.ResupplyCancelPdu
-Sent packet # 9, DisPduType 09 REPAIR_COMPLETE                    (packet.getLength()= 28) of type edu.nps.moves.dis7.pdus.RepairCompletePdu
-Sent packet #10, DisPduType 10 REPAIR_RESPONSE                    (packet.getLength()= 28) of type edu.nps.moves.dis7.pdus.RepairResponsePdu
-Sent packet #11, DisPduType 11 CREATE_ENTITY                      (packet.getLength()= 28) of type edu.nps.moves.dis7.pdus.CreateEntityPdu
-Sent packet #12, DisPduType 12 REMOVE_ENTITY                      (packet.getLength()= 28) of type edu.nps.moves.dis7.pdus.RemoveEntityPdu
-Sent packet #13, DisPduType 13 START_RESUME                       (packet.getLength()= 44) of type edu.nps.moves.dis7.pdus.StartResumePdu
-Sent packet #14, DisPduType 14 STOP_FREEZE                        (packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.StopFreezePdu
-Sent packet #15, DisPduType 15 ACKNOWLEDGE                        (packet.getLength()= 32) of type edu.nps.moves.dis7.pdus.AcknowledgePdu
-Sent packet #16, DisPduType 16 ACTION_REQUEST                     (packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.ActionRequestPdu
-Sent packet #17, DisPduType 17 ACTION_RESPONSE                    (packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.ActionResponsePdu
-Sent packet #18, DisPduType 18 DATA_QUERY                         (packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.DataQueryPdu
-Sent packet #19, DisPduType 19 SET_DATA                           (packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.SetDataPdu
-Sent packet #20, DisPduType 20 DATA                               (packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.DataPdu
-Sent packet #21, DisPduType 21 EVENT_REPORT                       (packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.EventReportPdu
-Sent packet #22, DisPduType 22 COMMENT                            (packet.getLength()=112) of type edu.nps.moves.dis7.pdus.CommentPdu
-Sent packet #23, DisPduType 23 ELECTROMAGNETIC_EMISSION           (packet.getLength()= 28) of type edu.nps.moves.dis7.pdus.ElectromagneticEmissionPdu
-Sent packet #24, DisPduType 24 DESIGNATOR                         (packet.getLength()= 88) of type edu.nps.moves.dis7.pdus.DesignatorPdu
-Sent packet #25, DisPduType 25 TRANSMITTER                        (packet.getLength()=107) of type edu.nps.moves.dis7.pdus.TransmitterPdu
-Sent packet #26, DisPduType 26 SIGNAL                             (packet.getLength()= 32) of type edu.nps.moves.dis7.pdus.SignalPdu
-Sent packet #27, DisPduType 27 RECEIVER                           (packet.getLength()= 36) of type edu.nps.moves.dis7.pdus.ReceiverPdu
-Sent packet #28, DisPduType 28 IDENTIFICATION_FRIEND_OR_FOE       (packet.getLength()= 60) of type edu.nps.moves.dis7.pdus.IdentificationFriendOrFoePdu
-Sent packet #29, DisPduType 29 UNDERWATER_ACOUSTIC                (packet.getLength()= 32) of type edu.nps.moves.dis7.pdus.UnderwaterAcousticPdu
-Sent packet #30, DisPduType 30 SUPPLEMENTAL_EMISSION_ENTITY_STATE (packet.getLength()= 28) of type edu.nps.moves.dis7.pdus.SupplementalEmissionEntityStatePdu
-Sent packet #31, DisPduType 31 INTERCOM_SIGNAL                    (packet.getLength()= 32) of type edu.nps.moves.dis7.pdus.IntercomSignalPdu
-Sent packet #32, DisPduType 32 INTERCOM_CONTROL                   (packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.IntercomControlPdu
-Sent packet #33, DisPduType 33 AGGREGATE_STATE                    (packet.getLength()=136) of type edu.nps.moves.dis7.pdus.AggregateStatePdu
-Sent packet #34, DisPduType 34 ISGROUPOF                          (packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.IsGroupOfPdu
-Sent packet #35, DisPduType 35 TRANSFER_OWNERSHIP                 (packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.TransferOwnershipPdu
-Sent packet #36, DisPduType 36 ISPARTOF                           (packet.getLength()= 52) of type edu.nps.moves.dis7.pdus.IsPartOfPdu
-Sent packet #37, DisPduType 37 MINEFIELD_STATE                    (packet.getLength()= 72) of type edu.nps.moves.dis7.pdus.MinefieldStatePdu
-Sent packet #38, DisPduType 38 MINEFIELD_QUERY                    (packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.MinefieldQueryPdu
-Sent packet #39, DisPduType 39 MINEFIELD_DATA                     (packet.getLength()= 44) of type edu.nps.moves.dis7.pdus.MinefieldDataPdu
-Sent packet #40, DisPduType 40 MINEFIELD_RESPONSE_NACK            (packet.getLength()= 26) of type edu.nps.moves.dis7.pdus.MinefieldResponseNACKPdu
-Sent packet #41, DisPduType 41 ENVIRONMENTAL_PROCESS              (packet.getLength()= 32) of type edu.nps.moves.dis7.pdus.EnvironmentalProcessPdu
-Sent packet #42, DisPduType 42 GRIDDED_DATA                       (packet.getLength()= 64) of type edu.nps.moves.dis7.pdus.GriddedDataPdu
-Sent packet #43, DisPduType 43 POINT_OBJECT_STATE                 (packet.getLength()= 91) of type edu.nps.moves.dis7.pdus.PointObjectStatePdu
-Sent packet #44, DisPduType 44 LINEAR_OBJECT_STATE                (packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.LinearObjectStatePdu
-Sent packet #45, DisPduType 45 AREAL_OBJECT_STATE                 (packet.getLength()= 49) of type edu.nps.moves.dis7.pdus.ArealObjectStatePdu
-Sent packet #46, DisPduType 46 TIME_SPACE_POSITION_INFORMATION    (packet.getLength()= 54) of type edu.nps.moves.dis7.pdus.TimeSpacePositionInformationPdu
-Sent packet #47, DisPduType 47 APPEARANCE                         (packet.getLength()= 67) of type edu.nps.moves.dis7.pdus.AppearancePdu
-Sent packet #48, DisPduType 48 ARTICULATED_PARTS                  (packet.getLength()= 17) of type edu.nps.moves.dis7.pdus.ArticulatedPartsPdu
-Sent packet #49, DisPduType 49 LIVE_ENTITY_FIRE                   (packet.getLength()= 67) of type edu.nps.moves.dis7.pdus.LiveEntityFirePdu
-Sent packet #50, DisPduType 50 LIVE_ENTITY_DETONATION             (packet.getLength()= 79) of type edu.nps.moves.dis7.pdus.LiveEntityDetonationPdu
-Sent packet #51, DisPduType 51 CREATE_ENTITY_RELIABLE             (packet.getLength()= 32) of type edu.nps.moves.dis7.pdus.CreateEntityReliablePdu
-Sent packet #52, DisPduType 52 REMOVE_ENTITY_RELIABLE             (packet.getLength()= 32) of type edu.nps.moves.dis7.pdus.RemoveEntityReliablePdu
-Sent packet #53, DisPduType 53 START_RESUME_RELIABLE              (packet.getLength()= 48) of type edu.nps.moves.dis7.pdus.StartResumeReliablePdu
-Sent packet #54, DisPduType 54 STOP_FREEZE_RELIABLE               (packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.StopFreezeReliablePdu
-Sent packet #55, DisPduType 55 ACKNOWLEDGE_RELIABLE               (packet.getLength()= 32) of type edu.nps.moves.dis7.pdus.AcknowledgeReliablePdu
-Sent packet #56, DisPduType 56 ACTION_REQUEST_RELIABLE            (packet.getLength()= 44) of type edu.nps.moves.dis7.pdus.ActionRequestReliablePdu
-Sent packet #57, DisPduType 57 ACTION_RESPONSE_RELIABLE           (packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.ActionResponseReliablePdu
-Sent packet #58, DisPduType 58 DATA_QUERY_RELIABLE                (packet.getLength()= 44) of type edu.nps.moves.dis7.pdus.DataQueryReliablePdu
-Sent packet #59, DisPduType 59 SET_DATA_RELIABLE                  (packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.SetDataReliablePdu
-Sent packet #60, DisPduType 60 DATA_RELIABLE                      (packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.DataReliablePdu
-Sent packet #61, DisPduType 61 EVENT_REPORT_RELIABLE              (packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.EventReportReliablePdu
-Sent packet #62, DisPduType 62 COMMENT_RELIABLE                   (packet.getLength()= 32) of type edu.nps.moves.dis7.pdus.CommentReliablePdu
-Sent packet #63, DisPduType 63 RECORD_RELIABLE                    (packet.getLength()= 36) of type edu.nps.moves.dis7.pdus.RecordReliablePdu
-Sent packet #64, DisPduType 64 SET_RECORD_RELIABLE                (packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.SetRecordReliablePdu
-Sent packet #65, DisPduType 65 RECORD_QUERY_RELIABLE              (packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.RecordQueryReliablePdu
-Sent packet #66, DisPduType 66 COLLISION_ELASTIC                  (packet.getLength()=100) of type edu.nps.moves.dis7.pdus.CollisionElasticPdu
-Sent packet #67, DisPduType 67 ENTITY_STATE_UPDATE                (packet.getLength()= 72) of type edu.nps.moves.dis7.pdus.EntityStateUpdatePdu
-Sent packet #68, DisPduType 68 DIRECTED_ENERGY_FIRE               (packet.getLength()= 88) of type edu.nps.moves.dis7.pdus.DirectedEnergyFirePdu
-Sent packet #69, DisPduType 69 ENTITY_DAMAGE_STATUS               (packet.getLength()= 24) of type edu.nps.moves.dis7.pdus.EntityDamageStatusPdu
-Sent packet #70, DisPduType 70 INFORMATION_OPERATIONS_ACTION      (packet.getLength()= 56) of type edu.nps.moves.dis7.pdus.InformationOperationsActionPdu
-Sent packet #71, DisPduType 71 INFORMATION_OPERATIONS_REPORT      (packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.InformationOperationsReportPdu
-Sent packet #72, DisPduType 72 ATTRIBUTE                          (packet.getLength()= 32) of type edu.nps.moves.dis7.pdus.AttributePdu
+Sent packet # 1, edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE(packet.getLength()=144) of type edu.nps.moves.dis7.pdus.EntityStatePdu
+Sent packet # 2, edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE(packet.getLength()= 96) of type edu.nps.moves.dis7.pdus.FirePdu
+Sent packet # 3, edu.nps.moves.dis7.enumerations.DisPduType 03 DETONATION(packet.getLength()=104) of type edu.nps.moves.dis7.pdus.DetonationPdu
+Sent packet # 4, edu.nps.moves.dis7.enumerations.DisPduType 04 COLLISION(packet.getLength()= 60) of type edu.nps.moves.dis7.pdus.CollisionPdu
+Sent packet # 5, edu.nps.moves.dis7.enumerations.DisPduType 05 SERVICE_REQUEST(packet.getLength()= 28) of type edu.nps.moves.dis7.pdus.ServiceRequestPdu
+Sent packet # 6, edu.nps.moves.dis7.enumerations.DisPduType 06 RESUPPLY_OFFER(packet.getLength()= 28) of type edu.nps.moves.dis7.pdus.ResupplyOfferPdu
+Sent packet # 7, edu.nps.moves.dis7.enumerations.DisPduType 07 RESUPPLY_RECEIVED(packet.getLength()= 28) of type edu.nps.moves.dis7.pdus.ResupplyReceivedPdu
+Sent packet # 8, edu.nps.moves.dis7.enumerations.DisPduType 08 RESUPPLY_CANCEL(packet.getLength()= 24) of type edu.nps.moves.dis7.pdus.ResupplyCancelPdu
+Sent packet # 9, edu.nps.moves.dis7.enumerations.DisPduType 09 REPAIR_COMPLETE(packet.getLength()= 28) of type edu.nps.moves.dis7.pdus.RepairCompletePdu
+Sent packet #10, edu.nps.moves.dis7.enumerations.DisPduType 10 REPAIR_RESPONSE(packet.getLength()= 28) of type edu.nps.moves.dis7.pdus.RepairResponsePdu
+Sent packet #11, edu.nps.moves.dis7.enumerations.DisPduType 11 CREATE_ENTITY(packet.getLength()= 28) of type edu.nps.moves.dis7.pdus.CreateEntityPdu
+Sent packet #12, edu.nps.moves.dis7.enumerations.DisPduType 12 REMOVE_ENTITY(packet.getLength()= 28) of type edu.nps.moves.dis7.pdus.RemoveEntityPdu
+Sent packet #13, edu.nps.moves.dis7.enumerations.DisPduType 13 START_RESUME(packet.getLength()= 44) of type edu.nps.moves.dis7.pdus.StartResumePdu
+Sent packet #14, edu.nps.moves.dis7.enumerations.DisPduType 14 STOP_FREEZE(packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.StopFreezePdu
+Sent packet #15, edu.nps.moves.dis7.enumerations.DisPduType 15 ACKNOWLEDGE(packet.getLength()= 32) of type edu.nps.moves.dis7.pdus.AcknowledgePdu
+Sent packet #16, edu.nps.moves.dis7.enumerations.DisPduType 16 ACTION_REQUEST(packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.ActionRequestPdu
+Sent packet #17, edu.nps.moves.dis7.enumerations.DisPduType 17 ACTION_RESPONSE(packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.ActionResponsePdu
+Sent packet #18, edu.nps.moves.dis7.enumerations.DisPduType 18 DATA_QUERY(packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.DataQueryPdu
+Sent packet #19, edu.nps.moves.dis7.enumerations.DisPduType 19 SET_DATA(packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.SetDataPdu
+Sent packet #20, edu.nps.moves.dis7.enumerations.DisPduType 20 DATA(packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.DataPdu
+Sent packet #21, edu.nps.moves.dis7.enumerations.DisPduType 21 EVENT_REPORT(packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.EventReportPdu
+Sent packet #22, edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT(packet.getLength()=112) of type edu.nps.moves.dis7.pdus.CommentPdu
+Sent packet #23, edu.nps.moves.dis7.enumerations.DisPduType 23 ELECTROMAGNETIC_EMISSION(packet.getLength()= 28) of type edu.nps.moves.dis7.pdus.ElectromagneticEmissionPdu
+Sent packet #24, edu.nps.moves.dis7.enumerations.DisPduType 24 DESIGNATOR(packet.getLength()= 88) of type edu.nps.moves.dis7.pdus.DesignatorPdu
+Sent packet #25, edu.nps.moves.dis7.enumerations.DisPduType 25 TRANSMITTER(packet.getLength()=106) of type edu.nps.moves.dis7.pdus.TransmitterPdu
+Sent packet #26, edu.nps.moves.dis7.enumerations.DisPduType 26 SIGNAL(packet.getLength()= 36) of type edu.nps.moves.dis7.pdus.SignalPdu
+Sent packet #27, edu.nps.moves.dis7.enumerations.DisPduType 27 RECEIVER(packet.getLength()= 36) of type edu.nps.moves.dis7.pdus.ReceiverPdu
+Sent packet #28, edu.nps.moves.dis7.enumerations.DisPduType 28 IDENTIFICATION_FRIEND_OR_FOE(packet.getLength()= 60) of type edu.nps.moves.dis7.pdus.IdentificationFriendOrFoePdu
+Sent packet #29, edu.nps.moves.dis7.enumerations.DisPduType 29 UNDERWATER_ACOUSTIC(packet.getLength()= 32) of type edu.nps.moves.dis7.pdus.UnderwaterAcousticPdu
+Sent packet #30, edu.nps.moves.dis7.enumerations.DisPduType 30 SUPPLEMENTAL_EMISSION_ENTITY_STATE(packet.getLength()= 28) of type edu.nps.moves.dis7.pdus.SupplementalEmissionEntityStatePdu
+Sent packet #31, edu.nps.moves.dis7.enumerations.DisPduType 31 INTERCOM_SIGNAL(packet.getLength()= 36) of type edu.nps.moves.dis7.pdus.IntercomSignalPdu
+Sent packet #32, edu.nps.moves.dis7.enumerations.DisPduType 32 INTERCOM_CONTROL(packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.IntercomControlPdu
+Sent packet #33, edu.nps.moves.dis7.enumerations.DisPduType 33 AGGREGATE_STATE(packet.getLength()=136) of type edu.nps.moves.dis7.pdus.AggregateStatePdu
+Sent packet #34, edu.nps.moves.dis7.enumerations.DisPduType 34 ISGROUPOF(packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.IsGroupOfPdu
+Sent packet #35, edu.nps.moves.dis7.enumerations.DisPduType 35 TRANSFER_OWNERSHIP(packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.TransferOwnershipPdu
+Sent packet #36, edu.nps.moves.dis7.enumerations.DisPduType 36 ISPARTOF(packet.getLength()= 52) of type edu.nps.moves.dis7.pdus.IsPartOfPdu
+Sent packet #37, edu.nps.moves.dis7.enumerations.DisPduType 37 MINEFIELD_STATE(packet.getLength()= 72) of type edu.nps.moves.dis7.pdus.MinefieldStatePdu
+Sent packet #38, edu.nps.moves.dis7.enumerations.DisPduType 38 MINEFIELD_QUERY(packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.MinefieldQueryPdu
+Sent packet #39, edu.nps.moves.dis7.enumerations.DisPduType 39 MINEFIELD_DATA(packet.getLength()= 44) of type edu.nps.moves.dis7.pdus.MinefieldDataPdu
+Sent packet #40, edu.nps.moves.dis7.enumerations.DisPduType 40 MINEFIELD_RESPONSE_NACK(packet.getLength()= 26) of type edu.nps.moves.dis7.pdus.MinefieldResponseNACKPdu
+Sent packet #41, edu.nps.moves.dis7.enumerations.DisPduType 41 ENVIRONMENTAL_PROCESS(packet.getLength()= 32) of type edu.nps.moves.dis7.pdus.EnvironmentalProcessPdu
+Sent packet #42, edu.nps.moves.dis7.enumerations.DisPduType 42 GRIDDED_DATA(packet.getLength()= 64) of type edu.nps.moves.dis7.pdus.GriddedDataPdu
+Sent packet #43, edu.nps.moves.dis7.enumerations.DisPduType 43 POINT_OBJECT_STATE(packet.getLength()= 91) of type edu.nps.moves.dis7.pdus.PointObjectStatePdu
+Sent packet #44, edu.nps.moves.dis7.enumerations.DisPduType 44 LINEAR_OBJECT_STATE(packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.LinearObjectStatePdu
+Sent packet #45, edu.nps.moves.dis7.enumerations.DisPduType 45 AREAL_OBJECT_STATE(packet.getLength()= 49) of type edu.nps.moves.dis7.pdus.ArealObjectStatePdu
+Sent packet #46, edu.nps.moves.dis7.enumerations.DisPduType 46 TIME_SPACE_POSITION_INFORMATION(packet.getLength()= 54) of type edu.nps.moves.dis7.pdus.TimeSpacePositionInformationPdu
+Sent packet #47, edu.nps.moves.dis7.enumerations.DisPduType 47 APPEARANCE(packet.getLength()= 67) of type edu.nps.moves.dis7.pdus.AppearancePdu
+Sent packet #48, edu.nps.moves.dis7.enumerations.DisPduType 48 ARTICULATED_PARTS(packet.getLength()= 17) of type edu.nps.moves.dis7.pdus.ArticulatedPartsPdu
+Sent packet #49, edu.nps.moves.dis7.enumerations.DisPduType 49 LIVE_ENTITY_FIRE(packet.getLength()= 67) of type edu.nps.moves.dis7.pdus.LiveEntityFirePdu
+Sent packet #50, edu.nps.moves.dis7.enumerations.DisPduType 50 LIVE_ENTITY_DETONATION(packet.getLength()= 79) of type edu.nps.moves.dis7.pdus.LiveEntityDetonationPdu
+Sent packet #51, edu.nps.moves.dis7.enumerations.DisPduType 51 CREATE_ENTITY_RELIABLE(packet.getLength()= 32) of type edu.nps.moves.dis7.pdus.CreateEntityReliablePdu
+Sent packet #52, edu.nps.moves.dis7.enumerations.DisPduType 52 REMOVE_ENTITY_RELIABLE(packet.getLength()= 32) of type edu.nps.moves.dis7.pdus.RemoveEntityReliablePdu
+Sent packet #53, edu.nps.moves.dis7.enumerations.DisPduType 53 START_RESUME_RELIABLE(packet.getLength()= 48) of type edu.nps.moves.dis7.pdus.StartResumeReliablePdu
+Sent packet #54, edu.nps.moves.dis7.enumerations.DisPduType 54 STOP_FREEZE_RELIABLE(packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.StopFreezeReliablePdu
+Sent packet #55, edu.nps.moves.dis7.enumerations.DisPduType 55 ACKNOWLEDGE_RELIABLE(packet.getLength()= 32) of type edu.nps.moves.dis7.pdus.AcknowledgeReliablePdu
+Sent packet #56, edu.nps.moves.dis7.enumerations.DisPduType 56 ACTION_REQUEST_RELIABLE(packet.getLength()= 44) of type edu.nps.moves.dis7.pdus.ActionRequestReliablePdu
+Sent packet #57, edu.nps.moves.dis7.enumerations.DisPduType 57 ACTION_RESPONSE_RELIABLE(packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.ActionResponseReliablePdu
+Sent packet #58, edu.nps.moves.dis7.enumerations.DisPduType 58 DATA_QUERY_RELIABLE(packet.getLength()= 44) of type edu.nps.moves.dis7.pdus.DataQueryReliablePdu
+Sent packet #59, edu.nps.moves.dis7.enumerations.DisPduType 59 SET_DATA_RELIABLE(packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.SetDataReliablePdu
+Sent packet #60, edu.nps.moves.dis7.enumerations.DisPduType 60 DATA_RELIABLE(packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.DataReliablePdu
+Sent packet #61, edu.nps.moves.dis7.enumerations.DisPduType 61 EVENT_REPORT_RELIABLE(packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.EventReportReliablePdu
+Sent packet #62, edu.nps.moves.dis7.enumerations.DisPduType 62 COMMENT_RELIABLE(packet.getLength()= 32) of type edu.nps.moves.dis7.pdus.CommentReliablePdu
+Sent packet #63, edu.nps.moves.dis7.enumerations.DisPduType 63 RECORD_RELIABLE(packet.getLength()= 36) of type edu.nps.moves.dis7.pdus.RecordReliablePdu
+Sent packet #64, edu.nps.moves.dis7.enumerations.DisPduType 64 SET_RECORD_RELIABLE(packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.SetRecordReliablePdu
+Sent packet #65, edu.nps.moves.dis7.enumerations.DisPduType 65 RECORD_QUERY_RELIABLE(packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.RecordQueryReliablePdu
+Sent packet #66, edu.nps.moves.dis7.enumerations.DisPduType 66 COLLISION_ELASTIC(packet.getLength()=100) of type edu.nps.moves.dis7.pdus.CollisionElasticPdu
+Sent packet #67, edu.nps.moves.dis7.enumerations.DisPduType 67 ENTITY_STATE_UPDATE(packet.getLength()= 72) of type edu.nps.moves.dis7.pdus.EntityStateUpdatePdu
+Sent packet #68, edu.nps.moves.dis7.enumerations.DisPduType 68 DIRECTED_ENERGY_FIRE(packet.getLength()= 88) of type edu.nps.moves.dis7.pdus.DirectedEnergyFirePdu
+Sent packet #69, edu.nps.moves.dis7.enumerations.DisPduType 69 ENTITY_DAMAGE_STATUS(packet.getLength()= 24) of type edu.nps.moves.dis7.pdus.EntityDamageStatusPdu
+Sent packet #70, edu.nps.moves.dis7.enumerations.DisPduType 70 INFORMATION_OPERATIONS_ACTION(packet.getLength()= 56) of type edu.nps.moves.dis7.pdus.InformationOperationsActionPdu
+Sent packet #71, edu.nps.moves.dis7.enumerations.DisPduType 71 INFORMATION_OPERATIONS_REPORT(packet.getLength()= 40) of type edu.nps.moves.dis7.pdus.InformationOperationsReportPdu
+Sent packet #72, edu.nps.moves.dis7.enumerations.DisPduType 72 ATTRIBUTE(packet.getLength()= 32) of type edu.nps.moves.dis7.pdus.AttributePdu
 OpenDis7Examples.AllPduSender complete, sent 72 PDUs total.
-BUILD SUCCESSFUL (total time: 3 seconds)
+BUILD SUCCESSFUL (total time: 1 second)
diff --git a/examples/src/OpenDis7Examples/EspduReceiver.java b/examples/src/OpenDis7Examples/EspduReceiver.java
index 6fd1f1f237e4207e2349a727dd14be3b048e59a8..ab0c16822ae337ef3de122a09683374f50d0495c 100755
--- a/examples/src/OpenDis7Examples/EspduReceiver.java
+++ b/examples/src/OpenDis7Examples/EspduReceiver.java
@@ -1,12 +1,11 @@
 package OpenDis7Examples; 
 
+import edu.nps.moves.dis7.pdus.*;
+import edu.nps.moves.dis7.utilities.*;
 import java.io.*;
 import java.net.*;
 import java.util.*;
 
-import edu.nps.moves.dis7.pdus.*;
-import edu.nps.moves.dis7.utilities.*;
-
 /**
  * Receives PDUs from the network in IEEE DIS format.
  * Adapted from OpenDIS library example package edu.nps.moves.examples
@@ -42,6 +41,8 @@ public class EspduReceiver
         InetAddress     multicastInetAddress;
         DatagramPacket  packet;
         PduFactory      pduFactory = new PduFactory();
+        PduFactory.TimestampStyle       timestampStyle        = PduFactory.TimestampStyle.YEAR;
+        pduFactory.setTimestampStyle(timestampStyle);
         int pduCount = 0;
 
         System.out.println(TRACE_PREFIX + "started...");
@@ -79,7 +80,7 @@ public class EspduReceiver
                 {
                     pduCount++;
                     String receiptMessage = String.format("%3s", pduCount) // right justify, 3 characters
-                           + ". received PDU type " + nextPdu.getPduType().getValue() + "=" + nextPdu.getPduType().name() + " " + nextPdu.getClass().getName();
+                           + ". received PDU type " + nextPdu.getPduType().getValue() + "=" + nextPdu.getPduType().name() + " " + nextPdu.getClass().getSimpleName();
                     if (nextPdu instanceof EntityStatePdu)
                     {
                         System.out.println(receiptMessage);
diff --git a/examples/src/OpenDis7Examples/EspduReceiverLog.txt b/examples/src/OpenDis7Examples/EspduReceiverLog.txt
index e1bd18919b9e9283532047d731e6ef061d3025e0..6a1fa9e38caed6fc4e7826c408d98f92d0279139 100644
--- a/examples/src/OpenDis7Examples/EspduReceiverLog.txt
+++ b/examples/src/OpenDis7Examples/EspduReceiverLog.txt
@@ -1,10 +1,3 @@
-Invocation instructions:
-1. run/debug EspduReceiver.java (since sender does not block, first be ready to listen)
-2. run/debug EspduSender.java
-
-Program responses follow for receiver:
-
-===================================================
 ant -f C:\\x-nps-gitlab\\NetworkedGraphicsMV3500\\examples -Dnb.internal.action.name=run.single -Djavac.includes=OpenDis7Examples/EspduReceiver.java -Drun.class=OpenDis7Examples.EspduReceiver run-single
 init:
 Deleting: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\build\built-jar.properties
@@ -17,93 +10,63 @@ run-single:
 [OpenDis7Examples.EspduReceiver] listening for PDU packets on 239.1.2.3 port 3000
 To quit: stop or kill this process
 ===============
-  1. received PDU type 1=ENTITY_STATE edu.nps.moves.dis7.pdus.EntityStatePdu
+  1. received PDU type 1=ENTITY_STATE EntityStatePdu
      entityID triplet: [1, 2, 3] 
      Location in DIS coordinates:        [-2707497.4860692197, -4353661.0646844525, 3781450.3202754413]
-  2. received PDU type 2=FIRE edu.nps.moves.dis7.pdus.FirePdu
+  2. received PDU type 2=FIRE FirePdu
      FirePdu locationInWorldCoordinates: [-2707497.4860692197, -4353661.0646844525, 3781450.3202754413]
 ===============
-  3. received PDU type 1=ENTITY_STATE edu.nps.moves.dis7.pdus.EntityStatePdu
+  3. received PDU type 1=ENTITY_STATE EntityStatePdu
      entityID triplet: [1, 2, 3] 
      Location in DIS coordinates:        [-2707497.4860692197, -4353661.0646844525, 3781450.3202754413]
-  4. received PDU type 2=FIRE edu.nps.moves.dis7.pdus.FirePdu
+  4. received PDU type 2=FIRE FirePdu
      FirePdu locationInWorldCoordinates: [-2707497.4860692197, -4353661.0646844525, 3781450.3202754413]
 ===============
-  5. received PDU type 1=ENTITY_STATE edu.nps.moves.dis7.pdus.EntityStatePdu
-     entityID triplet: [1, 2, 3] 
-     Location in DIS coordinates:        [-2707497.4860692197, -4353661.0646844525, 3781450.3202754413]
-  6. received PDU type 2=FIRE edu.nps.moves.dis7.pdus.FirePdu
-     FirePdu locationInWorldCoordinates: [-2707497.4860692197, -4353661.0646844525, 3781450.3202754413]
-===============
-  7. received PDU type 1=ENTITY_STATE edu.nps.moves.dis7.pdus.EntityStatePdu
-     entityID triplet: [1, 2, 3] 
-     Location in DIS coordinates:        [-2707492.9269245286, -4353663.899966802, 3781450.3202754413]
-  8. received PDU type 2=FIRE edu.nps.moves.dis7.pdus.FirePdu
-     FirePdu locationInWorldCoordinates: [-2707492.9269245286, -4353663.899966802, 3781450.3202754413]
-===============
-  9. received PDU type 1=ENTITY_STATE edu.nps.moves.dis7.pdus.EntityStatePdu
+  5. received PDU type 1=ENTITY_STATE EntityStatePdu
      entityID triplet: [1, 2, 3] 
      Location in DIS coordinates:        [-2707492.9269245286, -4353663.899966802, 3781450.3202754413]
- 10. received PDU type 2=FIRE edu.nps.moves.dis7.pdus.FirePdu
+  6. received PDU type 2=FIRE FirePdu
      FirePdu locationInWorldCoordinates: [-2707492.9269245286, -4353663.899966802, 3781450.3202754413]
 ===============
- 11. received PDU type 1=ENTITY_STATE edu.nps.moves.dis7.pdus.EntityStatePdu
+  7. received PDU type 1=ENTITY_STATE EntityStatePdu
      entityID triplet: [1, 2, 3] 
      Location in DIS coordinates:        [-2707492.9269245286, -4353663.899966802, 3781450.3202754413]
- 12. received PDU type 2=FIRE edu.nps.moves.dis7.pdus.FirePdu
+  8. received PDU type 2=FIRE FirePdu
      FirePdu locationInWorldCoordinates: [-2707492.9269245286, -4353663.899966802, 3781450.3202754413]
 ===============
- 13. received PDU type 1=ENTITY_STATE edu.nps.moves.dis7.pdus.EntityStatePdu
-     entityID triplet: [1, 2, 3] 
-     Location in DIS coordinates:        [-2707497.4860692197, -4353661.0646844525, 3781450.3202754413]
- 14. received PDU type 2=FIRE edu.nps.moves.dis7.pdus.FirePdu
-     FirePdu locationInWorldCoordinates: [-2707497.4860692197, -4353661.0646844525, 3781450.3202754413]
-===============
- 15. received PDU type 1=ENTITY_STATE edu.nps.moves.dis7.pdus.EntityStatePdu
+  9. received PDU type 1=ENTITY_STATE EntityStatePdu
      entityID triplet: [1, 2, 3] 
      Location in DIS coordinates:        [-2707497.4860692197, -4353661.0646844525, 3781450.3202754413]
- 16. received PDU type 2=FIRE edu.nps.moves.dis7.pdus.FirePdu
+ 10. received PDU type 2=FIRE FirePdu
      FirePdu locationInWorldCoordinates: [-2707497.4860692197, -4353661.0646844525, 3781450.3202754413]
 ===============
- 17. received PDU type 1=ENTITY_STATE edu.nps.moves.dis7.pdus.EntityStatePdu
+ 11. received PDU type 1=ENTITY_STATE EntityStatePdu
      entityID triplet: [1, 2, 3] 
      Location in DIS coordinates:        [-2707497.4860692197, -4353661.0646844525, 3781450.3202754413]
- 18. received PDU type 2=FIRE edu.nps.moves.dis7.pdus.FirePdu
+ 12. received PDU type 2=FIRE FirePdu
      FirePdu locationInWorldCoordinates: [-2707497.4860692197, -4353661.0646844525, 3781450.3202754413]
 ===============
- 19. received PDU type 1=ENTITY_STATE edu.nps.moves.dis7.pdus.EntityStatePdu
-     entityID triplet: [1, 2, 3] 
-     Location in DIS coordinates:        [-2707492.9269245286, -4353663.899966802, 3781450.3202754413]
- 20. received PDU type 2=FIRE edu.nps.moves.dis7.pdus.FirePdu
-     FirePdu locationInWorldCoordinates: [-2707492.9269245286, -4353663.899966802, 3781450.3202754413]
-===============
- 21. received PDU type 1=ENTITY_STATE edu.nps.moves.dis7.pdus.EntityStatePdu
+ 13. received PDU type 1=ENTITY_STATE EntityStatePdu
      entityID triplet: [1, 2, 3] 
      Location in DIS coordinates:        [-2707492.9269245286, -4353663.899966802, 3781450.3202754413]
- 22. received PDU type 2=FIRE edu.nps.moves.dis7.pdus.FirePdu
+ 14. received PDU type 2=FIRE FirePdu
      FirePdu locationInWorldCoordinates: [-2707492.9269245286, -4353663.899966802, 3781450.3202754413]
 ===============
- 23. received PDU type 1=ENTITY_STATE edu.nps.moves.dis7.pdus.EntityStatePdu
+ 15. received PDU type 1=ENTITY_STATE EntityStatePdu
      entityID triplet: [1, 2, 3] 
      Location in DIS coordinates:        [-2707492.9269245286, -4353663.899966802, 3781450.3202754413]
- 24. received PDU type 2=FIRE edu.nps.moves.dis7.pdus.FirePdu
+ 16. received PDU type 2=FIRE FirePdu
      FirePdu locationInWorldCoordinates: [-2707492.9269245286, -4353663.899966802, 3781450.3202754413]
 ===============
- 25. received PDU type 1=ENTITY_STATE edu.nps.moves.dis7.pdus.EntityStatePdu
-     entityID triplet: [1, 2, 3] 
-     Location in DIS coordinates:        [-2707497.4860692197, -4353661.0646844525, 3781450.3202754413]
- 26. received PDU type 2=FIRE edu.nps.moves.dis7.pdus.FirePdu
-     FirePdu locationInWorldCoordinates: [-2707497.4860692197, -4353661.0646844525, 3781450.3202754413]
-===============
- 27. received PDU type 1=ENTITY_STATE edu.nps.moves.dis7.pdus.EntityStatePdu
+ 17. received PDU type 1=ENTITY_STATE EntityStatePdu
      entityID triplet: [1, 2, 3] 
      Location in DIS coordinates:        [-2707497.4860692197, -4353661.0646844525, 3781450.3202754413]
- 28. received PDU type 2=FIRE edu.nps.moves.dis7.pdus.FirePdu
+ 18. received PDU type 2=FIRE FirePdu
      FirePdu locationInWorldCoordinates: [-2707497.4860692197, -4353661.0646844525, 3781450.3202754413]
 ===============
- 29. received PDU type 1=ENTITY_STATE edu.nps.moves.dis7.pdus.EntityStatePdu
+ 19. received PDU type 1=ENTITY_STATE EntityStatePdu
      entityID triplet: [1, 2, 3] 
      Location in DIS coordinates:        [-2707497.4860692197, -4353661.0646844525, 3781450.3202754413]
- 30. received PDU type 2=FIRE edu.nps.moves.dis7.pdus.FirePdu
+ 20. received PDU type 2=FIRE FirePdu
      FirePdu locationInWorldCoordinates: [-2707497.4860692197, -4353661.0646844525, 3781450.3202754413]
 ===============
diff --git a/examples/src/OpenDis7Examples/EspduSender.java b/examples/src/OpenDis7Examples/EspduSender.java
index c5ca411e1623ff990cdd7753e8054e9d75843859..dbfebb1838d42b0fdfaa6dd82b86e74078bd880a 100644
--- a/examples/src/OpenDis7Examples/EspduSender.java
+++ b/examples/src/OpenDis7Examples/EspduSender.java
@@ -248,7 +248,7 @@ public class EspduSender
 				// update the timestamp on ALL packets sent.
 				// An alterative approach: actually follow the standard. It's a crazy concept,
 				// but it might just work.
-				int timestamp = disTime.getDisAbsoluteTimestamp();
+				int timestamp = disTime.getCurrentDisAbsoluteTimestamp();
 				espdu.setTimestamp(timestamp);
 
 				// Set the position of the entity in the world. DIS uses a cartesian 
diff --git a/examples/src/OpenDis7Examples/EspduSenderLog.txt b/examples/src/OpenDis7Examples/EspduSenderLog.txt
index 326840bfad539fed422d84be88583da8326bbe6c..99c47dbe62c82fdfca40b6c9483afee645fb6b0b 100644
--- a/examples/src/OpenDis7Examples/EspduSenderLog.txt
+++ b/examples/src/OpenDis7Examples/EspduSenderLog.txt
@@ -1,10 +1,3 @@
-Invocation instructions:
-1. run/debug EspduReceiver.java (since sender does not block, first be ready to listen)
-2. run/debug EspduSender.java
-
-Program responses follow for sender:
-
-===================================================
 ant -f C:\\x-nps-gitlab\\NetworkedGraphicsMV3500\\examples -Dnb.internal.action.name=run.single -Djavac.includes=OpenDis7Examples/EspduSender.java -Drun.class=OpenDis7Examples.EspduSender run-single
 init:
 Deleting: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\build\built-jar.properties
@@ -17,7 +10,7 @@ run-single:
 [OpenDis7Examples.EspduSender]  sending multicast ESPDU packets to 239.1.2.3 port 3000
 ===============
 espdu entityType information:
-  EntityKind =DisPduType 1 PLATFORM
+  EntityKind =edu.nps.moves.dis7.enumerations.EntityKind 1 PLATFORM
   Country    =Country 225 UNITED_STATES_OF_AMERICA_USA
   Domain     =Land
   Category   =1
@@ -29,131 +22,61 @@ Create new PDUs
   latitude, longitude:   [36.595517, -121.87706]
   coordinate conversion: [-2707497.4860692197, -4353661.0646844525, 3781450.3202754413]
 Espdu #1 entityID=[1,2,3]
-FirePdu #1 firePdu=[FireMissionIndex=0, descriptor=MunitionDescriptor:
- munitionType: EntityType:
- entityKind: DisPduType 0 OTHER
- domain: Other
- country: Country 0 OTHER
- category: 0
- subCategory: 0
- specific: 0
- extra: 0
-
- warhead: MunitionDescriptorWarhead 0 OTHER
- fuse: MunitionDescriptorFuse 0 OTHER
- quantity: 0
- rate: 0
-]
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 127.255.255.255 port 3000
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 02 FIRE        ] packet.getLength()= 96, to 127.255.255.255 port 3000
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 172.28.143.255  port 3000
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 02 FIRE        ] packet.getLength()= 96, to 172.28.143.255  port 3000
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 172.20.159.255  port 3000
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 02 FIRE        ] packet.getLength()= 96, to 172.20.159.255  port 3000
+FirePdu #1 firePdu=[FireMissionIndex=0, descriptor=MunitionDescriptor munitionType:EntityType entityKind:edu.nps.moves.dis7.enumerations.EntityKind 0 OTHER domain:Other country:Country 0 OTHER category:0 subCategory:0 specific:0 extra:0 warhead:MunitionDescriptorWarhead 0 OTHER fuse:MunitionDescriptorFuse 0 OTHER quantity:0 rate:0]
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 127.255.255.255 port 3000
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE        ] packet.getLength()= 96, to 127.255.255.255 port 3000
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 172.20.210.244  port 3000
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE        ] packet.getLength()= 96, to 172.20.210.244  port 3000
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 172.16.0.255    port 3000
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE        ] packet.getLength()= 96, to 172.16.0.255    port 3000
 ===============
 Create new PDUs
   latitude, longitude:   [36.595517, -121.877]
   coordinate conversion: [-2707492.9269245286, -4353663.899966802, 3781450.3202754413]
 Espdu #2 entityID=[1,2,3]
-FirePdu #2 firePdu=[FireMissionIndex=0, descriptor=MunitionDescriptor:
- munitionType: EntityType:
- entityKind: DisPduType 0 OTHER
- domain: Other
- country: Country 0 OTHER
- category: 0
- subCategory: 0
- specific: 0
- extra: 0
-
- warhead: MunitionDescriptorWarhead 0 OTHER
- fuse: MunitionDescriptorFuse 0 OTHER
- quantity: 0
- rate: 0
-]
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 127.255.255.255 port 3000
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 02 FIRE        ] packet.getLength()= 96, to 127.255.255.255 port 3000
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 172.28.143.255  port 3000
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 02 FIRE        ] packet.getLength()= 96, to 172.28.143.255  port 3000
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 172.20.159.255  port 3000
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 02 FIRE        ] packet.getLength()= 96, to 172.20.159.255  port 3000
+FirePdu #2 firePdu=[FireMissionIndex=0, descriptor=MunitionDescriptor munitionType:EntityType entityKind:edu.nps.moves.dis7.enumerations.EntityKind 0 OTHER domain:Other country:Country 0 OTHER category:0 subCategory:0 specific:0 extra:0 warhead:MunitionDescriptorWarhead 0 OTHER fuse:MunitionDescriptorFuse 0 OTHER quantity:0 rate:0]
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 127.255.255.255 port 3000
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE        ] packet.getLength()= 96, to 127.255.255.255 port 3000
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 172.20.210.244  port 3000
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE        ] packet.getLength()= 96, to 172.20.210.244  port 3000
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 172.16.0.255    port 3000
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE        ] packet.getLength()= 96, to 172.16.0.255    port 3000
 ===============
 Create new PDUs
   latitude, longitude:   [36.595517, -121.87706]
   coordinate conversion: [-2707497.4860692197, -4353661.0646844525, 3781450.3202754413]
 Espdu #3 entityID=[1,2,3]
-FirePdu #3 firePdu=[FireMissionIndex=0, descriptor=MunitionDescriptor:
- munitionType: EntityType:
- entityKind: DisPduType 0 OTHER
- domain: Other
- country: Country 0 OTHER
- category: 0
- subCategory: 0
- specific: 0
- extra: 0
-
- warhead: MunitionDescriptorWarhead 0 OTHER
- fuse: MunitionDescriptorFuse 0 OTHER
- quantity: 0
- rate: 0
-]
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 127.255.255.255 port 3000
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 02 FIRE        ] packet.getLength()= 96, to 127.255.255.255 port 3000
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 172.28.143.255  port 3000
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 02 FIRE        ] packet.getLength()= 96, to 172.28.143.255  port 3000
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 172.20.159.255  port 3000
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 02 FIRE        ] packet.getLength()= 96, to 172.20.159.255  port 3000
+FirePdu #3 firePdu=[FireMissionIndex=0, descriptor=MunitionDescriptor munitionType:EntityType entityKind:edu.nps.moves.dis7.enumerations.EntityKind 0 OTHER domain:Other country:Country 0 OTHER category:0 subCategory:0 specific:0 extra:0 warhead:MunitionDescriptorWarhead 0 OTHER fuse:MunitionDescriptorFuse 0 OTHER quantity:0 rate:0]
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 127.255.255.255 port 3000
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE        ] packet.getLength()= 96, to 127.255.255.255 port 3000
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 172.20.210.244  port 3000
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE        ] packet.getLength()= 96, to 172.20.210.244  port 3000
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 172.16.0.255    port 3000
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE        ] packet.getLength()= 96, to 172.16.0.255    port 3000
 ===============
 Create new PDUs
   latitude, longitude:   [36.595517, -121.877]
   coordinate conversion: [-2707492.9269245286, -4353663.899966802, 3781450.3202754413]
 Espdu #4 entityID=[1,2,3]
-FirePdu #4 firePdu=[FireMissionIndex=0, descriptor=MunitionDescriptor:
- munitionType: EntityType:
- entityKind: DisPduType 0 OTHER
- domain: Other
- country: Country 0 OTHER
- category: 0
- subCategory: 0
- specific: 0
- extra: 0
-
- warhead: MunitionDescriptorWarhead 0 OTHER
- fuse: MunitionDescriptorFuse 0 OTHER
- quantity: 0
- rate: 0
-]
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 127.255.255.255 port 3000
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 02 FIRE        ] packet.getLength()= 96, to 127.255.255.255 port 3000
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 172.28.143.255  port 3000
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 02 FIRE        ] packet.getLength()= 96, to 172.28.143.255  port 3000
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 172.20.159.255  port 3000
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 02 FIRE        ] packet.getLength()= 96, to 172.20.159.255  port 3000
+FirePdu #4 firePdu=[FireMissionIndex=0, descriptor=MunitionDescriptor munitionType:EntityType entityKind:edu.nps.moves.dis7.enumerations.EntityKind 0 OTHER domain:Other country:Country 0 OTHER category:0 subCategory:0 specific:0 extra:0 warhead:MunitionDescriptorWarhead 0 OTHER fuse:MunitionDescriptorFuse 0 OTHER quantity:0 rate:0]
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 127.255.255.255 port 3000
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE        ] packet.getLength()= 96, to 127.255.255.255 port 3000
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 172.20.210.244  port 3000
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE        ] packet.getLength()= 96, to 172.20.210.244  port 3000
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 172.16.0.255    port 3000
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE        ] packet.getLength()= 96, to 172.16.0.255    port 3000
 ===============
 Create new PDUs
   latitude, longitude:   [36.595517, -121.87706]
   coordinate conversion: [-2707497.4860692197, -4353661.0646844525, 3781450.3202754413]
 Espdu #5 entityID=[1,2,3]
-FirePdu #5 firePdu=[FireMissionIndex=0, descriptor=MunitionDescriptor:
- munitionType: EntityType:
- entityKind: DisPduType 0 OTHER
- domain: Other
- country: Country 0 OTHER
- category: 0
- subCategory: 0
- specific: 0
- extra: 0
-
- warhead: MunitionDescriptorWarhead 0 OTHER
- fuse: MunitionDescriptorFuse 0 OTHER
- quantity: 0
- rate: 0
-]
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 127.255.255.255 port 3000
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 02 FIRE        ] packet.getLength()= 96, to 127.255.255.255 port 3000
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 172.28.143.255  port 3000
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 02 FIRE        ] packet.getLength()= 96, to 172.28.143.255  port 3000
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 172.20.159.255  port 3000
-[OpenDis7Examples.EspduSender] sending datagram packet [DisPduType 02 FIRE        ] packet.getLength()= 96, to 172.20.159.255  port 3000
+FirePdu #5 firePdu=[FireMissionIndex=0, descriptor=MunitionDescriptor munitionType:EntityType entityKind:edu.nps.moves.dis7.enumerations.EntityKind 0 OTHER domain:Other country:Country 0 OTHER category:0 subCategory:0 specific:0 extra:0 warhead:MunitionDescriptorWarhead 0 OTHER fuse:MunitionDescriptorFuse 0 OTHER quantity:0 rate:0]
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 127.255.255.255 port 3000
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE        ] packet.getLength()= 96, to 127.255.255.255 port 3000
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 172.20.210.244  port 3000
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE        ] packet.getLength()= 96, to 172.20.210.244  port 3000
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE] packet.getLength()=144, to 172.16.0.255    port 3000
+[OpenDis7Examples.EspduSender] sending datagram packet [edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE        ] packet.getLength()= 96, to 172.16.0.255    port 3000
 ===============
 [OpenDis7Examples.EspduSender] complete.
-BUILD SUCCESSFUL (total time: 10 seconds)
+BUILD SUCCESSFUL (total time: 7 seconds)
diff --git a/examples/src/OpenDis7Examples/ExampleSimulationProgram.java b/examples/src/OpenDis7Examples/ExampleSimulationProgram.java
index 53a66b691bd194a1954821fc2f20925ed7d4c472..8e691af4f63ac4d1cefc7dd35439ab284e7870f5 100644
--- a/examples/src/OpenDis7Examples/ExampleSimulationProgram.java
+++ b/examples/src/OpenDis7Examples/ExampleSimulationProgram.java
@@ -185,6 +185,7 @@ public class ExampleSimulationProgram
     
     // class variables
     PduFactory                              pduFactory = new PduFactory();
+    PduFactory.TimestampStyle               timestampStyle = PduFactory.TimestampStyle.YEAR;
     DisThreadedNetworkInterface             disNetworkInterface;
     DisThreadedNetworkInterface.PduListener pduListener;
     Pdu                                     receivedPdu;
@@ -196,7 +197,7 @@ public class ExampleSimulationProgram
      */
     public ExampleSimulationProgram()
     {
-        // Potential constructor is under consideration.  Constructor is not currently needed.
+        pduFactory.setTimestampStyle(timestampStyle);
     }
     
     /**
@@ -220,7 +221,6 @@ public class ExampleSimulationProgram
     {
         return networkAddress;
     }
-
     /**
      * @param newNetworkAddress the networkAddress to set
      */
@@ -236,7 +236,6 @@ public class ExampleSimulationProgram
     {
         return networkPort;
     }
-
     /**
      * @param newNetworkPort the networkPort to set
      */
@@ -244,6 +243,25 @@ public class ExampleSimulationProgram
     {
         this.networkPort = newNetworkPort;
     }
+    /**
+     * Get timestampStyle used by PduFactory
+     * @return current timestampStyle
+     */
+    public PduFactory.TimestampStyle getTimestampStyle()
+    {
+        return timestampStyle;
+    }
+    /**
+     * Set timestampStyle used by PduFactory
+     * @param newTimestampStyle the timestampStyle to set
+     * @return same object to permit progressive setters 
+     */
+    public ExampleSimulationProgram setTimestampStyle(PduFactory.TimestampStyle newTimestampStyle) 
+    {
+        timestampStyle = newTimestampStyle;
+        pduFactory.setTimestampStyle(newTimestampStyle);
+        return this;
+    }
 
     /**
      * Initialize network interface, choosing best available network interface
diff --git a/examples/src/OpenDis7Examples/ExampleSimulationProgramLog.txt b/examples/src/OpenDis7Examples/ExampleSimulationProgramLog.txt
index bd0ec395cdb0e619d78aea6daccc665322bb4bb1..1837e167901ea29115bcb2d6dfa49bbf40f8ff04 100644
--- a/examples/src/OpenDis7Examples/ExampleSimulationProgramLog.txt
+++ b/examples/src/OpenDis7Examples/ExampleSimulationProgramLog.txt
@@ -9,114 +9,114 @@ run-single:
 [OpenDis7Examples.ExampleSimulationProgram] main() started...
 [DisThreadedNetworkInterface] using network interface Intel(R) Wi-Fi 6E AX210 160MHz
 [DisThreadedNetworkInterface] datagramSocket.joinGroup  address=239.1.2.3 port=3000 isConnected()=false createDatagramSocket() complete.
-DisThreadedNetworkInterface createThreads() receiveThread.isAlive()=true
-DisThreadedNetworkInterface createThreads() sendingThread.isAlive()=true
+[DisThreadedNetworkInterface] createThreads() receiveThread.isAlive()=true
+[DisThreadedNetworkInterface] createThreads() sendingThread.isAlive()=true
 Network confirmation: address=239.1.2.3 port=3000
 Beginning pdu save to directory ./pduLog
-Recorder log file open: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog50.dislog
+Recorder log file open: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog4.dislog
 [DisThreadedNetworkInterface] using network interface Intel(R) Wi-Fi 6E AX210 160MHz
 [DisThreadedNetworkInterface] datagramSocket.joinGroup  address=239.1.2.3 port=3000 isConnected()=false createDatagramSocket() complete.
-DisThreadedNetworkInterface createThreads() receiveThread.isAlive()=true
-DisThreadedNetworkInterface createThreads() sendingThread.isAlive()=true
-[PduRecorder ExampleSimulationProgram pduRecorder] listening to IP address 239.1.2.3 on port 3000
+[DisThreadedNetworkInterface] createThreads() receiveThread.isAlive()=true
+[DisThreadedNetworkInterface] createThreads() sendingThread.isAlive()=true
+[PduRecorder PduRecorder] listening to IP address 239.1.2.3 on port 3000
 ... My simulation just did something, no really...
 ... [Pausing for 1.0 seconds]
 sending PDUs for simulation step 1, monitor loopback to confirm sent
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  1] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  1] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt  1] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  2] DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  2] DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt  2] DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  3] DisPduType 22 COMMENT, size 104 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt  3] DisPduType 22 COMMENT, size 104 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  3] DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  1] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  1] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt  1] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  2] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt  2] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  2] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  3] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  3] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt  3] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
 *** [Narrative comment sent: APPLICATION_TIMESTEP] [MV3500 ExampleSimulationProgram, runSimulation() loop 1]
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  4] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  4] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt  4] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  4] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt  4] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  4] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
 ... [PDUs successfully sent for this loop]
 ... My simulation just did something, no really...
 ... [Pausing for 1.0 seconds]
 sending PDUs for simulation step 2, monitor loopback to confirm sent
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  5] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  5] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt  5] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  6] DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  6] DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt  6] DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  7] DisPduType 22 COMMENT, size 104 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  7] DisPduType 22 COMMENT, size 104 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt  7] DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  5] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt  5] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  5] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  6] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  6] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt  6] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  7] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  7] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt  7] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
 *** [Narrative comment sent: APPLICATION_TIMESTEP] [MV3500 ExampleSimulationProgram, runSimulation() loop 2]
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  8] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  8] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt  8] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  8] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  8] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt  8] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
 ... [PDUs successfully sent for this loop]
 ... My simulation just did something, no really...
 ... [Pausing for 1.0 seconds]
 sending PDUs for simulation step 3, monitor loopback to confirm sent
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  9] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  9] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt  9] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 10] DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 10] DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 10] DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 11] DisPduType 22 COMMENT, size 104 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 11] DisPduType 22 COMMENT, size 104 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 11] DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  9] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  9] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt  9] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 10] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 10] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt 10] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 11] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 11] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt 11] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
 *** [Narrative comment sent: APPLICATION_TIMESTEP] [MV3500 ExampleSimulationProgram, runSimulation() loop 3]
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 12] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 12] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 12] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 12] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt 12] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 12] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
 ... [PDUs successfully sent for this loop]
 ... My simulation just did something, no really...
 ... [Pausing for 1.0 seconds]
 sending PDUs for simulation step 4, monitor loopback to confirm sent
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 13] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 13] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 13] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 14] DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 14] DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 14] DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 15] DisPduType 22 COMMENT, size 104 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 15] DisPduType 22 COMMENT, size 104 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 15] DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 13] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 13] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt 13] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 14] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 14] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt 14] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 15] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 15] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt 15] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
 *** [Narrative comment sent: APPLICATION_TIMESTEP] [MV3500 ExampleSimulationProgram, runSimulation() loop 4]
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 16] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 16] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 16] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 16] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 16] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt 16] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
 ... [PDUs successfully sent for this loop]
 ... My simulation just did something, no really...
 ... [Pausing for 1.0 seconds]
 sending PDUs for simulation step 5, monitor loopback to confirm sent
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 17] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 17] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 17] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 18] DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 18] DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 18] DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 19] DisPduType 22 COMMENT, size 104 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 19] DisPduType 22 COMMENT, size 104 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 19] DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 17] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 17] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt 17] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 18] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 18] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt 18] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 19] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt 19] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 19] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
 *** [Narrative comment sent: APPLICATION_TIMESTEP] [MV3500 ExampleSimulationProgram, runSimulation() loop 5]
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 20] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 20] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 20] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 20] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 20] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt 20] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
 ... [PDUs successfully sent for this loop]
-... [Termination condition met, simulationComplete=true]
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 21] DisPduType 22 COMMENT, size 120 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 21] DisPduType 22 COMMENT, size 120 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] [receipt 21] DisPduType 22 COMMENT, size 120 bytes)
+... [loop termination condition met, simulationComplete=true]
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 21] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 120 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 21] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 120 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt 21] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 120 bytes)
 *** [Narrative comment sent: COMPLETE_EVENT_REPORT] [MV3500 ExampleSimulationProgram, runSimulation() completed successfully]
 ... [final CommentPdu successfully sent for simulation]
 *** setKillSentinelAndInterrupts() killed=true sendingThread.isInterrupted()=false receiveThread.isInterrupted()=true
-*** DisThreadedNetworkInterface close(): pdus2send.size()=0 baos.size()=0 dos.size()=0
-[DisThreadedNetworkInterface ExampleSimulationProgram pduRecorder] datagramSocket.leaveGroup address=239.1.2.3 port=3000 isClosed()=true close() complete.
+[DisThreadedNetworkInterface PduRecorder] close(): pdus2send.size()=0 baos.size()=0 dos.size()=0
+[DisThreadedNetworkInterface PduRecorder] datagramSocket.leaveGroup address=239.1.2.3 port=3000 isClosed()=true close() complete.
 *** killThread() status: sendingThread.isAlive()=false sendingThread.isInterrupted()=true
 *** killThread() status: receiveThread.isAlive()=false receiveThread.isInterrupted()=true
 *** Thread close status: sendingThread.isAlive()=false receiveThread.isAlive()=false
 
-Closing recorder log file: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog50.dislog
+PduRecorder.stop() closing recorder log file: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog4.dislog
 [OpenDis7Examples.ExampleSimulationProgram] complete.
 BUILD SUCCESSFUL (total time: 10 seconds)
diff --git a/examples/src/OpenDis7Examples/ExampleTrackInterpolationLog.txt b/examples/src/OpenDis7Examples/ExampleTrackInterpolationLog.txt
index 87b9fd90b6e98b4780e8854ebb7d78eb7214ed82..4159df57ab2bc7872aa25cf857cce50719c91e2a 100644
--- a/examples/src/OpenDis7Examples/ExampleTrackInterpolationLog.txt
+++ b/examples/src/OpenDis7Examples/ExampleTrackInterpolationLog.txt
@@ -13,7 +13,7 @@ run-single:
 [DisThreadedNetworkInterface] createThreads() sendingThread.isAlive()=true
 Network confirmation: address=239.1.2.3 port=3000
 Beginning pdu save to directory ./pduLog
-Recorder log file open: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog.dislog
+Recorder log file open: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog5.dislog
 [DisThreadedNetworkInterface] using network interface Intel(R) Wi-Fi 6E AX210 160MHz
 [DisThreadedNetworkInterface] datagramSocket.joinGroup  address=239.1.2.3 port=3000 isConnected()=false createDatagramSocket() complete.
 [DisThreadedNetworkInterface] createThreads() receiveThread.isAlive()=true
@@ -74,7 +74,7 @@ pduTrack_1 duration = 42.0 seconds = 0 ticks
     <meta content='ExampleTrackInterpolation.x3d' name='title'/>
     <meta content='Conversion of ESPDU track into X3D animation interpolators and LineSet.' name='description'/>
     <meta content='1 January 2022' name='created'/>
-    <meta content='6 January 2022' name='modified'/>
+    <meta content='9 January 2022' name='modified'/>
     <meta content='Don Brutzman' name='creator'/>
     <meta content='https://gitlab.nps.edu/Savage/NetworkedGraphicsMV3500/-/blob/master/examples/src/OpenDis7Examples/ExampleTrackInterpolation.x3d' name='identifier'/>
     <meta content='PduTrack utility, open-dis7-java Library https://github.com/open-dis/open-dis7-java' name='generator'/>
@@ -246,6 +246,6 @@ pduTrack_1 duration = 42.0 seconds = 0 ticks
 *** killThread() status: receiveThread.isAlive()=false receiveThread.isInterrupted()=true
 *** Thread close status: sendingThread.isAlive()=false receiveThread.isAlive()=false
 
-PduRecorder.stop() closing recorder log file: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog.dislog
+PduRecorder.stop() closing recorder log file: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog5.dislog
 [OpenDis7Examples.ExampleTrackInterpolation] complete.
 BUILD SUCCESSFUL (total time: 12 seconds)
diff --git a/examples/src/OpenDis7Examples/PduTrack.java b/examples/src/OpenDis7Examples/PduTrack.java
index 86514c6e06d3f4483573a86fa46ff71b3aa6adee..64a7e5bbcb84f90b323170f8b3f8eee382888f2b 100644
--- a/examples/src/OpenDis7Examples/PduTrack.java
+++ b/examples/src/OpenDis7Examples/PduTrack.java
@@ -38,6 +38,7 @@ package OpenDis7Examples;
 import edu.nps.moves.dis7.entities.swe.platform.surface._001Poseidon;
 import edu.nps.moves.dis7.enumerations.DisPduType;
 import edu.nps.moves.dis7.enumerations.ForceID;
+import edu.nps.moves.dis7.pdus.DisTime;
 import edu.nps.moves.dis7.pdus.EntityID;
 import edu.nps.moves.dis7.pdus.EntityStatePdu;
 import edu.nps.moves.dis7.pdus.EulerAngles;
@@ -84,16 +85,27 @@ public class PduTrack
     private boolean      addLineBreaksWithinKeyValues = false;
     
     protected PduFactory            pduFactory            = new PduFactory();
+    PduFactory.TimestampStyle       timestampStyle        = PduFactory.TimestampStyle.IEEE_ABSOLUTE;
     protected ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
     protected DataOutputStream      dataOutputStream      = new DataOutputStream(byteArrayOutputStream);
     private String TRACE_PREFIX = "[" + (PduTrack.class.getSimpleName()) + "] ";
     
     /**
-     * Constructor design goal: additional built-in initialization conveniences can go here
+     * Constructor for PduTrack
      */
     public PduTrack()
     {
-        // Potential constructor is under consideration.  Constructor is not currently needed.
+        // can place initialization code here
+    }
+    
+    /**
+     * Set timestampStyle used by PduFactory
+     * @param newTimestampStyle new value to set
+     */
+    public PduTrack(PduFactory.TimestampStyle newTimestampStyle)
+    {
+        timestampStyle = newTimestampStyle;
+        pduFactory.setTimestampStyle(newTimestampStyle);
     }
     
     /**
@@ -115,9 +127,28 @@ public class PduTrack
         TRACE_PREFIX = "[" + (PduTrack.class.getSimpleName() + " " + descriptor) + "] ";
         return this;
     }
+    /**
+     * Get timestampStyle used by PduFactory
+     * @return current timestampStyle
+     */
+    public PduFactory.TimestampStyle getTimestampStyle()
+    {
+        return timestampStyle;
+    }
+    /**
+     * Set timestampStyle used by PduFactory
+     * @param newTimestampStyle the timestampStyle to set
+     * @return same object to permit progressive setters 
+     */
+    public PduTrack setTimestampStyle(PduFactory.TimestampStyle newTimestampStyle) 
+    {
+        this.timestampStyle = newTimestampStyle;
+        pduFactory.setTimestampStyle(newTimestampStyle);
+        return this;
+    }
 
     /**
-     * @return the initialLocation
+     * @return current initialLocation
      */
     public Vector3Double getInitialLocation() {
         if (initialLocation == null)
@@ -128,7 +159,7 @@ public class PduTrack
         return initialLocation;
     }
     /**
-     * @return the latestLocation
+     * @return current latestLocation
      */
     public Vector3Double getLatestLocation() {
         if (latestLocation == null)
@@ -153,26 +184,26 @@ public class PduTrack
         return pduList.get(index);
     }
     /**
-     * @return the pduList
+     * @return current pduList
      */
     public ArrayList<Pdu> getPduList() {
         return pduList;
     }
     /**
-     * @return the waypointsList
+     * @return current waypointsList
      */
     public ArrayList<Vector3Double> getWaypointsList() {
         return waypointsList;
     }
     /**
-     * @return the eulerAnglesList
+     * @return current eulerAnglesList
      */
     public ArrayList<EulerAngles> getEulerAnglesList() {
         return eulerAnglesList;
     }
     /**
      * Time in seconds corresponding to each PDU
-     * @return the timelineList
+     * @return current timelineList
      */
     public ArrayList<Float> getTimelineList() {
         return timelineList;
@@ -239,7 +270,7 @@ public class PduTrack
 
     /**
      * Provide DEF value if not defined by program
-     * @return the x3dTimeSensorDEF
+     * @return current x3dTimeSensorDEF
      */
     public String getX3dTimeSensorDEF() {
         if    (x3dTimeSensorDEF.isEmpty())
@@ -257,7 +288,7 @@ public class PduTrack
 
     /**
      * Provide DEF value if not defined by program
-     * @return the x3dPositionInterpolatorDEF
+     * @return current x3dPositionInterpolatorDEF
      */
     public String getX3dPositionInterpolatorDEF() {
         if    (x3dPositionInterpolatorDEF.isEmpty())
@@ -275,7 +306,7 @@ public class PduTrack
 
     /**
      * Provide DEF value if not defined by program
-     * @return the x3dOrientationInterpolatorDEF
+     * @return current x3dOrientationInterpolatorDEF
      */
     public String getX3dOrientationInterpolatorDEF() {
         if    (x3dOrientationInterpolatorDEF.isEmpty())
@@ -520,7 +551,7 @@ public class PduTrack
 
     /**
      * Get name of author used as creator of X3D model
-     * @return the author
+     * @return current author
      */
     public String getAuthor() {
         return author;
@@ -539,7 +570,7 @@ public class PduTrack
 
     /**
      * Get name of online url identifier for X3D model
-     * @return the x3dModelIdentifier
+     * @return current x3dModelIdentifier
      */
     public String getX3dModelIdentifier() {
         return x3dModelIdentifier;
@@ -560,12 +591,11 @@ public class PduTrack
 
     /**
      * File name for X3D model production
-     * @return the x3dModelName
+     * @return current x3dModelName
      */
     public String getX3dModelName() {
         return x3dModelName;
     }
-
     /**
      * File name for X3D model production
      * @param x3dModelName the x3dModelName to set
@@ -579,7 +609,7 @@ public class PduTrack
 
     /**
      * Verbose (but more readable) output of numeric arrays in X3D model
-     * @return the addLineBreaksWithinKeyValues
+     * @return current addLineBreaksWithinKeyValues
      */
     public boolean hasAddLineBreaksWithinKeyValues() {
         return addLineBreaksWithinKeyValues;
@@ -707,7 +737,7 @@ public class PduTrack
     }
 
     /**
-     * @return the wayPointInterval
+     * @return current wayPointInterval
      */
     public float getDefaultWaypointInterval() {
         return defaultWaypointInterval;
@@ -748,7 +778,6 @@ public class PduTrack
     public boolean hasInsertCommas() {
         return insertCommas;
     }
-
     /**
      * @param insertCommas the insertCommas value to set
      */
@@ -798,7 +827,8 @@ public class PduTrack
     public PduTrack reportPdu(EntityStatePdu anEspdu)
     {
         System.out.println (
-                String.format("%08d", anEspdu.getTimestamp()) + ", " +
+                String.format("%08d", anEspdu.getTimestamp()) + " " + 
+                        DisTime.timestampToString(anEspdu.getTimestamp()) + ", " +
                 String.format("%s", anEspdu.getMarkingString().trim()) + ", " +
                 "EntityID=(" + 
                 anEspdu.getEntityID().getSiteID() + ", " +
@@ -833,6 +863,7 @@ public class PduTrack
     
     /** Self test to check basic operation, invoked by main()
      */
+    @SuppressWarnings("SleepWhileInLoop")
     public void selfTest()
     {
         final int TOTAL_PDUS = 5;
@@ -840,9 +871,9 @@ public class PduTrack
       
         PduTrack pduTrack = new PduTrack();
         pduTrack.setDescriptor("PduTrack Self Test");
-        pduTrack.setDefaultWaypointInterval(1.0f);
         pduTrack.setAuthor("Don Brutzman");
         pduTrack.setX3dModelIdentifier("https://gitlab.nps.edu/Savage/NetworkedGraphicsMV3500/-/blob/master/examples/src/OpenDis7Examples/PduTrackInterpolation.x3d");
+        pduTrack.setDefaultWaypointInterval(1.0f); // experimentation with timestamp values
 
         EntityID entityID_123 = new EntityID();
         entityID_123.setSiteID(1).setApplicationID(2).setEntityID(3); // made-up example ID;
@@ -852,7 +883,8 @@ public class PduTrack
         {
 //          EntityStatePdu espdu = new EntityStatePdu();
             EntityStatePdu espdu = pduFactory.makeEntityStatePdu(); // TODO check Pdu.Type
-            espdu.setTimestamp(i);
+            espdu.setTimestamp(DisTime.getCurrentDisAbsoluteTimestamp()); // default
+//          espdu.setTimestamp(DisTime.getCurrentYearTimestamp());        // TODO test
             espdu.setMarking("ESPDU " + i);
             espdu.setEntityLocation(i, i, i);
             espdu.setEntityOrientation(0, (float)(45.0 * Math.PI / 180.0), 0);
@@ -861,6 +893,14 @@ public class PduTrack
             espdu.setEntityType(new _001Poseidon()); // note import statement above
             pduTrack.addPdu(espdu); // create copy
             reportPdu(espdu);
+            try
+            {
+                Thread.sleep(100l);
+            }
+            catch (InterruptedException ie)
+            {
+                System.out.println(TRACE_PREFIX + "exceptional sleep dulay when generating ESPDUs: " + ie.getMessage());
+            }
         }
 //        System.out.println(TRACE_PREFIX + "reversePdus() then sortPdus() to test track operations");
 //        pduTrack.reversePdus(); // test
diff --git a/examples/src/OpenDis7Examples/PduTrackLog.txt b/examples/src/OpenDis7Examples/PduTrackLog.txt
index 5c86efe2f0522e1f99b6eb5ce9faca269d54bdba..57b46a804b5cbddabbcede7de272672d9b2ffddd 100644
--- a/examples/src/OpenDis7Examples/PduTrackLog.txt
+++ b/examples/src/OpenDis7Examples/PduTrackLog.txt
@@ -8,11 +8,11 @@ compile-single:
 run-single:
 *** PduTrack main() self test started...
 [PduTrack main() self test] selfTest() start...
-00000000, ESPDU 0, EntityID=(1, 2, 3) location=( 0.0,  0.0,  0.0)
-00000001, ESPDU 1, EntityID=(1, 2, 3) location=( 1.0,  1.0,  1.0)
-00000002, ESPDU 2, EntityID=(1, 2, 3) location=( 2.0,  2.0,  2.0)
-00000003, ESPDU 3, EntityID=(1, 2, 3) location=( 3.0,  3.0,  3.0)
-00000004, ESPDU 4, EntityID=(1, 2, 3) location=( 4.0,  4.0,  4.0)
+-1417703089 06:11:36, ESPDU 0, EntityID=(1, 2, 3) location=( 0.0,  0.0,  0.0)
+-1417549185 06:14:10, ESPDU 1, EntityID=(1, 2, 3) location=( 1.0,  1.0,  1.0)
+-1417419143 06:16:20, ESPDU 2, EntityID=(1, 2, 3) location=( 2.0,  2.0,  2.0)
+-1417287909 06:18:32, ESPDU 3, EntityID=(1, 2, 3) location=( 3.0,  3.0,  3.0)
+-1417156673 06:20:43, ESPDU 4, EntityID=(1, 2, 3) location=( 4.0,  4.0,  4.0)
 [PduTrack main() self test] getEspduCount()=5
 [PduTrack main() self test] getDefaultWaypointInterval()=1.0
 [PduTrack main() self test] getTotalDurationSeconds()=5.0
@@ -20,98 +20,98 @@ run-single:
 PduTrack pduList marshalling checks
 = = = = = = = = = = = = = = = = =
 espdu from pduTrack pduList
-00000000, ESPDU 0, EntityID=(1, 2, 3) location=( 0.0,  0.0,  0.0)
-espdu.marshal() byteArray:                              07, 01, 01, 01, 00, 00, 00, 00, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 30, 00, 00, 00, 00
-espdu.marshal(byteBuffer):                              07, 01, 01, 01, 00, 00, 00, 00, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 30, 00, 00, 00, 00
-espdu.marshal(dataOutputStream):                        07, 01, 01, 01, 00, 00, 00, 00, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 30, 00, 00, 00, 00
+-1417703089 06:11:36, ESPDU 0, EntityID=(1, 2, 3) location=( 0.0,  0.0,  0.0)
+espdu.marshal() byteArray:                              07, 01, 01, 01, AB, 7F, 91, 4F, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 30, 00, 00, 00, 00
+espdu.marshal(byteBuffer):                              07, 01, 01, 01, AB, 7F, 91, 4F, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 30, 00, 00, 00, 00
+espdu.marshal(dataOutputStream):                        07, 01, 01, 01, AB, 7F, 91, 4F, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 30, 00, 00, 00, 00
 
 espdu.copyByteBuffer()
-00000000, , EntityID=(0, 0, 0) location=( 0.0,  0.0,  0.0)
+00000000 16:00:00, , EntityID=(0, 0, 0) location=( 0.0,  0.0,  0.0)
 espdu.copyByteBuffer().marshal() byteArray:             00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
 espdu.copyByteBuffer().marshal(byteBufferCopy):         00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
 espdu.copyByteBuffer().marshal(dataOutputStream):       00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
 
 espdu.copyDataOutputStream()
-00000000, ESPDU 0, EntityID=(1, 2, 3) location=( 0.0,  0.0,  0.0)
-espdu.copyDataOutputStream().marshal() byteArray:       07, 01, 01, 01, 00, 00, 00, 00, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 30, 00, 00, 00, 00
-espdu.copyDataOutputStream().marshal(byteBufferCopy):   07, 01, 01, 01, 00, 00, 00, 00, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 30, 00, 00, 00, 00
-espdu.copyDataOutputStream().marshal(dataOutputStream): 07, 01, 01, 01, 00, 00, 00, 00, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 30, 00, 00, 00, 00
+-1417703089 06:11:36, ESPDU 0, EntityID=(1, 2, 3) location=( 0.0,  0.0,  0.0)
+espdu.copyDataOutputStream().marshal() byteArray:       07, 01, 01, 01, AB, 7F, 91, 4F, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 30, 00, 00, 00, 00
+espdu.copyDataOutputStream().marshal(byteBufferCopy):   07, 01, 01, 01, AB, 7F, 91, 4F, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 30, 00, 00, 00, 00
+espdu.copyDataOutputStream().marshal(dataOutputStream): 07, 01, 01, 01, AB, 7F, 91, 4F, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 30, 00, 00, 00, 00
 
 = = = = = = = = = = = = = = = = =
 espdu from pduTrack pduList
-00000001, ESPDU 1, EntityID=(1, 2, 3) location=( 1.0,  1.0,  1.0)
-espdu.marshal() byteArray:                              07, 01, 01, 01, 00, 00, 00, 01, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 31, 00, 00, 00, 00
-espdu.marshal(byteBuffer):                              07, 01, 01, 01, 00, 00, 00, 01, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 31, 00, 00, 00, 00
-espdu.marshal(dataOutputStream):                        07, 01, 01, 01, 00, 00, 00, 01, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 31, 00, 00, 00, 00
+-1417549185 06:14:10, ESPDU 1, EntityID=(1, 2, 3) location=( 1.0,  1.0,  1.0)
+espdu.marshal() byteArray:                              07, 01, 01, 01, AB, 81, EA, 7F, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 31, 00, 00, 00, 00
+espdu.marshal(byteBuffer):                              07, 01, 01, 01, AB, 81, EA, 7F, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 31, 00, 00, 00, 00
+espdu.marshal(dataOutputStream):                        07, 01, 01, 01, AB, 81, EA, 7F, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 31, 00, 00, 00, 00
 
 espdu.copyByteBuffer()
-00000000, , EntityID=(0, 0, 0) location=( 0.0,  0.0,  0.0)
+00000000 16:00:00, , EntityID=(0, 0, 0) location=( 0.0,  0.0,  0.0)
 espdu.copyByteBuffer().marshal() byteArray:             00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
 espdu.copyByteBuffer().marshal(byteBufferCopy):         00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
 espdu.copyByteBuffer().marshal(dataOutputStream):       00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
 
 espdu.copyDataOutputStream()
-00000001, ESPDU 1, EntityID=(1, 2, 3) location=( 1.0,  1.0,  1.0)
-espdu.copyDataOutputStream().marshal() byteArray:       07, 01, 01, 01, 00, 00, 00, 01, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 31, 00, 00, 00, 00
-espdu.copyDataOutputStream().marshal(byteBufferCopy):   07, 01, 01, 01, 00, 00, 00, 01, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 31, 00, 00, 00, 00
-espdu.copyDataOutputStream().marshal(dataOutputStream): 07, 01, 01, 01, 00, 00, 00, 01, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 31, 00, 00, 00, 00
+-1417549185 06:14:10, ESPDU 1, EntityID=(1, 2, 3) location=( 1.0,  1.0,  1.0)
+espdu.copyDataOutputStream().marshal() byteArray:       07, 01, 01, 01, AB, 81, EA, 7F, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 31, 00, 00, 00, 00
+espdu.copyDataOutputStream().marshal(byteBufferCopy):   07, 01, 01, 01, AB, 81, EA, 7F, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 31, 00, 00, 00, 00
+espdu.copyDataOutputStream().marshal(dataOutputStream): 07, 01, 01, 01, AB, 81, EA, 7F, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 3F, F0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 31, 00, 00, 00, 00
 
 = = = = = = = = = = = = = = = = =
 espdu from pduTrack pduList
-00000002, ESPDU 2, EntityID=(1, 2, 3) location=( 2.0,  2.0,  2.0)
-espdu.marshal() byteArray:                              07, 01, 01, 01, 00, 00, 00, 02, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 32, 00, 00, 00, 00
-espdu.marshal(byteBuffer):                              07, 01, 01, 01, 00, 00, 00, 02, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 32, 00, 00, 00, 00
-espdu.marshal(dataOutputStream):                        07, 01, 01, 01, 00, 00, 00, 02, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 32, 00, 00, 00, 00
+-1417419143 06:16:20, ESPDU 2, EntityID=(1, 2, 3) location=( 2.0,  2.0,  2.0)
+espdu.marshal() byteArray:                              07, 01, 01, 01, AB, 83, E6, 79, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 32, 00, 00, 00, 00
+espdu.marshal(byteBuffer):                              07, 01, 01, 01, AB, 83, E6, 79, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 32, 00, 00, 00, 00
+espdu.marshal(dataOutputStream):                        07, 01, 01, 01, AB, 83, E6, 79, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 32, 00, 00, 00, 00
 
 espdu.copyByteBuffer()
-00000000, , EntityID=(0, 0, 0) location=( 0.0,  0.0,  0.0)
+00000000 16:00:00, , EntityID=(0, 0, 0) location=( 0.0,  0.0,  0.0)
 espdu.copyByteBuffer().marshal() byteArray:             00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
 espdu.copyByteBuffer().marshal(byteBufferCopy):         00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
 espdu.copyByteBuffer().marshal(dataOutputStream):       00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
 
 espdu.copyDataOutputStream()
-00000002, ESPDU 2, EntityID=(1, 2, 3) location=( 2.0,  2.0,  2.0)
-espdu.copyDataOutputStream().marshal() byteArray:       07, 01, 01, 01, 00, 00, 00, 02, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 32, 00, 00, 00, 00
-espdu.copyDataOutputStream().marshal(byteBufferCopy):   07, 01, 01, 01, 00, 00, 00, 02, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 32, 00, 00, 00, 00
-espdu.copyDataOutputStream().marshal(dataOutputStream): 07, 01, 01, 01, 00, 00, 00, 02, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 32, 00, 00, 00, 00
+-1417419143 06:16:20, ESPDU 2, EntityID=(1, 2, 3) location=( 2.0,  2.0,  2.0)
+espdu.copyDataOutputStream().marshal() byteArray:       07, 01, 01, 01, AB, 83, E6, 79, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 32, 00, 00, 00, 00
+espdu.copyDataOutputStream().marshal(byteBufferCopy):   07, 01, 01, 01, AB, 83, E6, 79, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 32, 00, 00, 00, 00
+espdu.copyDataOutputStream().marshal(dataOutputStream): 07, 01, 01, 01, AB, 83, E6, 79, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 40, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 32, 00, 00, 00, 00
 
 = = = = = = = = = = = = = = = = =
 espdu from pduTrack pduList
-00000003, ESPDU 3, EntityID=(1, 2, 3) location=( 3.0,  3.0,  3.0)
-espdu.marshal() byteArray:                              07, 01, 01, 01, 00, 00, 00, 03, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 33, 00, 00, 00, 00
-espdu.marshal(byteBuffer):                              07, 01, 01, 01, 00, 00, 00, 03, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 33, 00, 00, 00, 00
-espdu.marshal(dataOutputStream):                        07, 01, 01, 01, 00, 00, 00, 03, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 33, 00, 00, 00, 00
+-1417287909 06:18:32, ESPDU 3, EntityID=(1, 2, 3) location=( 3.0,  3.0,  3.0)
+espdu.marshal() byteArray:                              07, 01, 01, 01, AB, 85, E7, 1B, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 33, 00, 00, 00, 00
+espdu.marshal(byteBuffer):                              07, 01, 01, 01, AB, 85, E7, 1B, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 33, 00, 00, 00, 00
+espdu.marshal(dataOutputStream):                        07, 01, 01, 01, AB, 85, E7, 1B, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 33, 00, 00, 00, 00
 
 espdu.copyByteBuffer()
-00000000, , EntityID=(0, 0, 0) location=( 0.0,  0.0,  0.0)
+00000000 16:00:00, , EntityID=(0, 0, 0) location=( 0.0,  0.0,  0.0)
 espdu.copyByteBuffer().marshal() byteArray:             00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
 espdu.copyByteBuffer().marshal(byteBufferCopy):         00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
 espdu.copyByteBuffer().marshal(dataOutputStream):       00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
 
 espdu.copyDataOutputStream()
-00000003, ESPDU 3, EntityID=(1, 2, 3) location=( 3.0,  3.0,  3.0)
-espdu.copyDataOutputStream().marshal() byteArray:       07, 01, 01, 01, 00, 00, 00, 03, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 33, 00, 00, 00, 00
-espdu.copyDataOutputStream().marshal(byteBufferCopy):   07, 01, 01, 01, 00, 00, 00, 03, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 33, 00, 00, 00, 00
-espdu.copyDataOutputStream().marshal(dataOutputStream): 07, 01, 01, 01, 00, 00, 00, 03, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 33, 00, 00, 00, 00
+-1417287909 06:18:32, ESPDU 3, EntityID=(1, 2, 3) location=( 3.0,  3.0,  3.0)
+espdu.copyDataOutputStream().marshal() byteArray:       07, 01, 01, 01, AB, 85, E7, 1B, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 33, 00, 00, 00, 00
+espdu.copyDataOutputStream().marshal(byteBufferCopy):   07, 01, 01, 01, AB, 85, E7, 1B, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 33, 00, 00, 00, 00
+espdu.copyDataOutputStream().marshal(dataOutputStream): 07, 01, 01, 01, AB, 85, E7, 1B, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 40, 08, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 33, 00, 00, 00, 00
 
 = = = = = = = = = = = = = = = = =
 espdu from pduTrack pduList
-00000004, ESPDU 4, EntityID=(1, 2, 3) location=( 4.0,  4.0,  4.0)
-espdu.marshal() byteArray:                              07, 01, 01, 01, 00, 00, 00, 04, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 34, 00, 00, 00, 00
-espdu.marshal(byteBuffer):                              07, 01, 01, 01, 00, 00, 00, 04, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 34, 00, 00, 00, 00
-espdu.marshal(dataOutputStream):                        07, 01, 01, 01, 00, 00, 00, 04, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 34, 00, 00, 00, 00
+-1417156673 06:20:43, ESPDU 4, EntityID=(1, 2, 3) location=( 4.0,  4.0,  4.0)
+espdu.marshal() byteArray:                              07, 01, 01, 01, AB, 87, E7, BF, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 34, 00, 00, 00, 00
+espdu.marshal(byteBuffer):                              07, 01, 01, 01, AB, 87, E7, BF, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 34, 00, 00, 00, 00
+espdu.marshal(dataOutputStream):                        07, 01, 01, 01, AB, 87, E7, BF, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 34, 00, 00, 00, 00
 
 espdu.copyByteBuffer()
-00000000, , EntityID=(0, 0, 0) location=( 0.0,  0.0,  0.0)
+00000000 16:00:00, , EntityID=(0, 0, 0) location=( 0.0,  0.0,  0.0)
 espdu.copyByteBuffer().marshal() byteArray:             00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
 espdu.copyByteBuffer().marshal(byteBufferCopy):         00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
 espdu.copyByteBuffer().marshal(dataOutputStream):       00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
 
 espdu.copyDataOutputStream()
-00000004, ESPDU 4, EntityID=(1, 2, 3) location=( 4.0,  4.0,  4.0)
-espdu.copyDataOutputStream().marshal() byteArray:       07, 01, 01, 01, 00, 00, 00, 04, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 34, 00, 00, 00, 00
-espdu.copyDataOutputStream().marshal(byteBufferCopy):   07, 01, 01, 01, 00, 00, 00, 04, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 34, 00, 00, 00, 00
-espdu.copyDataOutputStream().marshal(dataOutputStream): 07, 01, 01, 01, 00, 00, 00, 04, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 34, 00, 00, 00, 00
+-1417156673 06:20:43, ESPDU 4, EntityID=(1, 2, 3) location=( 4.0,  4.0,  4.0)
+espdu.copyDataOutputStream().marshal() byteArray:       07, 01, 01, 01, AB, 87, E7, BF, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 34, 00, 00, 00, 00
+espdu.copyDataOutputStream().marshal(byteBufferCopy):   07, 01, 01, 01, AB, 87, E7, BF, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 34, 00, 00, 00, 00
+espdu.copyDataOutputStream().marshal(dataOutputStream): 07, 01, 01, 01, AB, 87, E7, BF, 00, 90, 28, 00, 00, 01, 00, 02, 00, 03, 01, 00, 01, 03, 00, CD, 3E, 02, 01, 00, 00, 00, 00, E1, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 40, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 3F, 49, 0F, DB, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 20, 20, 20, 20, 45, 53, 50, 44, 55, 20, 34, 00, 00, 00, 00
 
 = = = = = = = = = = = = = = = = =
 =================================
@@ -122,7 +122,7 @@ espdu.copyDataOutputStream().marshal(dataOutputStream): 07, 01, 01, 01, 00, 00,
     <meta content='PduTrackInterpolation.x3d' name='title'/>
     <meta content='Conversion of ESPDU track into X3D animation interpolators and LineSet.' name='description'/>
     <meta content='1 January 2022' name='created'/>
-    <meta content='8 January 2022' name='modified'/>
+    <meta content='9 January 2022' name='modified'/>
     <meta content='Don Brutzman' name='creator'/>
     <meta content='https://gitlab.nps.edu/Savage/NetworkedGraphicsMV3500/-/blob/master/examples/src/OpenDis7Examples/PduTrackInterpolation.x3d' name='identifier'/>
     <meta content='PduTrack utility, open-dis7-java Library https://github.com/open-dis/open-dis7-java' name='generator'/>
@@ -179,4 +179,4 @@ espdu.copyDataOutputStream().marshal(dataOutputStream): 07, 01, 01, 01, 00, 00,
 =================================
 [PduTrack main() self test] selfTest() complete.
 *** PduTrack main() self test complete.
-BUILD SUCCESSFUL (total time: 1 second)
+BUILD SUCCESSFUL (total time: 2 seconds)