From 676e6d7a8b08f449fa9885bb67d4740f6de5e12f Mon Sep 17 00:00:00 2001
From: Mike Bailey <jmbailey@nps.edu>
Date: Fri, 23 Aug 2019 16:28:02 -0700
Subject: [PATCH] Use Marshaler interface, add throws Exception

---
 src-generated/edu/nps/moves/dis7/APA.java     |   9 +-
 .../edu/nps/moves/dis7/AcknowledgePdu.java    |   9 +-
 .../edu/nps/moves/dis7/AcknowledgeRPdu.java   |   9 +-
 .../edu/nps/moves/dis7/AcousticEmitter.java   |   9 +-
 .../edu/nps/moves/dis7/ActionRequestPdu.java  |  11 +-
 .../edu/nps/moves/dis7/ActionRequestRPdu.java |  11 +-
 .../edu/nps/moves/dis7/ActionResponsePdu.java |  11 +-
 .../nps/moves/dis7/ActionResponseRPdu.java    |  11 +-
 .../nps/moves/dis7/AggregateIdentifier.java   |   9 +-
 .../edu/nps/moves/dis7/AggregateMarking.java  |  13 +-
 .../edu/nps/moves/dis7/AggregateStatePdu.java |  14 +-
 .../edu/nps/moves/dis7/AggregateType.java     |   9 +-
 .../edu/nps/moves/dis7/AngleDeception.java    |   9 +-
 .../nps/moves/dis7/AngularVelocityVector.java |   9 +-
 .../edu/nps/moves/dis7/AntennaLocation.java   |   9 +-
 .../edu/nps/moves/dis7/Appearance.java        |   9 +-
 .../edu/nps/moves/dis7/AppearancePdu.java     |   9 +-
 .../nps/moves/dis7/ArealObjectStatePdu.java   |  10 +-
 .../edu/nps/moves/dis7/ArticulatedPartVP.java |   9 +-
 .../nps/moves/dis7/ArticulatedPartsPdu.java   |  10 +-
 .../edu/nps/moves/dis7/Association.java       |   9 +-
 .../edu/nps/moves/dis7/AttachedPartVP.java    |   9 +-
 .../edu/nps/moves/dis7/Attribute.java         |  31 +-
 .../edu/nps/moves/dis7/AttributePdu.java      |  20 +-
 .../nps/moves/dis7/AttributeRecordSet.java    |  10 +-
 .../nps/moves/dis7/BeamAntennaPattern.java    |   9 +-
 .../edu/nps/moves/dis7/BeamData.java          |   9 +-
 .../edu/nps/moves/dis7/BeamStatus.java        |   9 +-
 .../edu/nps/moves/dis7/BlankingSector.java    |   9 +-
 .../edu/nps/moves/dis7/ChangeOptions.java     |   9 +-
 .../edu/nps/moves/dis7/ClockTime.java         |   9 +-
 .../nps/moves/dis7/CollisionElasticPdu.java   |   9 +-
 .../edu/nps/moves/dis7/CollisionPdu.java      |   9 +-
 .../edu/nps/moves/dis7/CommentPdu.java        |  11 +-
 .../edu/nps/moves/dis7/CommentRPdu.java       |  11 +-
 .../nps/moves/dis7/CommunicationsNodeID.java  |   9 +-
 .../edu/nps/moves/dis7/CreateEntityPdu.java   |   9 +-
 .../edu/nps/moves/dis7/CreateEntityRPdu.java  |   9 +-
 .../edu/nps/moves/dis7/DataFilterRecord.java  |   9 +-
 src-generated/edu/nps/moves/dis7/DataPdu.java |  11 +-
 .../dis7/DataQueryDatumSpecification.java     |  11 +-
 .../edu/nps/moves/dis7/DataQueryPdu.java      |  11 +-
 .../edu/nps/moves/dis7/DataQueryRPdu.java     |  11 +-
 .../edu/nps/moves/dis7/DataRPdu.java          |  11 +-
 .../nps/moves/dis7/DatumSpecification.java    |  11 +-
 .../moves/dis7/DeadReckoningParameters.java   |  13 +-
 .../edu/nps/moves/dis7/DesignatorPdu.java     |   9 +-
 .../edu/nps/moves/dis7/DetonationPdu.java     |  10 +-
 .../dis7/DirectedEnergyAreaAimpoint.java      |  11 +-
 .../nps/moves/dis7/DirectedEnergyDamage.java  |   9 +-
 .../nps/moves/dis7/DirectedEnergyFirePdu.java |  10 +-
 .../dis7/DirectedEnergyPrecisionAimpoint.java |   9 +-
 .../DirectedEnergyTargetEnergyDeposition.java |   9 +-
 .../dis7/DistributedEmissionsFamilyPdu.java   |   9 +-
 .../dis7/EEFundamentalParameterData.java      |   9 +-
 .../dis7/ElectromagneticEmissionPdu.java      |  10 +-
 .../edu/nps/moves/dis7/ElectronicEmitter.java |  10 +-
 .../edu/nps/moves/dis7/EmitterBeam.java       |  10 +-
 .../edu/nps/moves/dis7/EmitterSystem.java     |   9 +-
 .../edu/nps/moves/dis7/EngineFuel.java        |   9 +-
 .../edu/nps/moves/dis7/EngineFuelReload.java  |   9 +-
 .../nps/moves/dis7/EntityAssociationVP.java   |   9 +-
 .../nps/moves/dis7/EntityDamageStatusPdu.java |  10 +-
 .../edu/nps/moves/dis7/EntityID.java          |   9 +-
 .../edu/nps/moves/dis7/EntityIdentifier.java  |   9 +-
 .../dis7/EntityInformationFamilyPdu.java      |   9 +-
 .../moves/dis7/EntityManagementFamilyPdu.java |   9 +-
 .../edu/nps/moves/dis7/EntityMarking.java     |  13 +-
 .../edu/nps/moves/dis7/EntityStatePdu.java    |  10 +-
 .../nps/moves/dis7/EntityStateUpdatePdu.java  |  10 +-
 .../edu/nps/moves/dis7/EntityType.java        |   9 +-
 .../edu/nps/moves/dis7/EntityTypeRaw.java     |   9 +-
 .../edu/nps/moves/dis7/EntityTypeVP.java      |   9 +-
 .../edu/nps/moves/dis7/Environment.java       |  13 +-
 .../moves/dis7/EnvironmentalProcessPdu.java   |  10 +-
 .../edu/nps/moves/dis7/EulerAngles.java       |   9 +-
 .../edu/nps/moves/dis7/EventIdentifier.java   |   9 +-
 .../moves/dis7/EventIdentifierLiveEntity.java |   9 +-
 .../edu/nps/moves/dis7/EventReportPdu.java    |  11 +-
 .../edu/nps/moves/dis7/EventReportRPdu.java   |  11 +-
 .../edu/nps/moves/dis7/Expendable.java        |   9 +-
 .../nps/moves/dis7/ExpendableDescriptor.java  |   9 +-
 .../edu/nps/moves/dis7/ExpendableReload.java  |   9 +-
 .../nps/moves/dis7/ExplosionDescriptor.java   |   9 +-
 .../nps/moves/dis7/FalseTargetsAttribute.java |   9 +-
 .../nps/moves/dis7/FastEntityStatePdu.java    |  18 +-
 src-generated/edu/nps/moves/dis7/FirePdu.java |   9 +-
 .../edu/nps/moves/dis7/FixedDatum.java        |  19 +-
 .../dis7/FundamentalOperationalData.java      |   9 +-
 .../nps/moves/dis7/GridAxisDescriptor.java    |   9 +-
 .../moves/dis7/GridAxisDescriptorFixed.java   |   9 +-
 .../dis7/GridAxisDescriptorVariable.java      |  13 +-
 .../edu/nps/moves/dis7/GridData.java          |   9 +-
 .../edu/nps/moves/dis7/GridDataType0.java     |  18 +-
 .../edu/nps/moves/dis7/GridDataType1.java     |  18 +-
 .../edu/nps/moves/dis7/GridDataType2.java     |  18 +-
 .../edu/nps/moves/dis7/GriddedDataPdu.java    |  10 +-
 src-generated/edu/nps/moves/dis7/GroupID.java |   9 +-
 src-generated/edu/nps/moves/dis7/IFFData.java |  23 +-
 .../dis7/IFFFundamentalParameterData.java     |  13 +-
 .../edu/nps/moves/dis7/IFFLayer2Pdu.java      |  10 +-
 src-generated/edu/nps/moves/dis7/IFFPdu.java  |   9 +-
 .../edu/nps/moves/dis7/IOCommsNodeRecord.java |  19 +-
 .../edu/nps/moves/dis7/IOEffectRecord.java    |  19 +-
 .../edu/nps/moves/dis7/IORecord.java          |   9 +-
 .../nps/moves/dis7/IffDataSpecification.java  |  10 +-
 .../dis7/InformationOperationsActionPdu.java  |  10 +-
 .../dis7/InformationOperationsFamilyPdu.java  |   9 +-
 .../dis7/InformationOperationsReportPdu.java  |  10 +-
 .../IntercomCommunicationsParameters.java     |  13 +-
 .../nps/moves/dis7/IntercomControlPdu.java    |  10 +-
 .../nps/moves/dis7/IntercomIdentifier.java    |   9 +-
 .../nps/moves/dis7/IntercomReferenceID.java   |   9 +-
 .../edu/nps/moves/dis7/IntercomSignalPdu.java | 628 ++++++++++--------
 .../edu/nps/moves/dis7/IsGroupOfPdu.java      |  10 +-
 .../edu/nps/moves/dis7/IsPartOfPdu.java       |   9 +-
 .../edu/nps/moves/dis7/JammingTechnique.java  |   9 +-
 .../edu/nps/moves/dis7/LEDetonationPdu.java   |   9 +-
 .../edu/nps/moves/dis7/LEFirePdu.java         |   9 +-
 .../nps/moves/dis7/LEVector3FixedByte.java    |   9 +-
 .../moves/dis7/LaunchedMunitionRecord.java    |   9 +-
 .../edu/nps/moves/dis7/LayerHeader.java       |   9 +-
 .../nps/moves/dis7/LinearObjectStatePdu.java  |  10 +-
 .../moves/dis7/LinearSegmentParameter.java    |   9 +-
 .../dis7/LiveDeadReckoningParameters.java     |   9 +-
 .../nps/moves/dis7/LiveEntityFamilyPdu.java   |   9 +-
 .../nps/moves/dis7/LiveEntityIdentifier.java  |   9 +-
 .../moves/dis7/LiveEntityLinearVelocity.java  |   9 +-
 .../nps/moves/dis7/LiveEntityOrientation.java |   9 +-
 .../moves/dis7/LiveEntityOrientation16.java   |   9 +-
 .../dis7/LiveEntityOrientationError.java      |   9 +-
 .../edu/nps/moves/dis7/LiveEntityPdu.java     |   9 +-
 .../moves/dis7/LiveEntityPositionError.java   |   9 +-
 .../LiveEntityRelativeWorldCoordinates.java   |   9 +-
 .../nps/moves/dis7/LiveSimulationAddress.java |   9 +-
 .../nps/moves/dis7/LogisticsFamilyPdu.java    |   9 +-
 .../nps/moves/dis7/MineEmplacementTime.java   |   9 +-
 .../nps/moves/dis7/MineEntityIdentifier.java  |   9 +-
 .../edu/nps/moves/dis7/MinefieldDataPdu.java  |  51 +-
 .../nps/moves/dis7/MinefieldFamilyPdu.java    |   9 +-
 .../nps/moves/dis7/MinefieldIdentifier.java   |   9 +-
 .../edu/nps/moves/dis7/MinefieldQueryPdu.java |  11 +-
 .../moves/dis7/MinefieldResponseNACKPdu.java  |  18 +-
 .../nps/moves/dis7/MinefieldSensorType.java   |   9 +-
 .../edu/nps/moves/dis7/MinefieldStatePdu.java |  11 +-
 .../nps/moves/dis7/ModulationParameters.java  |  13 +-
 .../edu/nps/moves/dis7/ModulationType.java    |   9 +-
 .../edu/nps/moves/dis7/Munition.java          |   9 +-
 .../nps/moves/dis7/MunitionDescriptor.java    |   9 +-
 .../edu/nps/moves/dis7/MunitionReload.java    |   9 +-
 .../dis7/NamedLocationIdentification.java     |   9 +-
 .../edu/nps/moves/dis7/ObjectIdentifier.java  |   9 +-
 .../edu/nps/moves/dis7/ObjectType.java        |   9 +-
 .../nps/moves/dis7/OwnershipStatusRecord.java |   9 +-
 src-generated/edu/nps/moves/dis7/Pdu.java     |  11 +-
 src-generated/edu/nps/moves/dis7/PduBase.java |   9 +-
 .../nps/moves/dis7/PointObjectStatePdu.java   |   9 +-
 .../nps/moves/dis7/PropulsionSystemData.java  |   9 +-
 .../edu/nps/moves/dis7/ProtocolMode.java      |   9 +-
 .../edu/nps/moves/dis7/RadioCommsHeader.java  |   9 +-
 .../dis7/RadioCommunicationsFamilyPdu.java    |   9 +-
 .../edu/nps/moves/dis7/RadioIdentifier.java   |   9 +-
 .../edu/nps/moves/dis7/RadioType.java         |   9 +-
 .../edu/nps/moves/dis7/ReceiverPdu.java       |   9 +-
 .../edu/nps/moves/dis7/RecordQueryRPdu.java   |  10 +-
 .../moves/dis7/RecordQuerySpecification.java  |  30 +-
 .../edu/nps/moves/dis7/RecordRPdu.java        |  10 +-
 .../nps/moves/dis7/RecordSpecification.java   |  10 +-
 .../dis7/RecordSpecificationElement.java      |  67 +-
 .../edu/nps/moves/dis7/Relationship.java      |   9 +-
 .../edu/nps/moves/dis7/RemoveEntityPdu.java   |   9 +-
 .../edu/nps/moves/dis7/RemoveEntityRPdu.java  |   9 +-
 .../edu/nps/moves/dis7/RepairCompletePdu.java |   9 +-
 .../edu/nps/moves/dis7/RepairResponsePdu.java |   9 +-
 .../edu/nps/moves/dis7/RequestID.java         |   9 +-
 .../edu/nps/moves/dis7/ResupplyCancelPdu.java |   9 +-
 .../edu/nps/moves/dis7/ResupplyOfferPdu.java  |  10 +-
 .../nps/moves/dis7/ResupplyReceivedPdu.java   |  10 +-
 src-generated/edu/nps/moves/dis7/SEESPdu.java |  11 +-
 .../moves/dis7/SecondaryOperationalData.java  |   9 +-
 src-generated/edu/nps/moves/dis7/Sensor.java  |   9 +-
 .../edu/nps/moves/dis7/SeparationVP.java      |   9 +-
 .../edu/nps/moves/dis7/ServiceRequestPdu.java |  10 +-
 .../edu/nps/moves/dis7/SetDataPdu.java        |  11 +-
 .../edu/nps/moves/dis7/SetDataRPdu.java       |  11 +-
 .../edu/nps/moves/dis7/SetRecordRPdu.java     |  10 +-
 .../edu/nps/moves/dis7/ShaftRPM.java          |   9 +-
 .../edu/nps/moves/dis7/SignalPdu.java         | 611 ++++++++++-------
 .../nps/moves/dis7/SilentEntitySystem.java    |  18 +-
 .../edu/nps/moves/dis7/SimulationAddress.java |   9 +-
 .../nps/moves/dis7/SimulationIdentifier.java  |   9 +-
 .../dis7/SimulationManagementFamilyPdu.java   |   9 +-
 ...ionManagementWithReliabilityFamilyPdu.java |   9 +-
 .../moves/dis7/StandardVariableRecord.java    |  28 +-
 .../dis7/StandardVariableSpecification.java   |   9 +-
 .../edu/nps/moves/dis7/StartResumePdu.java    |   9 +-
 .../edu/nps/moves/dis7/StartResumeRPdu.java   |   9 +-
 .../edu/nps/moves/dis7/StopFreezePdu.java     |   9 +-
 .../edu/nps/moves/dis7/StopFreezeRPdu.java    |   9 +-
 .../edu/nps/moves/dis7/StorageFuel.java       |   9 +-
 .../edu/nps/moves/dis7/StorageFuelReload.java |   9 +-
 .../edu/nps/moves/dis7/SupplyQuantity.java    |   9 +-
 .../dis7/SyntheticEnvironmentFamilyPdu.java   |   9 +-
 .../edu/nps/moves/dis7/SystemIdentifier.java  |   9 +-
 src-generated/edu/nps/moves/dis7/TSPIPdu.java |  18 +-
 .../edu/nps/moves/dis7/TotalRecordSets.java   |   9 +-
 .../edu/nps/moves/dis7/TrackJamData.java      |   9 +-
 .../nps/moves/dis7/TransferOwnershipPdu.java  |   9 +-
 .../edu/nps/moves/dis7/TransmitterPdu.java    |  11 +-
 src-generated/edu/nps/moves/dis7/UABeam.java  |   9 +-
 .../edu/nps/moves/dis7/UAEmitter.java         |  10 +-
 .../moves/dis7/UAFundamentalParameter.java    |   9 +-
 .../nps/moves/dis7/UnattachedIdentifier.java  |   9 +-
 .../nps/moves/dis7/UnderwaterAcousticPdu.java |  12 +-
 .../nps/moves/dis7/UnsignedDISInteger.java    |   9 +-
 .../edu/nps/moves/dis7/VariableDatum.java     | 412 +++++++-----
 .../edu/nps/moves/dis7/VariableParameter.java |  13 +-
 .../dis7/VariableTransmitterParameters.java   |  23 +-
 .../edu/nps/moves/dis7/Vector2Float.java      |   9 +-
 .../edu/nps/moves/dis7/Vector3Double.java     |   9 +-
 .../edu/nps/moves/dis7/Vector3Float.java      |   9 +-
 .../nps/moves/dis7/VectoringNozzleSystem.java |   9 +-
 .../edu/nps/moves/dis7/WarfareFamilyPdu.java  |   9 +-
 ...cordTypes.java => VariableRecordType.java} |  14 +-
 src/edu/nps/moves/dis7/Marshaller.java        |   8 +-
 src/edu/nps/moves/dis7/PduStatus.java         | 187 +++---
 .../nps/moves/dis7/examples/EntityUse.java    |   2 +-
 .../nps/moves/dis7/examples/PduSender.java    |   2 +-
 .../nps/moves/dis7/util/DisNetworking.java    |   2 +-
 .../dis7/util/playerrecorder/Recorder.java    |   2 +-
 .../playerrecorder/ValidationPdusMakerV1.java |   2 +-
 .../moves/dis7/CreateAllObjectTypesTest.java  |   5 +
 .../nps/moves/dis7/CreateAllPduTypesTest.java | 191 +-----
 .../nps/moves/dis7/DataQueryPduRoundTrip.java | 151 +++++
 .../dis7/FixedAndVariableDatumRoundTrip.java  | 150 +++++
 test/edu/nps/moves/dis7/MarshalEnumsTest.java |   2 +-
 .../moves/dis7/NullFieldsMarshallTest.java    |   9 +
 .../moves/dis7/ObjectTypeMarshallTest.java    |   9 +
 test/edu/nps/moves/dis7/SignalPdusTest.java   | 110 +++
 239 files changed, 2335 insertions(+), 2552 deletions(-)
 rename src-generated/edu/nps/moves/dis7/enumerations/{VariableRecordTypes.java => VariableRecordType.java} (99%)
 create mode 100644 test/edu/nps/moves/dis7/DataQueryPduRoundTrip.java
 create mode 100644 test/edu/nps/moves/dis7/FixedAndVariableDatumRoundTrip.java
 create mode 100644 test/edu/nps/moves/dis7/SignalPdusTest.java

diff --git a/src-generated/edu/nps/moves/dis7/APA.java b/src-generated/edu/nps/moves/dis7/APA.java
index 123f371087..fbff553630 100644
--- a/src-generated/edu/nps/moves/dis7/APA.java
+++ b/src-generated/edu/nps/moves/dis7/APA.java
@@ -68,7 +68,7 @@ public short getValue()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -87,7 +87,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -134,7 +134,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -161,9 +161,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof APA))
-        return false;
-
      final APA rhs = (APA)obj;
 
      if( ! (parameterIndex == rhs.parameterIndex)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/AcknowledgePdu.java b/src-generated/edu/nps/moves/dis7/AcknowledgePdu.java
index 9bdd31f512..f68e6f2ff2 100644
--- a/src-generated/edu/nps/moves/dis7/AcknowledgePdu.java
+++ b/src-generated/edu/nps/moves/dis7/AcknowledgePdu.java
@@ -89,7 +89,7 @@ public int getRequestID()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -110,7 +110,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -166,7 +166,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -188,9 +188,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof AcknowledgePdu))
-        return false;
-
      final AcknowledgePdu rhs = (AcknowledgePdu)obj;
 
      if( ! (acknowledgeFlag == rhs.acknowledgeFlag)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/AcknowledgeRPdu.java b/src-generated/edu/nps/moves/dis7/AcknowledgeRPdu.java
index 0f440bf0fc..32da80ccfc 100644
--- a/src-generated/edu/nps/moves/dis7/AcknowledgeRPdu.java
+++ b/src-generated/edu/nps/moves/dis7/AcknowledgeRPdu.java
@@ -89,7 +89,7 @@ public int getRequestID()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -110,7 +110,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -166,7 +166,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -188,9 +188,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof AcknowledgeRPdu))
-        return false;
-
      final AcknowledgeRPdu rhs = (AcknowledgeRPdu)obj;
 
      if( ! (acknowledgeFlag == rhs.acknowledgeFlag)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/AcousticEmitter.java b/src-generated/edu/nps/moves/dis7/AcousticEmitter.java
index 86dd88684e..8385c2f601 100644
--- a/src-generated/edu/nps/moves/dis7/AcousticEmitter.java
+++ b/src-generated/edu/nps/moves/dis7/AcousticEmitter.java
@@ -87,7 +87,7 @@ public byte getAcousticIDNumber()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -107,7 +107,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -158,7 +158,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -185,9 +185,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof AcousticEmitter))
-        return false;
-
      final AcousticEmitter rhs = (AcousticEmitter)obj;
 
      if( ! (acousticSystemName == rhs.acousticSystemName)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/ActionRequestPdu.java b/src-generated/edu/nps/moves/dis7/ActionRequestPdu.java
index b1ffd530dd..da72ea63b8 100644
--- a/src-generated/edu/nps/moves/dis7/ActionRequestPdu.java
+++ b/src-generated/edu/nps/moves/dis7/ActionRequestPdu.java
@@ -122,7 +122,7 @@ public List<VariableDatum> getVariableDatums()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -158,7 +158,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -260,7 +260,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -282,15 +282,10 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof ActionRequestPdu))
-        return false;
-
      final ActionRequestPdu rhs = (ActionRequestPdu)obj;
 
      if( ! (requestID == rhs.requestID)) ivarsEqual = false;
      if( ! (actionID == rhs.actionID)) ivarsEqual = false;
-     if( ! (numberOfFixedDatumRecords == rhs.numberOfFixedDatumRecords)) ivarsEqual = false;
-     if( ! (numberOfVariableDatumRecords == rhs.numberOfVariableDatumRecords)) ivarsEqual = false;
 
      for(int idx = 0; idx < fixedDatums.size(); idx++)
         if( ! ( fixedDatums.get(idx).equals(rhs.fixedDatums.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/ActionRequestRPdu.java b/src-generated/edu/nps/moves/dis7/ActionRequestRPdu.java
index 218e17ea92..4b8e367606 100644
--- a/src-generated/edu/nps/moves/dis7/ActionRequestRPdu.java
+++ b/src-generated/edu/nps/moves/dis7/ActionRequestRPdu.java
@@ -173,7 +173,7 @@ public List<VariableDatum> getVariableDatumRecords()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -212,7 +212,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -326,7 +326,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -348,9 +348,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof ActionRequestRPdu))
-        return false;
-
      final ActionRequestRPdu rhs = (ActionRequestRPdu)obj;
 
      if( ! (requiredReliabilityService == rhs.requiredReliabilityService)) ivarsEqual = false;
@@ -358,8 +355,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
      if( ! (pad2 == rhs.pad2)) ivarsEqual = false;
      if( ! (requestID == rhs.requestID)) ivarsEqual = false;
      if( ! (actionID == rhs.actionID)) ivarsEqual = false;
-     if( ! (numberOfFixedDatumRecords == rhs.numberOfFixedDatumRecords)) ivarsEqual = false;
-     if( ! (numberOfVariableDatumRecords == rhs.numberOfVariableDatumRecords)) ivarsEqual = false;
 
      for(int idx = 0; idx < fixedDatumRecords.size(); idx++)
         if( ! ( fixedDatumRecords.get(idx).equals(rhs.fixedDatumRecords.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/ActionResponsePdu.java b/src-generated/edu/nps/moves/dis7/ActionResponsePdu.java
index 3d13873010..73174f7a1d 100644
--- a/src-generated/edu/nps/moves/dis7/ActionResponsePdu.java
+++ b/src-generated/edu/nps/moves/dis7/ActionResponsePdu.java
@@ -122,7 +122,7 @@ public List<VariableDatum> getVariableDatums()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -158,7 +158,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -260,7 +260,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -282,15 +282,10 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof ActionResponsePdu))
-        return false;
-
      final ActionResponsePdu rhs = (ActionResponsePdu)obj;
 
      if( ! (requestID == rhs.requestID)) ivarsEqual = false;
      if( ! (requestStatus == rhs.requestStatus)) ivarsEqual = false;
-     if( ! (numberOfFixedDatumRecords == rhs.numberOfFixedDatumRecords)) ivarsEqual = false;
-     if( ! (numberOfVariableDatumRecords == rhs.numberOfVariableDatumRecords)) ivarsEqual = false;
 
      for(int idx = 0; idx < fixedDatums.size(); idx++)
         if( ! ( fixedDatums.get(idx).equals(rhs.fixedDatums.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/ActionResponseRPdu.java b/src-generated/edu/nps/moves/dis7/ActionResponseRPdu.java
index 8b9ebf958d..0bec73a1e0 100644
--- a/src-generated/edu/nps/moves/dis7/ActionResponseRPdu.java
+++ b/src-generated/edu/nps/moves/dis7/ActionResponseRPdu.java
@@ -122,7 +122,7 @@ public List<VariableDatum> getVariableDatumRecords()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -158,7 +158,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -260,7 +260,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -282,15 +282,10 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof ActionResponseRPdu))
-        return false;
-
      final ActionResponseRPdu rhs = (ActionResponseRPdu)obj;
 
      if( ! (requestID == rhs.requestID)) ivarsEqual = false;
      if( ! (responseStatus == rhs.responseStatus)) ivarsEqual = false;
-     if( ! (numberOfFixedDatumRecords == rhs.numberOfFixedDatumRecords)) ivarsEqual = false;
-     if( ! (numberOfVariableDatumRecords == rhs.numberOfVariableDatumRecords)) ivarsEqual = false;
 
      for(int idx = 0; idx < fixedDatumRecords.size(); idx++)
         if( ! ( fixedDatumRecords.get(idx).equals(rhs.fixedDatumRecords.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/AggregateIdentifier.java b/src-generated/edu/nps/moves/dis7/AggregateIdentifier.java
index 99287d37be..5fcf12f269 100644
--- a/src-generated/edu/nps/moves/dis7/AggregateIdentifier.java
+++ b/src-generated/edu/nps/moves/dis7/AggregateIdentifier.java
@@ -70,7 +70,7 @@ public short getAggregateID()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -89,7 +89,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -135,7 +135,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -162,9 +162,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof AggregateIdentifier))
-        return false;
-
      final AggregateIdentifier rhs = (AggregateIdentifier)obj;
 
      if( ! (simulationAddress.equals( rhs.simulationAddress) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/AggregateMarking.java b/src-generated/edu/nps/moves/dis7/AggregateMarking.java
index e3c2cb8f01..c6e216f022 100644
--- a/src-generated/edu/nps/moves/dis7/AggregateMarking.java
+++ b/src-generated/edu/nps/moves/dis7/AggregateMarking.java
@@ -70,7 +70,7 @@ public byte[] getCharacters()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -92,7 +92,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -100,8 +100,8 @@ public int unmarshal(DataInputStream dis)
         characterSet = EntityMarkingCharacterSet.unmarshalEnum(dis);
         uPosition += characterSet.getMarshalledSize();
         for(int idx = 0; idx < characters.length; idx++)
-            characters[idx] = dis.readByte(); // mike check
-        uPosition += characters.length; // todo, multiply by prim size mike
+            characters[idx] = dis.readByte();
+        uPosition += (characters.length * 1);
     }
     catch(Exception e)
     { 
@@ -144,7 +144,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -171,9 +171,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof AggregateMarking))
-        return false;
-
      final AggregateMarking rhs = (AggregateMarking)obj;
 
      if( ! (characterSet == rhs.characterSet)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/AggregateStatePdu.java b/src-generated/edu/nps/moves/dis7/AggregateStatePdu.java
index c23ddc7c12..62f6b9c474 100644
--- a/src-generated/edu/nps/moves/dis7/AggregateStatePdu.java
+++ b/src-generated/edu/nps/moves/dis7/AggregateStatePdu.java
@@ -336,7 +336,7 @@ public List<VariableDatum> getVariableDatumList()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -405,7 +405,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -611,7 +611,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -633,9 +633,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof AggregateStatePdu))
-        return false;
-
      final AggregateStatePdu rhs = (AggregateStatePdu)obj;
 
      if( ! (aggregateID.equals( rhs.aggregateID) )) ivarsEqual = false;
@@ -648,10 +645,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
      if( ! (orientation.equals( rhs.orientation) )) ivarsEqual = false;
      if( ! (centerOfMass.equals( rhs.centerOfMass) )) ivarsEqual = false;
      if( ! (velocity.equals( rhs.velocity) )) ivarsEqual = false;
-     if( ! (numberOfDisAggregates == rhs.numberOfDisAggregates)) ivarsEqual = false;
-     if( ! (numberOfDisEntities == rhs.numberOfDisEntities)) ivarsEqual = false;
-     if( ! (numberOfSilentAggregateTypes == rhs.numberOfSilentAggregateTypes)) ivarsEqual = false;
-     if( ! (numberOfSilentEntityTypes == rhs.numberOfSilentEntityTypes)) ivarsEqual = false;
 
      for(int idx = 0; idx < aggregateIDList.size(); idx++)
         if( ! ( aggregateIDList.get(idx).equals(rhs.aggregateIDList.get(idx)))) ivarsEqual = false;
@@ -668,7 +661,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
      for(int idx = 0; idx < silentEntitySystemList.size(); idx++)
         if( ! ( silentEntitySystemList.get(idx).equals(rhs.silentEntitySystemList.get(idx)))) ivarsEqual = false;
 
-     if( ! (numberOfVariableDatumRecords == rhs.numberOfVariableDatumRecords)) ivarsEqual = false;
 
      for(int idx = 0; idx < variableDatumList.size(); idx++)
         if( ! ( variableDatumList.get(idx).equals(rhs.variableDatumList.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/AggregateType.java b/src-generated/edu/nps/moves/dis7/AggregateType.java
index 3eb39fbadf..d5087967a7 100644
--- a/src-generated/edu/nps/moves/dis7/AggregateType.java
+++ b/src-generated/edu/nps/moves/dis7/AggregateType.java
@@ -154,7 +154,7 @@ public byte getExtra()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -178,7 +178,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -245,7 +245,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -272,9 +272,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof AggregateType))
-        return false;
-
      final AggregateType rhs = (AggregateType)obj;
 
      if( ! (aggregateKind == rhs.aggregateKind)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/AngleDeception.java b/src-generated/edu/nps/moves/dis7/AngleDeception.java
index b9f0be1ad6..b2fa32328c 100644
--- a/src-generated/edu/nps/moves/dis7/AngleDeception.java
+++ b/src-generated/edu/nps/moves/dis7/AngleDeception.java
@@ -293,7 +293,7 @@ public int getPadding3()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -326,7 +326,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -429,7 +429,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -456,9 +456,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof AngleDeception))
-        return false;
-
      final AngleDeception rhs = (AngleDeception)obj;
 
      if( ! (recordType == rhs.recordType)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/AngularVelocityVector.java b/src-generated/edu/nps/moves/dis7/AngularVelocityVector.java
index be8f1de686..607ebd3a9a 100644
--- a/src-generated/edu/nps/moves/dis7/AngularVelocityVector.java
+++ b/src-generated/edu/nps/moves/dis7/AngularVelocityVector.java
@@ -87,7 +87,7 @@ public float getZ()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -107,7 +107,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -158,7 +158,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -185,9 +185,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof AngularVelocityVector))
-        return false;
-
      final AngularVelocityVector rhs = (AngularVelocityVector)obj;
 
      if( ! (x == rhs.x)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/AntennaLocation.java b/src-generated/edu/nps/moves/dis7/AntennaLocation.java
index 92853db10d..3a849eede4 100644
--- a/src-generated/edu/nps/moves/dis7/AntennaLocation.java
+++ b/src-generated/edu/nps/moves/dis7/AntennaLocation.java
@@ -70,7 +70,7 @@ public Vector3Float getRelativeAntennaLocation()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -89,7 +89,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -134,7 +134,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -161,9 +161,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof AntennaLocation))
-        return false;
-
      final AntennaLocation rhs = (AntennaLocation)obj;
 
      if( ! (antennaLocation.equals( rhs.antennaLocation) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/Appearance.java b/src-generated/edu/nps/moves/dis7/Appearance.java
index f8e7c01c29..b68aaf84c4 100644
--- a/src-generated/edu/nps/moves/dis7/Appearance.java
+++ b/src-generated/edu/nps/moves/dis7/Appearance.java
@@ -100,7 +100,7 @@ public int getAudio()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -121,7 +121,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -176,7 +176,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -203,9 +203,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof Appearance))
-        return false;
-
      final Appearance rhs = (Appearance)obj;
 
      if( ! (visual == rhs.visual)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/AppearancePdu.java b/src-generated/edu/nps/moves/dis7/AppearancePdu.java
index 83322206ea..c36b85c33d 100644
--- a/src-generated/edu/nps/moves/dis7/AppearancePdu.java
+++ b/src-generated/edu/nps/moves/dis7/AppearancePdu.java
@@ -168,7 +168,7 @@ public Appearance getAppearanceFields()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -194,7 +194,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -264,7 +264,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -286,9 +286,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof AppearancePdu))
-        return false;
-
      final AppearancePdu rhs = (AppearancePdu)obj;
 
      if( ! (liveEntityId.equals( rhs.liveEntityId) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/ArealObjectStatePdu.java b/src-generated/edu/nps/moves/dis7/ArealObjectStatePdu.java
index cf3bff106c..2dd87d0ff4 100644
--- a/src-generated/edu/nps/moves/dis7/ArealObjectStatePdu.java
+++ b/src-generated/edu/nps/moves/dis7/ArealObjectStatePdu.java
@@ -233,7 +233,7 @@ public List<Vector3Double> getObjectLocation()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -269,7 +269,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -372,7 +372,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -394,9 +394,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof ArealObjectStatePdu))
-        return false;
-
      final ArealObjectStatePdu rhs = (ArealObjectStatePdu)obj;
 
      if( ! (objectID.equals( rhs.objectID) )) ivarsEqual = false;
@@ -406,7 +403,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
      if( ! (objectType.equals( rhs.objectType) )) ivarsEqual = false;
      if( ! (specificObjectAppearance == rhs.specificObjectAppearance)) ivarsEqual = false;
      if( ! (generalObjectAppearance == rhs.generalObjectAppearance)) ivarsEqual = false;
-     if( ! (numberOfPoints == rhs.numberOfPoints)) ivarsEqual = false;
      if( ! (requesterID.equals( rhs.requesterID) )) ivarsEqual = false;
      if( ! (receivingID.equals( rhs.receivingID) )) ivarsEqual = false;
 
diff --git a/src-generated/edu/nps/moves/dis7/ArticulatedPartVP.java b/src-generated/edu/nps/moves/dis7/ArticulatedPartVP.java
index 5cbb10849a..fd904f0d01 100644
--- a/src-generated/edu/nps/moves/dis7/ArticulatedPartVP.java
+++ b/src-generated/edu/nps/moves/dis7/ArticulatedPartVP.java
@@ -137,7 +137,7 @@ public int getPadding()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -160,7 +160,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -223,7 +223,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -250,9 +250,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof ArticulatedPartVP))
-        return false;
-
      final ArticulatedPartVP rhs = (ArticulatedPartVP)obj;
 
      if( ! (recordType == rhs.recordType)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/ArticulatedPartsPdu.java b/src-generated/edu/nps/moves/dis7/ArticulatedPartsPdu.java
index 85db06a8f4..84f17d4ddc 100644
--- a/src-generated/edu/nps/moves/dis7/ArticulatedPartsPdu.java
+++ b/src-generated/edu/nps/moves/dis7/ArticulatedPartsPdu.java
@@ -77,7 +77,7 @@ public List<VariableParameter> getVariableParameters()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -104,7 +104,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -176,7 +176,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -198,13 +198,9 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof ArticulatedPartsPdu))
-        return false;
-
      final ArticulatedPartsPdu rhs = (ArticulatedPartsPdu)obj;
 
      if( ! (liveEntityId.equals( rhs.liveEntityId) )) ivarsEqual = false;
-     if( ! (numberOfParameterRecords == rhs.numberOfParameterRecords)) ivarsEqual = false;
 
      for(int idx = 0; idx < variableParameters.size(); idx++)
         if( ! ( variableParameters.get(idx).equals(rhs.variableParameters.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/Association.java b/src-generated/edu/nps/moves/dis7/Association.java
index e21bc5b240..35acca6048 100644
--- a/src-generated/edu/nps/moves/dis7/Association.java
+++ b/src-generated/edu/nps/moves/dis7/Association.java
@@ -103,7 +103,7 @@ public Vector3Double getAssociatedLocation()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -124,7 +124,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -177,7 +177,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -204,9 +204,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof Association))
-        return false;
-
      final Association rhs = (Association)obj;
 
      if( ! (associationType == rhs.associationType)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/AttachedPartVP.java b/src-generated/edu/nps/moves/dis7/AttachedPartVP.java
index 29ab37e918..3e909528df 100644
--- a/src-generated/edu/nps/moves/dis7/AttachedPartVP.java
+++ b/src-generated/edu/nps/moves/dis7/AttachedPartVP.java
@@ -121,7 +121,7 @@ public EntityType getAttachedPartType()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -143,7 +143,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -201,7 +201,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -228,9 +228,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof AttachedPartVP))
-        return false;
-
      final AttachedPartVP rhs = (AttachedPartVP)obj;
 
      if( ! (recordType == rhs.recordType)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/Attribute.java b/src-generated/edu/nps/moves/dis7/Attribute.java
index d07eb4c339..643c7cab73 100644
--- a/src-generated/edu/nps/moves/dis7/Attribute.java
+++ b/src-generated/edu/nps/moves/dis7/Attribute.java
@@ -56,19 +56,6 @@ public int getRecordType()
     return recordType; 
 }
 
-/** Setter for {@link Attribute#recordLength}*/
-public Attribute setRecordLength(short pRecordLength)
-{
-    recordLength = pRecordLength;
-    return this;
-}
-
-/** Getter for {@link Attribute#recordLength}*/
-public short getRecordLength()
-{
-    return recordLength; 
-}
-
 /** Setter for {@link Attribute#recordSpecificFields}*/
 public Attribute setRecordSpecificFields(byte[] pRecordSpecificFields)
 {
@@ -87,12 +74,12 @@ public byte[] getRecordSpecificFields()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
        dos.writeInt( (int)recordType);
-       dos.writeShort( (short)recordLength);
+       dos.writeShort( (short)recordSpecificFields.length);
 
        for(int idx = 0; idx < recordSpecificFields.length; idx++)
            dos.writeByte(recordSpecificFields[idx]);
@@ -111,7 +98,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -121,8 +108,8 @@ public int unmarshal(DataInputStream dis)
         recordLength = (short)dis.readUnsignedShort();
         uPosition += 2;
         for(int idx = 0; idx < recordSpecificFields.length; idx++)
-            recordSpecificFields[idx] = dis.readByte(); // mike check
-        uPosition += recordSpecificFields.length; // todo, multiply by prim size mike
+            recordSpecificFields[idx] = dis.readByte();
+        uPosition += (recordSpecificFields.length * 1);
         padding = new byte[Align.from64bits(uPosition,dis)];
         uPosition += padding.length;
     }
@@ -144,7 +131,7 @@ public int unmarshal(DataInputStream dis)
 public void marshal(java.nio.ByteBuffer buff) throws Exception
 {
    buff.putInt( (int)recordType);
-   buff.putShort( (short)recordLength);
+   buff.putShort( (short)recordSpecificFields.length);
 
    for(int idx = 0; idx < recordSpecificFields.length; idx++)
        buff.put((byte)recordSpecificFields[idx]);
@@ -171,7 +158,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -198,13 +185,9 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof Attribute))
-        return false;
-
      final Attribute rhs = (Attribute)obj;
 
      if( ! (recordType == rhs.recordType)) ivarsEqual = false;
-     if( ! (recordLength == rhs.recordLength)) ivarsEqual = false;
 
      for(int idx = 0; idx < 0; idx++)
      {
diff --git a/src-generated/edu/nps/moves/dis7/AttributePdu.java b/src-generated/edu/nps/moves/dis7/AttributePdu.java
index 288b03cbab..0a3d436b2b 100644
--- a/src-generated/edu/nps/moves/dis7/AttributePdu.java
+++ b/src-generated/edu/nps/moves/dis7/AttributePdu.java
@@ -31,7 +31,7 @@ public class AttributePdu extends EntityInformationFamilyPdu implements Serializ
    protected DISProtocolFamily attributeRecordProtocolVersion = DISProtocolFamily.values()[0];
 
    /** This field shall contain the Attribute record type of the Attribute records in the PDU if they all have the same Attribute record type. It shall be represented by a 32-bit enumeration. uid 66 */
-   protected VariableRecordTypes masterAttributeRecordType = VariableRecordTypes.values()[0];
+   protected VariableRecordType masterAttributeRecordType = VariableRecordType.values()[0];
 
    /** This field shall identify the action code applicable to this Attribute PDU. The Action Code shall apply to all Attribute records contained in the PDU. It shall be represented by an 8-bit enumeration. uid 295 */
    protected DISAttributeActionCode actionCode = DISAttributeActionCode.values()[0];
@@ -142,14 +142,14 @@ public DISProtocolFamily getAttributeRecordProtocolVersion()
 }
 
 /** Setter for {@link AttributePdu#masterAttributeRecordType}*/
-public AttributePdu setMasterAttributeRecordType(VariableRecordTypes pMasterAttributeRecordType)
+public AttributePdu setMasterAttributeRecordType(VariableRecordType pMasterAttributeRecordType)
 {
     masterAttributeRecordType = pMasterAttributeRecordType;
     return this;
 }
 
 /** Getter for {@link AttributePdu#masterAttributeRecordType}*/
-public VariableRecordTypes getMasterAttributeRecordType()
+public VariableRecordType getMasterAttributeRecordType()
 {
     return masterAttributeRecordType; 
 }
@@ -198,7 +198,7 @@ public List<AttributeRecordSet> getAttributeRecordSets()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -232,7 +232,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -248,7 +248,7 @@ public int unmarshal(DataInputStream dis)
         uPosition += attributeRecordPduType.getMarshalledSize();
         attributeRecordProtocolVersion = DISProtocolFamily.unmarshalEnum(dis);
         uPosition += attributeRecordProtocolVersion.getMarshalledSize();
-        masterAttributeRecordType = VariableRecordTypes.unmarshalEnum(dis);
+        masterAttributeRecordType = VariableRecordType.unmarshalEnum(dis);
         uPosition += masterAttributeRecordType.getMarshalledSize();
         actionCode = DISAttributeActionCode.unmarshalEnum(dis);
         uPosition += actionCode.getMarshalledSize();
@@ -317,7 +317,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
     padding2 = buff.getShort();
     attributeRecordPduType = DISPDUType.unmarshalEnum(buff);
     attributeRecordProtocolVersion = DISProtocolFamily.unmarshalEnum(buff);
-    masterAttributeRecordType = VariableRecordTypes.unmarshalEnum(buff);
+    masterAttributeRecordType = VariableRecordType.unmarshalEnum(buff);
     actionCode = DISAttributeActionCode.unmarshalEnum(buff);
     padding3 = (byte)(buff.get() & 0xFF);
     numberAttributeRecordSet = (short)(buff.getShort() & 0xFFFF);
@@ -332,7 +332,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -354,9 +354,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof AttributePdu))
-        return false;
-
      final AttributePdu rhs = (AttributePdu)obj;
 
      if( ! (originatingSimulationAddress.equals( rhs.originatingSimulationAddress) )) ivarsEqual = false;
@@ -367,7 +364,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
      if( ! (masterAttributeRecordType == rhs.masterAttributeRecordType)) ivarsEqual = false;
      if( ! (actionCode == rhs.actionCode)) ivarsEqual = false;
      if( ! (padding3 == rhs.padding3)) ivarsEqual = false;
-     if( ! (numberAttributeRecordSet == rhs.numberAttributeRecordSet)) ivarsEqual = false;
 
      for(int idx = 0; idx < attributeRecordSets.size(); idx++)
         if( ! ( attributeRecordSets.get(idx).equals(rhs.attributeRecordSets.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/AttributeRecordSet.java b/src-generated/edu/nps/moves/dis7/AttributeRecordSet.java
index b65b907626..af479f0d4c 100644
--- a/src-generated/edu/nps/moves/dis7/AttributeRecordSet.java
+++ b/src-generated/edu/nps/moves/dis7/AttributeRecordSet.java
@@ -74,7 +74,7 @@ public List<Attribute> getAttributeRecords()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -100,7 +100,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -167,7 +167,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -194,13 +194,9 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof AttributeRecordSet))
-        return false;
-
      final AttributeRecordSet rhs = (AttributeRecordSet)obj;
 
      if( ! (entityId.equals( rhs.entityId) )) ivarsEqual = false;
-     if( ! (numberOfAttributeRecords == rhs.numberOfAttributeRecords)) ivarsEqual = false;
 
      for(int idx = 0; idx < attributeRecords.size(); idx++)
         if( ! ( attributeRecords.get(idx).equals(rhs.attributeRecords.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/BeamAntennaPattern.java b/src-generated/edu/nps/moves/dis7/BeamAntennaPattern.java
index f67d8eb17a..8598551fa5 100644
--- a/src-generated/edu/nps/moves/dis7/BeamAntennaPattern.java
+++ b/src-generated/edu/nps/moves/dis7/BeamAntennaPattern.java
@@ -202,7 +202,7 @@ public int getPadding3()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -229,7 +229,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -307,7 +307,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -334,9 +334,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof BeamAntennaPattern))
-        return false;
-
      final BeamAntennaPattern rhs = (BeamAntennaPattern)obj;
 
      if( ! (beamDirection.equals( rhs.beamDirection) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/BeamData.java b/src-generated/edu/nps/moves/dis7/BeamData.java
index d1fb7b148d..4cbc8cf49d 100644
--- a/src-generated/edu/nps/moves/dis7/BeamData.java
+++ b/src-generated/edu/nps/moves/dis7/BeamData.java
@@ -121,7 +121,7 @@ public float getBeamSweepSync()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -143,7 +143,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -202,7 +202,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -229,9 +229,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof BeamData))
-        return false;
-
      final BeamData rhs = (BeamData)obj;
 
      if( ! (beamAzimuthCenter == rhs.beamAzimuthCenter)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/BeamStatus.java b/src-generated/edu/nps/moves/dis7/BeamStatus.java
index 6fdc57e82e..7625a02094 100644
--- a/src-generated/edu/nps/moves/dis7/BeamStatus.java
+++ b/src-generated/edu/nps/moves/dis7/BeamStatus.java
@@ -53,7 +53,7 @@ public BeamStatusBeamState getBeamState()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -71,7 +71,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -114,7 +114,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -141,9 +141,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof BeamStatus))
-        return false;
-
      final BeamStatus rhs = (BeamStatus)obj;
 
      if( ! (beamState == rhs.beamState)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/BlankingSector.java b/src-generated/edu/nps/moves/dis7/BlankingSector.java
index 84e91459be..7929df0491 100644
--- a/src-generated/edu/nps/moves/dis7/BlankingSector.java
+++ b/src-generated/edu/nps/moves/dis7/BlankingSector.java
@@ -245,7 +245,7 @@ public long getPadding3()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -275,7 +275,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -366,7 +366,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -393,9 +393,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof BlankingSector))
-        return false;
-
      final BlankingSector rhs = (BlankingSector)obj;
 
      if( ! (recordType == rhs.recordType)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/ChangeOptions.java b/src-generated/edu/nps/moves/dis7/ChangeOptions.java
index b7eb920059..aed05aa93e 100644
--- a/src-generated/edu/nps/moves/dis7/ChangeOptions.java
+++ b/src-generated/edu/nps/moves/dis7/ChangeOptions.java
@@ -52,7 +52,7 @@ public byte getValue()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -70,7 +70,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -113,7 +113,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -140,9 +140,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof ChangeOptions))
-        return false;
-
      final ChangeOptions rhs = (ChangeOptions)obj;
 
      if( ! (value == rhs.value)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/ClockTime.java b/src-generated/edu/nps/moves/dis7/ClockTime.java
index 2a515030db..1927a3db1d 100644
--- a/src-generated/edu/nps/moves/dis7/ClockTime.java
+++ b/src-generated/edu/nps/moves/dis7/ClockTime.java
@@ -70,7 +70,7 @@ public int getTimePastHour()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -89,7 +89,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -136,7 +136,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -163,9 +163,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof ClockTime))
-        return false;
-
      final ClockTime rhs = (ClockTime)obj;
 
      if( ! (hour == rhs.hour)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/CollisionElasticPdu.java b/src-generated/edu/nps/moves/dis7/CollisionElasticPdu.java
index 4d001102f4..5ca36bba06 100644
--- a/src-generated/edu/nps/moves/dis7/CollisionElasticPdu.java
+++ b/src-generated/edu/nps/moves/dis7/CollisionElasticPdu.java
@@ -293,7 +293,7 @@ public float getCoefficientOfRestitution()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -326,7 +326,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -424,7 +424,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -446,9 +446,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof CollisionElasticPdu))
-        return false;
-
      final CollisionElasticPdu rhs = (CollisionElasticPdu)obj;
 
      if( ! (issuingEntityID.equals( rhs.issuingEntityID) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/CollisionPdu.java b/src-generated/edu/nps/moves/dis7/CollisionPdu.java
index e9d8a98b94..943fa6f40a 100644
--- a/src-generated/edu/nps/moves/dis7/CollisionPdu.java
+++ b/src-generated/edu/nps/moves/dis7/CollisionPdu.java
@@ -174,7 +174,7 @@ public Vector3Float getLocation()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -200,7 +200,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -271,7 +271,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -293,9 +293,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof CollisionPdu))
-        return false;
-
      final CollisionPdu rhs = (CollisionPdu)obj;
 
      if( ! (issuingEntityID.equals( rhs.issuingEntityID) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/CommentPdu.java b/src-generated/edu/nps/moves/dis7/CommentPdu.java
index 7e73f45d0b..331ed2ea5d 100644
--- a/src-generated/edu/nps/moves/dis7/CommentPdu.java
+++ b/src-generated/edu/nps/moves/dis7/CommentPdu.java
@@ -88,7 +88,7 @@ public List<VariableDatum> getVariableDatums()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -122,7 +122,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -216,7 +216,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -238,13 +238,8 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof CommentPdu))
-        return false;
-
      final CommentPdu rhs = (CommentPdu)obj;
 
-     if( ! (numberOfFixedDatumRecords == rhs.numberOfFixedDatumRecords)) ivarsEqual = false;
-     if( ! (numberOfVariableDatumRecords == rhs.numberOfVariableDatumRecords)) ivarsEqual = false;
 
      for(int idx = 0; idx < fixedDatums.size(); idx++)
         if( ! ( fixedDatums.get(idx).equals(rhs.fixedDatums.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/CommentRPdu.java b/src-generated/edu/nps/moves/dis7/CommentRPdu.java
index 03699f8f97..6294f59501 100644
--- a/src-generated/edu/nps/moves/dis7/CommentRPdu.java
+++ b/src-generated/edu/nps/moves/dis7/CommentRPdu.java
@@ -88,7 +88,7 @@ public List<VariableDatum> getVariableDatumRecords()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -122,7 +122,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -216,7 +216,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -238,13 +238,8 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof CommentRPdu))
-        return false;
-
      final CommentRPdu rhs = (CommentRPdu)obj;
 
-     if( ! (numberOfFixedDatumRecords == rhs.numberOfFixedDatumRecords)) ivarsEqual = false;
-     if( ! (numberOfVariableDatumRecords == rhs.numberOfVariableDatumRecords)) ivarsEqual = false;
 
      for(int idx = 0; idx < fixedDatumRecords.size(); idx++)
         if( ! ( fixedDatumRecords.get(idx).equals(rhs.fixedDatumRecords.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/CommunicationsNodeID.java b/src-generated/edu/nps/moves/dis7/CommunicationsNodeID.java
index 00683ba32c..6fcbb5885a 100644
--- a/src-generated/edu/nps/moves/dis7/CommunicationsNodeID.java
+++ b/src-generated/edu/nps/moves/dis7/CommunicationsNodeID.java
@@ -68,7 +68,7 @@ public short getElementID()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -87,7 +87,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -133,7 +133,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -160,9 +160,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof CommunicationsNodeID))
-        return false;
-
      final CommunicationsNodeID rhs = (CommunicationsNodeID)obj;
 
      if( ! (entityID.equals( rhs.entityID) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/CreateEntityPdu.java b/src-generated/edu/nps/moves/dis7/CreateEntityPdu.java
index 33ca5fc5a5..431bf92b55 100644
--- a/src-generated/edu/nps/moves/dis7/CreateEntityPdu.java
+++ b/src-generated/edu/nps/moves/dis7/CreateEntityPdu.java
@@ -55,7 +55,7 @@ public int getRequestID()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -74,7 +74,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -122,7 +122,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -144,9 +144,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof CreateEntityPdu))
-        return false;
-
      final CreateEntityPdu rhs = (CreateEntityPdu)obj;
 
      if( ! (requestID == rhs.requestID)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/CreateEntityRPdu.java b/src-generated/edu/nps/moves/dis7/CreateEntityRPdu.java
index c6dafd4dc8..49185b148f 100644
--- a/src-generated/edu/nps/moves/dis7/CreateEntityRPdu.java
+++ b/src-generated/edu/nps/moves/dis7/CreateEntityRPdu.java
@@ -104,7 +104,7 @@ public int getRequestID()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -126,7 +126,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -186,7 +186,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -208,9 +208,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof CreateEntityRPdu))
-        return false;
-
      final CreateEntityRPdu rhs = (CreateEntityRPdu)obj;
 
      if( ! (requiredReliabilityService == rhs.requiredReliabilityService)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/DataFilterRecord.java b/src-generated/edu/nps/moves/dis7/DataFilterRecord.java
index 61d1ce66d9..0f8686fc5f 100644
--- a/src-generated/edu/nps/moves/dis7/DataFilterRecord.java
+++ b/src-generated/edu/nps/moves/dis7/DataFilterRecord.java
@@ -64,7 +64,7 @@ public int getBitFlags()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -82,7 +82,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -125,7 +125,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -152,9 +152,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof DataFilterRecord))
-        return false;
-
      final DataFilterRecord rhs = (DataFilterRecord)obj;
 
      if( ! (bitFlags == rhs.bitFlags)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/DataPdu.java b/src-generated/edu/nps/moves/dis7/DataPdu.java
index 97a6a4c83c..4ce1362cb0 100644
--- a/src-generated/edu/nps/moves/dis7/DataPdu.java
+++ b/src-generated/edu/nps/moves/dis7/DataPdu.java
@@ -122,7 +122,7 @@ public List<VariableDatum> getVariableDatums()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -158,7 +158,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -260,7 +260,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -282,15 +282,10 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof DataPdu))
-        return false;
-
      final DataPdu rhs = (DataPdu)obj;
 
      if( ! (requestID == rhs.requestID)) ivarsEqual = false;
      if( ! (padding1 == rhs.padding1)) ivarsEqual = false;
-     if( ! (numberOfFixedDatumRecords == rhs.numberOfFixedDatumRecords)) ivarsEqual = false;
-     if( ! (numberOfVariableDatumRecords == rhs.numberOfVariableDatumRecords)) ivarsEqual = false;
 
      for(int idx = 0; idx < fixedDatums.size(); idx++)
         if( ! ( fixedDatums.get(idx).equals(rhs.fixedDatums.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/DataQueryDatumSpecification.java b/src-generated/edu/nps/moves/dis7/DataQueryDatumSpecification.java
index 723648c836..e6db4eb600 100644
--- a/src-generated/edu/nps/moves/dis7/DataQueryDatumSpecification.java
+++ b/src-generated/edu/nps/moves/dis7/DataQueryDatumSpecification.java
@@ -86,7 +86,7 @@ public List<UnsignedDISInteger> getVariableDatumIDList()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -119,7 +119,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -208,7 +208,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -235,13 +235,8 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof DataQueryDatumSpecification))
-        return false;
-
      final DataQueryDatumSpecification rhs = (DataQueryDatumSpecification)obj;
 
-     if( ! (numberOfFixedDatums == rhs.numberOfFixedDatums)) ivarsEqual = false;
-     if( ! (numberOfVariableDatums == rhs.numberOfVariableDatums)) ivarsEqual = false;
 
      for(int idx = 0; idx < fixedDatumIDList.size(); idx++)
         if( ! ( fixedDatumIDList.get(idx).equals(rhs.fixedDatumIDList.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/DataQueryPdu.java b/src-generated/edu/nps/moves/dis7/DataQueryPdu.java
index ef8c82198a..6f49128071 100644
--- a/src-generated/edu/nps/moves/dis7/DataQueryPdu.java
+++ b/src-generated/edu/nps/moves/dis7/DataQueryPdu.java
@@ -122,7 +122,7 @@ public List<VariableDatum> getVariableDatums()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -158,7 +158,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -260,7 +260,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -282,15 +282,10 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof DataQueryPdu))
-        return false;
-
      final DataQueryPdu rhs = (DataQueryPdu)obj;
 
      if( ! (requestID == rhs.requestID)) ivarsEqual = false;
      if( ! (timeInterval == rhs.timeInterval)) ivarsEqual = false;
-     if( ! (numberOfFixedDatumRecords == rhs.numberOfFixedDatumRecords)) ivarsEqual = false;
-     if( ! (numberOfVariableDatumRecords == rhs.numberOfVariableDatumRecords)) ivarsEqual = false;
 
      for(int idx = 0; idx < fixedDatums.size(); idx++)
         if( ! ( fixedDatums.get(idx).equals(rhs.fixedDatums.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/DataQueryRPdu.java b/src-generated/edu/nps/moves/dis7/DataQueryRPdu.java
index 8d95938844..3df2a13701 100644
--- a/src-generated/edu/nps/moves/dis7/DataQueryRPdu.java
+++ b/src-generated/edu/nps/moves/dis7/DataQueryRPdu.java
@@ -173,7 +173,7 @@ public List<VariableDatum> getVariableDatumRecords()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -212,7 +212,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -326,7 +326,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -348,9 +348,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof DataQueryRPdu))
-        return false;
-
      final DataQueryRPdu rhs = (DataQueryRPdu)obj;
 
      if( ! (requiredReliabilityService == rhs.requiredReliabilityService)) ivarsEqual = false;
@@ -358,8 +355,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
      if( ! (pad2 == rhs.pad2)) ivarsEqual = false;
      if( ! (requestID == rhs.requestID)) ivarsEqual = false;
      if( ! (timeInterval == rhs.timeInterval)) ivarsEqual = false;
-     if( ! (numberOfFixedDatumRecords == rhs.numberOfFixedDatumRecords)) ivarsEqual = false;
-     if( ! (numberOfVariableDatumRecords == rhs.numberOfVariableDatumRecords)) ivarsEqual = false;
 
      for(int idx = 0; idx < fixedDatumRecords.size(); idx++)
         if( ! ( fixedDatumRecords.get(idx).equals(rhs.fixedDatumRecords.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/DataRPdu.java b/src-generated/edu/nps/moves/dis7/DataRPdu.java
index 846aea05d0..5de89bdcc4 100644
--- a/src-generated/edu/nps/moves/dis7/DataRPdu.java
+++ b/src-generated/edu/nps/moves/dis7/DataRPdu.java
@@ -156,7 +156,7 @@ public List<VariableDatum> getVariableDatumRecords()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -194,7 +194,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -304,7 +304,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -326,17 +326,12 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof DataRPdu))
-        return false;
-
      final DataRPdu rhs = (DataRPdu)obj;
 
      if( ! (requestID == rhs.requestID)) ivarsEqual = false;
      if( ! (requiredReliabilityService == rhs.requiredReliabilityService)) ivarsEqual = false;
      if( ! (pad1 == rhs.pad1)) ivarsEqual = false;
      if( ! (pad2 == rhs.pad2)) ivarsEqual = false;
-     if( ! (numberOfFixedDatumRecords == rhs.numberOfFixedDatumRecords)) ivarsEqual = false;
-     if( ! (numberOfVariableDatumRecords == rhs.numberOfVariableDatumRecords)) ivarsEqual = false;
 
      for(int idx = 0; idx < fixedDatumRecords.size(); idx++)
         if( ! ( fixedDatumRecords.get(idx).equals(rhs.fixedDatumRecords.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/DatumSpecification.java b/src-generated/edu/nps/moves/dis7/DatumSpecification.java
index 37da952ec9..94667c8b3b 100644
--- a/src-generated/edu/nps/moves/dis7/DatumSpecification.java
+++ b/src-generated/edu/nps/moves/dis7/DatumSpecification.java
@@ -86,7 +86,7 @@ public List<VariableDatum> getVariableDatumIDList()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -119,7 +119,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -208,7 +208,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -235,13 +235,8 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof DatumSpecification))
-        return false;
-
      final DatumSpecification rhs = (DatumSpecification)obj;
 
-     if( ! (numberOfFixedDatums == rhs.numberOfFixedDatums)) ivarsEqual = false;
-     if( ! (numberOfVariableDatums == rhs.numberOfVariableDatums)) ivarsEqual = false;
 
      for(int idx = 0; idx < fixedDatumIDList.size(); idx++)
         if( ! ( fixedDatumIDList.get(idx).equals(rhs.fixedDatumIDList.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/DeadReckoningParameters.java b/src-generated/edu/nps/moves/dis7/DeadReckoningParameters.java
index 46b2887daa..4a810aabbf 100644
--- a/src-generated/edu/nps/moves/dis7/DeadReckoningParameters.java
+++ b/src-generated/edu/nps/moves/dis7/DeadReckoningParameters.java
@@ -104,7 +104,7 @@ public Vector3Float getEntityAngularVelocity()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -128,7 +128,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -136,8 +136,8 @@ public int unmarshal(DataInputStream dis)
         deadReckoningAlgorithm = DeadReckoningAlgorithm.unmarshalEnum(dis);
         uPosition += deadReckoningAlgorithm.getMarshalledSize();
         for(int idx = 0; idx < parameters.length; idx++)
-            parameters[idx] = dis.readByte(); // mike check
-        uPosition += parameters.length; // todo, multiply by prim size mike
+            parameters[idx] = dis.readByte();
+        uPosition += (parameters.length * 1);
         uPosition += entityLinearAcceleration.unmarshal(dis);
         uPosition += entityAngularVelocity.unmarshal(dis);
     }
@@ -186,7 +186,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -213,9 +213,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof DeadReckoningParameters))
-        return false;
-
      final DeadReckoningParameters rhs = (DeadReckoningParameters)obj;
 
      if( ! (deadReckoningAlgorithm == rhs.deadReckoningAlgorithm)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/DesignatorPdu.java b/src-generated/edu/nps/moves/dis7/DesignatorPdu.java
index 653bc02ee4..e1b6b1ed26 100644
--- a/src-generated/edu/nps/moves/dis7/DesignatorPdu.java
+++ b/src-generated/edu/nps/moves/dis7/DesignatorPdu.java
@@ -242,7 +242,7 @@ public Vector3Float getEntityLinearAcceleration()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -272,7 +272,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -359,7 +359,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -381,9 +381,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof DesignatorPdu))
-        return false;
-
      final DesignatorPdu rhs = (DesignatorPdu)obj;
 
      if( ! (designatingEntityID.equals( rhs.designatingEntityID) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/DetonationPdu.java b/src-generated/edu/nps/moves/dis7/DetonationPdu.java
index e3704388ae..fd4a627a29 100644
--- a/src-generated/edu/nps/moves/dis7/DetonationPdu.java
+++ b/src-generated/edu/nps/moves/dis7/DetonationPdu.java
@@ -233,7 +233,7 @@ public List<VariableParameter> getVariableParameters()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -269,7 +269,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -370,7 +370,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -392,9 +392,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof DetonationPdu))
-        return false;
-
      final DetonationPdu rhs = (DetonationPdu)obj;
 
      if( ! (sourceEntityID.equals( rhs.sourceEntityID) )) ivarsEqual = false;
@@ -406,7 +403,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
      if( ! (descriptor.equals( rhs.descriptor) )) ivarsEqual = false;
      if( ! (locationOfEntityCoordinates.equals( rhs.locationOfEntityCoordinates) )) ivarsEqual = false;
      if( ! (detonationResult == rhs.detonationResult)) ivarsEqual = false;
-     if( ! (numberOfVariableParameters == rhs.numberOfVariableParameters)) ivarsEqual = false;
      if( ! (pad == rhs.pad)) ivarsEqual = false;
 
      for(int idx = 0; idx < variableParameters.size(); idx++)
diff --git a/src-generated/edu/nps/moves/dis7/DirectedEnergyAreaAimpoint.java b/src-generated/edu/nps/moves/dis7/DirectedEnergyAreaAimpoint.java
index 4debca1470..0534359d6c 100644
--- a/src-generated/edu/nps/moves/dis7/DirectedEnergyAreaAimpoint.java
+++ b/src-generated/edu/nps/moves/dis7/DirectedEnergyAreaAimpoint.java
@@ -140,7 +140,7 @@ public List<DirectedEnergyTargetEnergyDeposition> getDirectedEnergyTargetEnergyD
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -177,7 +177,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -282,7 +282,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -309,16 +309,11 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof DirectedEnergyAreaAimpoint))
-        return false;
-
      final DirectedEnergyAreaAimpoint rhs = (DirectedEnergyAreaAimpoint)obj;
 
      if( ! (recordType == rhs.recordType)) ivarsEqual = false;
      if( ! (recordLength == rhs.recordLength)) ivarsEqual = false;
      if( ! (padding == rhs.padding)) ivarsEqual = false;
-     if( ! (beamAntennaPatternRecordCount == rhs.beamAntennaPatternRecordCount)) ivarsEqual = false;
-     if( ! (directedEnergyTargetEnergyDepositionRecordCount == rhs.directedEnergyTargetEnergyDepositionRecordCount)) ivarsEqual = false;
 
      for(int idx = 0; idx < beamAntennaParameterList.size(); idx++)
         if( ! ( beamAntennaParameterList.get(idx).equals(rhs.beamAntennaParameterList.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/DirectedEnergyDamage.java b/src-generated/edu/nps/moves/dis7/DirectedEnergyDamage.java
index d10f468264..d4fd52bd73 100644
--- a/src-generated/edu/nps/moves/dis7/DirectedEnergyDamage.java
+++ b/src-generated/edu/nps/moves/dis7/DirectedEnergyDamage.java
@@ -240,7 +240,7 @@ public short getPadding2()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -269,7 +269,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -353,7 +353,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -380,9 +380,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof DirectedEnergyDamage))
-        return false;
-
      final DirectedEnergyDamage rhs = (DirectedEnergyDamage)obj;
 
      if( ! (recordType == rhs.recordType)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/DirectedEnergyFirePdu.java b/src-generated/edu/nps/moves/dis7/DirectedEnergyFirePdu.java
index d1ae02a27c..c62f769048 100644
--- a/src-generated/edu/nps/moves/dis7/DirectedEnergyFirePdu.java
+++ b/src-generated/edu/nps/moves/dis7/DirectedEnergyFirePdu.java
@@ -329,7 +329,7 @@ public List<StandardVariableSpecification> getDERecords()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -371,7 +371,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -498,7 +498,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -520,9 +520,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof DirectedEnergyFirePdu))
-        return false;
-
      final DirectedEnergyFirePdu rhs = (DirectedEnergyFirePdu)obj;
 
      if( ! (firingEntityID.equals( rhs.firingEntityID) )) ivarsEqual = false;
@@ -540,7 +537,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
      if( ! (pad2 == rhs.pad2)) ivarsEqual = false;
      if( ! (pad3 == rhs.pad3)) ivarsEqual = false;
      if( ! (pad4 == rhs.pad4)) ivarsEqual = false;
-     if( ! (numberOfDERecords == rhs.numberOfDERecords)) ivarsEqual = false;
 
      for(int idx = 0; idx < dERecords.size(); idx++)
         if( ! ( dERecords.get(idx).equals(rhs.dERecords.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/DirectedEnergyPrecisionAimpoint.java b/src-generated/edu/nps/moves/dis7/DirectedEnergyPrecisionAimpoint.java
index 0c8ecceda2..6ce1e1cf86 100644
--- a/src-generated/edu/nps/moves/dis7/DirectedEnergyPrecisionAimpoint.java
+++ b/src-generated/edu/nps/moves/dis7/DirectedEnergyPrecisionAimpoint.java
@@ -291,7 +291,7 @@ public int getPadding2()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -323,7 +323,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -417,7 +417,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -444,9 +444,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof DirectedEnergyPrecisionAimpoint))
-        return false;
-
      final DirectedEnergyPrecisionAimpoint rhs = (DirectedEnergyPrecisionAimpoint)obj;
 
      if( ! (recordType == rhs.recordType)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/DirectedEnergyTargetEnergyDeposition.java b/src-generated/edu/nps/moves/dis7/DirectedEnergyTargetEnergyDeposition.java
index 9b23aa9c38..c5ff9b0e77 100644
--- a/src-generated/edu/nps/moves/dis7/DirectedEnergyTargetEnergyDeposition.java
+++ b/src-generated/edu/nps/moves/dis7/DirectedEnergyTargetEnergyDeposition.java
@@ -87,7 +87,7 @@ public float getPeakIrradiance()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -107,7 +107,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -157,7 +157,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -184,9 +184,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof DirectedEnergyTargetEnergyDeposition))
-        return false;
-
      final DirectedEnergyTargetEnergyDeposition rhs = (DirectedEnergyTargetEnergyDeposition)obj;
 
      if( ! (targetEntityID.equals( rhs.targetEntityID) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/DistributedEmissionsFamilyPdu.java b/src-generated/edu/nps/moves/dis7/DistributedEmissionsFamilyPdu.java
index c8f149ee3d..6ff88c6b65 100644
--- a/src-generated/edu/nps/moves/dis7/DistributedEmissionsFamilyPdu.java
+++ b/src-generated/edu/nps/moves/dis7/DistributedEmissionsFamilyPdu.java
@@ -38,7 +38,7 @@ public int getMarshalledSize()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -56,7 +56,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -100,7 +100,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -122,9 +122,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof DistributedEmissionsFamilyPdu))
-        return false;
-
      final DistributedEmissionsFamilyPdu rhs = (DistributedEmissionsFamilyPdu)obj;
 
     return ivarsEqual && super.equalsImpl(rhs);
diff --git a/src-generated/edu/nps/moves/dis7/EEFundamentalParameterData.java b/src-generated/edu/nps/moves/dis7/EEFundamentalParameterData.java
index 878937fd30..0d15a28ec4 100644
--- a/src-generated/edu/nps/moves/dis7/EEFundamentalParameterData.java
+++ b/src-generated/edu/nps/moves/dis7/EEFundamentalParameterData.java
@@ -121,7 +121,7 @@ public float getPulseWidth()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -143,7 +143,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -202,7 +202,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -229,9 +229,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof EEFundamentalParameterData))
-        return false;
-
      final EEFundamentalParameterData rhs = (EEFundamentalParameterData)obj;
 
      if( ! (frequency == rhs.frequency)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/ElectromagneticEmissionPdu.java b/src-generated/edu/nps/moves/dis7/ElectromagneticEmissionPdu.java
index f9d2411864..e83b1a819e 100644
--- a/src-generated/edu/nps/moves/dis7/ElectromagneticEmissionPdu.java
+++ b/src-generated/edu/nps/moves/dis7/ElectromagneticEmissionPdu.java
@@ -132,7 +132,7 @@ public List<ElectronicEmitter> getSystems()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -162,7 +162,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -245,7 +245,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -267,15 +267,11 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof ElectromagneticEmissionPdu))
-        return false;
-
      final ElectromagneticEmissionPdu rhs = (ElectromagneticEmissionPdu)obj;
 
      if( ! (emittingEntityID.equals( rhs.emittingEntityID) )) ivarsEqual = false;
      if( ! (eventID.equals( rhs.eventID) )) ivarsEqual = false;
      if( ! (stateUpdateIndicator == rhs.stateUpdateIndicator)) ivarsEqual = false;
-     if( ! (numberOfSystems == rhs.numberOfSystems)) ivarsEqual = false;
      if( ! (paddingForEmissionsPdu == rhs.paddingForEmissionsPdu)) ivarsEqual = false;
 
      for(int idx = 0; idx < systems.size(); idx++)
diff --git a/src-generated/edu/nps/moves/dis7/ElectronicEmitter.java b/src-generated/edu/nps/moves/dis7/ElectronicEmitter.java
index f11af88369..c8359095a7 100644
--- a/src-generated/edu/nps/moves/dis7/ElectronicEmitter.java
+++ b/src-generated/edu/nps/moves/dis7/ElectronicEmitter.java
@@ -111,7 +111,7 @@ public List<EmitterBeam> getBeams()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -139,7 +139,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -213,7 +213,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -240,13 +240,9 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof ElectronicEmitter))
-        return false;
-
      final ElectronicEmitter rhs = (ElectronicEmitter)obj;
 
      if( ! (systemDataLength == rhs.systemDataLength)) ivarsEqual = false;
-     if( ! (numberOfBeams == rhs.numberOfBeams)) ivarsEqual = false;
      if( ! (emitterSystem.equals( rhs.emitterSystem) )) ivarsEqual = false;
      if( ! (location.equals( rhs.location) )) ivarsEqual = false;
 
diff --git a/src-generated/edu/nps/moves/dis7/EmitterBeam.java b/src-generated/edu/nps/moves/dis7/EmitterBeam.java
index f8dfe1f512..8016201cc6 100644
--- a/src-generated/edu/nps/moves/dis7/EmitterBeam.java
+++ b/src-generated/edu/nps/moves/dis7/EmitterBeam.java
@@ -204,7 +204,7 @@ public List<TrackJamData> getTrackJamData()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -238,7 +238,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -334,7 +334,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -361,9 +361,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof EmitterBeam))
-        return false;
-
      final EmitterBeam rhs = (EmitterBeam)obj;
 
      if( ! (beamDataLength == rhs.beamDataLength)) ivarsEqual = false;
@@ -372,7 +369,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
      if( ! (fundamentalParameterData.equals( rhs.fundamentalParameterData) )) ivarsEqual = false;
      if( ! (beamData.equals( rhs.beamData) )) ivarsEqual = false;
      if( ! (beamFunction == rhs.beamFunction)) ivarsEqual = false;
-     if( ! (numberOfTargets == rhs.numberOfTargets)) ivarsEqual = false;
      if( ! (highDensityTrackJam == rhs.highDensityTrackJam)) ivarsEqual = false;
      if( ! (beamStatus.equals( rhs.beamStatus) )) ivarsEqual = false;
      if( ! (jammingTechnique.equals( rhs.jammingTechnique) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/EmitterSystem.java b/src-generated/edu/nps/moves/dis7/EmitterSystem.java
index 806eb55b90..5a6b1e1dee 100644
--- a/src-generated/edu/nps/moves/dis7/EmitterSystem.java
+++ b/src-generated/edu/nps/moves/dis7/EmitterSystem.java
@@ -87,7 +87,7 @@ public byte getEmitterIDNumber()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -107,7 +107,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -158,7 +158,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -185,9 +185,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof EmitterSystem))
-        return false;
-
      final EmitterSystem rhs = (EmitterSystem)obj;
 
      if( ! (emitterName == rhs.emitterName)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/EngineFuel.java b/src-generated/edu/nps/moves/dis7/EngineFuel.java
index 4807f463db..5798b71f2a 100644
--- a/src-generated/edu/nps/moves/dis7/EngineFuel.java
+++ b/src-generated/edu/nps/moves/dis7/EngineFuel.java
@@ -121,7 +121,7 @@ public byte getPadding()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -143,7 +143,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -202,7 +202,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -229,9 +229,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof EngineFuel))
-        return false;
-
      final EngineFuel rhs = (EngineFuel)obj;
 
      if( ! (fuelQuantity == rhs.fuelQuantity)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/EngineFuelReload.java b/src-generated/edu/nps/moves/dis7/EngineFuelReload.java
index 4b748e9b10..92b1dd1389 100644
--- a/src-generated/edu/nps/moves/dis7/EngineFuelReload.java
+++ b/src-generated/edu/nps/moves/dis7/EngineFuelReload.java
@@ -172,7 +172,7 @@ public byte getPadding()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -197,7 +197,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -268,7 +268,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -295,9 +295,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof EngineFuelReload))
-        return false;
-
      final EngineFuelReload rhs = (EngineFuelReload)obj;
 
      if( ! (standardQuantity == rhs.standardQuantity)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/EntityAssociationVP.java b/src-generated/edu/nps/moves/dis7/EntityAssociationVP.java
index 466e2e6d8b..f2aad6e0ee 100644
--- a/src-generated/edu/nps/moves/dis7/EntityAssociationVP.java
+++ b/src-generated/edu/nps/moves/dis7/EntityAssociationVP.java
@@ -189,7 +189,7 @@ public short getGroupNumber()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -215,7 +215,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -289,7 +289,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -316,9 +316,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof EntityAssociationVP))
-        return false;
-
      final EntityAssociationVP rhs = (EntityAssociationVP)obj;
 
      if( ! (recordType == rhs.recordType)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/EntityDamageStatusPdu.java b/src-generated/edu/nps/moves/dis7/EntityDamageStatusPdu.java
index aadeb09226..c97a69a407 100644
--- a/src-generated/edu/nps/moves/dis7/EntityDamageStatusPdu.java
+++ b/src-generated/edu/nps/moves/dis7/EntityDamageStatusPdu.java
@@ -112,7 +112,7 @@ public List<DirectedEnergyDamage> getDamageDescriptionRecords()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -141,7 +141,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -221,7 +221,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -243,15 +243,11 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof EntityDamageStatusPdu))
-        return false;
-
      final EntityDamageStatusPdu rhs = (EntityDamageStatusPdu)obj;
 
      if( ! (damagedEntityID.equals( rhs.damagedEntityID) )) ivarsEqual = false;
      if( ! (padding1 == rhs.padding1)) ivarsEqual = false;
      if( ! (padding2 == rhs.padding2)) ivarsEqual = false;
-     if( ! (numberOfDamageDescription == rhs.numberOfDamageDescription)) ivarsEqual = false;
 
      for(int idx = 0; idx < damageDescriptionRecords.size(); idx++)
         if( ! ( damageDescriptionRecords.get(idx).equals(rhs.damageDescriptionRecords.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/EntityID.java b/src-generated/edu/nps/moves/dis7/EntityID.java
index 093c6348e5..f625842b91 100644
--- a/src-generated/edu/nps/moves/dis7/EntityID.java
+++ b/src-generated/edu/nps/moves/dis7/EntityID.java
@@ -87,7 +87,7 @@ public short getEntityID()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -107,7 +107,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -158,7 +158,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -185,9 +185,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof EntityID))
-        return false;
-
      final EntityID rhs = (EntityID)obj;
 
      if( ! (siteID == rhs.siteID)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/EntityIdentifier.java b/src-generated/edu/nps/moves/dis7/EntityIdentifier.java
index 96f2499c10..df94e05a04 100644
--- a/src-generated/edu/nps/moves/dis7/EntityIdentifier.java
+++ b/src-generated/edu/nps/moves/dis7/EntityIdentifier.java
@@ -70,7 +70,7 @@ public short getEntityNumber()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -89,7 +89,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -135,7 +135,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -162,9 +162,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof EntityIdentifier))
-        return false;
-
      final EntityIdentifier rhs = (EntityIdentifier)obj;
 
      if( ! (simulationAddress.equals( rhs.simulationAddress) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/EntityInformationFamilyPdu.java b/src-generated/edu/nps/moves/dis7/EntityInformationFamilyPdu.java
index a20a6abd5f..8db153994d 100644
--- a/src-generated/edu/nps/moves/dis7/EntityInformationFamilyPdu.java
+++ b/src-generated/edu/nps/moves/dis7/EntityInformationFamilyPdu.java
@@ -38,7 +38,7 @@ public int getMarshalledSize()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -56,7 +56,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -100,7 +100,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -122,9 +122,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof EntityInformationFamilyPdu))
-        return false;
-
      final EntityInformationFamilyPdu rhs = (EntityInformationFamilyPdu)obj;
 
     return ivarsEqual && super.equalsImpl(rhs);
diff --git a/src-generated/edu/nps/moves/dis7/EntityManagementFamilyPdu.java b/src-generated/edu/nps/moves/dis7/EntityManagementFamilyPdu.java
index 4c26ffa592..af5544b26d 100644
--- a/src-generated/edu/nps/moves/dis7/EntityManagementFamilyPdu.java
+++ b/src-generated/edu/nps/moves/dis7/EntityManagementFamilyPdu.java
@@ -38,7 +38,7 @@ public int getMarshalledSize()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -56,7 +56,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -100,7 +100,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -122,9 +122,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof EntityManagementFamilyPdu))
-        return false;
-
      final EntityManagementFamilyPdu rhs = (EntityManagementFamilyPdu)obj;
 
     return ivarsEqual && super.equalsImpl(rhs);
diff --git a/src-generated/edu/nps/moves/dis7/EntityMarking.java b/src-generated/edu/nps/moves/dis7/EntityMarking.java
index 6d62b52ceb..c87a03968d 100644
--- a/src-generated/edu/nps/moves/dis7/EntityMarking.java
+++ b/src-generated/edu/nps/moves/dis7/EntityMarking.java
@@ -70,7 +70,7 @@ public byte[] getCharacters()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -92,7 +92,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -100,8 +100,8 @@ public int unmarshal(DataInputStream dis)
         characterSet = EntityMarkingCharacterSet.unmarshalEnum(dis);
         uPosition += characterSet.getMarshalledSize();
         for(int idx = 0; idx < characters.length; idx++)
-            characters[idx] = dis.readByte(); // mike check
-        uPosition += characters.length; // todo, multiply by prim size mike
+            characters[idx] = dis.readByte();
+        uPosition += (characters.length * 1);
     }
     catch(Exception e)
     { 
@@ -144,7 +144,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -171,9 +171,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof EntityMarking))
-        return false;
-
      final EntityMarking rhs = (EntityMarking)obj;
 
      if( ! (characterSet == rhs.characterSet)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/EntityStatePdu.java b/src-generated/edu/nps/moves/dis7/EntityStatePdu.java
index 05e5637b2d..db0a3c269c 100644
--- a/src-generated/edu/nps/moves/dis7/EntityStatePdu.java
+++ b/src-generated/edu/nps/moves/dis7/EntityStatePdu.java
@@ -249,7 +249,7 @@ public List<VariableParameter> getVariableParameters()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -286,7 +286,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -390,7 +390,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -412,14 +412,10 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof EntityStatePdu))
-        return false;
-
      final EntityStatePdu rhs = (EntityStatePdu)obj;
 
      if( ! (entityID.equals( rhs.entityID) )) ivarsEqual = false;
      if( ! (forceId == rhs.forceId)) ivarsEqual = false;
-     if( ! (numberOfVariableParameters == rhs.numberOfVariableParameters)) ivarsEqual = false;
      if( ! (entityType.equals( rhs.entityType) )) ivarsEqual = false;
      if( ! (alternativeEntityType.equals( rhs.alternativeEntityType) )) ivarsEqual = false;
      if( ! (entityLinearVelocity.equals( rhs.entityLinearVelocity) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/EntityStateUpdatePdu.java b/src-generated/edu/nps/moves/dis7/EntityStateUpdatePdu.java
index 81db47517b..fbd7a03ca0 100644
--- a/src-generated/edu/nps/moves/dis7/EntityStateUpdatePdu.java
+++ b/src-generated/edu/nps/moves/dis7/EntityStateUpdatePdu.java
@@ -165,7 +165,7 @@ public List<VariableParameter> getVariableParameters()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -197,7 +197,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -286,7 +286,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -308,14 +308,10 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof EntityStateUpdatePdu))
-        return false;
-
      final EntityStateUpdatePdu rhs = (EntityStateUpdatePdu)obj;
 
      if( ! (entityID.equals( rhs.entityID) )) ivarsEqual = false;
      if( ! (padding1 == rhs.padding1)) ivarsEqual = false;
-     if( ! (numberOfVariableParameters == rhs.numberOfVariableParameters)) ivarsEqual = false;
      if( ! (entityLinearVelocity.equals( rhs.entityLinearVelocity) )) ivarsEqual = false;
      if( ! (entityLocation.equals( rhs.entityLocation) )) ivarsEqual = false;
      if( ! (entityOrientation.equals( rhs.entityOrientation) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/EntityType.java b/src-generated/edu/nps/moves/dis7/EntityType.java
index 1b937c4c1a..9a6fa3108d 100644
--- a/src-generated/edu/nps/moves/dis7/EntityType.java
+++ b/src-generated/edu/nps/moves/dis7/EntityType.java
@@ -154,7 +154,7 @@ public byte getExtra()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -178,7 +178,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -244,7 +244,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -271,9 +271,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof EntityType))
-        return false;
-
      final EntityType rhs = (EntityType)obj;
 
      if( ! (entityKind == rhs.entityKind)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/EntityTypeRaw.java b/src-generated/edu/nps/moves/dis7/EntityTypeRaw.java
index 8e566a04aa..8aa177e050 100644
--- a/src-generated/edu/nps/moves/dis7/EntityTypeRaw.java
+++ b/src-generated/edu/nps/moves/dis7/EntityTypeRaw.java
@@ -154,7 +154,7 @@ public byte getExtra()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -178,7 +178,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -245,7 +245,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -272,9 +272,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof EntityTypeRaw))
-        return false;
-
      final EntityTypeRaw rhs = (EntityTypeRaw)obj;
 
      if( ! (entityKind == rhs.entityKind)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/EntityTypeVP.java b/src-generated/edu/nps/moves/dis7/EntityTypeVP.java
index 315fca9438..2941c4107e 100644
--- a/src-generated/edu/nps/moves/dis7/EntityTypeVP.java
+++ b/src-generated/edu/nps/moves/dis7/EntityTypeVP.java
@@ -121,7 +121,7 @@ public int getPadding1()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -143,7 +143,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -201,7 +201,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -228,9 +228,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof EntityTypeVP))
-        return false;
-
      final EntityTypeVP rhs = (EntityTypeVP)obj;
 
      if( ! (recordType == rhs.recordType)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/Environment.java b/src-generated/edu/nps/moves/dis7/Environment.java
index 189e3607c1..06579711ec 100644
--- a/src-generated/edu/nps/moves/dis7/Environment.java
+++ b/src-generated/edu/nps/moves/dis7/Environment.java
@@ -124,7 +124,7 @@ public byte[] getGeometry()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -150,7 +150,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -164,8 +164,8 @@ public int unmarshal(DataInputStream dis)
         padding1 = (byte)dis.readUnsignedByte();
         uPosition += 1;
         for(int idx = 0; idx < geometry.length; idx++)
-            geometry[idx] = dis.readByte(); // mike check
-        uPosition += geometry.length; // todo, multiply by prim size mike
+            geometry[idx] = dis.readByte();
+        uPosition += (geometry.length * 1);
         padding2 = new byte[Align.from64bits(uPosition,dis)];
         uPosition += padding2.length;
     }
@@ -218,7 +218,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -245,9 +245,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof Environment))
-        return false;
-
      final Environment rhs = (Environment)obj;
 
      if( ! (environmentType == rhs.environmentType)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/EnvironmentalProcessPdu.java b/src-generated/edu/nps/moves/dis7/EnvironmentalProcessPdu.java
index eaa8012753..081bbbc234 100644
--- a/src-generated/edu/nps/moves/dis7/EnvironmentalProcessPdu.java
+++ b/src-generated/edu/nps/moves/dis7/EnvironmentalProcessPdu.java
@@ -148,7 +148,7 @@ public List<Environment> getEnvironmentRecords()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -179,7 +179,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -265,7 +265,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -287,15 +287,11 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof EnvironmentalProcessPdu))
-        return false;
-
      final EnvironmentalProcessPdu rhs = (EnvironmentalProcessPdu)obj;
 
      if( ! (environementalProcessID.equals( rhs.environementalProcessID) )) ivarsEqual = false;
      if( ! (environmentType.equals( rhs.environmentType) )) ivarsEqual = false;
      if( ! (modelType == rhs.modelType)) ivarsEqual = false;
-     if( ! (numberOfEnvironmentRecords == rhs.numberOfEnvironmentRecords)) ivarsEqual = false;
      if( ! (sequenceNumber == rhs.sequenceNumber)) ivarsEqual = false;
 
      for(int idx = 0; idx < environmentRecords.size(); idx++)
diff --git a/src-generated/edu/nps/moves/dis7/EulerAngles.java b/src-generated/edu/nps/moves/dis7/EulerAngles.java
index 7355392c8e..bfd2c7d04e 100644
--- a/src-generated/edu/nps/moves/dis7/EulerAngles.java
+++ b/src-generated/edu/nps/moves/dis7/EulerAngles.java
@@ -84,7 +84,7 @@ public float getPhi()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -104,7 +104,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -155,7 +155,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -182,9 +182,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof EulerAngles))
-        return false;
-
      final EulerAngles rhs = (EulerAngles)obj;
 
      if( ! (psi == rhs.psi)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/EventIdentifier.java b/src-generated/edu/nps/moves/dis7/EventIdentifier.java
index b60075cdaa..d898580635 100644
--- a/src-generated/edu/nps/moves/dis7/EventIdentifier.java
+++ b/src-generated/edu/nps/moves/dis7/EventIdentifier.java
@@ -69,7 +69,7 @@ public short getEventNumber()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -88,7 +88,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -134,7 +134,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -161,9 +161,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof EventIdentifier))
-        return false;
-
      final EventIdentifier rhs = (EventIdentifier)obj;
 
      if( ! (simulationAddress.equals( rhs.simulationAddress) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/EventIdentifierLiveEntity.java b/src-generated/edu/nps/moves/dis7/EventIdentifierLiveEntity.java
index 759d3c6969..cf24792817 100644
--- a/src-generated/edu/nps/moves/dis7/EventIdentifierLiveEntity.java
+++ b/src-generated/edu/nps/moves/dis7/EventIdentifierLiveEntity.java
@@ -84,7 +84,7 @@ public short getEventNumber()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -104,7 +104,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -155,7 +155,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -182,9 +182,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof EventIdentifierLiveEntity))
-        return false;
-
      final EventIdentifierLiveEntity rhs = (EventIdentifierLiveEntity)obj;
 
      if( ! (siteNumber == rhs.siteNumber)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/EventReportPdu.java b/src-generated/edu/nps/moves/dis7/EventReportPdu.java
index 5f981f8485..848fd2a992 100644
--- a/src-generated/edu/nps/moves/dis7/EventReportPdu.java
+++ b/src-generated/edu/nps/moves/dis7/EventReportPdu.java
@@ -122,7 +122,7 @@ public List<VariableDatum> getVariableDatums()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -158,7 +158,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -260,7 +260,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -282,15 +282,10 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof EventReportPdu))
-        return false;
-
      final EventReportPdu rhs = (EventReportPdu)obj;
 
      if( ! (eventType == rhs.eventType)) ivarsEqual = false;
      if( ! (padding1 == rhs.padding1)) ivarsEqual = false;
-     if( ! (numberOfFixedDatumRecords == rhs.numberOfFixedDatumRecords)) ivarsEqual = false;
-     if( ! (numberOfVariableDatumRecords == rhs.numberOfVariableDatumRecords)) ivarsEqual = false;
 
      for(int idx = 0; idx < fixedDatums.size(); idx++)
         if( ! ( fixedDatums.get(idx).equals(rhs.fixedDatums.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/EventReportRPdu.java b/src-generated/edu/nps/moves/dis7/EventReportRPdu.java
index 8cbe685909..8555175576 100644
--- a/src-generated/edu/nps/moves/dis7/EventReportRPdu.java
+++ b/src-generated/edu/nps/moves/dis7/EventReportRPdu.java
@@ -122,7 +122,7 @@ public List<VariableDatum> getVariableDatumRecords()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -158,7 +158,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -260,7 +260,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -282,15 +282,10 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof EventReportRPdu))
-        return false;
-
      final EventReportRPdu rhs = (EventReportRPdu)obj;
 
      if( ! (eventType == rhs.eventType)) ivarsEqual = false;
      if( ! (pad1 == rhs.pad1)) ivarsEqual = false;
-     if( ! (numberOfFixedDatumRecords == rhs.numberOfFixedDatumRecords)) ivarsEqual = false;
-     if( ! (numberOfVariableDatumRecords == rhs.numberOfVariableDatumRecords)) ivarsEqual = false;
 
      for(int idx = 0; idx < fixedDatumRecords.size(); idx++)
         if( ! ( fixedDatumRecords.get(idx).equals(rhs.fixedDatumRecords.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/Expendable.java b/src-generated/edu/nps/moves/dis7/Expendable.java
index ca08c681d8..b903ae4b37 100644
--- a/src-generated/edu/nps/moves/dis7/Expendable.java
+++ b/src-generated/edu/nps/moves/dis7/Expendable.java
@@ -118,7 +118,7 @@ public byte getPadding()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -140,7 +140,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -198,7 +198,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -225,9 +225,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof Expendable))
-        return false;
-
      final Expendable rhs = (Expendable)obj;
 
      if( ! (expendable.equals( rhs.expendable) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/ExpendableDescriptor.java b/src-generated/edu/nps/moves/dis7/ExpendableDescriptor.java
index fc9699bea7..16a1d34086 100644
--- a/src-generated/edu/nps/moves/dis7/ExpendableDescriptor.java
+++ b/src-generated/edu/nps/moves/dis7/ExpendableDescriptor.java
@@ -70,7 +70,7 @@ public long getPadding()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -89,7 +89,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -135,7 +135,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -162,9 +162,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof ExpendableDescriptor))
-        return false;
-
      final ExpendableDescriptor rhs = (ExpendableDescriptor)obj;
 
      if( ! (expendableType.equals( rhs.expendableType) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/ExpendableReload.java b/src-generated/edu/nps/moves/dis7/ExpendableReload.java
index 9aaf04c772..adb27b8206 100644
--- a/src-generated/edu/nps/moves/dis7/ExpendableReload.java
+++ b/src-generated/edu/nps/moves/dis7/ExpendableReload.java
@@ -133,7 +133,7 @@ public int getMaximumQuantityReloadTime()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -156,7 +156,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -218,7 +218,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -245,9 +245,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof ExpendableReload))
-        return false;
-
      final ExpendableReload rhs = (ExpendableReload)obj;
 
      if( ! (expendable.equals( rhs.expendable) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/ExplosionDescriptor.java b/src-generated/edu/nps/moves/dis7/ExplosionDescriptor.java
index 676fff4386..a83486283d 100644
--- a/src-generated/edu/nps/moves/dis7/ExplosionDescriptor.java
+++ b/src-generated/edu/nps/moves/dis7/ExplosionDescriptor.java
@@ -104,7 +104,7 @@ public float getExplosiveForce()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -125,7 +125,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -179,7 +179,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -206,9 +206,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof ExplosionDescriptor))
-        return false;
-
      final ExplosionDescriptor rhs = (ExplosionDescriptor)obj;
 
      if( ! (explodingObject.equals( rhs.explodingObject) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/FalseTargetsAttribute.java b/src-generated/edu/nps/moves/dis7/FalseTargetsAttribute.java
index 39291fe7f9..6012ac02d2 100644
--- a/src-generated/edu/nps/moves/dis7/FalseTargetsAttribute.java
+++ b/src-generated/edu/nps/moves/dis7/FalseTargetsAttribute.java
@@ -277,7 +277,7 @@ public float getFirstTargetOffset()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -309,7 +309,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -408,7 +408,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -435,9 +435,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof FalseTargetsAttribute))
-        return false;
-
      final FalseTargetsAttribute rhs = (FalseTargetsAttribute)obj;
 
      if( ! (recordType == rhs.recordType)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/FastEntityStatePdu.java b/src-generated/edu/nps/moves/dis7/FastEntityStatePdu.java
index 4535563ca1..829d0bf8a4 100644
--- a/src-generated/edu/nps/moves/dis7/FastEntityStatePdu.java
+++ b/src-generated/edu/nps/moves/dis7/FastEntityStatePdu.java
@@ -704,7 +704,7 @@ public List<VariableParameter> getVariableParameters()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -774,7 +774,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -842,8 +842,8 @@ public int unmarshal(DataInputStream dis)
         deadReckoningAlgorithm = (byte)dis.readUnsignedByte();
         uPosition += 1;
         for(int idx = 0; idx < otherParameters.length; idx++)
-            otherParameters[idx] = dis.readByte(); // mike check
-        uPosition += otherParameters.length; // todo, multiply by prim size mike
+            otherParameters[idx] = dis.readByte();
+        uPosition += (otherParameters.length * 1);
         xAcceleration = dis.readFloat();
         uPosition += 4;
         yAcceleration = dis.readFloat();
@@ -857,8 +857,8 @@ public int unmarshal(DataInputStream dis)
         zAngularVelocity = dis.readFloat();
         uPosition += 4;
         for(int idx = 0; idx < marking.length; idx++)
-            marking[idx] = dis.readByte(); // mike check
-        uPosition += marking.length; // todo, multiply by prim size mike
+            marking[idx] = dis.readByte();
+        uPosition += (marking.length * 1);
         capabilities = (short)dis.readUnsignedShort();
         uPosition += 2;
         for(int idx = 0; idx < numberOfVariableParameters; idx++)
@@ -1005,7 +1005,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -1027,16 +1027,12 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof FastEntityStatePdu))
-        return false;
-
      final FastEntityStatePdu rhs = (FastEntityStatePdu)obj;
 
      if( ! (site == rhs.site)) ivarsEqual = false;
      if( ! (application == rhs.application)) ivarsEqual = false;
      if( ! (entity == rhs.entity)) ivarsEqual = false;
      if( ! (forceId == rhs.forceId)) ivarsEqual = false;
-     if( ! (numberOfVariableParameters == rhs.numberOfVariableParameters)) ivarsEqual = false;
      if( ! (entityKind == rhs.entityKind)) ivarsEqual = false;
      if( ! (domain == rhs.domain)) ivarsEqual = false;
      if( ! (country == rhs.country)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/FirePdu.java b/src-generated/edu/nps/moves/dis7/FirePdu.java
index 26df2ca604..7095f39e2e 100644
--- a/src-generated/edu/nps/moves/dis7/FirePdu.java
+++ b/src-generated/edu/nps/moves/dis7/FirePdu.java
@@ -191,7 +191,7 @@ public float getRange()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -218,7 +218,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -291,7 +291,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -313,9 +313,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof FirePdu))
-        return false;
-
      final FirePdu rhs = (FirePdu)obj;
 
      if( ! (firingEntityID.equals( rhs.firingEntityID) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/FixedDatum.java b/src-generated/edu/nps/moves/dis7/FixedDatum.java
index bfacdb3297..6bf6d8922a 100644
--- a/src-generated/edu/nps/moves/dis7/FixedDatum.java
+++ b/src-generated/edu/nps/moves/dis7/FixedDatum.java
@@ -16,7 +16,7 @@ import edu.nps.moves.dis7.enumerations.*;
 public class FixedDatum extends Object implements Serializable
 {
    /** ID of the fixed datum, an enumeration uid 66 */
-   protected VariableRecordTypes fixedDatumID = VariableRecordTypes.values()[0];
+   protected VariableRecordType fixedDatumID = VariableRecordType.values()[0];
 
    /** Value for the fixed datum */
    protected int  fixedDatumValue;
@@ -40,14 +40,14 @@ public int getMarshalledSize()
 
 
 /** Setter for {@link FixedDatum#fixedDatumID}*/
-public FixedDatum setFixedDatumID(VariableRecordTypes pFixedDatumID)
+public FixedDatum setFixedDatumID(VariableRecordType pFixedDatumID)
 {
     fixedDatumID = pFixedDatumID;
     return this;
 }
 
 /** Getter for {@link FixedDatum#fixedDatumID}*/
-public VariableRecordTypes getFixedDatumID()
+public VariableRecordType getFixedDatumID()
 {
     return fixedDatumID; 
 }
@@ -70,7 +70,7 @@ public int getFixedDatumValue()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -89,12 +89,12 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
     {
-        fixedDatumID = VariableRecordTypes.unmarshalEnum(dis);
+        fixedDatumID = VariableRecordType.unmarshalEnum(dis);
         uPosition += fixedDatumID.getMarshalledSize();
         fixedDatumValue = dis.readInt();
         uPosition += 4;
@@ -130,13 +130,13 @@ public void marshal(java.nio.ByteBuffer buff) throws Exception
  */
 public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 {
-    fixedDatumID = VariableRecordTypes.unmarshalEnum(buff);
+    fixedDatumID = VariableRecordType.unmarshalEnum(buff);
     fixedDatumValue = buff.getInt();
     return getMarshalledSize();
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -163,9 +163,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof FixedDatum))
-        return false;
-
      final FixedDatum rhs = (FixedDatum)obj;
 
      if( ! (fixedDatumID == rhs.fixedDatumID)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/FundamentalOperationalData.java b/src-generated/edu/nps/moves/dis7/FundamentalOperationalData.java
index b31e126a69..eab39ecace 100644
--- a/src-generated/edu/nps/moves/dis7/FundamentalOperationalData.java
+++ b/src-generated/edu/nps/moves/dis7/FundamentalOperationalData.java
@@ -206,7 +206,7 @@ public short getParameter6()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -233,7 +233,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -312,7 +312,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -339,9 +339,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof FundamentalOperationalData))
-        return false;
-
      final FundamentalOperationalData rhs = (FundamentalOperationalData)obj;
 
      if( ! (systemStatus == rhs.systemStatus)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/GridAxisDescriptor.java b/src-generated/edu/nps/moves/dis7/GridAxisDescriptor.java
index 1b968a1438..5a79500723 100644
--- a/src-generated/edu/nps/moves/dis7/GridAxisDescriptor.java
+++ b/src-generated/edu/nps/moves/dis7/GridAxisDescriptor.java
@@ -120,7 +120,7 @@ public GridAxisDescriptorAxisType getAxisType()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -142,7 +142,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -201,7 +201,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -228,9 +228,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof GridAxisDescriptor))
-        return false;
-
      final GridAxisDescriptor rhs = (GridAxisDescriptor)obj;
 
      if( ! (domainInitialXi == rhs.domainInitialXi)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/GridAxisDescriptorFixed.java b/src-generated/edu/nps/moves/dis7/GridAxisDescriptorFixed.java
index 13e3e55628..cba05e47ff 100644
--- a/src-generated/edu/nps/moves/dis7/GridAxisDescriptorFixed.java
+++ b/src-generated/edu/nps/moves/dis7/GridAxisDescriptorFixed.java
@@ -71,7 +71,7 @@ public short getInitialIndex()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -91,7 +91,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -143,7 +143,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -165,9 +165,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof GridAxisDescriptorFixed))
-        return false;
-
      final GridAxisDescriptorFixed rhs = (GridAxisDescriptorFixed)obj;
 
      if( ! (numberOfPointsOnXiAxis == rhs.numberOfPointsOnXiAxis)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/GridAxisDescriptorVariable.java b/src-generated/edu/nps/moves/dis7/GridAxisDescriptorVariable.java
index 5ad2c2ecfc..97aa9d2580 100644
--- a/src-generated/edu/nps/moves/dis7/GridAxisDescriptorVariable.java
+++ b/src-generated/edu/nps/moves/dis7/GridAxisDescriptorVariable.java
@@ -125,7 +125,7 @@ public short[] getXiValues()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -152,7 +152,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -168,8 +168,8 @@ public int unmarshal(DataInputStream dis)
         coordinateOffsetXi = dis.readDouble();
         uPosition += 4;
         for(int idx = 0; idx < xiValues.length; idx++)
-            xiValues[idx] = dis.readShort(); // mike check
-        uPosition += xiValues.length; // todo, multiply by prim size mike
+            xiValues[idx] = dis.readShort();
+        uPosition += (xiValues.length * 2);
         padding = new byte[Align.from64bits(uPosition,dis)];
         uPosition += padding.length;
     }
@@ -225,7 +225,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -247,9 +247,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof GridAxisDescriptorVariable))
-        return false;
-
      final GridAxisDescriptorVariable rhs = (GridAxisDescriptorVariable)obj;
 
      if( ! (numberOfPointsOnXiAxis == rhs.numberOfPointsOnXiAxis)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/GridData.java b/src-generated/edu/nps/moves/dis7/GridData.java
index 1a80b274bf..a219dbcf21 100644
--- a/src-generated/edu/nps/moves/dis7/GridData.java
+++ b/src-generated/edu/nps/moves/dis7/GridData.java
@@ -70,7 +70,7 @@ public GriddedDataDataRepresentation getDataRepresentation()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -89,7 +89,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -136,7 +136,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -163,9 +163,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof GridData))
-        return false;
-
      final GridData rhs = (GridData)obj;
 
      if( ! (sampleType == rhs.sampleType)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/GridDataType0.java b/src-generated/edu/nps/moves/dis7/GridDataType0.java
index defc84d3b5..baeb3fa3c1 100644
--- a/src-generated/edu/nps/moves/dis7/GridDataType0.java
+++ b/src-generated/edu/nps/moves/dis7/GridDataType0.java
@@ -59,12 +59,12 @@ public byte[] getDataValues()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
     {
-       dos.writeShort( (short)numberOfBytes);
+       dos.writeShort( (short)dataValues.length);
 
        for(int idx = 0; idx < dataValues.length; idx++)
            dos.writeByte(dataValues[idx]);
@@ -83,7 +83,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -93,8 +93,8 @@ public int unmarshal(DataInputStream dis)
         numberOfBytes = (short)dis.readUnsignedShort();
         uPosition += 2;
         for(int idx = 0; idx < dataValues.length; idx++)
-            dataValues[idx] = dis.readByte(); // mike check
-        uPosition += dataValues.length; // todo, multiply by prim size mike
+            dataValues[idx] = dis.readByte();
+        uPosition += (dataValues.length * 1);
         padding = new byte[Align.from16bits(uPosition,dis)];
         uPosition += padding.length;
     }
@@ -116,7 +116,7 @@ public int unmarshal(DataInputStream dis)
 public void marshal(java.nio.ByteBuffer buff) throws Exception
 {
    super.marshal(buff);
-   buff.putShort( (short)numberOfBytes);
+   buff.putShort( (short)dataValues.length);
 
    for(int idx = 0; idx < dataValues.length; idx++)
        buff.put((byte)dataValues[idx]);
@@ -144,7 +144,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -166,12 +166,8 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof GridDataType0))
-        return false;
-
      final GridDataType0 rhs = (GridDataType0)obj;
 
-     if( ! (numberOfBytes == rhs.numberOfBytes)) ivarsEqual = false;
 
      for(int idx = 0; idx < 0; idx++)
      {
diff --git a/src-generated/edu/nps/moves/dis7/GridDataType1.java b/src-generated/edu/nps/moves/dis7/GridDataType1.java
index 08d6ec8506..b3cad1ce1b 100644
--- a/src-generated/edu/nps/moves/dis7/GridDataType1.java
+++ b/src-generated/edu/nps/moves/dis7/GridDataType1.java
@@ -91,14 +91,14 @@ public short[] getDataValues()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
     {
        dos.writeFloat( (float)fieldScale);
        dos.writeFloat( (float)fieldOffset);
-       dos.writeShort( (short)numberOfValues);
+       dos.writeShort( (short)dataValues.length);
 
        for(int idx = 0; idx < dataValues.length; idx++)
            dos.writeShort(dataValues[idx]);
@@ -117,7 +117,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -131,8 +131,8 @@ public int unmarshal(DataInputStream dis)
         numberOfValues = (short)dis.readUnsignedShort();
         uPosition += 2;
         for(int idx = 0; idx < dataValues.length; idx++)
-            dataValues[idx] = dis.readShort(); // mike check
-        uPosition += dataValues.length; // todo, multiply by prim size mike
+            dataValues[idx] = dis.readShort();
+        uPosition += (dataValues.length * 2);
         padding = new byte[Align.from32bits(uPosition,dis)];
         uPosition += padding.length;
     }
@@ -156,7 +156,7 @@ public void marshal(java.nio.ByteBuffer buff) throws Exception
    super.marshal(buff);
    buff.putFloat( (float)fieldScale);
    buff.putFloat( (float)fieldOffset);
-   buff.putShort( (short)numberOfValues);
+   buff.putShort( (short)dataValues.length);
 
    for(int idx = 0; idx < dataValues.length; idx++)
        buff.putShort((short)dataValues[idx]);
@@ -186,7 +186,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -208,14 +208,10 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof GridDataType1))
-        return false;
-
      final GridDataType1 rhs = (GridDataType1)obj;
 
      if( ! (fieldScale == rhs.fieldScale)) ivarsEqual = false;
      if( ! (fieldOffset == rhs.fieldOffset)) ivarsEqual = false;
-     if( ! (numberOfValues == rhs.numberOfValues)) ivarsEqual = false;
 
      for(int idx = 0; idx < 0; idx++)
      {
diff --git a/src-generated/edu/nps/moves/dis7/GridDataType2.java b/src-generated/edu/nps/moves/dis7/GridDataType2.java
index 031e5dbce8..3ee6244a2e 100644
--- a/src-generated/edu/nps/moves/dis7/GridDataType2.java
+++ b/src-generated/edu/nps/moves/dis7/GridDataType2.java
@@ -72,12 +72,12 @@ public float[] getDataValues()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
     {
-       dos.writeShort( (short)numberOfValues);
+       dos.writeShort( (short)dataValues.length);
        dos.writeShort( (short)padding);
 
        for(int idx = 0; idx < dataValues.length; idx++)
@@ -96,7 +96,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -108,8 +108,8 @@ public int unmarshal(DataInputStream dis)
         padding = (short)dis.readUnsignedShort();
         uPosition += 2;
         for(int idx = 0; idx < dataValues.length; idx++)
-            dataValues[idx] = dis.readFloat(); // mike check
-        uPosition += dataValues.length; // todo, multiply by prim size mike
+            dataValues[idx] = dis.readFloat();
+        uPosition += (dataValues.length * 4);
     }
     catch(Exception e)
     { 
@@ -129,7 +129,7 @@ public int unmarshal(DataInputStream dis)
 public void marshal(java.nio.ByteBuffer buff) throws Exception
 {
    super.marshal(buff);
-   buff.putShort( (short)numberOfValues);
+   buff.putShort( (short)dataValues.length);
    buff.putShort( (short)padding);
 
    for(int idx = 0; idx < dataValues.length; idx++)
@@ -157,7 +157,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -179,12 +179,8 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof GridDataType2))
-        return false;
-
      final GridDataType2 rhs = (GridDataType2)obj;
 
-     if( ! (numberOfValues == rhs.numberOfValues)) ivarsEqual = false;
      if( ! (padding == rhs.padding)) ivarsEqual = false;
 
      for(int idx = 0; idx < 0; idx++)
diff --git a/src-generated/edu/nps/moves/dis7/GriddedDataPdu.java b/src-generated/edu/nps/moves/dis7/GriddedDataPdu.java
index 91a98ff5e6..da18ac21aa 100644
--- a/src-generated/edu/nps/moves/dis7/GriddedDataPdu.java
+++ b/src-generated/edu/nps/moves/dis7/GriddedDataPdu.java
@@ -305,7 +305,7 @@ public List<GridData> getGridDataRecords()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -351,7 +351,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -489,7 +489,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -511,9 +511,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof GriddedDataPdu))
-        return false;
-
      final GriddedDataPdu rhs = (GriddedDataPdu)obj;
 
      if( ! (environmentalSimulationApplicationID.equals( rhs.environmentalSimulationApplicationID) )) ivarsEqual = false;
@@ -521,7 +518,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
      if( ! (pduNumber == rhs.pduNumber)) ivarsEqual = false;
      if( ! (pduTotal == rhs.pduTotal)) ivarsEqual = false;
      if( ! (coordinateSystem == rhs.coordinateSystem)) ivarsEqual = false;
-     if( ! (numberOfGridAxes == rhs.numberOfGridAxes)) ivarsEqual = false;
      if( ! (constantGrid == rhs.constantGrid)) ivarsEqual = false;
      if( ! (environmentType.equals( rhs.environmentType) )) ivarsEqual = false;
      if( ! (orientation.equals( rhs.orientation) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/GroupID.java b/src-generated/edu/nps/moves/dis7/GroupID.java
index ab6de73070..ba05723a77 100644
--- a/src-generated/edu/nps/moves/dis7/GroupID.java
+++ b/src-generated/edu/nps/moves/dis7/GroupID.java
@@ -70,7 +70,7 @@ public short getGroupNumber()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -89,7 +89,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -135,7 +135,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -162,9 +162,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof GroupID))
-        return false;
-
      final GroupID rhs = (GroupID)obj;
 
      if( ! (simulationAddress.equals( rhs.simulationAddress) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/IFFData.java b/src-generated/edu/nps/moves/dis7/IFFData.java
index 3dbaa491ff..45cc407de0 100644
--- a/src-generated/edu/nps/moves/dis7/IFFData.java
+++ b/src-generated/edu/nps/moves/dis7/IFFData.java
@@ -16,7 +16,7 @@ import edu.nps.moves.dis7.enumerations.*;
 public class IFFData extends Object implements Serializable
 {
    /** enumeration for type of record uid 66 */
-   protected VariableRecordTypes recordType = VariableRecordTypes.values()[0];
+   protected VariableRecordType recordType = VariableRecordType.values()[0];
 
    /** length of record, including padding */
    protected short  recordLength;
@@ -46,14 +46,14 @@ public int getMarshalledSize()
 
 
 /** Setter for {@link IFFData#recordType}*/
-public IFFData setRecordType(VariableRecordTypes pRecordType)
+public IFFData setRecordType(VariableRecordType pRecordType)
 {
     recordType = pRecordType;
     return this;
 }
 
 /** Getter for {@link IFFData#recordType}*/
-public VariableRecordTypes getRecordType()
+public VariableRecordType getRecordType()
 {
     return recordType; 
 }
@@ -89,7 +89,7 @@ public byte[] getRecordSpecificFields()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -113,18 +113,18 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
     {
-        recordType = VariableRecordTypes.unmarshalEnum(dis);
+        recordType = VariableRecordType.unmarshalEnum(dis);
         uPosition += recordType.getMarshalledSize();
         recordLength = (short)dis.readUnsignedShort();
         uPosition += 2;
         for(int idx = 0; idx < recordSpecificFields.length; idx++)
-            recordSpecificFields[idx] = dis.readByte(); // mike check
-        uPosition += recordSpecificFields.length; // todo, multiply by prim size mike
+            recordSpecificFields[idx] = dis.readByte();
+        uPosition += (recordSpecificFields.length * 1);
         padding = new byte[Align.from32bits(uPosition,dis)];
         uPosition += padding.length;
     }
@@ -164,7 +164,7 @@ public void marshal(java.nio.ByteBuffer buff) throws Exception
  */
 public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 {
-    recordType = VariableRecordTypes.unmarshalEnum(buff);
+    recordType = VariableRecordType.unmarshalEnum(buff);
     recordLength = (short)(buff.getShort() & 0xFFFF);
     for(int idx = 0; idx < recordSpecificFields.length; idx++)
         recordSpecificFields[idx] = buff.get();
@@ -173,7 +173,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -200,9 +200,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof IFFData))
-        return false;
-
      final IFFData rhs = (IFFData)obj;
 
      if( ! (recordType == rhs.recordType)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/IFFFundamentalParameterData.java b/src-generated/edu/nps/moves/dis7/IFFFundamentalParameterData.java
index 7613e14bf2..4a306b925b 100644
--- a/src-generated/edu/nps/moves/dis7/IFFFundamentalParameterData.java
+++ b/src-generated/edu/nps/moves/dis7/IFFFundamentalParameterData.java
@@ -155,7 +155,7 @@ public byte[] getSystemSpecificData()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -182,7 +182,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -200,8 +200,8 @@ public int unmarshal(DataInputStream dis)
         applicableModes = IFFApplicableModes.unmarshalEnum(dis);
         uPosition += applicableModes.getMarshalledSize();
         for(int idx = 0; idx < systemSpecificData.length; idx++)
-            systemSpecificData[idx] = dis.readByte(); // mike check
-        uPosition += systemSpecificData.length; // todo, multiply by prim size mike
+            systemSpecificData[idx] = dis.readByte();
+        uPosition += (systemSpecificData.length * 1);
     }
     catch(Exception e)
     { 
@@ -254,7 +254,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -281,9 +281,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof IFFFundamentalParameterData))
-        return false;
-
      final IFFFundamentalParameterData rhs = (IFFFundamentalParameterData)obj;
 
      if( ! (erp == rhs.erp)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/IFFLayer2Pdu.java b/src-generated/edu/nps/moves/dis7/IFFLayer2Pdu.java
index 9acaec6912..1565e6bf5d 100644
--- a/src-generated/edu/nps/moves/dis7/IFFLayer2Pdu.java
+++ b/src-generated/edu/nps/moves/dis7/IFFLayer2Pdu.java
@@ -127,7 +127,7 @@ public List<IFFFundamentalParameterData> getFundamentalIFFParameters()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -157,7 +157,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -240,7 +240,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -262,16 +262,12 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof IFFLayer2Pdu))
-        return false;
-
      final IFFLayer2Pdu rhs = (IFFLayer2Pdu)obj;
 
      if( ! (layerHeader.equals( rhs.layerHeader) )) ivarsEqual = false;
      if( ! (beamData.equals( rhs.beamData) )) ivarsEqual = false;
      if( ! (secondaryOpParameter1 == rhs.secondaryOpParameter1)) ivarsEqual = false;
      if( ! (secondaryOpParameter2 == rhs.secondaryOpParameter2)) ivarsEqual = false;
-     if( ! (numberOfParameters == rhs.numberOfParameters)) ivarsEqual = false;
 
      for(int idx = 0; idx < fundamentalIFFParameters.size(); idx++)
         if( ! ( fundamentalIFFParameters.get(idx).equals(rhs.fundamentalIFFParameters.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/IFFPdu.java b/src-generated/edu/nps/moves/dis7/IFFPdu.java
index dbe8dfac80..400f3ff31b 100644
--- a/src-generated/edu/nps/moves/dis7/IFFPdu.java
+++ b/src-generated/edu/nps/moves/dis7/IFFPdu.java
@@ -154,7 +154,7 @@ public FundamentalOperationalData getFundamentalParameters()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -179,7 +179,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -246,7 +246,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -268,9 +268,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof IFFPdu))
-        return false;
-
      final IFFPdu rhs = (IFFPdu)obj;
 
      if( ! (emittingEntityId.equals( rhs.emittingEntityId) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/IOCommsNodeRecord.java b/src-generated/edu/nps/moves/dis7/IOCommsNodeRecord.java
index aae478565e..937bb97bb2 100644
--- a/src-generated/edu/nps/moves/dis7/IOCommsNodeRecord.java
+++ b/src-generated/edu/nps/moves/dis7/IOCommsNodeRecord.java
@@ -16,7 +16,7 @@ import edu.nps.moves.dis7.enumerations.*;
 public class IOCommsNodeRecord extends IORecord implements Serializable
 {
    /**  uid 66 */
-   protected VariableRecordTypes recordType = VariableRecordTypes.IO_COMMUNICATIONS_NODE;
+   protected VariableRecordType recordType = VariableRecordType.IO_COMMUNICATIONS_NODE;
 
    protected short  recordLength;
 
@@ -50,14 +50,14 @@ public int getMarshalledSize()
 
 
 /** Setter for {@link IOCommsNodeRecord#recordType}*/
-public IOCommsNodeRecord setRecordType(VariableRecordTypes pRecordType)
+public IOCommsNodeRecord setRecordType(VariableRecordType pRecordType)
 {
     recordType = pRecordType;
     return this;
 }
 
 /** Getter for {@link IOCommsNodeRecord#recordType}*/
-public VariableRecordTypes getRecordType()
+public VariableRecordType getRecordType()
 {
     return recordType; 
 }
@@ -119,7 +119,7 @@ public CommunicationsNodeID getCommsNodeId()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -142,14 +142,14 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
 
     try 
     {
-        recordType = VariableRecordTypes.unmarshalEnum(dis);
+        recordType = VariableRecordType.unmarshalEnum(dis);
         uPosition += recordType.getMarshalledSize();
         recordLength = (short)dis.readUnsignedShort();
         uPosition += 2;
@@ -196,7 +196,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 {
     super.unmarshal(buff);
 
-    recordType = VariableRecordTypes.unmarshalEnum(buff);
+    recordType = VariableRecordType.unmarshalEnum(buff);
     recordLength = (short)(buff.getShort() & 0xFFFF);
     commsNodeType = IOCommsNodeRecordCommsNodeType.unmarshalEnum(buff);
     padding = (byte)(buff.get() & 0xFF);
@@ -205,7 +205,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -227,9 +227,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof IOCommsNodeRecord))
-        return false;
-
      final IOCommsNodeRecord rhs = (IOCommsNodeRecord)obj;
 
      if( ! (recordType == rhs.recordType)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/IOEffectRecord.java b/src-generated/edu/nps/moves/dis7/IOEffectRecord.java
index 4dc128cb48..45bfd171e7 100644
--- a/src-generated/edu/nps/moves/dis7/IOEffectRecord.java
+++ b/src-generated/edu/nps/moves/dis7/IOEffectRecord.java
@@ -16,7 +16,7 @@ import edu.nps.moves.dis7.enumerations.*;
 public class IOEffectRecord extends IORecord implements Serializable
 {
    /**  uid 66 */
-   protected VariableRecordTypes recordType = VariableRecordTypes.IO_EFFECT;
+   protected VariableRecordType recordType = VariableRecordType.IO_EFFECT;
 
    protected short  recordLength;
 
@@ -65,14 +65,14 @@ public int getMarshalledSize()
 
 
 /** Setter for {@link IOEffectRecord#recordType}*/
-public IOEffectRecord setRecordType(VariableRecordTypes pRecordType)
+public IOEffectRecord setRecordType(VariableRecordType pRecordType)
 {
     recordType = pRecordType;
     return this;
 }
 
 /** Getter for {@link IOEffectRecord#recordType}*/
-public VariableRecordTypes getRecordType()
+public VariableRecordType getRecordType()
 {
     return recordType; 
 }
@@ -186,7 +186,7 @@ public short getPadding()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -213,14 +213,14 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
 
     try 
     {
-        recordType = VariableRecordTypes.unmarshalEnum(dis);
+        recordType = VariableRecordType.unmarshalEnum(dis);
         uPosition += recordType.getMarshalledSize();
         recordLength = (short)dis.readUnsignedShort();
         uPosition += 2;
@@ -280,7 +280,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 {
     super.unmarshal(buff);
 
-    recordType = VariableRecordTypes.unmarshalEnum(buff);
+    recordType = VariableRecordType.unmarshalEnum(buff);
     recordLength = (short)(buff.getShort() & 0xFFFF);
     ioStatus = IOEffectsRecordIOStatus.unmarshalEnum(buff);
     ioLinkType = IOEffectsRecordIOLinkType.unmarshalEnum(buff);
@@ -293,7 +293,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -315,9 +315,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof IOEffectRecord))
-        return false;
-
      final IOEffectRecord rhs = (IOEffectRecord)obj;
 
      if( ! (recordType == rhs.recordType)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/IORecord.java b/src-generated/edu/nps/moves/dis7/IORecord.java
index 71bef05002..e13038a103 100644
--- a/src-generated/edu/nps/moves/dis7/IORecord.java
+++ b/src-generated/edu/nps/moves/dis7/IORecord.java
@@ -36,7 +36,7 @@ public int getMarshalledSize()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -53,7 +53,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -92,7 +92,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -119,9 +119,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof IORecord))
-        return false;
-
      final IORecord rhs = (IORecord)obj;
 
     return ivarsEqual;
diff --git a/src-generated/edu/nps/moves/dis7/IffDataSpecification.java b/src-generated/edu/nps/moves/dis7/IffDataSpecification.java
index 565ab7709d..691389599c 100644
--- a/src-generated/edu/nps/moves/dis7/IffDataSpecification.java
+++ b/src-generated/edu/nps/moves/dis7/IffDataSpecification.java
@@ -61,7 +61,7 @@ public List<IFFData> getIffDataRecords()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -86,7 +86,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -150,7 +150,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -177,12 +177,8 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof IffDataSpecification))
-        return false;
-
      final IffDataSpecification rhs = (IffDataSpecification)obj;
 
-     if( ! (numberOfIffDataRecords == rhs.numberOfIffDataRecords)) ivarsEqual = false;
 
      for(int idx = 0; idx < iffDataRecords.size(); idx++)
         if( ! ( iffDataRecords.get(idx).equals(rhs.iffDataRecords.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/InformationOperationsActionPdu.java b/src-generated/edu/nps/moves/dis7/InformationOperationsActionPdu.java
index 5c6344208a..9e4d9bf4f4 100644
--- a/src-generated/edu/nps/moves/dis7/InformationOperationsActionPdu.java
+++ b/src-generated/edu/nps/moves/dis7/InformationOperationsActionPdu.java
@@ -227,7 +227,7 @@ public List<IORecord> getIoRecords()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -263,7 +263,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -369,7 +369,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -391,9 +391,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof InformationOperationsActionPdu))
-        return false;
-
      final InformationOperationsActionPdu rhs = (InformationOperationsActionPdu)obj;
 
      if( ! (receivingSimID.equals( rhs.receivingSimID) )) ivarsEqual = false;
@@ -406,7 +403,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
      if( ! (ioAttackerID.equals( rhs.ioAttackerID) )) ivarsEqual = false;
      if( ! (ioPrimaryTargetID.equals( rhs.ioPrimaryTargetID) )) ivarsEqual = false;
      if( ! (padding2 == rhs.padding2)) ivarsEqual = false;
-     if( ! (numberOfIORecords == rhs.numberOfIORecords)) ivarsEqual = false;
 
      for(int idx = 0; idx < ioRecords.size(); idx++)
         if( ! ( ioRecords.get(idx).equals(rhs.ioRecords.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/InformationOperationsFamilyPdu.java b/src-generated/edu/nps/moves/dis7/InformationOperationsFamilyPdu.java
index a64903e22e..5d9f612b70 100644
--- a/src-generated/edu/nps/moves/dis7/InformationOperationsFamilyPdu.java
+++ b/src-generated/edu/nps/moves/dis7/InformationOperationsFamilyPdu.java
@@ -54,7 +54,7 @@ public EntityID getOriginatingSimID()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -73,7 +73,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -120,7 +120,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -142,9 +142,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof InformationOperationsFamilyPdu))
-        return false;
-
      final InformationOperationsFamilyPdu rhs = (InformationOperationsFamilyPdu)obj;
 
      if( ! (originatingSimID.equals( rhs.originatingSimID) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/InformationOperationsReportPdu.java b/src-generated/edu/nps/moves/dis7/InformationOperationsReportPdu.java
index e2b2c03b22..487f6c6c8f 100644
--- a/src-generated/edu/nps/moves/dis7/InformationOperationsReportPdu.java
+++ b/src-generated/edu/nps/moves/dis7/InformationOperationsReportPdu.java
@@ -175,7 +175,7 @@ public List<IORecord> getIoRecords()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -208,7 +208,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -303,7 +303,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -325,9 +325,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof InformationOperationsReportPdu))
-        return false;
-
      final InformationOperationsReportPdu rhs = (InformationOperationsReportPdu)obj;
 
      if( ! (ioSimSource == rhs.ioSimSource)) ivarsEqual = false;
@@ -337,7 +334,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
      if( ! (ioPrimaryTargetID.equals( rhs.ioPrimaryTargetID) )) ivarsEqual = false;
      if( ! (padding2 == rhs.padding2)) ivarsEqual = false;
      if( ! (padding3 == rhs.padding3)) ivarsEqual = false;
-     if( ! (numberOfIORecords == rhs.numberOfIORecords)) ivarsEqual = false;
 
      for(int idx = 0; idx < ioRecords.size(); idx++)
         if( ! ( ioRecords.get(idx).equals(rhs.ioRecords.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/IntercomCommunicationsParameters.java b/src-generated/edu/nps/moves/dis7/IntercomCommunicationsParameters.java
index 79dde2d1c8..3f73fc1c19 100644
--- a/src-generated/edu/nps/moves/dis7/IntercomCommunicationsParameters.java
+++ b/src-generated/edu/nps/moves/dis7/IntercomCommunicationsParameters.java
@@ -90,7 +90,7 @@ public byte[] getRecordSpecificField()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -114,7 +114,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -124,8 +124,8 @@ public int unmarshal(DataInputStream dis)
         recordLength = (short)dis.readUnsignedShort();
         uPosition += 2;
         for(int idx = 0; idx < recordSpecificField.length; idx++)
-            recordSpecificField[idx] = dis.readByte(); // mike check
-        uPosition += recordSpecificField.length; // todo, multiply by prim size mike
+            recordSpecificField[idx] = dis.readByte();
+        uPosition += (recordSpecificField.length * 1);
         padding = new byte[Align.from32bits(uPosition,dis)];
         uPosition += padding.length;
     }
@@ -174,7 +174,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -201,9 +201,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof IntercomCommunicationsParameters))
-        return false;
-
      final IntercomCommunicationsParameters rhs = (IntercomCommunicationsParameters)obj;
 
      if( ! (recordType == rhs.recordType)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/IntercomControlPdu.java b/src-generated/edu/nps/moves/dis7/IntercomControlPdu.java
index 562556af8e..0e73300096 100644
--- a/src-generated/edu/nps/moves/dis7/IntercomControlPdu.java
+++ b/src-generated/edu/nps/moves/dis7/IntercomControlPdu.java
@@ -248,7 +248,7 @@ public List<IntercomCommunicationsParameters> getIntercomParameters()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -285,7 +285,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -396,7 +396,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -418,9 +418,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof IntercomControlPdu))
-        return false;
-
      final IntercomControlPdu rhs = (IntercomControlPdu)obj;
 
      if( ! (controlType == rhs.controlType)) ivarsEqual = false;
@@ -434,7 +431,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
      if( ! (masterIntercomReferenceID.equals( rhs.masterIntercomReferenceID) )) ivarsEqual = false;
      if( ! (masterIntercomNumber == rhs.masterIntercomNumber)) ivarsEqual = false;
      if( ! (masterChannelID == rhs.masterChannelID)) ivarsEqual = false;
-     if( ! (intercomParametersLength == rhs.intercomParametersLength)) ivarsEqual = false;
 
      for(int idx = 0; idx < intercomParameters.size(); idx++)
         if( ! ( intercomParameters.get(idx).equals(rhs.intercomParameters.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/IntercomIdentifier.java b/src-generated/edu/nps/moves/dis7/IntercomIdentifier.java
index 960ab62097..7e257a4de7 100644
--- a/src-generated/edu/nps/moves/dis7/IntercomIdentifier.java
+++ b/src-generated/edu/nps/moves/dis7/IntercomIdentifier.java
@@ -100,7 +100,7 @@ public short getIntercomNumber()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -121,7 +121,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -176,7 +176,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -203,9 +203,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof IntercomIdentifier))
-        return false;
-
      final IntercomIdentifier rhs = (IntercomIdentifier)obj;
 
      if( ! (siteNumber == rhs.siteNumber)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/IntercomReferenceID.java b/src-generated/edu/nps/moves/dis7/IntercomReferenceID.java
index fb79a5dea1..b5ab456093 100644
--- a/src-generated/edu/nps/moves/dis7/IntercomReferenceID.java
+++ b/src-generated/edu/nps/moves/dis7/IntercomReferenceID.java
@@ -83,7 +83,7 @@ public short getReferenceNumber()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -103,7 +103,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -154,7 +154,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -181,9 +181,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof IntercomReferenceID))
-        return false;
-
      final IntercomReferenceID rhs = (IntercomReferenceID)obj;
 
      if( ! (siteNumber == rhs.siteNumber)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/IntercomSignalPdu.java b/src-generated/edu/nps/moves/dis7/IntercomSignalPdu.java
index c56a0f9bee..bdf11b2736 100644
--- a/src-generated/edu/nps/moves/dis7/IntercomSignalPdu.java
+++ b/src-generated/edu/nps/moves/dis7/IntercomSignalPdu.java
@@ -2,7 +2,6 @@
  * Copyright (c) 2008-2019, MOVES Institute, Naval Postgraduate School. All rights reserved.
  * This work is licensed under the BSD open source license, available at https://www.movesinstitute.org/licenses/bsd.html
  */
-
 package edu.nps.moves.dis7;
 
 import java.util.*;
@@ -15,308 +14,407 @@ import edu.nps.moves.dis7.enumerations.*;
  */
 public class IntercomSignalPdu extends RadioCommunicationsFamilyPdu implements Serializable
 {
-   protected IntercomReferenceID  intercomReferenceID = new IntercomReferenceID(); 
-
-   /** ID of communications device */
-   protected short  intercomNumber;
-
-   /** encoding scheme */
-   protected short  encodingScheme;
-
-   /** tactical data link type uid 178 */
-   protected SignalTDLType tdlType = SignalTDLType.values()[0];
-
-   /** sample rate */
-   protected int  sampleRate;
-
-   /** data length */
-   protected short  dataLength;
-
-   /** samples */
-   protected short  samples;
-
-   /** data bytes */
-   protected byte[]  data = new byte[0]; 
-
-   private byte[] padTo32 = new byte[0]; // pad to 32-bit boundary
-
-
-/** Constructor */
- public IntercomSignalPdu()
- {
-    setPduType( DISPDUType.INTERCOM_SIGNAL );
- }
-
-/** Returns the size of this serialized object in bytes*/
-public int getMarshalledSize()
-{
-   int marshalSize = 0; 
-
-   marshalSize = super.getMarshalledSize();
-   marshalSize += intercomReferenceID.getMarshalledSize();
-   marshalSize += 2;  // intercomNumber
-   marshalSize += 2;  // encodingScheme
-   marshalSize += tdlType.getMarshalledSize();
-   marshalSize += 4;  // sampleRate
-   marshalSize += 2;  // dataLength
-   marshalSize += 2;  // samples
-   marshalSize += data.length * 1;
-   marshalSize += padTo32.length;
-
-   return marshalSize;
-}
-
-
-/** Setter for {@link IntercomSignalPdu#intercomReferenceID}*/
-public IntercomSignalPdu setIntercomReferenceID(IntercomReferenceID pIntercomReferenceID)
-{
+  protected IntercomReferenceID intercomReferenceID = new IntercomReferenceID();
+
+  /**
+   * ID of communications device
+   */
+  protected short intercomNumber;
+
+  /**
+   * encoding scheme
+   */
+  protected short encodingScheme;
+
+  /**
+   * tactical data link type uid 178
+   */
+  protected SignalTDLType tdlType = SignalTDLType.values()[0];
+
+  /**
+   * sample rate
+   */
+  protected int sampleRate;
+
+  /**
+   * data length
+   */
+  protected Short dataLength;
+
+  /**
+   * samples
+   */
+  protected short samples;
+
+  /**
+   * data bytes
+   */
+  protected byte[] data = new byte[1]; //Wireshark complains if no data 
+
+  private byte[] padTo32 = new byte[0]; // pad to 32-bit boundary
+
+  /**
+   * Constructor
+   */
+  public IntercomSignalPdu()
+  {
+    setPduType(DISPDUType.INTERCOM_SIGNAL);
+  }
+
+  /**
+   * Returns the size of this serialized object in bytes
+   */
+  public int getMarshalledSize()
+  {
+    int marshalSize = 0;
+
+    marshalSize = super.getMarshalledSize();
+    marshalSize += intercomReferenceID.getMarshalledSize();
+    marshalSize += 2;  // intercomNumber
+    marshalSize += 2;  // encodingScheme
+    marshalSize += tdlType.getMarshalledSize();
+    marshalSize += 4;  // sampleRate
+    marshalSize += 2;  // dataLength
+    marshalSize += 2;  // samples
+    marshalSize += data.length;
+    marshalSize += padTo32.length;
+
+    return marshalSize;
+  }
+
+  /**
+   * Setter for {@link IntercomSignalPdu#intercomReferenceID}
+   */
+  public IntercomSignalPdu setIntercomReferenceID(IntercomReferenceID pIntercomReferenceID)
+  {
     intercomReferenceID = pIntercomReferenceID;
     return this;
-}
-
-/** Getter for {@link IntercomSignalPdu#intercomReferenceID}*/
-public IntercomReferenceID getIntercomReferenceID()
-{
-    return intercomReferenceID; 
-}
-
-/** Setter for {@link IntercomSignalPdu#intercomNumber}*/
-public IntercomSignalPdu setIntercomNumber(short pIntercomNumber)
-{
+  }
+
+  /**
+   * Getter for {@link IntercomSignalPdu#intercomReferenceID}
+   */
+  public IntercomReferenceID getIntercomReferenceID()
+  {
+    return intercomReferenceID;
+  }
+
+  /**
+   * Setter for {@link IntercomSignalPdu#intercomNumber}
+   */
+  public IntercomSignalPdu setIntercomNumber(short pIntercomNumber)
+  {
     intercomNumber = pIntercomNumber;
     return this;
-}
-
-/** Getter for {@link IntercomSignalPdu#intercomNumber}*/
-public short getIntercomNumber()
-{
-    return intercomNumber; 
-}
-
-/** Setter for {@link IntercomSignalPdu#encodingScheme}*/
-public IntercomSignalPdu setEncodingScheme(short pEncodingScheme)
-{
+  }
+
+  /**
+   * Getter for {@link IntercomSignalPdu#intercomNumber}
+   */
+  public short getIntercomNumber()
+  {
+    return intercomNumber;
+  }
+
+  /**
+   * Setter for {@link IntercomSignalPdu#encodingScheme}
+   */
+  public IntercomSignalPdu setEncodingScheme(short pEncodingScheme)
+  {
     encodingScheme = pEncodingScheme;
     return this;
-}
-
-/** Getter for {@link IntercomSignalPdu#encodingScheme}*/
-public short getEncodingScheme()
-{
-    return encodingScheme; 
-}
-
-/** Setter for {@link IntercomSignalPdu#tdlType}*/
-public IntercomSignalPdu setTdlType(SignalTDLType pTdlType)
-{
+  }
+
+  /**
+   * Getter for {@link IntercomSignalPdu#encodingScheme}
+   */
+  public short getEncodingScheme()
+  {
+    return encodingScheme;
+  }
+
+  /**
+   * Setter for {@link IntercomSignalPdu#tdlType}
+   */
+  public IntercomSignalPdu setTdlType(SignalTDLType pTdlType)
+  {
     tdlType = pTdlType;
     return this;
-}
-
-/** Getter for {@link IntercomSignalPdu#tdlType}*/
-public SignalTDLType getTdlType()
-{
-    return tdlType; 
-}
-
-/** Setter for {@link IntercomSignalPdu#sampleRate}*/
-public IntercomSignalPdu setSampleRate(int pSampleRate)
-{
+  }
+
+  /**
+   * Getter for {@link IntercomSignalPdu#tdlType}
+   */
+  public SignalTDLType getTdlType()
+  {
+    return tdlType;
+  }
+
+  /**
+   * Setter for {@link IntercomSignalPdu#sampleRate}
+   */
+  public IntercomSignalPdu setSampleRate(int pSampleRate)
+  {
     sampleRate = pSampleRate;
     return this;
-}
-
-/** Getter for {@link IntercomSignalPdu#sampleRate}*/
-public int getSampleRate()
-{
-    return sampleRate; 
-}
-
-/** Setter for {@link IntercomSignalPdu#samples}*/
-public IntercomSignalPdu setSamples(short pSamples)
-{
+  }
+
+  /**
+   * Getter for {@link IntercomSignalPdu#sampleRate}
+   */
+  public int getSampleRate()
+  {
+    return sampleRate;
+  }
+
+  /**
+   * Setter for {@link IntercomSignalPdu#dataLength}
+   * <p>
+   * This value is the size IN BITS of the {@link IntercomSignalPdu#dataLength} field. Since that field
+   * is a byte array, its size must be large enough to contain the specified number of bits. If this size is NOT
+   * set and this pdu is issued (marshaled), the value used for this field will be the size of the byte
+   * array times 8.
+   *
+   * @param pDataLength value for field
+   * @return this object
+   */
+  public IntercomSignalPdu setDataLength(short pDataLength)
+  {
+    dataLength = pDataLength;
+    return this;
+  }
+
+  /**
+   * Getter for {@link SignalPdu#dataLength}
+   *
+   * @return value of field
+   */
+  public short getDataLength()
+  {
+    return dataLength;
+  }
+
+  /**
+   * Setter for {@link IntercomSignalPdu#samples}
+   */
+  public IntercomSignalPdu setSamples(short pSamples)
+  {
     samples = pSamples;
     return this;
-}
-
-/** Getter for {@link IntercomSignalPdu#samples}*/
-public short getSamples()
-{
-    return samples; 
-}
-
-/** Setter for {@link IntercomSignalPdu#data}*/
-public IntercomSignalPdu setData(byte[] pData)
-{
+  }
+
+  /**
+   * Getter for {@link IntercomSignalPdu#samples}
+   */
+  public short getSamples()
+  {
+    return samples;
+  }
+
+  /**
+   * Setter for {@link IntercomSignalPdu#data}
+   */
+  public IntercomSignalPdu setData(byte[] pData)
+  {
     data = pData;
     return this;
-}
+  }
+
+  /**
+   * Getter for {@link IntercomSignalPdu#data}
+   */
+  public byte[] getData()
+  {
+    return data;
+  }
+
+  /* *************************** */
+ /* Marshal / unmarshal methods */
+ /* *************************** */
+  /**
+   * Serializes an object to a DataOutputStream.
+   *
+   * @see java.io.DataOutputStream
+   * @param dos The DataOutputStream
+   */
+  public void marshal(DataOutputStream dos) throws Exception
+  {
+    super.marshal(dos);
+    try {
+      intercomReferenceID.marshal(dos);
+      dos.writeShort((short) intercomNumber);
+      dos.writeShort((short) encodingScheme);
+      tdlType.marshal(dos);
+      dos.writeInt((int) sampleRate);
 
-/** Getter for {@link IntercomSignalPdu#data}*/
-public byte[] getData()
-{
-    return data; 
-}
+      if (dataLength != null)
+        dos.writeShort((short) dataLength);
+      else
+        dos.writeShort((short) (dataLength = calculateDataLength()));
 
-/**
- * Serializes an object to a DataOutputStream.
- * @see java.io.DataOutputStream
- * @param dos The DataOutputStream
- */
-public void marshal(DataOutputStream dos)
-{
-    super.marshal(dos);
-    try 
-    {
-       intercomReferenceID.marshal(dos);
-       dos.writeShort( (short)intercomNumber);
-       dos.writeShort( (short)encodingScheme);
-       tdlType.marshal(dos);
-       dos.writeInt( (int)sampleRate);
-       dos.writeShort( (short)dataLength);
-       dos.writeShort( (short)samples);
-
-       for(int idx = 0; idx < data.length; idx++)
-           dos.writeByte(data[idx]);
-
-       padTo32 = new byte[Align.to32bits(dos)];
+      dos.writeShort((short) samples);
+
+      for (int idx = 0; idx < data.length; idx++) {
+        dos.writeByte(data[idx]);
+      }
+
+      padTo32 = new byte[Align.to32bits(dos)];
     }
-    catch(Exception e)
-    {
+    catch (Exception e) {
       System.err.println(e);
     }
-}
-
-/**
- * Unserializes an object from a DataInputStream.
- * @see java.io.DataInputStream
- * @param dis The DataInputStream
- * @return marshalled size
- */
-public int unmarshal(DataInputStream dis)
-{
+  }
+
+  /**
+   * Unserializes an object from a DataInputStream.
+   *
+   * @see java.io.DataInputStream
+   * @param dis The DataInputStream
+   * @return marshalled size
+   */
+  public int unmarshal(DataInputStream dis) throws Exception
+  {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
 
-    try 
-    {
-        uPosition += intercomReferenceID.unmarshal(dis);
-        intercomNumber = (short)dis.readUnsignedShort();
-        uPosition += 2;
-        encodingScheme = (short)dis.readUnsignedShort();
-        uPosition += 2;
-        tdlType = SignalTDLType.unmarshalEnum(dis);
-        uPosition += tdlType.getMarshalledSize();
-        sampleRate = dis.readInt();
-        uPosition += 4;
-        dataLength = (short)dis.readUnsignedShort();
-        uPosition += 2;
-        samples = (short)dis.readUnsignedShort();
-        uPosition += 2;
-        for(int idx = 0; idx < data.length; idx++)
-            data[idx] = dis.readByte(); // mike check
-        uPosition += data.length; // todo, multiply by prim size mike
-        padTo32 = new byte[Align.from32bits(uPosition,dis)];
-        uPosition += padTo32.length;
+    uPosition += intercomReferenceID.unmarshal(dis);
+    intercomNumber = (short) dis.readUnsignedShort();
+    uPosition += 2;
+    encodingScheme = (short) dis.readUnsignedShort();
+    uPosition += 2;
+    tdlType = SignalTDLType.unmarshalEnum(dis);
+    uPosition += tdlType.getMarshalledSize();
+    sampleRate = dis.readInt();
+    uPosition += 4;
+    dataLength = (short) dis.readUnsignedShort();
+    int byteLength = (dataLength + 7) / 8;
+    data = new byte[byteLength];
+    uPosition += 2;
+    samples = (short) dis.readUnsignedShort();
+    uPosition += 2;
+
+    for (int idx = 0; idx < byteLength; idx++) {
+      data[idx] = dis.readByte();
     }
-    catch(Exception e)
-    { 
-      System.out.println(e); 
-    }
-    return getMarshalledSize();
-}
 
-/**
- * Packs an object into the ByteBuffer.
- * @throws java.nio.BufferOverflowException if buff is too small
- * @throws java.nio.ReadOnlyBufferException if buff is read only
- * @see java.nio.ByteBuffer
- * @param buff The ByteBuffer at the position to begin writing
- * @throws Exception ByteBuffer-generated exception
- */
-public void marshal(java.nio.ByteBuffer buff) throws Exception
-{
-   super.marshal(buff);
-   intercomReferenceID.marshal(buff);
-   buff.putShort( (short)intercomNumber);
-   buff.putShort( (short)encodingScheme);
-   tdlType.marshal(buff);
-   buff.putInt( (int)sampleRate);
-   buff.putShort( (short)dataLength);
-   buff.putShort( (short)samples);
+    uPosition += (data.length * 1);
+    padTo32 = new byte[Align.from32bits(uPosition, dis)];
+    //uPosition += padTo32.length;
 
-   for(int idx = 0; idx < data.length; idx++)
-       buff.put((byte)data[idx]);
-
-   padTo32 = new byte[Align.to32bits(buff)];
-}
+    return getMarshalledSize();
+  }
+
+  /**
+   * Packs an object into the ByteBuffer.
+   *
+   * @throws java.nio.BufferOverflowException if buff is too small
+   * @throws java.nio.ReadOnlyBufferException if buff is read only
+   * @see java.nio.ByteBuffer
+   * @param buff The ByteBuffer at the position to begin writing
+   * @throws Exception ByteBuffer-generated exception
+   */
+  public void marshal(java.nio.ByteBuffer buff) throws Exception
+  {
+    super.marshal(buff);
+    intercomReferenceID.marshal(buff);
+    buff.putShort((short) intercomNumber);
+    buff.putShort((short) encodingScheme);
+    tdlType.marshal(buff);
+    buff.putInt((int) sampleRate);
+
+    if (dataLength != null)
+      buff.putShort((short) dataLength);
+    else
+      buff.putShort((short) (dataLength = calculateDataLength()));
+
+    buff.putShort((short) samples);
+
+    for (int idx = 0; idx < data.length; idx++) {
+      buff.put((byte) data[idx]);
+    }
 
-/**
- * Unpacks a Pdu from the underlying data.
- * @throws java.nio.BufferUnderflowException if buff is too small
- * @see java.nio.ByteBuffer
- * @param buff The ByteBuffer at the position to begin reading
- * @return marshalled size
- * @throws Exception ByteBuffer-generated exception
- */
-public int unmarshal(java.nio.ByteBuffer buff) throws Exception
-{
+    padTo32 = new byte[Align.to32bits(buff)];
+  }
+
+  /**
+   * Unpacks a Pdu from the underlying data.
+   *
+   * @throws java.nio.BufferUnderflowException if buff is too small
+   * @see java.nio.ByteBuffer
+   * @param buff The ByteBuffer at the position to begin reading
+   * @return marshalled size
+   * @throws Exception ByteBuffer-generated exception
+   */
+  public int unmarshal(java.nio.ByteBuffer buff) throws Exception
+  {
     super.unmarshal(buff);
 
     intercomReferenceID.unmarshal(buff);
-    intercomNumber = (short)(buff.getShort() & 0xFFFF);
-    encodingScheme = (short)(buff.getShort() & 0xFFFF);
+    intercomNumber = (short) (buff.getShort() & 0xFFFF);
+    encodingScheme = (short) (buff.getShort() & 0xFFFF);
     tdlType = SignalTDLType.unmarshalEnum(buff);
     sampleRate = buff.getInt();
-    dataLength = (short)(buff.getShort() & 0xFFFF);
-    samples = (short)(buff.getShort() & 0xFFFF);
-    for(int idx = 0; idx < data.length; idx++)
-        data[idx] = buff.get();
+    dataLength = (short) (buff.getShort() & 0xFFFF);
+    int byteLength = (dataLength + 7) / 8;
+    data = new byte[byteLength];
+    samples = (short) (buff.getShort() & 0xFFFF);
+    for (int idx = 0; idx < byteLength; idx++) {
+      data[idx] = buff.get();
+    }
     padTo32 = new byte[Align.from32bits(buff)];
     return getMarshalledSize();
-}
-
- /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
-  */
-@Override
- public boolean equals(Object obj)
- {
-    if(this == obj)
+  }
+
+  private short calculateDataLength()
+  {
+    return (short) (data.length * 8);
+  }
+
+  /*
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
+   */
+  @Override
+  public boolean equals(Object obj)
+  {
+    if (this == obj)
       return true;
 
-    if(obj == null)
-       return false;
+    if (obj == null)
+      return false;
 
-    if(getClass() != obj.getClass())
-        return false;
+    if (getClass() != obj.getClass())
+      return false;
 
     return equalsImpl(obj);
- }
-
-@Override
- public boolean equalsImpl(Object obj)
- {
-     boolean ivarsEqual = true;
-
-    if(!(obj instanceof IntercomSignalPdu))
-        return false;
-
-     final IntercomSignalPdu rhs = (IntercomSignalPdu)obj;
-
-     if( ! (intercomReferenceID.equals( rhs.intercomReferenceID) )) ivarsEqual = false;
-     if( ! (intercomNumber == rhs.intercomNumber)) ivarsEqual = false;
-     if( ! (encodingScheme == rhs.encodingScheme)) ivarsEqual = false;
-     if( ! (tdlType == rhs.tdlType)) ivarsEqual = false;
-     if( ! (sampleRate == rhs.sampleRate)) ivarsEqual = false;
-     if( ! (dataLength == rhs.dataLength)) ivarsEqual = false;
-     if( ! (samples == rhs.samples)) ivarsEqual = false;
-
-     for(int idx = 0; idx < 0; idx++)
-     {
-          if(!(data[idx] == rhs.data[idx])) ivarsEqual = false;
-     }
+  }
+
+  @Override
+  public boolean equalsImpl(Object obj)
+  {
+    boolean ivarsEqual = true;
+
+    final IntercomSignalPdu rhs = (IntercomSignalPdu) obj;
+
+    if (!(intercomReferenceID.equals(rhs.intercomReferenceID)))
+      ivarsEqual = false;
+    if (!(intercomNumber == rhs.intercomNumber))
+      ivarsEqual = false;
+    if (!(encodingScheme == rhs.encodingScheme))
+      ivarsEqual = false;
+    if (!(tdlType == rhs.tdlType))
+      ivarsEqual = false;
+    if (!(sampleRate == rhs.sampleRate))
+      ivarsEqual = false;
+    if (!(dataLength.equals(rhs.dataLength)))
+      ivarsEqual = false;
+    if (!(samples == rhs.samples))
+      ivarsEqual = false;
+
+    for (int idx = 0; idx < 0; idx++) {
+      if (!(data[idx] == rhs.data[idx]))
+        ivarsEqual = false;
+    }
 
     return ivarsEqual && super.equalsImpl(rhs);
- }
+  }
 } // end of class
diff --git a/src-generated/edu/nps/moves/dis7/IsGroupOfPdu.java b/src-generated/edu/nps/moves/dis7/IsGroupOfPdu.java
index 15cfa8eef5..5a5792f944 100644
--- a/src-generated/edu/nps/moves/dis7/IsGroupOfPdu.java
+++ b/src-generated/edu/nps/moves/dis7/IsGroupOfPdu.java
@@ -148,7 +148,7 @@ public List<VariableDatum> getGroupedEntityDescriptions()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -179,7 +179,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -267,7 +267,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -289,14 +289,10 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof IsGroupOfPdu))
-        return false;
-
      final IsGroupOfPdu rhs = (IsGroupOfPdu)obj;
 
      if( ! (groupEntityID.equals( rhs.groupEntityID) )) ivarsEqual = false;
      if( ! (groupedEntityCategory == rhs.groupedEntityCategory)) ivarsEqual = false;
-     if( ! (numberOfGroupedEntities == rhs.numberOfGroupedEntities)) ivarsEqual = false;
      if( ! (pad == rhs.pad)) ivarsEqual = false;
      if( ! (latitude == rhs.latitude)) ivarsEqual = false;
      if( ! (longitude == rhs.longitude)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/IsPartOfPdu.java b/src-generated/edu/nps/moves/dis7/IsPartOfPdu.java
index cacea19820..eb9d358030 100644
--- a/src-generated/edu/nps/moves/dis7/IsPartOfPdu.java
+++ b/src-generated/edu/nps/moves/dis7/IsPartOfPdu.java
@@ -140,7 +140,7 @@ public EntityType getPartEntityType()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -164,7 +164,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -226,7 +226,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -248,9 +248,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof IsPartOfPdu))
-        return false;
-
      final IsPartOfPdu rhs = (IsPartOfPdu)obj;
 
      if( ! (orginatingEntityID.equals( rhs.orginatingEntityID) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/JammingTechnique.java b/src-generated/edu/nps/moves/dis7/JammingTechnique.java
index f0d1bdc967..effc40f00d 100644
--- a/src-generated/edu/nps/moves/dis7/JammingTechnique.java
+++ b/src-generated/edu/nps/moves/dis7/JammingTechnique.java
@@ -100,7 +100,7 @@ public byte getSpecific()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -121,7 +121,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -176,7 +176,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -203,9 +203,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof JammingTechnique))
-        return false;
-
      final JammingTechnique rhs = (JammingTechnique)obj;
 
      if( ! (kind == rhs.kind)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/LEDetonationPdu.java b/src-generated/edu/nps/moves/dis7/LEDetonationPdu.java
index 94ba50985b..1ddcaadea0 100644
--- a/src-generated/edu/nps/moves/dis7/LEDetonationPdu.java
+++ b/src-generated/edu/nps/moves/dis7/LEDetonationPdu.java
@@ -231,7 +231,7 @@ public byte getDetonationResult()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -261,7 +261,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -344,7 +344,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -366,9 +366,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof LEDetonationPdu))
-        return false;
-
      final LEDetonationPdu rhs = (LEDetonationPdu)obj;
 
      if( ! (firingLiveEntityId.equals( rhs.firingLiveEntityId) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/LEFirePdu.java b/src-generated/edu/nps/moves/dis7/LEFirePdu.java
index 346a042aa0..5c1e82e40c 100644
--- a/src-generated/edu/nps/moves/dis7/LEFirePdu.java
+++ b/src-generated/edu/nps/moves/dis7/LEFirePdu.java
@@ -183,7 +183,7 @@ public short getRange()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -210,7 +210,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -283,7 +283,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -305,9 +305,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof LEFirePdu))
-        return false;
-
      final LEFirePdu rhs = (LEFirePdu)obj;
 
      if( ! (firingLiveEntityId.equals( rhs.firingLiveEntityId) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/LEVector3FixedByte.java b/src-generated/edu/nps/moves/dis7/LEVector3FixedByte.java
index 92ba72fa23..05137b8ca7 100644
--- a/src-generated/edu/nps/moves/dis7/LEVector3FixedByte.java
+++ b/src-generated/edu/nps/moves/dis7/LEVector3FixedByte.java
@@ -87,7 +87,7 @@ public byte getZ()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -107,7 +107,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -158,7 +158,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -185,9 +185,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof LEVector3FixedByte))
-        return false;
-
      final LEVector3FixedByte rhs = (LEVector3FixedByte)obj;
 
      if( ! (x == rhs.x)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/LaunchedMunitionRecord.java b/src-generated/edu/nps/moves/dis7/LaunchedMunitionRecord.java
index 40b1b3511a..36e6082d9e 100644
--- a/src-generated/edu/nps/moves/dis7/LaunchedMunitionRecord.java
+++ b/src-generated/edu/nps/moves/dis7/LaunchedMunitionRecord.java
@@ -148,7 +148,7 @@ public Vector3Double getTargetLocation()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -172,7 +172,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -235,7 +235,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -262,9 +262,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof LaunchedMunitionRecord))
-        return false;
-
      final LaunchedMunitionRecord rhs = (LaunchedMunitionRecord)obj;
 
      if( ! (fireEventID.equals( rhs.fireEventID) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/LayerHeader.java b/src-generated/edu/nps/moves/dis7/LayerHeader.java
index e6a68e45a6..888d92b4f8 100644
--- a/src-generated/edu/nps/moves/dis7/LayerHeader.java
+++ b/src-generated/edu/nps/moves/dis7/LayerHeader.java
@@ -86,7 +86,7 @@ public short getLength()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -106,7 +106,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -157,7 +157,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -184,9 +184,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof LayerHeader))
-        return false;
-
      final LayerHeader rhs = (LayerHeader)obj;
 
      if( ! (layerNumber == rhs.layerNumber)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/LinearObjectStatePdu.java b/src-generated/edu/nps/moves/dis7/LinearObjectStatePdu.java
index 887df282f3..f78c64096c 100644
--- a/src-generated/edu/nps/moves/dis7/LinearObjectStatePdu.java
+++ b/src-generated/edu/nps/moves/dis7/LinearObjectStatePdu.java
@@ -182,7 +182,7 @@ public List<LinearSegmentParameter> getLinearSegmentParameters()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -215,7 +215,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -307,7 +307,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -329,16 +329,12 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof LinearObjectStatePdu))
-        return false;
-
      final LinearObjectStatePdu rhs = (LinearObjectStatePdu)obj;
 
      if( ! (objectID.equals( rhs.objectID) )) ivarsEqual = false;
      if( ! (referencedObjectID.equals( rhs.referencedObjectID) )) ivarsEqual = false;
      if( ! (updateNumber == rhs.updateNumber)) ivarsEqual = false;
      if( ! (forceID == rhs.forceID)) ivarsEqual = false;
-     if( ! (numberOfLinearSegments == rhs.numberOfLinearSegments)) ivarsEqual = false;
      if( ! (requesterID.equals( rhs.requesterID) )) ivarsEqual = false;
      if( ! (receivingID.equals( rhs.receivingID) )) ivarsEqual = false;
      if( ! (objectType.equals( rhs.objectType) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/LinearSegmentParameter.java b/src-generated/edu/nps/moves/dis7/LinearSegmentParameter.java
index 4c447471c8..7df6e79933 100644
--- a/src-generated/edu/nps/moves/dis7/LinearSegmentParameter.java
+++ b/src-generated/edu/nps/moves/dis7/LinearSegmentParameter.java
@@ -223,7 +223,7 @@ public int getPadding()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -251,7 +251,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -330,7 +330,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -357,9 +357,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof LinearSegmentParameter))
-        return false;
-
      final LinearSegmentParameter rhs = (LinearSegmentParameter)obj;
 
      if( ! (segmentNumber == rhs.segmentNumber)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/LiveDeadReckoningParameters.java b/src-generated/edu/nps/moves/dis7/LiveDeadReckoningParameters.java
index ca4fa531d6..7da4ba2b6e 100644
--- a/src-generated/edu/nps/moves/dis7/LiveDeadReckoningParameters.java
+++ b/src-generated/edu/nps/moves/dis7/LiveDeadReckoningParameters.java
@@ -85,7 +85,7 @@ public LEVector3FixedByte getEntityAngularVelocity()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -105,7 +105,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -154,7 +154,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -181,9 +181,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof LiveDeadReckoningParameters))
-        return false;
-
      final LiveDeadReckoningParameters rhs = (LiveDeadReckoningParameters)obj;
 
      if( ! (deadReckoningAlgorithm == rhs.deadReckoningAlgorithm)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/LiveEntityFamilyPdu.java b/src-generated/edu/nps/moves/dis7/LiveEntityFamilyPdu.java
index 59d14587cf..6b9b24df50 100644
--- a/src-generated/edu/nps/moves/dis7/LiveEntityFamilyPdu.java
+++ b/src-generated/edu/nps/moves/dis7/LiveEntityFamilyPdu.java
@@ -37,7 +37,7 @@ public int getMarshalledSize()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -55,7 +55,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -99,7 +99,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -121,9 +121,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof LiveEntityFamilyPdu))
-        return false;
-
      final LiveEntityFamilyPdu rhs = (LiveEntityFamilyPdu)obj;
 
     return ivarsEqual && super.equalsImpl(rhs);
diff --git a/src-generated/edu/nps/moves/dis7/LiveEntityIdentifier.java b/src-generated/edu/nps/moves/dis7/LiveEntityIdentifier.java
index c3a0c7e00b..35d6cc4d67 100644
--- a/src-generated/edu/nps/moves/dis7/LiveEntityIdentifier.java
+++ b/src-generated/edu/nps/moves/dis7/LiveEntityIdentifier.java
@@ -70,7 +70,7 @@ public short getEntityNumber()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -89,7 +89,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -135,7 +135,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -162,9 +162,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof LiveEntityIdentifier))
-        return false;
-
      final LiveEntityIdentifier rhs = (LiveEntityIdentifier)obj;
 
      if( ! (liveSimulationAddress.equals( rhs.liveSimulationAddress) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/LiveEntityLinearVelocity.java b/src-generated/edu/nps/moves/dis7/LiveEntityLinearVelocity.java
index cf7b2cda86..c7ec8ab998 100644
--- a/src-generated/edu/nps/moves/dis7/LiveEntityLinearVelocity.java
+++ b/src-generated/edu/nps/moves/dis7/LiveEntityLinearVelocity.java
@@ -84,7 +84,7 @@ public short getZComponent()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -104,7 +104,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -155,7 +155,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -182,9 +182,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof LiveEntityLinearVelocity))
-        return false;
-
      final LiveEntityLinearVelocity rhs = (LiveEntityLinearVelocity)obj;
 
      if( ! (xComponent == rhs.xComponent)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/LiveEntityOrientation.java b/src-generated/edu/nps/moves/dis7/LiveEntityOrientation.java
index 0919f58531..dee032051b 100644
--- a/src-generated/edu/nps/moves/dis7/LiveEntityOrientation.java
+++ b/src-generated/edu/nps/moves/dis7/LiveEntityOrientation.java
@@ -84,7 +84,7 @@ public byte getPhi()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -104,7 +104,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -155,7 +155,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -182,9 +182,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof LiveEntityOrientation))
-        return false;
-
      final LiveEntityOrientation rhs = (LiveEntityOrientation)obj;
 
      if( ! (psi == rhs.psi)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/LiveEntityOrientation16.java b/src-generated/edu/nps/moves/dis7/LiveEntityOrientation16.java
index c22fac4028..ec3e969045 100644
--- a/src-generated/edu/nps/moves/dis7/LiveEntityOrientation16.java
+++ b/src-generated/edu/nps/moves/dis7/LiveEntityOrientation16.java
@@ -84,7 +84,7 @@ public short getPhi()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -104,7 +104,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -155,7 +155,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -182,9 +182,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof LiveEntityOrientation16))
-        return false;
-
      final LiveEntityOrientation16 rhs = (LiveEntityOrientation16)obj;
 
      if( ! (psi == rhs.psi)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/LiveEntityOrientationError.java b/src-generated/edu/nps/moves/dis7/LiveEntityOrientationError.java
index 7b7a1da7db..51ffcda148 100644
--- a/src-generated/edu/nps/moves/dis7/LiveEntityOrientationError.java
+++ b/src-generated/edu/nps/moves/dis7/LiveEntityOrientationError.java
@@ -84,7 +84,7 @@ public short getRotationError()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -104,7 +104,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -155,7 +155,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -182,9 +182,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof LiveEntityOrientationError))
-        return false;
-
      final LiveEntityOrientationError rhs = (LiveEntityOrientationError)obj;
 
      if( ! (azimuthError == rhs.azimuthError)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/LiveEntityPdu.java b/src-generated/edu/nps/moves/dis7/LiveEntityPdu.java
index 49b710fb57..c332388650 100644
--- a/src-generated/edu/nps/moves/dis7/LiveEntityPdu.java
+++ b/src-generated/edu/nps/moves/dis7/LiveEntityPdu.java
@@ -71,7 +71,7 @@ public byte getPadding()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -91,7 +91,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -143,7 +143,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -165,9 +165,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof LiveEntityPdu))
-        return false;
-
      final LiveEntityPdu rhs = (LiveEntityPdu)obj;
 
      if( ! (subprotocolNumber == rhs.subprotocolNumber)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/LiveEntityPositionError.java b/src-generated/edu/nps/moves/dis7/LiveEntityPositionError.java
index ca47cc490c..67b78541a3 100644
--- a/src-generated/edu/nps/moves/dis7/LiveEntityPositionError.java
+++ b/src-generated/edu/nps/moves/dis7/LiveEntityPositionError.java
@@ -68,7 +68,7 @@ public short getVerticalError()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -87,7 +87,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -134,7 +134,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -161,9 +161,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof LiveEntityPositionError))
-        return false;
-
      final LiveEntityPositionError rhs = (LiveEntityPositionError)obj;
 
      if( ! (horizontalError == rhs.horizontalError)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/LiveEntityRelativeWorldCoordinates.java b/src-generated/edu/nps/moves/dis7/LiveEntityRelativeWorldCoordinates.java
index 7d9a15a7b1..f0a65a3b65 100644
--- a/src-generated/edu/nps/moves/dis7/LiveEntityRelativeWorldCoordinates.java
+++ b/src-generated/edu/nps/moves/dis7/LiveEntityRelativeWorldCoordinates.java
@@ -100,7 +100,7 @@ public short getDeltaZ()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -121,7 +121,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -176,7 +176,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -203,9 +203,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof LiveEntityRelativeWorldCoordinates))
-        return false;
-
      final LiveEntityRelativeWorldCoordinates rhs = (LiveEntityRelativeWorldCoordinates)obj;
 
      if( ! (referencePoint == rhs.referencePoint)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/LiveSimulationAddress.java b/src-generated/edu/nps/moves/dis7/LiveSimulationAddress.java
index d65c2b4643..b10c8c4c45 100644
--- a/src-generated/edu/nps/moves/dis7/LiveSimulationAddress.java
+++ b/src-generated/edu/nps/moves/dis7/LiveSimulationAddress.java
@@ -70,7 +70,7 @@ public byte getLiveApplicationNumber()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -89,7 +89,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -136,7 +136,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -163,9 +163,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof LiveSimulationAddress))
-        return false;
-
      final LiveSimulationAddress rhs = (LiveSimulationAddress)obj;
 
      if( ! (liveSiteNumber == rhs.liveSiteNumber)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/LogisticsFamilyPdu.java b/src-generated/edu/nps/moves/dis7/LogisticsFamilyPdu.java
index f8707cd25e..9e12f136fa 100644
--- a/src-generated/edu/nps/moves/dis7/LogisticsFamilyPdu.java
+++ b/src-generated/edu/nps/moves/dis7/LogisticsFamilyPdu.java
@@ -38,7 +38,7 @@ public int getMarshalledSize()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -56,7 +56,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -100,7 +100,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -122,9 +122,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof LogisticsFamilyPdu))
-        return false;
-
      final LogisticsFamilyPdu rhs = (LogisticsFamilyPdu)obj;
 
     return ivarsEqual && super.equalsImpl(rhs);
diff --git a/src-generated/edu/nps/moves/dis7/MineEmplacementTime.java b/src-generated/edu/nps/moves/dis7/MineEmplacementTime.java
index 4d93a92a84..1f7c926435 100644
--- a/src-generated/edu/nps/moves/dis7/MineEmplacementTime.java
+++ b/src-generated/edu/nps/moves/dis7/MineEmplacementTime.java
@@ -67,7 +67,7 @@ public int getTimePastTheHour()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -86,7 +86,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -133,7 +133,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -160,9 +160,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof MineEmplacementTime))
-        return false;
-
      final MineEmplacementTime rhs = (MineEmplacementTime)obj;
 
      if( ! (hour == rhs.hour)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/MineEntityIdentifier.java b/src-generated/edu/nps/moves/dis7/MineEntityIdentifier.java
index 50f025b66c..a22cfdae81 100644
--- a/src-generated/edu/nps/moves/dis7/MineEntityIdentifier.java
+++ b/src-generated/edu/nps/moves/dis7/MineEntityIdentifier.java
@@ -70,7 +70,7 @@ public short getMineEntityNumber()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -89,7 +89,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -135,7 +135,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -162,9 +162,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof MineEntityIdentifier))
-        return false;
-
      final MineEntityIdentifier rhs = (MineEntityIdentifier)obj;
 
      if( ! (simulationAddress.equals( rhs.simulationAddress) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/MinefieldDataPdu.java b/src-generated/edu/nps/moves/dis7/MinefieldDataPdu.java
index 538699a4f8..59a4f5fdd3 100644
--- a/src-generated/edu/nps/moves/dis7/MinefieldDataPdu.java
+++ b/src-generated/edu/nps/moves/dis7/MinefieldDataPdu.java
@@ -476,7 +476,7 @@ public byte[] getNumberOfVertices()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -487,7 +487,7 @@ public void marshal(DataOutputStream dos)
        dos.writeByte( (byte)requestID);
        dos.writeByte( (byte)pduSequenceNumber);
        dos.writeByte( (byte)numberOfPdus);
-       dos.writeByte( (byte)paintScheme.size());
+       dos.writeByte( (byte)numberOfVertices.length);
        dos.writeByte( (byte)sensorTypes.size());
        dos.writeByte( (byte)padding);
        dataFilter.marshal(dos);
@@ -586,7 +586,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -628,14 +628,14 @@ public int unmarshal(DataInputStream dis)
         }
 
         for(int idx = 0; idx < groundBurialDepthOffset.length; idx++)
-            groundBurialDepthOffset[idx] = dis.readFloat(); // mike check
-        uPosition += groundBurialDepthOffset.length; // todo, multiply by prim size mike
+            groundBurialDepthOffset[idx] = dis.readFloat();
+        uPosition += (groundBurialDepthOffset.length * 4);
         for(int idx = 0; idx < waterBurialDepthOffset.length; idx++)
-            waterBurialDepthOffset[idx] = dis.readFloat(); // mike check
-        uPosition += waterBurialDepthOffset.length; // todo, multiply by prim size mike
+            waterBurialDepthOffset[idx] = dis.readFloat();
+        uPosition += (waterBurialDepthOffset.length * 4);
         for(int idx = 0; idx < snowBurialDepthOffset.length; idx++)
-            snowBurialDepthOffset[idx] = dis.readFloat(); // mike check
-        uPosition += snowBurialDepthOffset.length; // todo, multiply by prim size mike
+            snowBurialDepthOffset[idx] = dis.readFloat();
+        uPosition += (snowBurialDepthOffset.length * 4);
         for(int idx = 0; idx < numberOfMinesInThisPdu; idx++)
         {
             EulerAngles anX = new EulerAngles();
@@ -644,11 +644,11 @@ public int unmarshal(DataInputStream dis)
         }
 
         for(int idx = 0; idx < thermalContrast.length; idx++)
-            thermalContrast[idx] = dis.readFloat(); // mike check
-        uPosition += thermalContrast.length; // todo, multiply by prim size mike
+            thermalContrast[idx] = dis.readFloat();
+        uPosition += (thermalContrast.length * 4);
         for(int idx = 0; idx < reflectance.length; idx++)
-            reflectance[idx] = dis.readFloat(); // mike check
-        uPosition += reflectance.length; // todo, multiply by prim size mike
+            reflectance[idx] = dis.readFloat();
+        uPosition += (reflectance.length * 4);
         for(int idx = 0; idx < numberOfMinesInThisPdu; idx++)
         {
             MineEmplacementTime anX = new MineEmplacementTime();
@@ -657,8 +657,8 @@ public int unmarshal(DataInputStream dis)
         }
 
         for(int idx = 0; idx < mineEntityNumber.length; idx++)
-            mineEntityNumber[idx] = dis.readShort(); // mike check
-        uPosition += mineEntityNumber.length; // todo, multiply by prim size mike
+            mineEntityNumber[idx] = dis.readShort();
+        uPosition += (mineEntityNumber.length * 2);
         for(int idx = 0; idx < numberOfMinesInThisPdu; idx++)
         {
             MinefieldDataFusing anX = new MinefieldDataFusing();
@@ -667,8 +667,8 @@ public int unmarshal(DataInputStream dis)
         }
 
         for(int idx = 0; idx < scalarDetectionCoefficient.length; idx++)
-            scalarDetectionCoefficient[idx] = dis.readByte(); // mike check
-        uPosition += scalarDetectionCoefficient.length; // todo, multiply by prim size mike
+            scalarDetectionCoefficient[idx] = dis.readByte();
+        uPosition += (scalarDetectionCoefficient.length * 1);
         for(int idx = 0; idx < numberOfMinesInThisPdu; idx++)
         {
             MinefieldDataPaintScheme anX = new MinefieldDataPaintScheme();
@@ -679,13 +679,13 @@ public int unmarshal(DataInputStream dis)
         padTo32_2 = new byte[Align.from32bits(uPosition,dis)];
         uPosition += padTo32_2.length;
         for(int idx = 0; idx < numberOfTripDetonationWires.length; idx++)
-            numberOfTripDetonationWires[idx] = dis.readByte(); // mike check
-        uPosition += numberOfTripDetonationWires.length; // todo, multiply by prim size mike
+            numberOfTripDetonationWires[idx] = dis.readByte();
+        uPosition += (numberOfTripDetonationWires.length * 1);
         padTo32_3 = new byte[Align.from32bits(uPosition,dis)];
         uPosition += padTo32_3.length;
         for(int idx = 0; idx < numberOfVertices.length; idx++)
-            numberOfVertices[idx] = dis.readByte(); // mike check
-        uPosition += numberOfVertices.length; // todo, multiply by prim size mike
+            numberOfVertices[idx] = dis.readByte();
+        uPosition += (numberOfVertices.length * 1);
     }
     catch(Exception e)
     { 
@@ -711,7 +711,7 @@ public void marshal(java.nio.ByteBuffer buff) throws Exception
    buff.put( (byte)requestID);
    buff.put( (byte)pduSequenceNumber);
    buff.put( (byte)numberOfPdus);
-   buff.put( (byte)paintScheme.size());
+   buff.put( (byte)numberOfVertices.length);
    buff.put( (byte)sensorTypes.size());
    buff.put( (byte)padding);
    dataFilter.marshal(buff);
@@ -889,7 +889,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -911,9 +911,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof MinefieldDataPdu))
-        return false;
-
      final MinefieldDataPdu rhs = (MinefieldDataPdu)obj;
 
      if( ! (minefieldID.equals( rhs.minefieldID) )) ivarsEqual = false;
@@ -922,8 +919,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
      if( ! (requestID == rhs.requestID)) ivarsEqual = false;
      if( ! (pduSequenceNumber == rhs.pduSequenceNumber)) ivarsEqual = false;
      if( ! (numberOfPdus == rhs.numberOfPdus)) ivarsEqual = false;
-     if( ! (numberOfMinesInThisPdu == rhs.numberOfMinesInThisPdu)) ivarsEqual = false;
-     if( ! (numberOfSensorTypes == rhs.numberOfSensorTypes)) ivarsEqual = false;
      if( ! (padding == rhs.padding)) ivarsEqual = false;
      if( ! (dataFilter.equals( rhs.dataFilter) )) ivarsEqual = false;
      if( ! (mineType.equals( rhs.mineType) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/MinefieldFamilyPdu.java b/src-generated/edu/nps/moves/dis7/MinefieldFamilyPdu.java
index 393fcb9a7f..afe98d1209 100644
--- a/src-generated/edu/nps/moves/dis7/MinefieldFamilyPdu.java
+++ b/src-generated/edu/nps/moves/dis7/MinefieldFamilyPdu.java
@@ -38,7 +38,7 @@ public int getMarshalledSize()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -56,7 +56,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -100,7 +100,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -122,9 +122,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof MinefieldFamilyPdu))
-        return false;
-
      final MinefieldFamilyPdu rhs = (MinefieldFamilyPdu)obj;
 
     return ivarsEqual && super.equalsImpl(rhs);
diff --git a/src-generated/edu/nps/moves/dis7/MinefieldIdentifier.java b/src-generated/edu/nps/moves/dis7/MinefieldIdentifier.java
index 910fb447f2..90fdb96b1f 100644
--- a/src-generated/edu/nps/moves/dis7/MinefieldIdentifier.java
+++ b/src-generated/edu/nps/moves/dis7/MinefieldIdentifier.java
@@ -70,7 +70,7 @@ public short getMinefieldNumber()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -89,7 +89,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -135,7 +135,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -162,9 +162,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof MinefieldIdentifier))
-        return false;
-
      final MinefieldIdentifier rhs = (MinefieldIdentifier)obj;
 
      if( ! (simulationAddress.equals( rhs.simulationAddress) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/MinefieldQueryPdu.java b/src-generated/edu/nps/moves/dis7/MinefieldQueryPdu.java
index dbb8714ce1..02d9e19268 100644
--- a/src-generated/edu/nps/moves/dis7/MinefieldQueryPdu.java
+++ b/src-generated/edu/nps/moves/dis7/MinefieldQueryPdu.java
@@ -189,7 +189,7 @@ public List<MinefieldSensorType> getSensorTypes()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -229,7 +229,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -343,7 +343,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -365,17 +365,12 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof MinefieldQueryPdu))
-        return false;
-
      final MinefieldQueryPdu rhs = (MinefieldQueryPdu)obj;
 
      if( ! (minefieldID.equals( rhs.minefieldID) )) ivarsEqual = false;
      if( ! (requestingEntityID.equals( rhs.requestingEntityID) )) ivarsEqual = false;
      if( ! (requestID == rhs.requestID)) ivarsEqual = false;
-     if( ! (numberOfPerimeterPoints == rhs.numberOfPerimeterPoints)) ivarsEqual = false;
      if( ! (padding == rhs.padding)) ivarsEqual = false;
-     if( ! (numberOfSensorTypes == rhs.numberOfSensorTypes)) ivarsEqual = false;
      if( ! (dataFilter.equals( rhs.dataFilter) )) ivarsEqual = false;
      if( ! (requestedMineType.equals( rhs.requestedMineType) )) ivarsEqual = false;
 
diff --git a/src-generated/edu/nps/moves/dis7/MinefieldResponseNACKPdu.java b/src-generated/edu/nps/moves/dis7/MinefieldResponseNACKPdu.java
index 0c0e0669fc..1515759946 100644
--- a/src-generated/edu/nps/moves/dis7/MinefieldResponseNACKPdu.java
+++ b/src-generated/edu/nps/moves/dis7/MinefieldResponseNACKPdu.java
@@ -110,7 +110,7 @@ public byte[] getMissingPduSequenceNumbers()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -118,7 +118,7 @@ public void marshal(DataOutputStream dos)
        minefieldID.marshal(dos);
        requestingEntityID.marshal(dos);
        dos.writeByte( (byte)requestID);
-       dos.writeByte( (byte)numberOfMissingPdus);
+       dos.writeByte( (byte)missingPduSequenceNumbers.length);
 
        for(int idx = 0; idx < missingPduSequenceNumbers.length; idx++)
            dos.writeByte(missingPduSequenceNumbers[idx]);
@@ -136,7 +136,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -150,8 +150,8 @@ public int unmarshal(DataInputStream dis)
         numberOfMissingPdus = (byte)dis.readUnsignedByte();
         uPosition += 1;
         for(int idx = 0; idx < missingPduSequenceNumbers.length; idx++)
-            missingPduSequenceNumbers[idx] = dis.readByte(); // mike check
-        uPosition += missingPduSequenceNumbers.length; // todo, multiply by prim size mike
+            missingPduSequenceNumbers[idx] = dis.readByte();
+        uPosition += (missingPduSequenceNumbers.length * 1);
     }
     catch(Exception e)
     { 
@@ -174,7 +174,7 @@ public void marshal(java.nio.ByteBuffer buff) throws Exception
    minefieldID.marshal(buff);
    requestingEntityID.marshal(buff);
    buff.put( (byte)requestID);
-   buff.put( (byte)numberOfMissingPdus);
+   buff.put( (byte)missingPduSequenceNumbers.length);
 
    for(int idx = 0; idx < missingPduSequenceNumbers.length; idx++)
        buff.put((byte)missingPduSequenceNumbers[idx]);
@@ -203,7 +203,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -225,15 +225,11 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof MinefieldResponseNACKPdu))
-        return false;
-
      final MinefieldResponseNACKPdu rhs = (MinefieldResponseNACKPdu)obj;
 
      if( ! (minefieldID.equals( rhs.minefieldID) )) ivarsEqual = false;
      if( ! (requestingEntityID.equals( rhs.requestingEntityID) )) ivarsEqual = false;
      if( ! (requestID == rhs.requestID)) ivarsEqual = false;
-     if( ! (numberOfMissingPdus == rhs.numberOfMissingPdus)) ivarsEqual = false;
 
      for(int idx = 0; idx < 0; idx++)
      {
diff --git a/src-generated/edu/nps/moves/dis7/MinefieldSensorType.java b/src-generated/edu/nps/moves/dis7/MinefieldSensorType.java
index be797e8523..7028829338 100644
--- a/src-generated/edu/nps/moves/dis7/MinefieldSensorType.java
+++ b/src-generated/edu/nps/moves/dis7/MinefieldSensorType.java
@@ -53,7 +53,7 @@ public short getSensorType()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -71,7 +71,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -114,7 +114,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -141,9 +141,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof MinefieldSensorType))
-        return false;
-
      final MinefieldSensorType rhs = (MinefieldSensorType)obj;
 
      if( ! (sensorType == rhs.sensorType)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/MinefieldStatePdu.java b/src-generated/edu/nps/moves/dis7/MinefieldStatePdu.java
index 0ea8d68432..5cfca1fccd 100644
--- a/src-generated/edu/nps/moves/dis7/MinefieldStatePdu.java
+++ b/src-generated/edu/nps/moves/dis7/MinefieldStatePdu.java
@@ -224,7 +224,7 @@ public List<EntityType> getMineType()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -266,7 +266,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -386,7 +386,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -408,17 +408,12 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof MinefieldStatePdu))
-        return false;
-
      final MinefieldStatePdu rhs = (MinefieldStatePdu)obj;
 
      if( ! (minefieldID.equals( rhs.minefieldID) )) ivarsEqual = false;
      if( ! (minefieldSequence == rhs.minefieldSequence)) ivarsEqual = false;
      if( ! (forceID == rhs.forceID)) ivarsEqual = false;
-     if( ! (numberOfPerimeterPoints == rhs.numberOfPerimeterPoints)) ivarsEqual = false;
      if( ! (minefieldType.equals( rhs.minefieldType) )) ivarsEqual = false;
-     if( ! (numberOfMineTypes == rhs.numberOfMineTypes)) ivarsEqual = false;
      if( ! (minefieldLocation.equals( rhs.minefieldLocation) )) ivarsEqual = false;
      if( ! (minefieldOrientation.equals( rhs.minefieldOrientation) )) ivarsEqual = false;
      if( ! (protocolMode.equals( rhs.protocolMode) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/ModulationParameters.java b/src-generated/edu/nps/moves/dis7/ModulationParameters.java
index 2ab7d8084b..3584c4ac09 100644
--- a/src-generated/edu/nps/moves/dis7/ModulationParameters.java
+++ b/src-generated/edu/nps/moves/dis7/ModulationParameters.java
@@ -55,7 +55,7 @@ public byte[] getRecordSpecificFields()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -77,14 +77,14 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
     {
         for(int idx = 0; idx < recordSpecificFields.length; idx++)
-            recordSpecificFields[idx] = dis.readByte(); // mike check
-        uPosition += recordSpecificFields.length; // todo, multiply by prim size mike
+            recordSpecificFields[idx] = dis.readByte();
+        uPosition += (recordSpecificFields.length * 1);
         padding = new byte[Align.from64bits(uPosition,dis)];
         uPosition += padding.length;
     }
@@ -129,7 +129,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -156,9 +156,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof ModulationParameters))
-        return false;
-
      final ModulationParameters rhs = (ModulationParameters)obj;
 
 
diff --git a/src-generated/edu/nps/moves/dis7/ModulationType.java b/src-generated/edu/nps/moves/dis7/ModulationType.java
index 132a51c8ba..4015c18f76 100644
--- a/src-generated/edu/nps/moves/dis7/ModulationType.java
+++ b/src-generated/edu/nps/moves/dis7/ModulationType.java
@@ -104,7 +104,7 @@ public TransmitterModulationTypeSystem getRadioSystem()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -125,7 +125,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -180,7 +180,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -207,9 +207,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof ModulationType))
-        return false;
-
      final ModulationType rhs = (ModulationType)obj;
 
      if( ! (spreadSpectrum == rhs.spreadSpectrum)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/Munition.java b/src-generated/edu/nps/moves/dis7/Munition.java
index a0c0d4877e..c50faeb54f 100644
--- a/src-generated/edu/nps/moves/dis7/Munition.java
+++ b/src-generated/edu/nps/moves/dis7/Munition.java
@@ -121,7 +121,7 @@ public byte getPadding()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -143,7 +143,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -201,7 +201,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -228,9 +228,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof Munition))
-        return false;
-
      final Munition rhs = (Munition)obj;
 
      if( ! (munitionType.equals( rhs.munitionType) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/MunitionDescriptor.java b/src-generated/edu/nps/moves/dis7/MunitionDescriptor.java
index 094056e80c..feedb76224 100644
--- a/src-generated/edu/nps/moves/dis7/MunitionDescriptor.java
+++ b/src-generated/edu/nps/moves/dis7/MunitionDescriptor.java
@@ -121,7 +121,7 @@ public short getRate()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -143,7 +143,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -201,7 +201,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -228,9 +228,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof MunitionDescriptor))
-        return false;
-
      final MunitionDescriptor rhs = (MunitionDescriptor)obj;
 
      if( ! (munitionType.equals( rhs.munitionType) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/MunitionReload.java b/src-generated/edu/nps/moves/dis7/MunitionReload.java
index 39fbaad924..868e2b5bdb 100644
--- a/src-generated/edu/nps/moves/dis7/MunitionReload.java
+++ b/src-generated/edu/nps/moves/dis7/MunitionReload.java
@@ -138,7 +138,7 @@ public int getMaximumQuantityReloadTime()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -161,7 +161,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -223,7 +223,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -250,9 +250,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof MunitionReload))
-        return false;
-
      final MunitionReload rhs = (MunitionReload)obj;
 
      if( ! (munitionType.equals( rhs.munitionType) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/NamedLocationIdentification.java b/src-generated/edu/nps/moves/dis7/NamedLocationIdentification.java
index 8c2da6752b..0a0463a2e7 100644
--- a/src-generated/edu/nps/moves/dis7/NamedLocationIdentification.java
+++ b/src-generated/edu/nps/moves/dis7/NamedLocationIdentification.java
@@ -70,7 +70,7 @@ public short getStationNumber()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -89,7 +89,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -136,7 +136,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -163,9 +163,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof NamedLocationIdentification))
-        return false;
-
      final NamedLocationIdentification rhs = (NamedLocationIdentification)obj;
 
      if( ! (stationName == rhs.stationName)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/ObjectIdentifier.java b/src-generated/edu/nps/moves/dis7/ObjectIdentifier.java
index 95605d0b85..070fa52858 100644
--- a/src-generated/edu/nps/moves/dis7/ObjectIdentifier.java
+++ b/src-generated/edu/nps/moves/dis7/ObjectIdentifier.java
@@ -70,7 +70,7 @@ public short getObjectNumber()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -89,7 +89,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -135,7 +135,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -162,9 +162,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof ObjectIdentifier))
-        return false;
-
      final ObjectIdentifier rhs = (ObjectIdentifier)obj;
 
      if( ! (simulationAddress.equals( rhs.simulationAddress) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/ObjectType.java b/src-generated/edu/nps/moves/dis7/ObjectType.java
index 88f0b50b68..0093c5bf33 100644
--- a/src-generated/edu/nps/moves/dis7/ObjectType.java
+++ b/src-generated/edu/nps/moves/dis7/ObjectType.java
@@ -104,7 +104,7 @@ public byte getSubCategory()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -125,7 +125,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -180,7 +180,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -207,9 +207,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof ObjectType))
-        return false;
-
      final ObjectType rhs = (ObjectType)obj;
 
      if( ! (domain == rhs.domain)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/OwnershipStatusRecord.java b/src-generated/edu/nps/moves/dis7/OwnershipStatusRecord.java
index d7018b9cd9..88771eadca 100644
--- a/src-generated/edu/nps/moves/dis7/OwnershipStatusRecord.java
+++ b/src-generated/edu/nps/moves/dis7/OwnershipStatusRecord.java
@@ -87,7 +87,7 @@ public byte getPadding()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -107,7 +107,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -157,7 +157,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -184,9 +184,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof OwnershipStatusRecord))
-        return false;
-
      final OwnershipStatusRecord rhs = (OwnershipStatusRecord)obj;
 
      if( ! (entityId.equals( rhs.entityId) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/Pdu.java b/src-generated/edu/nps/moves/dis7/Pdu.java
index f76766f6cb..97ee56ab08 100644
--- a/src-generated/edu/nps/moves/dis7/Pdu.java
+++ b/src-generated/edu/nps/moves/dis7/Pdu.java
@@ -13,7 +13,7 @@ import edu.nps.moves.dis7.enumerations.*;
  * Base class of PduBase and LiveEntityPdu
  * IEEE Std 1278.1-2012, IEEE Standard for Distributed Interactive Simulation—Application Protocols
  */
-public abstract class Pdu extends Object implements Serializable
+public abstract class Pdu extends Object implements Serializable,Marshaller
 {
    /** The version of the protocol. 5=DIS-1995, 6=DIS-1998, 7=DIS-2012 uid 3 */
    protected DISProtocolVersion protocolVersion = DISProtocolVersion.IEEE_12781_2012;
@@ -138,7 +138,7 @@ public short getLength()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -161,7 +161,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -238,7 +238,7 @@ public byte[] marshal() throws Exception
     return data;
 }
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -265,9 +265,6 @@ public byte[] marshal() throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof Pdu))
-        return false;
-
      final Pdu rhs = (Pdu)obj;
 
      if( ! (protocolVersion == rhs.protocolVersion)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/PduBase.java b/src-generated/edu/nps/moves/dis7/PduBase.java
index 99e1dc302a..5f404c6e5b 100644
--- a/src-generated/edu/nps/moves/dis7/PduBase.java
+++ b/src-generated/edu/nps/moves/dis7/PduBase.java
@@ -71,7 +71,7 @@ public byte getPadding()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -91,7 +91,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -142,7 +142,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -164,9 +164,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof PduBase))
-        return false;
-
      final PduBase rhs = (PduBase)obj;
 
      if( ! (pduStatus.equals( rhs.pduStatus) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/PointObjectStatePdu.java b/src-generated/edu/nps/moves/dis7/PointObjectStatePdu.java
index cd4aec1e8d..07c4b9538e 100644
--- a/src-generated/edu/nps/moves/dis7/PointObjectStatePdu.java
+++ b/src-generated/edu/nps/moves/dis7/PointObjectStatePdu.java
@@ -275,7 +275,7 @@ public int getPad2()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -307,7 +307,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -398,7 +398,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -420,9 +420,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof PointObjectStatePdu))
-        return false;
-
      final PointObjectStatePdu rhs = (PointObjectStatePdu)obj;
 
      if( ! (objectID.equals( rhs.objectID) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/PropulsionSystemData.java b/src-generated/edu/nps/moves/dis7/PropulsionSystemData.java
index a5cf9c4f41..a48da9fa4e 100644
--- a/src-generated/edu/nps/moves/dis7/PropulsionSystemData.java
+++ b/src-generated/edu/nps/moves/dis7/PropulsionSystemData.java
@@ -70,7 +70,7 @@ public float getEngineRpm()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -89,7 +89,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -136,7 +136,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -163,9 +163,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof PropulsionSystemData))
-        return false;
-
      final PropulsionSystemData rhs = (PropulsionSystemData)obj;
 
      if( ! (powerSetting == rhs.powerSetting)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/ProtocolMode.java b/src-generated/edu/nps/moves/dis7/ProtocolMode.java
index 0f6555a519..2187fc3d0e 100644
--- a/src-generated/edu/nps/moves/dis7/ProtocolMode.java
+++ b/src-generated/edu/nps/moves/dis7/ProtocolMode.java
@@ -53,7 +53,7 @@ public short getProtocolMode()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -71,7 +71,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -114,7 +114,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -141,9 +141,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof ProtocolMode))
-        return false;
-
      final ProtocolMode rhs = (ProtocolMode)obj;
 
      if( ! (protocolMode == rhs.protocolMode)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/RadioCommsHeader.java b/src-generated/edu/nps/moves/dis7/RadioCommsHeader.java
index 17633c1119..c84b373ba1 100644
--- a/src-generated/edu/nps/moves/dis7/RadioCommsHeader.java
+++ b/src-generated/edu/nps/moves/dis7/RadioCommsHeader.java
@@ -69,7 +69,7 @@ public short getRadioNumber()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -88,7 +88,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -134,7 +134,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -161,9 +161,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof RadioCommsHeader))
-        return false;
-
      final RadioCommsHeader rhs = (RadioCommsHeader)obj;
 
      if( ! (radioReferenceID.equals( rhs.radioReferenceID) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/RadioCommunicationsFamilyPdu.java b/src-generated/edu/nps/moves/dis7/RadioCommunicationsFamilyPdu.java
index e8b02d6609..9911310ae0 100644
--- a/src-generated/edu/nps/moves/dis7/RadioCommunicationsFamilyPdu.java
+++ b/src-generated/edu/nps/moves/dis7/RadioCommunicationsFamilyPdu.java
@@ -38,7 +38,7 @@ public int getMarshalledSize()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -56,7 +56,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -100,7 +100,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -122,9 +122,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof RadioCommunicationsFamilyPdu))
-        return false;
-
      final RadioCommunicationsFamilyPdu rhs = (RadioCommunicationsFamilyPdu)obj;
 
     return ivarsEqual && super.equalsImpl(rhs);
diff --git a/src-generated/edu/nps/moves/dis7/RadioIdentifier.java b/src-generated/edu/nps/moves/dis7/RadioIdentifier.java
index 2b1e9dd832..1d5a651dea 100644
--- a/src-generated/edu/nps/moves/dis7/RadioIdentifier.java
+++ b/src-generated/edu/nps/moves/dis7/RadioIdentifier.java
@@ -104,7 +104,7 @@ public short getRadioNumber()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -125,7 +125,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -180,7 +180,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -207,9 +207,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof RadioIdentifier))
-        return false;
-
      final RadioIdentifier rhs = (RadioIdentifier)obj;
 
      if( ! (siteNumber == rhs.siteNumber)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/RadioType.java b/src-generated/edu/nps/moves/dis7/RadioType.java
index c5a748a3b0..6737100d5d 100644
--- a/src-generated/edu/nps/moves/dis7/RadioType.java
+++ b/src-generated/edu/nps/moves/dis7/RadioType.java
@@ -153,7 +153,7 @@ public byte getExtra()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -177,7 +177,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -244,7 +244,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -271,9 +271,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof RadioType))
-        return false;
-
      final RadioType rhs = (RadioType)obj;
 
      if( ! (entityKind == rhs.entityKind)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/ReceiverPdu.java b/src-generated/edu/nps/moves/dis7/ReceiverPdu.java
index 8a79fa451b..a8684587b6 100644
--- a/src-generated/edu/nps/moves/dis7/ReceiverPdu.java
+++ b/src-generated/edu/nps/moves/dis7/ReceiverPdu.java
@@ -138,7 +138,7 @@ public short getTransmitterRadioId()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -162,7 +162,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -228,7 +228,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -250,9 +250,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof ReceiverPdu))
-        return false;
-
      final ReceiverPdu rhs = (ReceiverPdu)obj;
 
      if( ! (header.equals( rhs.header) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/RecordQueryRPdu.java b/src-generated/edu/nps/moves/dis7/RecordQueryRPdu.java
index f724190a4a..4106e6306c 100644
--- a/src-generated/edu/nps/moves/dis7/RecordQueryRPdu.java
+++ b/src-generated/edu/nps/moves/dis7/RecordQueryRPdu.java
@@ -148,7 +148,7 @@ public List<RecordQuerySpecification> getRecordIDs()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -179,7 +179,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -268,7 +268,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -290,9 +290,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof RecordQueryRPdu))
-        return false;
-
      final RecordQueryRPdu rhs = (RecordQueryRPdu)obj;
 
      if( ! (requestID == rhs.requestID)) ivarsEqual = false;
@@ -300,7 +297,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
      if( ! (pad1 == rhs.pad1)) ivarsEqual = false;
      if( ! (eventType == rhs.eventType)) ivarsEqual = false;
      if( ! (time == rhs.time)) ivarsEqual = false;
-     if( ! (numberOfRecords == rhs.numberOfRecords)) ivarsEqual = false;
 
      for(int idx = 0; idx < recordIDs.size(); idx++)
         if( ! ( recordIDs.get(idx).equals(rhs.recordIDs.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/RecordQuerySpecification.java b/src-generated/edu/nps/moves/dis7/RecordQuerySpecification.java
index a7a4fa6eb6..a945b34e17 100644
--- a/src-generated/edu/nps/moves/dis7/RecordQuerySpecification.java
+++ b/src-generated/edu/nps/moves/dis7/RecordQuerySpecification.java
@@ -18,7 +18,7 @@ public class RecordQuerySpecification extends Object implements Serializable
    protected int  numberOfRecords;
 
    /** variable length list of 32 bit record types uid = 66 */
-   protected List< VariableRecordTypes > recordIDs = new ArrayList< VariableRecordTypes >();
+   protected List< VariableRecordType > recordIDs = new ArrayList< VariableRecordType >();
  
 
 /** Constructor */
@@ -34,7 +34,7 @@ public int getMarshalledSize()
    marshalSize += 4;  // numberOfRecords
    for(int idx=0; idx < recordIDs.size(); idx++)
    {
-        VariableRecordTypes listElement = recordIDs.get(idx);
+        VariableRecordType listElement = recordIDs.get(idx);
         marshalSize += listElement.getMarshalledSize();
    }
 
@@ -43,14 +43,14 @@ public int getMarshalledSize()
 
 
 /** Setter for {@link RecordQuerySpecification#recordIDs}*/
-public RecordQuerySpecification setRecordIDs(List<VariableRecordTypes> pRecordIDs)
+public RecordQuerySpecification setRecordIDs(List<VariableRecordType> pRecordIDs)
 {
     recordIDs = pRecordIDs;
     return this;
 }
 
 /** Getter for {@link RecordQuerySpecification#recordIDs}*/
-public List<VariableRecordTypes> getRecordIDs()
+public List<VariableRecordType> getRecordIDs()
 {
     return recordIDs; 
 }
@@ -60,7 +60,7 @@ public List<VariableRecordTypes> getRecordIDs()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -68,8 +68,8 @@ public void marshal(DataOutputStream dos)
 
        for(int idx = 0; idx < recordIDs.size(); idx++)
        {
-            VariableRecordTypes aVariableRecordTypes = recordIDs.get(idx);
-            aVariableRecordTypes.marshal(dos);
+            VariableRecordType aVariableRecordType = recordIDs.get(idx);
+            aVariableRecordType.marshal(dos);
        }
 
     }
@@ -85,7 +85,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -94,7 +94,7 @@ public int unmarshal(DataInputStream dis)
         uPosition += 4;
         for(int idx = 0; idx < numberOfRecords; idx++)
         {
-            VariableRecordTypes anX = VariableRecordTypes.unmarshalEnum(dis);
+            VariableRecordType anX = VariableRecordType.unmarshalEnum(dis);
             recordIDs.add(anX);
             uPosition += anX.getMarshalledSize();
         }
@@ -121,8 +121,8 @@ public void marshal(java.nio.ByteBuffer buff) throws Exception
 
    for(int idx = 0; idx < recordIDs.size(); idx++)
    {
-        VariableRecordTypes aVariableRecordTypes = (VariableRecordTypes)recordIDs.get(idx);
-        aVariableRecordTypes.marshal(buff);
+        VariableRecordType aVariableRecordType = (VariableRecordType)recordIDs.get(idx);
+        aVariableRecordType.marshal(buff);
    }
 
 }
@@ -140,7 +140,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
     numberOfRecords = buff.getInt();
     for(int idx = 0; idx < numberOfRecords; idx++)
     {
-    VariableRecordTypes anX = VariableRecordTypes.unmarshalEnum(buff);
+    VariableRecordType anX = VariableRecordType.unmarshalEnum(buff);
     recordIDs.add(anX);
     }
 
@@ -148,7 +148,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -175,12 +175,8 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof RecordQuerySpecification))
-        return false;
-
      final RecordQuerySpecification rhs = (RecordQuerySpecification)obj;
 
-     if( ! (numberOfRecords == rhs.numberOfRecords)) ivarsEqual = false;
 
      for(int idx = 0; idx < recordIDs.size(); idx++)
         if( ! ( recordIDs.get(idx).equals(rhs.recordIDs.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/RecordRPdu.java b/src-generated/edu/nps/moves/dis7/RecordRPdu.java
index c2c0d0da6a..007fd50a3d 100644
--- a/src-generated/edu/nps/moves/dis7/RecordRPdu.java
+++ b/src-generated/edu/nps/moves/dis7/RecordRPdu.java
@@ -130,7 +130,7 @@ public List<RecordSpecification> getRecordSets()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -160,7 +160,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -245,7 +245,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -267,16 +267,12 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof RecordRPdu))
-        return false;
-
      final RecordRPdu rhs = (RecordRPdu)obj;
 
      if( ! (requestID == rhs.requestID)) ivarsEqual = false;
      if( ! (requiredReliabilityService == rhs.requiredReliabilityService)) ivarsEqual = false;
      if( ! (pad1 == rhs.pad1)) ivarsEqual = false;
      if( ! (eventType == rhs.eventType)) ivarsEqual = false;
-     if( ! (numberOfRecordSets == rhs.numberOfRecordSets)) ivarsEqual = false;
 
      for(int idx = 0; idx < recordSets.size(); idx++)
         if( ! ( recordSets.get(idx).equals(rhs.recordSets.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/RecordSpecification.java b/src-generated/edu/nps/moves/dis7/RecordSpecification.java
index 778351d0aa..ca678e2f98 100644
--- a/src-generated/edu/nps/moves/dis7/RecordSpecification.java
+++ b/src-generated/edu/nps/moves/dis7/RecordSpecification.java
@@ -61,7 +61,7 @@ public List<RecordSpecificationElement> getRecordSets()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -86,7 +86,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -150,7 +150,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -177,12 +177,8 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof RecordSpecification))
-        return false;
-
      final RecordSpecification rhs = (RecordSpecification)obj;
 
-     if( ! (numberOfRecordSets == rhs.numberOfRecordSets)) ivarsEqual = false;
 
      for(int idx = 0; idx < recordSets.size(); idx++)
         if( ! ( recordSets.get(idx).equals(rhs.recordSets.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/RecordSpecificationElement.java b/src-generated/edu/nps/moves/dis7/RecordSpecificationElement.java
index f26c50b80f..f63e71389e 100644
--- a/src-generated/edu/nps/moves/dis7/RecordSpecificationElement.java
+++ b/src-generated/edu/nps/moves/dis7/RecordSpecificationElement.java
@@ -10,13 +10,13 @@ import java.io.*;
 import edu.nps.moves.dis7.enumerations.*;
 
 /**
- * Synthetic record, made up from section 6.2.72. This is used to acheive a repeating variable list element.
+ * Synthetic record, made up from section 6.2.73. This is used to achieve a repeating variable list element.<p>recordLength, recordCount and recordValues must be set by hand so the.
  * IEEE Std 1278.1-2012, IEEE Standard for Distributed Interactive Simulation—Application Protocols
  */
 public class RecordSpecificationElement extends Object implements Serializable
 {
    /** the data structure used to convey the parameter values of the record for each record. 32 bit enumeration. uid = 66 */
-   protected VariableRecordTypes recordID = VariableRecordTypes.values()[0];
+   protected VariableRecordType recordID = VariableRecordType.values()[0];
 
    /** the serial number of the first record in the block of records */
    protected int  recordSetSerialNumber;
@@ -32,7 +32,8 @@ public class RecordSpecificationElement extends Object implements Serializable
    /** the concatenated records of the format specified by the Record ID field. The length of this field is the Record Length multiplied by the Record Count, in units of bits. */
    protected byte[]  recordValues = new byte[0]; 
 
-   private byte[] padTo64 = new byte[0]; // pad to 64-bit boundary
+   /** used if required to make entire record size an even multiple of 8 bytes */
+   protected byte[]  padTo64 = new byte[0]; 
 
 
 /** Constructor */
@@ -51,21 +52,21 @@ public int getMarshalledSize()
    marshalSize += 2;  // recordLength
    marshalSize += 2;  // recordCount
    marshalSize += recordValues.length * 1;
-   marshalSize += padTo64.length;
+   marshalSize += padTo64.length * 1;
 
    return marshalSize;
 }
 
 
 /** Setter for {@link RecordSpecificationElement#recordID}*/
-public RecordSpecificationElement setRecordID(VariableRecordTypes pRecordID)
+public RecordSpecificationElement setRecordID(VariableRecordType pRecordID)
 {
     recordID = pRecordID;
     return this;
 }
 
 /** Getter for {@link RecordSpecificationElement#recordID}*/
-public VariableRecordTypes getRecordID()
+public VariableRecordType getRecordID()
 {
     return recordID; 
 }
@@ -135,12 +136,25 @@ public byte[] getRecordValues()
     return recordValues; 
 }
 
+/** Setter for {@link RecordSpecificationElement#padTo64}*/
+public RecordSpecificationElement setPadTo64(byte[] pPadTo64)
+{
+    padTo64 = pPadTo64;
+    return this;
+}
+
+/** Getter for {@link RecordSpecificationElement#padTo64}*/
+public byte[] getPadTo64()
+{
+    return padTo64; 
+}
+
 /**
  * Serializes an object to a DataOutputStream.
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -153,7 +167,10 @@ public void marshal(DataOutputStream dos)
        for(int idx = 0; idx < recordValues.length; idx++)
            dos.writeByte(recordValues[idx]);
 
-       padTo64 = new byte[Align.to64bits(dos)];
+
+       for(int idx = 0; idx < padTo64.length; idx++)
+           dos.writeByte(padTo64[idx]);
+
     }
     catch(Exception e)
     {
@@ -167,12 +184,12 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
     {
-        recordID = VariableRecordTypes.unmarshalEnum(dis);
+        recordID = VariableRecordType.unmarshalEnum(dis);
         uPosition += recordID.getMarshalledSize();
         recordSetSerialNumber = dis.readInt();
         uPosition += 4;
@@ -183,10 +200,11 @@ public int unmarshal(DataInputStream dis)
         recordCount = (short)dis.readUnsignedShort();
         uPosition += 2;
         for(int idx = 0; idx < recordValues.length; idx++)
-            recordValues[idx] = dis.readByte(); // mike check
-        uPosition += recordValues.length; // todo, multiply by prim size mike
-        padTo64 = new byte[Align.from64bits(uPosition,dis)];
-        uPosition += padTo64.length;
+            recordValues[idx] = dis.readByte();
+        uPosition += (recordValues.length * 1);
+        for(int idx = 0; idx < padTo64.length; idx++)
+            padTo64[idx] = dis.readByte();
+        uPosition += (padTo64.length * 1);
     }
     catch(Exception e)
     { 
@@ -214,7 +232,10 @@ public void marshal(java.nio.ByteBuffer buff) throws Exception
    for(int idx = 0; idx < recordValues.length; idx++)
        buff.put((byte)recordValues[idx]);
 
-   padTo64 = new byte[Align.to64bits(buff)];
+
+   for(int idx = 0; idx < padTo64.length; idx++)
+       buff.put((byte)padTo64[idx]);
+
 }
 
 /**
@@ -227,19 +248,20 @@ public void marshal(java.nio.ByteBuffer buff) throws Exception
  */
 public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 {
-    recordID = VariableRecordTypes.unmarshalEnum(buff);
+    recordID = VariableRecordType.unmarshalEnum(buff);
     recordSetSerialNumber = buff.getInt();
     padding = buff.getInt();
     recordLength = (short)(buff.getShort() & 0xFFFF);
     recordCount = (short)(buff.getShort() & 0xFFFF);
     for(int idx = 0; idx < recordValues.length; idx++)
         recordValues[idx] = buff.get();
-    padTo64 = new byte[Align.from64bits(buff)];
+    for(int idx = 0; idx < padTo64.length; idx++)
+        padTo64[idx] = buff.get();
     return getMarshalledSize();
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -266,9 +288,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof RecordSpecificationElement))
-        return false;
-
      final RecordSpecificationElement rhs = (RecordSpecificationElement)obj;
 
      if( ! (recordID == rhs.recordID)) ivarsEqual = false;
@@ -282,6 +301,12 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
           if(!(recordValues[idx] == rhs.recordValues[idx])) ivarsEqual = false;
      }
 
+
+     for(int idx = 0; idx < 0; idx++)
+     {
+          if(!(padTo64[idx] == rhs.padTo64[idx])) ivarsEqual = false;
+     }
+
     return ivarsEqual;
  }
 } // end of class
diff --git a/src-generated/edu/nps/moves/dis7/Relationship.java b/src-generated/edu/nps/moves/dis7/Relationship.java
index 566cc3652d..f76bafb9fd 100644
--- a/src-generated/edu/nps/moves/dis7/Relationship.java
+++ b/src-generated/edu/nps/moves/dis7/Relationship.java
@@ -70,7 +70,7 @@ public IsPartOfPosition getPosition()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -89,7 +89,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -136,7 +136,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -163,9 +163,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof Relationship))
-        return false;
-
      final Relationship rhs = (Relationship)obj;
 
      if( ! (nature == rhs.nature)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/RemoveEntityPdu.java b/src-generated/edu/nps/moves/dis7/RemoveEntityPdu.java
index 6192929b9f..b41ffee477 100644
--- a/src-generated/edu/nps/moves/dis7/RemoveEntityPdu.java
+++ b/src-generated/edu/nps/moves/dis7/RemoveEntityPdu.java
@@ -55,7 +55,7 @@ public int getRequestID()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -74,7 +74,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -122,7 +122,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -144,9 +144,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof RemoveEntityPdu))
-        return false;
-
      final RemoveEntityPdu rhs = (RemoveEntityPdu)obj;
 
      if( ! (requestID == rhs.requestID)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/RemoveEntityRPdu.java b/src-generated/edu/nps/moves/dis7/RemoveEntityRPdu.java
index f2007849a4..4c19212cea 100644
--- a/src-generated/edu/nps/moves/dis7/RemoveEntityRPdu.java
+++ b/src-generated/edu/nps/moves/dis7/RemoveEntityRPdu.java
@@ -104,7 +104,7 @@ public int getRequestID()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -126,7 +126,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -186,7 +186,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -208,9 +208,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof RemoveEntityRPdu))
-        return false;
-
      final RemoveEntityRPdu rhs = (RemoveEntityRPdu)obj;
 
      if( ! (requiredReliabilityService == rhs.requiredReliabilityService)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/RepairCompletePdu.java b/src-generated/edu/nps/moves/dis7/RepairCompletePdu.java
index 2a0b3b006d..51ed130a90 100644
--- a/src-generated/edu/nps/moves/dis7/RepairCompletePdu.java
+++ b/src-generated/edu/nps/moves/dis7/RepairCompletePdu.java
@@ -106,7 +106,7 @@ public short getPadding4()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -128,7 +128,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -186,7 +186,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -208,9 +208,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof RepairCompletePdu))
-        return false;
-
      final RepairCompletePdu rhs = (RepairCompletePdu)obj;
 
      if( ! (receivingEntityID.equals( rhs.receivingEntityID) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/RepairResponsePdu.java b/src-generated/edu/nps/moves/dis7/RepairResponsePdu.java
index 1303c5ad23..21ce571c8e 100644
--- a/src-generated/edu/nps/moves/dis7/RepairResponsePdu.java
+++ b/src-generated/edu/nps/moves/dis7/RepairResponsePdu.java
@@ -123,7 +123,7 @@ public short getPadding2()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -146,7 +146,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -208,7 +208,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -230,9 +230,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof RepairResponsePdu))
-        return false;
-
      final RepairResponsePdu rhs = (RepairResponsePdu)obj;
 
      if( ! (receivingEntityID.equals( rhs.receivingEntityID) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/RequestID.java b/src-generated/edu/nps/moves/dis7/RequestID.java
index 864c75d257..5b1fe7353a 100644
--- a/src-generated/edu/nps/moves/dis7/RequestID.java
+++ b/src-generated/edu/nps/moves/dis7/RequestID.java
@@ -53,7 +53,7 @@ public int getRequestID()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -71,7 +71,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -114,7 +114,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -141,9 +141,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof RequestID))
-        return false;
-
      final RequestID rhs = (RequestID)obj;
 
      if( ! (requestID == rhs.requestID)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/ResupplyCancelPdu.java b/src-generated/edu/nps/moves/dis7/ResupplyCancelPdu.java
index 7ba3f461b3..1f07b38310 100644
--- a/src-generated/edu/nps/moves/dis7/ResupplyCancelPdu.java
+++ b/src-generated/edu/nps/moves/dis7/ResupplyCancelPdu.java
@@ -72,7 +72,7 @@ public EntityID getSupplyingEntityID()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -92,7 +92,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -142,7 +142,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -164,9 +164,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof ResupplyCancelPdu))
-        return false;
-
      final ResupplyCancelPdu rhs = (ResupplyCancelPdu)obj;
 
      if( ! (receivingEntityID.equals( rhs.receivingEntityID) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/ResupplyOfferPdu.java b/src-generated/edu/nps/moves/dis7/ResupplyOfferPdu.java
index c67fa5cc65..2566b6f0e0 100644
--- a/src-generated/edu/nps/moves/dis7/ResupplyOfferPdu.java
+++ b/src-generated/edu/nps/moves/dis7/ResupplyOfferPdu.java
@@ -131,7 +131,7 @@ public List<SupplyQuantity> getSupplies()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -161,7 +161,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -244,7 +244,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -266,14 +266,10 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof ResupplyOfferPdu))
-        return false;
-
      final ResupplyOfferPdu rhs = (ResupplyOfferPdu)obj;
 
      if( ! (receivingEntityID.equals( rhs.receivingEntityID) )) ivarsEqual = false;
      if( ! (supplyingEntityID.equals( rhs.supplyingEntityID) )) ivarsEqual = false;
-     if( ! (numberOfSupplyTypes == rhs.numberOfSupplyTypes)) ivarsEqual = false;
      if( ! (padding1 == rhs.padding1)) ivarsEqual = false;
      if( ! (padding2 == rhs.padding2)) ivarsEqual = false;
 
diff --git a/src-generated/edu/nps/moves/dis7/ResupplyReceivedPdu.java b/src-generated/edu/nps/moves/dis7/ResupplyReceivedPdu.java
index 05f9345689..fd991f74ab 100644
--- a/src-generated/edu/nps/moves/dis7/ResupplyReceivedPdu.java
+++ b/src-generated/edu/nps/moves/dis7/ResupplyReceivedPdu.java
@@ -131,7 +131,7 @@ public List<SupplyQuantity> getSupplies()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -161,7 +161,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -244,7 +244,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -266,14 +266,10 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof ResupplyReceivedPdu))
-        return false;
-
      final ResupplyReceivedPdu rhs = (ResupplyReceivedPdu)obj;
 
      if( ! (receivingEntityID.equals( rhs.receivingEntityID) )) ivarsEqual = false;
      if( ! (supplyingEntityID.equals( rhs.supplyingEntityID) )) ivarsEqual = false;
-     if( ! (numberOfSupplyTypes == rhs.numberOfSupplyTypes)) ivarsEqual = false;
      if( ! (padding1 == rhs.padding1)) ivarsEqual = false;
      if( ! (padding2 == rhs.padding2)) ivarsEqual = false;
 
diff --git a/src-generated/edu/nps/moves/dis7/SEESPdu.java b/src-generated/edu/nps/moves/dis7/SEESPdu.java
index c5fbc0fd1b..d692d45435 100644
--- a/src-generated/edu/nps/moves/dis7/SEESPdu.java
+++ b/src-generated/edu/nps/moves/dis7/SEESPdu.java
@@ -156,7 +156,7 @@ public List<VectoringNozzleSystem> getVectoringSystemData()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -194,7 +194,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -303,7 +303,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -325,17 +325,12 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof SEESPdu))
-        return false;
-
      final SEESPdu rhs = (SEESPdu)obj;
 
      if( ! (orginatingEntityID.equals( rhs.orginatingEntityID) )) ivarsEqual = false;
      if( ! (infraredSignatureRepresentationIndex == rhs.infraredSignatureRepresentationIndex)) ivarsEqual = false;
      if( ! (acousticSignatureRepresentationIndex == rhs.acousticSignatureRepresentationIndex)) ivarsEqual = false;
      if( ! (radarCrossSectionSignatureRepresentationIndex == rhs.radarCrossSectionSignatureRepresentationIndex)) ivarsEqual = false;
-     if( ! (numberOfPropulsionSystems == rhs.numberOfPropulsionSystems)) ivarsEqual = false;
-     if( ! (numberOfVectoringNozzleSystems == rhs.numberOfVectoringNozzleSystems)) ivarsEqual = false;
 
      for(int idx = 0; idx < propulsionSystemData.size(); idx++)
         if( ! ( propulsionSystemData.get(idx).equals(rhs.propulsionSystemData.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/SecondaryOperationalData.java b/src-generated/edu/nps/moves/dis7/SecondaryOperationalData.java
index 284cb113e9..d928f88e9a 100644
--- a/src-generated/edu/nps/moves/dis7/SecondaryOperationalData.java
+++ b/src-generated/edu/nps/moves/dis7/SecondaryOperationalData.java
@@ -87,7 +87,7 @@ public short getNumberOfIFFFundamentalParameterRecords()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -107,7 +107,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -158,7 +158,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -185,9 +185,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof SecondaryOperationalData))
-        return false;
-
      final SecondaryOperationalData rhs = (SecondaryOperationalData)obj;
 
      if( ! (operationalData1 == rhs.operationalData1)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/Sensor.java b/src-generated/edu/nps/moves/dis7/Sensor.java
index 9c6c6c7497..76f14aa2e5 100644
--- a/src-generated/edu/nps/moves/dis7/Sensor.java
+++ b/src-generated/edu/nps/moves/dis7/Sensor.java
@@ -138,7 +138,7 @@ public short getPadding()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -161,7 +161,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -224,7 +224,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -251,9 +251,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof Sensor))
-        return false;
-
      final Sensor rhs = (Sensor)obj;
 
      if( ! (sensorTypeSource == rhs.sensorTypeSource)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/SeparationVP.java b/src-generated/edu/nps/moves/dis7/SeparationVP.java
index 43c1e2359b..f0e4a32f13 100644
--- a/src-generated/edu/nps/moves/dis7/SeparationVP.java
+++ b/src-generated/edu/nps/moves/dis7/SeparationVP.java
@@ -155,7 +155,7 @@ public NamedLocationIdentification getStationLocation()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -179,7 +179,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -244,7 +244,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -271,9 +271,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof SeparationVP))
-        return false;
-
      final SeparationVP rhs = (SeparationVP)obj;
 
      if( ! (recordType == rhs.recordType)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/ServiceRequestPdu.java b/src-generated/edu/nps/moves/dis7/ServiceRequestPdu.java
index a115eec447..1a3b1986c4 100644
--- a/src-generated/edu/nps/moves/dis7/ServiceRequestPdu.java
+++ b/src-generated/edu/nps/moves/dis7/ServiceRequestPdu.java
@@ -129,7 +129,7 @@ public List<SupplyQuantity> getSupplies()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -159,7 +159,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -242,7 +242,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -264,15 +264,11 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof ServiceRequestPdu))
-        return false;
-
      final ServiceRequestPdu rhs = (ServiceRequestPdu)obj;
 
      if( ! (requestingEntityID.equals( rhs.requestingEntityID) )) ivarsEqual = false;
      if( ! (servicingEntityID.equals( rhs.servicingEntityID) )) ivarsEqual = false;
      if( ! (serviceTypeRequested == rhs.serviceTypeRequested)) ivarsEqual = false;
-     if( ! (numberOfSupplyTypes == rhs.numberOfSupplyTypes)) ivarsEqual = false;
      if( ! (padding1 == rhs.padding1)) ivarsEqual = false;
 
      for(int idx = 0; idx < supplies.size(); idx++)
diff --git a/src-generated/edu/nps/moves/dis7/SetDataPdu.java b/src-generated/edu/nps/moves/dis7/SetDataPdu.java
index 02a604b320..a3d28f6d7f 100644
--- a/src-generated/edu/nps/moves/dis7/SetDataPdu.java
+++ b/src-generated/edu/nps/moves/dis7/SetDataPdu.java
@@ -122,7 +122,7 @@ public List<VariableDatum> getVariableDatums()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -158,7 +158,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -260,7 +260,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -282,15 +282,10 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof SetDataPdu))
-        return false;
-
      final SetDataPdu rhs = (SetDataPdu)obj;
 
      if( ! (requestID == rhs.requestID)) ivarsEqual = false;
      if( ! (padding1 == rhs.padding1)) ivarsEqual = false;
-     if( ! (numberOfFixedDatumRecords == rhs.numberOfFixedDatumRecords)) ivarsEqual = false;
-     if( ! (numberOfVariableDatumRecords == rhs.numberOfVariableDatumRecords)) ivarsEqual = false;
 
      for(int idx = 0; idx < fixedDatums.size(); idx++)
         if( ! ( fixedDatums.get(idx).equals(rhs.fixedDatums.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/SetDataRPdu.java b/src-generated/edu/nps/moves/dis7/SetDataRPdu.java
index 4e46bbf59c..956a186b55 100644
--- a/src-generated/edu/nps/moves/dis7/SetDataRPdu.java
+++ b/src-generated/edu/nps/moves/dis7/SetDataRPdu.java
@@ -156,7 +156,7 @@ public List<VariableDatum> getVariableDatumRecords()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -194,7 +194,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -304,7 +304,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -326,17 +326,12 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof SetDataRPdu))
-        return false;
-
      final SetDataRPdu rhs = (SetDataRPdu)obj;
 
      if( ! (requiredReliabilityService == rhs.requiredReliabilityService)) ivarsEqual = false;
      if( ! (pad1 == rhs.pad1)) ivarsEqual = false;
      if( ! (pad2 == rhs.pad2)) ivarsEqual = false;
      if( ! (requestID == rhs.requestID)) ivarsEqual = false;
-     if( ! (numberOfFixedDatumRecords == rhs.numberOfFixedDatumRecords)) ivarsEqual = false;
-     if( ! (numberOfVariableDatumRecords == rhs.numberOfVariableDatumRecords)) ivarsEqual = false;
 
      for(int idx = 0; idx < fixedDatumRecords.size(); idx++)
         if( ! ( fixedDatumRecords.get(idx).equals(rhs.fixedDatumRecords.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/SetRecordRPdu.java b/src-generated/edu/nps/moves/dis7/SetRecordRPdu.java
index 1a74760781..488ea86e79 100644
--- a/src-generated/edu/nps/moves/dis7/SetRecordRPdu.java
+++ b/src-generated/edu/nps/moves/dis7/SetRecordRPdu.java
@@ -145,7 +145,7 @@ public List<RecordSpecification> getRecordSets()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -176,7 +176,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -265,7 +265,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -287,9 +287,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof SetRecordRPdu))
-        return false;
-
      final SetRecordRPdu rhs = (SetRecordRPdu)obj;
 
      if( ! (requestID == rhs.requestID)) ivarsEqual = false;
@@ -297,7 +294,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
      if( ! (pad1 == rhs.pad1)) ivarsEqual = false;
      if( ! (pad2 == rhs.pad2)) ivarsEqual = false;
      if( ! (pad3 == rhs.pad3)) ivarsEqual = false;
-     if( ! (numberOfRecordSets == rhs.numberOfRecordSets)) ivarsEqual = false;
 
      for(int idx = 0; idx < recordSets.size(); idx++)
         if( ! ( recordSets.get(idx).equals(rhs.recordSets.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/ShaftRPM.java b/src-generated/edu/nps/moves/dis7/ShaftRPM.java
index 65348ae0bd..a3654f52a4 100644
--- a/src-generated/edu/nps/moves/dis7/ShaftRPM.java
+++ b/src-generated/edu/nps/moves/dis7/ShaftRPM.java
@@ -83,7 +83,7 @@ public int getRPMrateOfChange()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -103,7 +103,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -154,7 +154,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -181,9 +181,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof ShaftRPM))
-        return false;
-
      final ShaftRPM rhs = (ShaftRPM)obj;
 
      if( ! (currentRPM == rhs.currentRPM)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/SignalPdu.java b/src-generated/edu/nps/moves/dis7/SignalPdu.java
index 985c384721..3f6555ca95 100644
--- a/src-generated/edu/nps/moves/dis7/SignalPdu.java
+++ b/src-generated/edu/nps/moves/dis7/SignalPdu.java
@@ -2,311 +2,406 @@
  * Copyright (c) 2008-2019, MOVES Institute, Naval Postgraduate School. All rights reserved.
  * This work is licensed under the BSD open source license, available at https://www.movesinstitute.org/licenses/bsd.html
  */
-
 package edu.nps.moves.dis7;
 
-import java.util.*;
 import java.io.*;
 import edu.nps.moves.dis7.enumerations.*;
 
 /**
- * 5.8.4 Conveys the audio or digital data carried by the simulated radio or intercom transmission.
+ * 5.8.4, 7.7.3 Conveys the audio or digital data carried by the simulated radio or intercom transmission.
  * IEEE Std 1278.1-2012, IEEE Standard for Distributed Interactive Simulation—Application Protocols
  */
 public class SignalPdu extends RadioCommunicationsFamilyPdu implements Serializable
 {
-   protected RadioCommsHeader  header = new RadioCommsHeader(); 
-
-   /** encoding scheme used, and enumeration */
-   protected short  encodingScheme;
-
-   /** tdl type uid 178 */
-   protected SignalTDLType tdlType = SignalTDLType.values()[0];
-
-   /** sample rate */
-   protected int  sampleRate;
-
-   /** length of data in bits */
-   protected short  dataLength;
-
-   /** number of samples */
-   protected short  samples;
-
-   /** list of eight bit values */
-   protected byte[]  data = new byte[0]; 
-
-   private byte[] padTo32 = new byte[0]; // pad to 32-bit boundary
-
-
-/** Constructor */
- public SignalPdu()
- {
-    setPduType( DISPDUType.SIGNAL );
- }
-
-/** Returns the size of this serialized object in bytes*/
-public int getMarshalledSize()
-{
-   int marshalSize = 0; 
-
-   marshalSize = super.getMarshalledSize();
-   marshalSize += header.getMarshalledSize();
-   marshalSize += 2;  // encodingScheme
-   marshalSize += tdlType.getMarshalledSize();
-   marshalSize += 4;  // sampleRate
-   marshalSize += 2;  // dataLength
-   marshalSize += 2;  // samples
-   marshalSize += data.length * 1;
-   marshalSize += padTo32.length;
-
-   return marshalSize;
-}
-
-
-/** Setter for {@link SignalPdu#header}*/
-public SignalPdu setHeader(RadioCommsHeader pHeader)
-{
+  protected RadioCommsHeader header = new RadioCommsHeader();
+
+  /**
+   * encoding scheme used, and enumeration
+   */
+  protected short encodingScheme;
+
+  /**
+   * tdl type uid 178
+   */
+  protected SignalTDLType tdlType = SignalTDLType.values()[0];
+
+  /**
+   * sample rate
+   */
+  protected int sampleRate;
+
+  /**
+   * length of data in bits
+   */
+  protected Short dataLength;
+
+  /**
+   * number of samples
+   */
+  protected short samples;
+
+  /**
+   * list of eight bit values
+   */
+  protected byte[] data = new byte[1];  // Wireshark complains if no data
+
+  private byte[] padTo32 = new byte[0]; // pad to 32-bit boundary
+
+  /**
+   * Constructor
+   */
+  public SignalPdu()
+  {
+    setPduType(DISPDUType.SIGNAL);
+  }
+
+  /**
+   * Returns the size of this serialized object in bytes
+   */
+  public int getMarshalledSize()
+  {
+    int marshalSize = 0;
+
+    marshalSize = super.getMarshalledSize();
+    marshalSize += header.getMarshalledSize();
+    marshalSize += 2;  // encodingScheme
+    marshalSize += tdlType.getMarshalledSize();
+    marshalSize += 4;  // sampleRate
+    marshalSize += 2;  // dataLength
+    marshalSize += 2;  // samples
+    marshalSize += data.length;
+    marshalSize += padTo32.length;
+
+    return marshalSize;
+  }
+
+  /**
+   * Setter for {@link SignalPdu#header}
+   */
+  public SignalPdu setHeader(RadioCommsHeader pHeader)
+  {
     header = pHeader;
     return this;
-}
-
-/** Getter for {@link SignalPdu#header}*/
-public RadioCommsHeader getHeader()
-{
-    return header; 
-}
-
-/** Setter for {@link SignalPdu#encodingScheme}*/
-public SignalPdu setEncodingScheme(short pEncodingScheme)
-{
+  }
+
+  /**
+   * Getter for {@link SignalPdu#header}
+   */
+  public RadioCommsHeader getHeader()
+  {
+    return header;
+  }
+
+  /**
+   * Setter for {@link SignalPdu#encodingScheme}
+   */
+  public SignalPdu setEncodingScheme(short pEncodingScheme)
+  {
     encodingScheme = pEncodingScheme;
     return this;
-}
-
-/** Getter for {@link SignalPdu#encodingScheme}*/
-public short getEncodingScheme()
-{
-    return encodingScheme; 
-}
-
-/** Setter for {@link SignalPdu#tdlType}*/
-public SignalPdu setTdlType(SignalTDLType pTdlType)
-{
+  }
+
+  /**
+   * Getter for {@link SignalPdu#encodingScheme}
+   */
+  public short getEncodingScheme()
+  {
+    return encodingScheme;
+  }
+
+  /**
+   * Setter for {@link SignalPdu#tdlType}
+   *
+   * @return this object
+   */
+  public SignalPdu setTdlType(SignalTDLType pTdlType)
+  {
     tdlType = pTdlType;
     return this;
-}
-
-/** Getter for {@link SignalPdu#tdlType}*/
-public SignalTDLType getTdlType()
-{
-    return tdlType; 
-}
-
-/** Setter for {@link SignalPdu#sampleRate}*/
-public SignalPdu setSampleRate(int pSampleRate)
-{
+  }
+
+  /**
+   * Getter for {@link SignalPdu#tdlType}
+   */
+  public SignalTDLType getTdlType()
+  {
+    return tdlType;
+  }
+
+  /**
+   * Setter for {@link SignalPdu#sampleRate}
+   *
+   * @return this object
+   */
+  public SignalPdu setSampleRate(int pSampleRate)
+  {
     sampleRate = pSampleRate;
     return this;
-}
-
-/** Getter for {@link SignalPdu#sampleRate}*/
-public int getSampleRate()
-{
-    return sampleRate; 
-}
-
-/** Setter for {@link SignalPdu#dataLength}*/
-public SignalPdu setDataLength(short pDataLength)
-{
+  }
+
+  /**
+   * Getter for {@link SignalPdu#sampleRate}
+   */
+  public int getSampleRate()
+  {
+    return sampleRate;
+  }
+
+  /**
+   * Setter for {@link SignalPdu#dataLength}
+   * <p>
+   * This value is the size IN BITS of the {@link SignalPdu#dataLength} field. Since that field
+   * is a byte array, its size must be large enough to contain the specified number of bits. If this size is NOT
+   * set and this pdu is issued (marshaled), the value used for this field will be the size of the byte
+   * array times 8.
+   *
+   * @param pDataLength value for field
+   * @return this object
+   */
+  public SignalPdu setDataLength(short pDataLength)
+  {
     dataLength = pDataLength;
     return this;
-}
-
-/** Getter for {@link SignalPdu#dataLength}*/
-public short getDataLength()
-{
-    return dataLength; 
-}
-
-/** Setter for {@link SignalPdu#samples}*/
-public SignalPdu setSamples(short pSamples)
-{
+  }
+
+  /**
+   * Getter for {@link SignalPdu#dataLength}
+   *
+   * @return value of field
+   */
+  public short getDataLength()
+  {
+    return dataLength;
+  }
+
+  /**
+   * Setter for {@link SignalPdu#samples}
+   *
+   * @param pSamples value for field
+   * @return this object
+   */
+  public SignalPdu setSamples(short pSamples)
+  {
     samples = pSamples;
     return this;
-}
-
-/** Getter for {@link SignalPdu#samples}*/
-public short getSamples()
-{
-    return samples; 
-}
-
-/** Setter for {@link SignalPdu#data}*/
-public SignalPdu setData(byte[] pData)
-{
+  }
+
+  /**
+   * Getter for {@link SignalPdu#samples}
+   *
+   * @return value of field
+   */
+  public short getSamples()
+  {
+    return samples;
+  }
+
+  /**
+   * Setter for {@link SignalPdu#data}
+   * <p>
+   * This is described in the specification as a stream of bits, but is implemented in Java as a byte array.
+   * The size of the byte array reflects the value of {@link SignalPdu#dataLength} rounded to the next
+   * highest byte boundary. If {@link SignalPdu#dataLength} is not set when the Pdu is sent, the
+   * receiver will read a bit length equal to the size of the byte array times 8.
+   *
+   * @return this object
+   * @param pData data
+   * @return this object;
+   */
+  public SignalPdu setData(byte[] pData)
+  {
     data = pData;
     return this;
-}
+  }
+
+  /**
+   * Getter for {@link SignalPdu#data}
+   *
+   * @return value of field
+   */
+  public byte[] getData()
+  {
+    return data;
+  }
+
+  /* *************************** */
+  /* Marshal / unmarshal methods */
+  /* *************************** */
+  
+  /**
+   * Serializes an object to a DataOutputStream.
+   *
+   * @see java.io.DataOutputStream
+   * @param dos The DataOutputStream
+   */
+  public void marshal(DataOutputStream dos) throws Exception
+  {
+    super.marshal(dos);
 
-/** Getter for {@link SignalPdu#data}*/
-public byte[] getData()
-{
-    return data; 
-}
+    header.marshal(dos);
+    dos.writeShort((short) encodingScheme);
+    tdlType.marshal(dos);
+    dos.writeInt((int) sampleRate);
 
-/**
- * Serializes an object to a DataOutputStream.
- * @see java.io.DataOutputStream
- * @param dos The DataOutputStream
- */
-public void marshal(DataOutputStream dos)
-{
-    super.marshal(dos);
-    try 
-    {
-       header.marshal(dos);
-       dos.writeShort( (short)encodingScheme);
-       tdlType.marshal(dos);
-       dos.writeInt( (int)sampleRate);
-       dos.writeShort( (short)dataLength);
-       dos.writeShort( (short)samples);
-
-       for(int idx = 0; idx < data.length; idx++)
-           dos.writeByte(data[idx]);
-
-       padTo32 = new byte[Align.to32bits(dos)];
-    }
-    catch(Exception e)
-    {
-      System.err.println(e);
-    }
-}
+    if (dataLength != null)
+      dos.writeShort((short) dataLength);
+    else
+      dos.writeShort((short) (dataLength = calculateDataLength()));
 
-/**
- * Unserializes an object from a DataInputStream.
- * @see java.io.DataInputStream
- * @param dis The DataInputStream
- * @return marshalled size
- */
-public int unmarshal(DataInputStream dis)
-{
+    dos.writeShort((short) samples);
+    for (int idx = 0; idx < data.length; idx++) {
+      dos.writeByte(data[idx]);
+    }
+    padTo32 = new byte[Align.to32bits(dos)];
+
+  }
+
+  /**
+   * Unserializes an object from a DataInputStream.
+   *
+   * @see java.io.DataInputStream
+   * @param dis The DataInputStream
+   * @return marshaled size
+   */
+  public int unmarshal(DataInputStream dis) throws Exception
+  {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
 
-    try 
-    {
-        uPosition += header.unmarshal(dis);
-        encodingScheme = (short)dis.readUnsignedShort();
-        uPosition += 2;
-        tdlType = SignalTDLType.unmarshalEnum(dis);
-        uPosition += tdlType.getMarshalledSize();
-        sampleRate = dis.readInt();
-        uPosition += 4;
-        dataLength = (short)dis.readUnsignedShort();
-        uPosition += 2;
-        samples = (short)dis.readUnsignedShort();
-        uPosition += 2;
-        for(int idx = 0; idx < data.length; idx++)
-            data[idx] = dis.readByte(); // mike check
-        uPosition += data.length; // todo, multiply by prim size mike
-        padTo32 = new byte[Align.from32bits(uPosition,dis)];
-        uPosition += padTo32.length;
+    uPosition += header.unmarshal(dis);
+    encodingScheme = (short) dis.readUnsignedShort();
+    uPosition += 2;
+    tdlType = SignalTDLType.unmarshalEnum(dis);
+    uPosition += tdlType.getMarshalledSize();
+    sampleRate = dis.readInt();
+    uPosition += 4;
+    dataLength = (short) dis.readUnsignedShort();
+    int byteLength = (dataLength + 7) / 8;
+    data = new byte[byteLength];
+    uPosition += 2;
+    samples = (short) dis.readUnsignedShort();
+    uPosition += 2;
+    
+    for (int idx = 0; idx < byteLength; idx++) {
+      data[idx] = dis.readByte();
     }
-    catch(Exception e)
-    { 
-      System.out.println(e); 
-    }
-    return getMarshalledSize();
-}
+    uPosition += (data.length * 1);
+    padTo32 = new byte[Align.from32bits(uPosition, dis)];
+    //uPosition += padTo32.length;
 
-/**
- * Packs an object into the ByteBuffer.
- * @throws java.nio.BufferOverflowException if buff is too small
- * @throws java.nio.ReadOnlyBufferException if buff is read only
- * @see java.nio.ByteBuffer
- * @param buff The ByteBuffer at the position to begin writing
- * @throws Exception ByteBuffer-generated exception
- */
-public void marshal(java.nio.ByteBuffer buff) throws Exception
-{
-   super.marshal(buff);
-   header.marshal(buff);
-   buff.putShort( (short)encodingScheme);
-   tdlType.marshal(buff);
-   buff.putInt( (int)sampleRate);
-   buff.putShort( (short)dataLength);
-   buff.putShort( (short)samples);
-
-   for(int idx = 0; idx < data.length; idx++)
-       buff.put((byte)data[idx]);
-
-   padTo32 = new byte[Align.to32bits(buff)];
-}
+    return getMarshalledSize();
+  }
+
+  /**
+   * Packs an object into the ByteBuffer.
+   *
+   * @throws java.nio.BufferOverflowException if buff is too small
+   * @throws java.nio.ReadOnlyBufferException if buff is read only
+   * @see java.nio.ByteBuffer
+   * @param buff The ByteBuffer at the position to begin writing
+   * @throws Exception ByteBuffer-generated exception
+   */
+  public void marshal(java.nio.ByteBuffer buff) throws Exception
+  {
+    super.marshal(buff);
+    header.marshal(buff);
+    buff.putShort((short) encodingScheme);
+    tdlType.marshal(buff);
+    buff.putInt((int) sampleRate);
+    
+    if(dataLength != null)
+      buff.putShort((short) dataLength);
+    else
+      buff.putShort((short) (dataLength = calculateDataLength()));
+    
+    buff.putShort((short) samples);
+
+    for (int idx = 0; idx < data.length; idx++) {
+      buff.put((byte) data[idx]);
+    }
 
-/**
- * Unpacks a Pdu from the underlying data.
- * @throws java.nio.BufferUnderflowException if buff is too small
- * @see java.nio.ByteBuffer
- * @param buff The ByteBuffer at the position to begin reading
- * @return marshalled size
- * @throws Exception ByteBuffer-generated exception
- */
-public int unmarshal(java.nio.ByteBuffer buff) throws Exception
-{
+    padTo32 = new byte[Align.to32bits(buff)];
+  }
+
+  /**
+   * Unpacks a Pdu from the underlying data.
+   *
+   * @throws java.nio.BufferUnderflowException if buff is too small
+   * @see java.nio.ByteBuffer
+   * @param buff The ByteBuffer at the position to begin reading
+   * @return marshalled size
+   * @throws Exception ByteBuffer-generated exception
+   */
+  public int unmarshal(java.nio.ByteBuffer buff) throws Exception
+  {
     super.unmarshal(buff);
 
     header.unmarshal(buff);
-    encodingScheme = (short)(buff.getShort() & 0xFFFF);
+    encodingScheme = (short) (buff.getShort() & 0xFFFF);
     tdlType = SignalTDLType.unmarshalEnum(buff);
     sampleRate = buff.getInt();
-    dataLength = (short)(buff.getShort() & 0xFFFF);
-    samples = (short)(buff.getShort() & 0xFFFF);
-    for(int idx = 0; idx < data.length; idx++)
-        data[idx] = buff.get();
+    dataLength = (short) (buff.getShort() & 0xFFFF);
+    int byteLength = (dataLength+7)/8;
+    data = new byte[byteLength];
+    samples = (short) (buff.getShort() & 0xFFFF);
+    for (int idx = 0; idx < byteLength; idx++) {
+      data[idx] = buff.get();
+    }
     padTo32 = new byte[Align.from32bits(buff)];
     return getMarshalledSize();
-}
+  }
+
+  private short calculateDataLength()
+  {
+    return (short) (data.length * 8);
+  }
 
- /*
+  /*
   * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
-  */
-@Override
- public boolean equals(Object obj)
- {
-    if(this == obj)
+   */
+  @Override
+  public boolean equals(Object obj)
+  {
+    if (this == obj)
       return true;
 
-    if(obj == null)
-       return false;
+    if (obj == null)
+      return false;
 
-    if(getClass() != obj.getClass())
-        return false;
+    if (getClass() != obj.getClass())
+      return false;
 
     return equalsImpl(obj);
- }
-
-@Override
- public boolean equalsImpl(Object obj)
- {
-     boolean ivarsEqual = true;
-
-    if(!(obj instanceof SignalPdu))
-        return false;
-
-     final SignalPdu rhs = (SignalPdu)obj;
-
-     if( ! (header.equals( rhs.header) )) ivarsEqual = false;
-     if( ! (encodingScheme == rhs.encodingScheme)) ivarsEqual = false;
-     if( ! (tdlType == rhs.tdlType)) ivarsEqual = false;
-     if( ! (sampleRate == rhs.sampleRate)) ivarsEqual = false;
-     if( ! (dataLength == rhs.dataLength)) ivarsEqual = false;
-     if( ! (samples == rhs.samples)) ivarsEqual = false;
-
-     for(int idx = 0; idx < 0; idx++)
-     {
-          if(!(data[idx] == rhs.data[idx])) ivarsEqual = false;
-     }
+  }
+
+  @Override
+  public boolean equalsImpl(Object obj)
+  {
+    boolean ivarsEqual = true;
+
+    if (!(obj instanceof SignalPdu))
+      return false;
+
+    final SignalPdu rhs = (SignalPdu) obj;
+
+    if (!(header.equals(rhs.header)))
+      ivarsEqual = false;
+    if (!(encodingScheme == rhs.encodingScheme))
+      ivarsEqual = false;
+    if (!(tdlType == rhs.tdlType))
+      ivarsEqual = false;
+    if (!(sampleRate == rhs.sampleRate))
+      ivarsEqual = false;
+    if (!(dataLength.equals(rhs.dataLength)))
+      ivarsEqual = false;
+    if (!(samples == rhs.samples))
+      ivarsEqual = false;
+
+    for (int idx = 0; idx < 0; idx++) {
+      if (!(data[idx] == rhs.data[idx]))
+        ivarsEqual = false;
+    }
 
     return ivarsEqual && super.equalsImpl(rhs);
- }
+  }
 } // end of class
diff --git a/src-generated/edu/nps/moves/dis7/SilentEntitySystem.java b/src-generated/edu/nps/moves/dis7/SilentEntitySystem.java
index c10d74556e..6c7d6646ca 100644
--- a/src-generated/edu/nps/moves/dis7/SilentEntitySystem.java
+++ b/src-generated/edu/nps/moves/dis7/SilentEntitySystem.java
@@ -91,12 +91,12 @@ public int[] getAppearanceRecordList()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
        dos.writeShort( (short)numberOfEntities);
-       dos.writeShort( (short)numberOfAppearanceRecords);
+       dos.writeShort( (short)appearanceRecordList.length);
        entityType.marshal(dos);
 
        for(int idx = 0; idx < appearanceRecordList.length; idx++)
@@ -115,7 +115,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -126,8 +126,8 @@ public int unmarshal(DataInputStream dis)
         uPosition += 2;
         uPosition += entityType.unmarshal(dis);
         for(int idx = 0; idx < appearanceRecordList.length; idx++)
-            appearanceRecordList[idx] = dis.readInt(); // mike check
-        uPosition += appearanceRecordList.length; // todo, multiply by prim size mike
+            appearanceRecordList[idx] = dis.readInt();
+        uPosition += (appearanceRecordList.length * 4);
     }
     catch(Exception e)
     { 
@@ -147,7 +147,7 @@ public int unmarshal(DataInputStream dis)
 public void marshal(java.nio.ByteBuffer buff) throws Exception
 {
    buff.putShort( (short)numberOfEntities);
-   buff.putShort( (short)numberOfAppearanceRecords);
+   buff.putShort( (short)appearanceRecordList.length);
    entityType.marshal(buff);
 
    for(int idx = 0; idx < appearanceRecordList.length; idx++)
@@ -174,7 +174,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -201,13 +201,9 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof SilentEntitySystem))
-        return false;
-
      final SilentEntitySystem rhs = (SilentEntitySystem)obj;
 
      if( ! (numberOfEntities == rhs.numberOfEntities)) ivarsEqual = false;
-     if( ! (numberOfAppearanceRecords == rhs.numberOfAppearanceRecords)) ivarsEqual = false;
      if( ! (entityType.equals( rhs.entityType) )) ivarsEqual = false;
 
      for(int idx = 0; idx < 0; idx++)
diff --git a/src-generated/edu/nps/moves/dis7/SimulationAddress.java b/src-generated/edu/nps/moves/dis7/SimulationAddress.java
index 0e09b5040c..7c2cf3e560 100644
--- a/src-generated/edu/nps/moves/dis7/SimulationAddress.java
+++ b/src-generated/edu/nps/moves/dis7/SimulationAddress.java
@@ -70,7 +70,7 @@ public short getApplication()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -89,7 +89,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -136,7 +136,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -163,9 +163,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof SimulationAddress))
-        return false;
-
      final SimulationAddress rhs = (SimulationAddress)obj;
 
      if( ! (site == rhs.site)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/SimulationIdentifier.java b/src-generated/edu/nps/moves/dis7/SimulationIdentifier.java
index b82acc067c..e037f98bbc 100644
--- a/src-generated/edu/nps/moves/dis7/SimulationIdentifier.java
+++ b/src-generated/edu/nps/moves/dis7/SimulationIdentifier.java
@@ -70,7 +70,7 @@ public short getReferenceNumber()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -89,7 +89,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -135,7 +135,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -162,9 +162,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof SimulationIdentifier))
-        return false;
-
      final SimulationIdentifier rhs = (SimulationIdentifier)obj;
 
      if( ! (simulationAddress.equals( rhs.simulationAddress) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/SimulationManagementFamilyPdu.java b/src-generated/edu/nps/moves/dis7/SimulationManagementFamilyPdu.java
index dcbaaf86fb..10e547b80b 100644
--- a/src-generated/edu/nps/moves/dis7/SimulationManagementFamilyPdu.java
+++ b/src-generated/edu/nps/moves/dis7/SimulationManagementFamilyPdu.java
@@ -72,7 +72,7 @@ public SimulationIdentifier getReceivingID()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -92,7 +92,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -142,7 +142,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -164,9 +164,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof SimulationManagementFamilyPdu))
-        return false;
-
      final SimulationManagementFamilyPdu rhs = (SimulationManagementFamilyPdu)obj;
 
      if( ! (originatingID.equals( rhs.originatingID) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/SimulationManagementWithReliabilityFamilyPdu.java b/src-generated/edu/nps/moves/dis7/SimulationManagementWithReliabilityFamilyPdu.java
index 0f73237643..5c8e628e98 100644
--- a/src-generated/edu/nps/moves/dis7/SimulationManagementWithReliabilityFamilyPdu.java
+++ b/src-generated/edu/nps/moves/dis7/SimulationManagementWithReliabilityFamilyPdu.java
@@ -71,7 +71,7 @@ public SimulationIdentifier getReceivingID()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -91,7 +91,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -141,7 +141,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -163,9 +163,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof SimulationManagementWithReliabilityFamilyPdu))
-        return false;
-
      final SimulationManagementWithReliabilityFamilyPdu rhs = (SimulationManagementWithReliabilityFamilyPdu)obj;
 
      if( ! (originatingID.equals( rhs.originatingID) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/StandardVariableRecord.java b/src-generated/edu/nps/moves/dis7/StandardVariableRecord.java
index 7cca6a668b..88e6f78a8f 100644
--- a/src-generated/edu/nps/moves/dis7/StandardVariableRecord.java
+++ b/src-generated/edu/nps/moves/dis7/StandardVariableRecord.java
@@ -16,7 +16,7 @@ import edu.nps.moves.dis7.enumerations.*;
 public class StandardVariableRecord extends Object implements Serializable
 {
    /**  uid 66 */
-   protected VariableRecordTypes recordType = VariableRecordTypes.values()[0];
+   protected VariableRecordType recordType = VariableRecordType.values()[0];
 
    protected short  recordLength;
 
@@ -45,14 +45,14 @@ public int getMarshalledSize()
 
 
 /** Setter for {@link StandardVariableRecord#recordType}*/
-public StandardVariableRecord setRecordType(VariableRecordTypes pRecordType)
+public StandardVariableRecord setRecordType(VariableRecordType pRecordType)
 {
     recordType = pRecordType;
     return this;
 }
 
 /** Getter for {@link StandardVariableRecord#recordType}*/
-public VariableRecordTypes getRecordType()
+public VariableRecordType getRecordType()
 {
     return recordType; 
 }
@@ -75,12 +75,12 @@ public byte[] getRecordSpecificFields()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
        recordType.marshal(dos);
-       dos.writeShort( (short)recordLength);
+       dos.writeShort( (short)recordSpecificFields.length);
 
        for(int idx = 0; idx < recordSpecificFields.length; idx++)
            dos.writeByte(recordSpecificFields[idx]);
@@ -99,18 +99,18 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
     {
-        recordType = VariableRecordTypes.unmarshalEnum(dis);
+        recordType = VariableRecordType.unmarshalEnum(dis);
         uPosition += recordType.getMarshalledSize();
         recordLength = (short)dis.readUnsignedShort();
         uPosition += 2;
         for(int idx = 0; idx < recordSpecificFields.length; idx++)
-            recordSpecificFields[idx] = dis.readByte(); // mike check
-        uPosition += recordSpecificFields.length; // todo, multiply by prim size mike
+            recordSpecificFields[idx] = dis.readByte();
+        uPosition += (recordSpecificFields.length * 1);
         padding = new byte[Align.from64bits(uPosition,dis)];
         uPosition += padding.length;
     }
@@ -132,7 +132,7 @@ public int unmarshal(DataInputStream dis)
 public void marshal(java.nio.ByteBuffer buff) throws Exception
 {
    recordType.marshal(buff);
-   buff.putShort( (short)recordLength);
+   buff.putShort( (short)recordSpecificFields.length);
 
    for(int idx = 0; idx < recordSpecificFields.length; idx++)
        buff.put((byte)recordSpecificFields[idx]);
@@ -150,7 +150,7 @@ public void marshal(java.nio.ByteBuffer buff) throws Exception
  */
 public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 {
-    recordType = VariableRecordTypes.unmarshalEnum(buff);
+    recordType = VariableRecordType.unmarshalEnum(buff);
     recordLength = (short)(buff.getShort() & 0xFFFF);
     for(int idx = 0; idx < recordSpecificFields.length; idx++)
         recordSpecificFields[idx] = buff.get();
@@ -159,7 +159,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -186,13 +186,9 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof StandardVariableRecord))
-        return false;
-
      final StandardVariableRecord rhs = (StandardVariableRecord)obj;
 
      if( ! (recordType == rhs.recordType)) ivarsEqual = false;
-     if( ! (recordLength == rhs.recordLength)) ivarsEqual = false;
 
      for(int idx = 0; idx < 0; idx++)
      {
diff --git a/src-generated/edu/nps/moves/dis7/StandardVariableSpecification.java b/src-generated/edu/nps/moves/dis7/StandardVariableSpecification.java
index 69defb48ed..46d8a06f3d 100644
--- a/src-generated/edu/nps/moves/dis7/StandardVariableSpecification.java
+++ b/src-generated/edu/nps/moves/dis7/StandardVariableSpecification.java
@@ -76,7 +76,7 @@ public List<StandardVariableRecord> getStandardVariables()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -101,7 +101,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -165,7 +165,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -192,9 +192,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof StandardVariableSpecification))
-        return false;
-
      final StandardVariableSpecification rhs = (StandardVariableSpecification)obj;
 
      if( ! (numberOfStandardVariableRecords == rhs.numberOfStandardVariableRecords)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/StartResumePdu.java b/src-generated/edu/nps/moves/dis7/StartResumePdu.java
index 6cde03d8a2..ac448e5600 100644
--- a/src-generated/edu/nps/moves/dis7/StartResumePdu.java
+++ b/src-generated/edu/nps/moves/dis7/StartResumePdu.java
@@ -89,7 +89,7 @@ public int getRequestID()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -110,7 +110,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -164,7 +164,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -186,9 +186,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof StartResumePdu))
-        return false;
-
      final StartResumePdu rhs = (StartResumePdu)obj;
 
      if( ! (realWorldTime.equals( rhs.realWorldTime) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/StartResumeRPdu.java b/src-generated/edu/nps/moves/dis7/StartResumeRPdu.java
index 7cfbbb5538..c083bddcbf 100644
--- a/src-generated/edu/nps/moves/dis7/StartResumeRPdu.java
+++ b/src-generated/edu/nps/moves/dis7/StartResumeRPdu.java
@@ -138,7 +138,7 @@ public int getRequestID()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -162,7 +162,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -228,7 +228,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -250,9 +250,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof StartResumeRPdu))
-        return false;
-
      final StartResumeRPdu rhs = (StartResumeRPdu)obj;
 
      if( ! (realWorldTime.equals( rhs.realWorldTime) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/StopFreezePdu.java b/src-generated/edu/nps/moves/dis7/StopFreezePdu.java
index 94a5e657bd..a43448d678 100644
--- a/src-generated/edu/nps/moves/dis7/StopFreezePdu.java
+++ b/src-generated/edu/nps/moves/dis7/StopFreezePdu.java
@@ -123,7 +123,7 @@ public int getRequestID()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -146,7 +146,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -208,7 +208,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -230,9 +230,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof StopFreezePdu))
-        return false;
-
      final StopFreezePdu rhs = (StopFreezePdu)obj;
 
      if( ! (realWorldTime.equals( rhs.realWorldTime) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/StopFreezeRPdu.java b/src-generated/edu/nps/moves/dis7/StopFreezeRPdu.java
index 06bfec82f5..6f9dde209e 100644
--- a/src-generated/edu/nps/moves/dis7/StopFreezeRPdu.java
+++ b/src-generated/edu/nps/moves/dis7/StopFreezeRPdu.java
@@ -140,7 +140,7 @@ public int getRequestID()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -164,7 +164,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -230,7 +230,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -252,9 +252,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof StopFreezeRPdu))
-        return false;
-
      final StopFreezeRPdu rhs = (StopFreezeRPdu)obj;
 
      if( ! (realWorldTime.equals( rhs.realWorldTime) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/StorageFuel.java b/src-generated/edu/nps/moves/dis7/StorageFuel.java
index 9c0a4bb029..0c7bc6de1d 100644
--- a/src-generated/edu/nps/moves/dis7/StorageFuel.java
+++ b/src-generated/edu/nps/moves/dis7/StorageFuel.java
@@ -121,7 +121,7 @@ public byte getPadding()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -143,7 +143,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -202,7 +202,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -229,9 +229,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof StorageFuel))
-        return false;
-
      final StorageFuel rhs = (StorageFuel)obj;
 
      if( ! (fuelQuantity == rhs.fuelQuantity)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/StorageFuelReload.java b/src-generated/edu/nps/moves/dis7/StorageFuelReload.java
index d3582a14b3..2f340d00a4 100644
--- a/src-generated/edu/nps/moves/dis7/StorageFuelReload.java
+++ b/src-generated/edu/nps/moves/dis7/StorageFuelReload.java
@@ -172,7 +172,7 @@ public byte getPadding()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -197,7 +197,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -268,7 +268,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -295,9 +295,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof StorageFuelReload))
-        return false;
-
      final StorageFuelReload rhs = (StorageFuelReload)obj;
 
      if( ! (standardQuantity == rhs.standardQuantity)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/SupplyQuantity.java b/src-generated/edu/nps/moves/dis7/SupplyQuantity.java
index 8d147ba347..354b74d044 100644
--- a/src-generated/edu/nps/moves/dis7/SupplyQuantity.java
+++ b/src-generated/edu/nps/moves/dis7/SupplyQuantity.java
@@ -70,7 +70,7 @@ public float getQuantity()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -89,7 +89,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -135,7 +135,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -162,9 +162,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof SupplyQuantity))
-        return false;
-
      final SupplyQuantity rhs = (SupplyQuantity)obj;
 
      if( ! (supplyType.equals( rhs.supplyType) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/SyntheticEnvironmentFamilyPdu.java b/src-generated/edu/nps/moves/dis7/SyntheticEnvironmentFamilyPdu.java
index 3098bf54da..55a5b476dc 100644
--- a/src-generated/edu/nps/moves/dis7/SyntheticEnvironmentFamilyPdu.java
+++ b/src-generated/edu/nps/moves/dis7/SyntheticEnvironmentFamilyPdu.java
@@ -38,7 +38,7 @@ public int getMarshalledSize()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -56,7 +56,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -100,7 +100,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -122,9 +122,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof SyntheticEnvironmentFamilyPdu))
-        return false;
-
      final SyntheticEnvironmentFamilyPdu rhs = (SyntheticEnvironmentFamilyPdu)obj;
 
     return ivarsEqual && super.equalsImpl(rhs);
diff --git a/src-generated/edu/nps/moves/dis7/SystemIdentifier.java b/src-generated/edu/nps/moves/dis7/SystemIdentifier.java
index 51128ee2a0..e44a487c42 100644
--- a/src-generated/edu/nps/moves/dis7/SystemIdentifier.java
+++ b/src-generated/edu/nps/moves/dis7/SystemIdentifier.java
@@ -104,7 +104,7 @@ public ChangeOptions getChangeOptions()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -125,7 +125,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -179,7 +179,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -206,9 +206,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof SystemIdentifier))
-        return false;
-
      final SystemIdentifier rhs = (SystemIdentifier)obj;
 
      if( ! (systemType == rhs.systemType)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/TSPIPdu.java b/src-generated/edu/nps/moves/dis7/TSPIPdu.java
index 1070b397aa..129796e3c5 100644
--- a/src-generated/edu/nps/moves/dis7/TSPIPdu.java
+++ b/src-generated/edu/nps/moves/dis7/TSPIPdu.java
@@ -202,7 +202,7 @@ public byte[] getSystemSpecificData()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -216,7 +216,7 @@ public void marshal(DataOutputStream dos)
        orientationError.marshal(dos);
        deadReckoningParameters.marshal(dos);
        dos.writeShort( (short)measuredSpeed);
-       dos.writeByte( (byte)systemSpecificDataLength);
+       dos.writeByte( (byte)systemSpecificData.length);
 
        for(int idx = 0; idx < systemSpecificData.length; idx++)
            dos.writeByte(systemSpecificData[idx]);
@@ -234,7 +234,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -255,8 +255,8 @@ public int unmarshal(DataInputStream dis)
         systemSpecificDataLength = (byte)dis.readUnsignedByte();
         uPosition += 1;
         for(int idx = 0; idx < systemSpecificData.length; idx++)
-            systemSpecificData[idx] = dis.readByte(); // mike check
-        uPosition += systemSpecificData.length; // todo, multiply by prim size mike
+            systemSpecificData[idx] = dis.readByte();
+        uPosition += (systemSpecificData.length * 1);
     }
     catch(Exception e)
     { 
@@ -285,7 +285,7 @@ public void marshal(java.nio.ByteBuffer buff) throws Exception
    orientationError.marshal(buff);
    deadReckoningParameters.marshal(buff);
    buff.putShort( (short)measuredSpeed);
-   buff.put( (byte)systemSpecificDataLength);
+   buff.put( (byte)systemSpecificData.length);
 
    for(int idx = 0; idx < systemSpecificData.length; idx++)
        buff.put((byte)systemSpecificData[idx]);
@@ -320,7 +320,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -342,9 +342,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof TSPIPdu))
-        return false;
-
      final TSPIPdu rhs = (TSPIPdu)obj;
 
      if( ! (liveEntityId.equals( rhs.liveEntityId) )) ivarsEqual = false;
@@ -356,7 +353,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
      if( ! (orientationError.equals( rhs.orientationError) )) ivarsEqual = false;
      if( ! (deadReckoningParameters.equals( rhs.deadReckoningParameters) )) ivarsEqual = false;
      if( ! (measuredSpeed == rhs.measuredSpeed)) ivarsEqual = false;
-     if( ! (systemSpecificDataLength == rhs.systemSpecificDataLength)) ivarsEqual = false;
 
      for(int idx = 0; idx < 0; idx++)
      {
diff --git a/src-generated/edu/nps/moves/dis7/TotalRecordSets.java b/src-generated/edu/nps/moves/dis7/TotalRecordSets.java
index 694637fabf..0be7db4db0 100644
--- a/src-generated/edu/nps/moves/dis7/TotalRecordSets.java
+++ b/src-generated/edu/nps/moves/dis7/TotalRecordSets.java
@@ -70,7 +70,7 @@ public short getPadding()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -89,7 +89,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -136,7 +136,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -163,9 +163,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof TotalRecordSets))
-        return false;
-
      final TotalRecordSets rhs = (TotalRecordSets)obj;
 
      if( ! (totalRecordSets == rhs.totalRecordSets)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/TrackJamData.java b/src-generated/edu/nps/moves/dis7/TrackJamData.java
index 5290c96331..d55cc8ee81 100644
--- a/src-generated/edu/nps/moves/dis7/TrackJamData.java
+++ b/src-generated/edu/nps/moves/dis7/TrackJamData.java
@@ -87,7 +87,7 @@ public byte getBeamNumber()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -107,7 +107,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -157,7 +157,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -184,9 +184,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof TrackJamData))
-        return false;
-
      final TrackJamData rhs = (TrackJamData)obj;
 
      if( ! (entityID.equals( rhs.entityID) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/TransferOwnershipPdu.java b/src-generated/edu/nps/moves/dis7/TransferOwnershipPdu.java
index 22e787abaf..8aa1ee72ef 100644
--- a/src-generated/edu/nps/moves/dis7/TransferOwnershipPdu.java
+++ b/src-generated/edu/nps/moves/dis7/TransferOwnershipPdu.java
@@ -156,7 +156,7 @@ public RecordSpecification getRecordSets()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -181,7 +181,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -249,7 +249,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -271,9 +271,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof TransferOwnershipPdu))
-        return false;
-
      final TransferOwnershipPdu rhs = (TransferOwnershipPdu)obj;
 
      if( ! (originatingEntityID.equals( rhs.originatingEntityID) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/TransmitterPdu.java b/src-generated/edu/nps/moves/dis7/TransmitterPdu.java
index 1a3184d262..3c8ce55e8d 100644
--- a/src-generated/edu/nps/moves/dis7/TransmitterPdu.java
+++ b/src-generated/edu/nps/moves/dis7/TransmitterPdu.java
@@ -374,7 +374,7 @@ public List<VariableTransmitterParameters> getAntennaPatternList()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -425,7 +425,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -582,7 +582,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -604,9 +604,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof TransmitterPdu))
-        return false;
-
      final TransmitterPdu rhs = (TransmitterPdu)obj;
 
      if( ! (header.equals( rhs.header) )) ivarsEqual = false;
@@ -618,14 +615,12 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
      if( ! (antennaLocation.equals( rhs.antennaLocation) )) ivarsEqual = false;
      if( ! (relativeAntennaLocation.equals( rhs.relativeAntennaLocation) )) ivarsEqual = false;
      if( ! (antennaPatternType == rhs.antennaPatternType)) ivarsEqual = false;
-     if( ! (antennaPatternCount == rhs.antennaPatternCount)) ivarsEqual = false;
      if( ! (frequency == rhs.frequency)) ivarsEqual = false;
      if( ! (transmitFrequencyBandwidth == rhs.transmitFrequencyBandwidth)) ivarsEqual = false;
      if( ! (power == rhs.power)) ivarsEqual = false;
      if( ! (modulationType.equals( rhs.modulationType) )) ivarsEqual = false;
      if( ! (cryptoSystem == rhs.cryptoSystem)) ivarsEqual = false;
      if( ! (cryptoKeyId == rhs.cryptoKeyId)) ivarsEqual = false;
-     if( ! (modulationParameterCount == rhs.modulationParameterCount)) ivarsEqual = false;
      if( ! (padding1 == rhs.padding1)) ivarsEqual = false;
      if( ! (padding2 == rhs.padding2)) ivarsEqual = false;
 
diff --git a/src-generated/edu/nps/moves/dis7/UABeam.java b/src-generated/edu/nps/moves/dis7/UABeam.java
index 4c3640ad8b..4978762509 100644
--- a/src-generated/edu/nps/moves/dis7/UABeam.java
+++ b/src-generated/edu/nps/moves/dis7/UABeam.java
@@ -99,7 +99,7 @@ public UAFundamentalParameter getFundamentalParameterData()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -120,7 +120,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -174,7 +174,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -201,9 +201,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof UABeam))
-        return false;
-
      final UABeam rhs = (UABeam)obj;
 
      if( ! (beamDataLength == rhs.beamDataLength)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/UAEmitter.java b/src-generated/edu/nps/moves/dis7/UAEmitter.java
index d7ee857448..1c2b49efb2 100644
--- a/src-generated/edu/nps/moves/dis7/UAEmitter.java
+++ b/src-generated/edu/nps/moves/dis7/UAEmitter.java
@@ -126,7 +126,7 @@ public List<UABeam> getBeams()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -155,7 +155,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -233,7 +233,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -260,13 +260,9 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof UAEmitter))
-        return false;
-
      final UAEmitter rhs = (UAEmitter)obj;
 
      if( ! (systemDataLength == rhs.systemDataLength)) ivarsEqual = false;
-     if( ! (numberOfBeams == rhs.numberOfBeams)) ivarsEqual = false;
      if( ! (padding == rhs.padding)) ivarsEqual = false;
      if( ! (acousticEmitter.equals( rhs.acousticEmitter) )) ivarsEqual = false;
      if( ! (location.equals( rhs.location) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/UAFundamentalParameter.java b/src-generated/edu/nps/moves/dis7/UAFundamentalParameter.java
index 3c79cc9e9c..1b46ce4ae5 100644
--- a/src-generated/edu/nps/moves/dis7/UAFundamentalParameter.java
+++ b/src-generated/edu/nps/moves/dis7/UAFundamentalParameter.java
@@ -138,7 +138,7 @@ public float getDepressionElevationBeamWidth()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -161,7 +161,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -224,7 +224,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -251,9 +251,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof UAFundamentalParameter))
-        return false;
-
      final UAFundamentalParameter rhs = (UAFundamentalParameter)obj;
 
      if( ! (activeEmissionParameterIndex == rhs.activeEmissionParameterIndex)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/UnattachedIdentifier.java b/src-generated/edu/nps/moves/dis7/UnattachedIdentifier.java
index 051d5b851c..565d436e57 100644
--- a/src-generated/edu/nps/moves/dis7/UnattachedIdentifier.java
+++ b/src-generated/edu/nps/moves/dis7/UnattachedIdentifier.java
@@ -70,7 +70,7 @@ public short getReferenceNumber()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -89,7 +89,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -135,7 +135,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -162,9 +162,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof UnattachedIdentifier))
-        return false;
-
      final UnattachedIdentifier rhs = (UnattachedIdentifier)obj;
 
      if( ! (simulationAddress.equals( rhs.simulationAddress) )) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/UnderwaterAcousticPdu.java b/src-generated/edu/nps/moves/dis7/UnderwaterAcousticPdu.java
index 40d195ea7f..f2b8a99bec 100644
--- a/src-generated/edu/nps/moves/dis7/UnderwaterAcousticPdu.java
+++ b/src-generated/edu/nps/moves/dis7/UnderwaterAcousticPdu.java
@@ -214,7 +214,7 @@ public List<UAEmitter> getEmitterSystems()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -262,7 +262,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -403,7 +403,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -425,9 +425,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof UnderwaterAcousticPdu))
-        return false;
-
      final UnderwaterAcousticPdu rhs = (UnderwaterAcousticPdu)obj;
 
      if( ! (emittingEntityID.equals( rhs.emittingEntityID) )) ivarsEqual = false;
@@ -436,9 +433,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
      if( ! (pad == rhs.pad)) ivarsEqual = false;
      if( ! (passiveParameterIndex == rhs.passiveParameterIndex)) ivarsEqual = false;
      if( ! (propulsionPlantConfiguration == rhs.propulsionPlantConfiguration)) ivarsEqual = false;
-     if( ! (numberOfShafts == rhs.numberOfShafts)) ivarsEqual = false;
-     if( ! (numberOfAPAs == rhs.numberOfAPAs)) ivarsEqual = false;
-     if( ! (numberOfUAEmitterSystems == rhs.numberOfUAEmitterSystems)) ivarsEqual = false;
 
      for(int idx = 0; idx < shaftRPMs.size(); idx++)
         if( ! ( shaftRPMs.get(idx).equals(rhs.shaftRPMs.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/UnsignedDISInteger.java b/src-generated/edu/nps/moves/dis7/UnsignedDISInteger.java
index 3d0a4a1e43..15e028e517 100644
--- a/src-generated/edu/nps/moves/dis7/UnsignedDISInteger.java
+++ b/src-generated/edu/nps/moves/dis7/UnsignedDISInteger.java
@@ -53,7 +53,7 @@ public int getVal()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -71,7 +71,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -114,7 +114,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -141,9 +141,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof UnsignedDISInteger))
-        return false;
-
      final UnsignedDISInteger rhs = (UnsignedDISInteger)obj;
 
      if( ! (val == rhs.val)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/VariableDatum.java b/src-generated/edu/nps/moves/dis7/VariableDatum.java
index f12a59d0dc..ace9248744 100644
--- a/src-generated/edu/nps/moves/dis7/VariableDatum.java
+++ b/src-generated/edu/nps/moves/dis7/VariableDatum.java
@@ -2,10 +2,8 @@
  * Copyright (c) 2008-2019, MOVES Institute, Naval Postgraduate School. All rights reserved.
  * This work is licensed under the BSD open source license, available at https://www.movesinstitute.org/licenses/bsd.html
  */
-
 package edu.nps.moves.dis7;
 
-import java.util.*;
 import java.io.*;
 import edu.nps.moves.dis7.enumerations.*;
 
@@ -15,205 +13,259 @@ import edu.nps.moves.dis7.enumerations.*;
  */
 public class VariableDatum extends Object implements Serializable
 {
-   /** Type of variable datum to be transmitted. 32 bit enumeration defined in EBV uid 66 */
-   protected VariableRecordTypes variableDatumID = VariableRecordTypes.values()[0];
-
-   /** Length, IN BITS, of the variable datum. */
-   protected int  variableDatumLength;
-
-   /** This can be any number of bits long, depending on the datum. */
-   protected byte[]  variableDatumValue = new byte[0]; 
-
-   private byte[] padding = new byte[0]; // pad to 64-bit boundary
-
-
-/** Constructor */
- public VariableDatum()
- {
- }
-
-/** Returns the size of this serialized object in bytes*/
-public int getMarshalledSize()
-{
-   int marshalSize = 0; 
-
-   marshalSize += variableDatumID.getMarshalledSize();
-   marshalSize += 4;  // variableDatumLength
-   marshalSize += variableDatumValue.length * 1;
-   marshalSize += padding.length;
-
-   return marshalSize;
-}
-
-
-/** Setter for {@link VariableDatum#variableDatumID}*/
-public VariableDatum setVariableDatumID(VariableRecordTypes pVariableDatumID)
-{
+  /**
+   * Type of variable datum to be transmitted. 32 bit enumeration defined in EBV uid 66
+   */
+  protected VariableRecordType variableDatumID = VariableRecordType.values()[0];
+
+  /**
+   * Length, IN BITS, of the variable datum.
+   */
+  protected Integer variableDatumLength;
+
+  /**
+   * This field shall specify the value for a particular Variable Datum ID. The
+   * field format shall depend on the type of datum as specified by the Variable Datum ID. Variable
+   * datums can be any number of bits long.
+   */
+  protected byte[] variableDatumValue = new byte[0];
+
+  private byte[] padding = new byte[0]; // pad to 64-bit boundary
+
+  /**
+   * Returns the size of this serialized object in bytes
+   */
+  public int getMarshalledSize()
+  {
+    int marshalSize = 0;
+
+    marshalSize += variableDatumID.getMarshalledSize();
+    marshalSize += 4;  // variableDatumLength
+    marshalSize += variableDatumValue.length;
+    marshalSize += padding.length;
+
+    return marshalSize;
+  }
+
+  /**
+   * Setter for {@link VariableDatum#variableDatumID}
+   *
+   * @return this object
+   */
+  public VariableDatum setVariableDatumID(VariableRecordType pVariableDatumID)
+  {
     variableDatumID = pVariableDatumID;
     return this;
-}
-
-/** Getter for {@link VariableDatum#variableDatumID}*/
-public VariableRecordTypes getVariableDatumID()
-{
-    return variableDatumID; 
-}
-
-/** Setter for {@link VariableDatum#variableDatumLength}*/
-public VariableDatum setVariableDatumLength(int pVariableDatumLength)
-{
+  }
+
+  /**
+   * Getter for {@link VariableDatum#variableDatumID}
+   *
+   * @return value of field
+   */
+  public VariableRecordType getVariableDatumID()
+  {
+    return variableDatumID;
+  }
+
+  /**
+   * Setter for {@link VariableDatum#variableDatumLength}
+   * <p>
+   * This value is the size IN BITS of the {@link VariableDatum#variableDatumValue} field. Since that field
+   * is a byte array, its size must be large enough to contain the specified number of bits. If this size is NOT
+   * set and this pdu is issued (marshaled), the value used for this field will be the size of the byte
+   * array times 8.
+   */
+  public VariableDatum setVariableDatumLength(int pVariableDatumLength)
+  {
     variableDatumLength = pVariableDatumLength;
     return this;
-}
-
-/** Getter for {@link VariableDatum#variableDatumLength}*/
-public int getVariableDatumLength()
-{
-    return variableDatumLength; 
-}
-
-/** Setter for {@link VariableDatum#variableDatumValue}*/
-public VariableDatum setVariableDatumValue(byte[] pVariableDatumValue)
-{
+  }
+
+  /**
+   * Getter for {@link VariableDatum#variableDatumLength}
+   */
+  public int getVariableDatumLength()
+  {
+    return variableDatumLength;
+  }
+
+  /**
+   * Setter for {@link VariableDatum#variableDatumValue}
+   * <p>
+   * This is described in the specification as a stream of bits, but is implemented in Java as a byte array.
+   * The size of the byte array reflects the value of {@link VariableDatum#variableDatumLength} rounded to the next
+   * highest byte boundary. If {@link VariableDatum#variableDatumLength} is not set when the Pdu is sent, the
+   * receiver will read a bit length equal to the size of the byte array times 8.
+   * @return this object
+   */
+  public VariableDatum setVariableDatumValue(byte[] pVariableDatumValue)
+  {
     variableDatumValue = pVariableDatumValue;
     return this;
-}
-
-/** Getter for {@link VariableDatum#variableDatumValue}*/
-public byte[] getVariableDatumValue()
-{
-    return variableDatumValue; 
-}
-
-/**
- * Serializes an object to a DataOutputStream.
- * @see java.io.DataOutputStream
- * @param dos The DataOutputStream
- */
-public void marshal(DataOutputStream dos)
-{
-    try 
-    {
-       variableDatumID.marshal(dos);
-       dos.writeInt( (int)variableDatumLength);
-
-       for(int idx = 0; idx < variableDatumValue.length; idx++)
-           dos.writeByte(variableDatumValue[idx]);
-
-       padding = new byte[Align.to64bits(dos)];
+  }
+
+  /**
+   * Getter for {@link VariableDatum#variableDatumValue}
+   */
+  public byte[] getVariableDatumValue()
+  {
+    return variableDatumValue;
+  }
+
+  /* *************************** */
+  /* Marshal / unmarshal methods */
+  /* *************************** */
+  
+  /**
+   * Serializes an object to a DataOutputStream.
+   *
+   * @see java.io.DataOutputStream
+   * @param dos The DataOutputStream
+   */
+  public void marshal(DataOutputStream dos) throws Exception
+  {
+    try {
+      variableDatumID.marshal(dos);
+      if (variableDatumLength != null)
+        dos.writeInt((int) variableDatumLength);
+      else
+        dos.writeInt(variableDatumLength = calculateDatumLength());
+
+      for (int idx = 0; idx < variableDatumValue.length; idx++) {
+        dos.writeByte(variableDatumValue[idx]);
+      }
+
+      padding = new byte[Align.to64bits(dos)];
     }
-    catch(Exception e)
-    {
+    catch (Exception e) {
       System.err.println(e);
     }
-}
-
-/**
- * Unserializes an object from a DataInputStream.
- * @see java.io.DataInputStream
- * @param dis The DataInputStream
- * @return marshalled size
- */
-public int unmarshal(DataInputStream dis)
-{
+  }
+
+  /**
+   * Unserializes an object from a DataInputStream.
+   *
+   * @see java.io.DataInputStream
+   * @param dis The DataInputStream
+   * @return marshalled size
+   */
+  public int unmarshal(DataInputStream dis) throws Exception
+  {
     int uPosition = 0;
-    try 
-    {
-        variableDatumID = VariableRecordTypes.unmarshalEnum(dis);
-        uPosition += variableDatumID.getMarshalledSize();
-        variableDatumLength = dis.readInt();
-        uPosition += 4;
-        for(int idx = 0; idx < variableDatumValue.length; idx++)
-            variableDatumValue[idx] = dis.readByte(); // mike check
-        uPosition += variableDatumValue.length; // todo, multiply by prim size mike
-        padding = new byte[Align.from64bits(uPosition,dis)];
-        uPosition += padding.length;
+    try {
+      variableDatumID = VariableRecordType.unmarshalEnum(dis);
+      uPosition += variableDatumID.getMarshalledSize();
+      variableDatumLength = dis.readInt();
+      int byteLength = (variableDatumLength + 7) / 8;
+      variableDatumValue = new byte[byteLength];
+      uPosition += 4;
+      for (int idx = 0; idx < byteLength; idx++) {
+        variableDatumValue[idx] = dis.readByte();
+      }
+      uPosition += variableDatumLength;
+      padding = new byte[Align.from64bits(uPosition, dis)];
+      //uPosition += padding.length;
     }
-    catch(Exception e)
-    { 
-      System.out.println(e); 
+    catch (Exception e) {
+      System.out.println(e);
     }
     return getMarshalledSize();
-}
-
-/**
- * Packs an object into the ByteBuffer.
- * @throws java.nio.BufferOverflowException if buff is too small
- * @throws java.nio.ReadOnlyBufferException if buff is read only
- * @see java.nio.ByteBuffer
- * @param buff The ByteBuffer at the position to begin writing
- * @throws Exception ByteBuffer-generated exception
- */
-public void marshal(java.nio.ByteBuffer buff) throws Exception
-{
-   variableDatumID.marshal(buff);
-   buff.putInt( (int)variableDatumLength);
-
-   for(int idx = 0; idx < variableDatumValue.length; idx++)
-       buff.put((byte)variableDatumValue[idx]);
-
-   padding = new byte[Align.to64bits(buff)];
-}
-
-/**
- * Unpacks a Pdu from the underlying data.
- * @throws java.nio.BufferUnderflowException if buff is too small
- * @see java.nio.ByteBuffer
- * @param buff The ByteBuffer at the position to begin reading
- * @return marshalled size
- * @throws Exception ByteBuffer-generated exception
- */
-public int unmarshal(java.nio.ByteBuffer buff) throws Exception
-{
-    variableDatumID = VariableRecordTypes.unmarshalEnum(buff);
+  }
+
+  /**
+   * Packs an object into the ByteBuffer.
+   *
+   * @throws java.nio.BufferOverflowException if buff is too small
+   * @throws java.nio.ReadOnlyBufferException if buff is read only
+   * @see java.nio.ByteBuffer
+   * @param buff The ByteBuffer at the position to begin writing
+   * @throws Exception ByteBuffer-generated exception
+   */
+  public void marshal(java.nio.ByteBuffer buff) throws Exception
+  {
+    variableDatumID.marshal(buff);
+
+    if (variableDatumLength != null)
+      buff.putInt(variableDatumLength);
+    else
+      buff.putInt(variableDatumLength = calculateDatumLength());
+    for (int idx = 0; idx < variableDatumLength; idx++) //for(int idx = 0; idx < variableDatumValue.length; idx++)
+    {
+      buff.put((byte) variableDatumValue[idx]);
+    }
+    padding = new byte[Align.to64bits(buff)];
+  }
+
+  /**
+   * Unpacks a Pdu from the underlying data.
+   *
+   * @throws java.nio.BufferUnderflowException if buff is too small
+   * @see java.nio.ByteBuffer
+   * @param buff The ByteBuffer at the position to begin reading
+   * @return marshalled size
+   * @throws Exception ByteBuffer-generated exception
+   */
+  public int unmarshal(java.nio.ByteBuffer buff) throws Exception
+  {
+    variableDatumID = VariableRecordType.unmarshalEnum(buff);
     variableDatumLength = buff.getInt();
-    for(int idx = 0; idx < variableDatumValue.length; idx++)
-        variableDatumValue[idx] = buff.get();
+    int byteLength = (variableDatumLength + 7) / 8;
+    variableDatumValue = new byte[byteLength];
+    for (int idx = 0; idx < byteLength; idx++) {
+      variableDatumValue[idx] = buff.get();
+    }
     padding = new byte[Align.from64bits(buff)];
     return getMarshalledSize();
-}
+  }
+
+  private int calculateDatumLength()
+  {
+    return variableDatumValue.length * 8;
+  }
 
- /*
+  /*
   * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
-  */
-@Override
- public boolean equals(Object obj)
- {
-    if(this == obj)
+   */
+  @Override
+  public boolean equals(Object obj)
+  {
+    if (this == obj)
       return true;
 
-    if(obj == null)
-       return false;
+    if (obj == null)
+      return false;
 
-    if(getClass() != obj.getClass())
-        return false;
+    if (getClass() != obj.getClass())
+      return false;
 
     return equalsImpl(obj);
- }
-
- /**
-  * Compare all fields that contribute to the state, ignoring
-  * transient and static fields, for <code>this</code> and the supplied object
-  * @param obj the object to compare to
-  * @return true if the objects are equal, false otherwise.
-  */
- public boolean equalsImpl(Object obj)
- {
-     boolean ivarsEqual = true;
-
-    if(!(obj instanceof VariableDatum))
-        return false;
-
-     final VariableDatum rhs = (VariableDatum)obj;
-
-     if( ! (variableDatumID == rhs.variableDatumID)) ivarsEqual = false;
-     if( ! (variableDatumLength == rhs.variableDatumLength)) ivarsEqual = false;
-
-     for(int idx = 0; idx < 0; idx++)
-     {
-          if(!(variableDatumValue[idx] == rhs.variableDatumValue[idx])) ivarsEqual = false;
-     }
-
+  }
+
+  /**
+   * Compare all fields that contribute to the state, ignoring
+   * transient and static fields, for <code>this</code> and the supplied object
+   *
+   * @param obj the object to compare to
+   * @return true if the objects are equal, false otherwise.
+   */
+  public boolean equalsImpl(Object obj)
+  {
+    boolean ivarsEqual = true;
+
+    if (!(obj instanceof VariableDatum))
+      return false;
+
+    final VariableDatum rhs = (VariableDatum) obj;
+
+    if (!(variableDatumID == rhs.variableDatumID))
+      ivarsEqual = false;
+    if (!(variableDatumLength == rhs.variableDatumLength))
+      ivarsEqual = false;
+    for (int idx = 0; idx < 0; idx++) {
+      if (!(variableDatumValue[idx] == rhs.variableDatumValue[idx]))
+        ivarsEqual = false;
+    }
     return ivarsEqual;
- }
-} // end of class
+  }
+}
diff --git a/src-generated/edu/nps/moves/dis7/VariableParameter.java b/src-generated/edu/nps/moves/dis7/VariableParameter.java
index 113185bee3..ed154d89bc 100644
--- a/src-generated/edu/nps/moves/dis7/VariableParameter.java
+++ b/src-generated/edu/nps/moves/dis7/VariableParameter.java
@@ -70,7 +70,7 @@ public byte[] getRecordSpecificFields()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -92,7 +92,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -100,8 +100,8 @@ public int unmarshal(DataInputStream dis)
         recordType = VariableParameterRecordType.unmarshalEnum(dis);
         uPosition += recordType.getMarshalledSize();
         for(int idx = 0; idx < recordSpecificFields.length; idx++)
-            recordSpecificFields[idx] = dis.readByte(); // mike check
-        uPosition += recordSpecificFields.length; // todo, multiply by prim size mike
+            recordSpecificFields[idx] = dis.readByte();
+        uPosition += (recordSpecificFields.length * 1);
     }
     catch(Exception e)
     { 
@@ -144,7 +144,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -171,9 +171,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof VariableParameter))
-        return false;
-
      final VariableParameter rhs = (VariableParameter)obj;
 
      if( ! (recordType == rhs.recordType)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/VariableTransmitterParameters.java b/src-generated/edu/nps/moves/dis7/VariableTransmitterParameters.java
index 8cdcc0cd6f..e06af319ef 100644
--- a/src-generated/edu/nps/moves/dis7/VariableTransmitterParameters.java
+++ b/src-generated/edu/nps/moves/dis7/VariableTransmitterParameters.java
@@ -16,7 +16,7 @@ import edu.nps.moves.dis7.enumerations.*;
 public class VariableTransmitterParameters extends Object implements Serializable
 {
    /** Type of VTP uid 66 */
-   protected VariableRecordTypes recordType = VariableRecordTypes.values()[0];
+   protected VariableRecordType recordType = VariableRecordType.values()[0];
 
    /** Length, in bytes */
    protected short  recordLength;
@@ -46,14 +46,14 @@ public int getMarshalledSize()
 
 
 /** Setter for {@link VariableTransmitterParameters#recordType}*/
-public VariableTransmitterParameters setRecordType(VariableRecordTypes pRecordType)
+public VariableTransmitterParameters setRecordType(VariableRecordType pRecordType)
 {
     recordType = pRecordType;
     return this;
 }
 
 /** Getter for {@link VariableTransmitterParameters#recordType}*/
-public VariableRecordTypes getRecordType()
+public VariableRecordType getRecordType()
 {
     return recordType; 
 }
@@ -89,7 +89,7 @@ public byte[] getRecordSpecificFields()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -113,18 +113,18 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
     {
-        recordType = VariableRecordTypes.unmarshalEnum(dis);
+        recordType = VariableRecordType.unmarshalEnum(dis);
         uPosition += recordType.getMarshalledSize();
         recordLength = (short)dis.readUnsignedShort();
         uPosition += 2;
         for(int idx = 0; idx < recordSpecificFields.length; idx++)
-            recordSpecificFields[idx] = dis.readByte(); // mike check
-        uPosition += recordSpecificFields.length; // todo, multiply by prim size mike
+            recordSpecificFields[idx] = dis.readByte();
+        uPosition += (recordSpecificFields.length * 1);
         padding = new byte[Align.from64bits(uPosition,dis)];
         uPosition += padding.length;
     }
@@ -164,7 +164,7 @@ public void marshal(java.nio.ByteBuffer buff) throws Exception
  */
 public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 {
-    recordType = VariableRecordTypes.unmarshalEnum(buff);
+    recordType = VariableRecordType.unmarshalEnum(buff);
     recordLength = (short)(buff.getShort() & 0xFFFF);
     for(int idx = 0; idx < recordSpecificFields.length; idx++)
         recordSpecificFields[idx] = buff.get();
@@ -173,7 +173,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -200,9 +200,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof VariableTransmitterParameters))
-        return false;
-
      final VariableTransmitterParameters rhs = (VariableTransmitterParameters)obj;
 
      if( ! (recordType == rhs.recordType)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/Vector2Float.java b/src-generated/edu/nps/moves/dis7/Vector2Float.java
index 0d366c659a..0c61ab4133 100644
--- a/src-generated/edu/nps/moves/dis7/Vector2Float.java
+++ b/src-generated/edu/nps/moves/dis7/Vector2Float.java
@@ -70,7 +70,7 @@ public float getY()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -89,7 +89,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -136,7 +136,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -163,9 +163,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof Vector2Float))
-        return false;
-
      final Vector2Float rhs = (Vector2Float)obj;
 
      if( ! (x == rhs.x)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/Vector3Double.java b/src-generated/edu/nps/moves/dis7/Vector3Double.java
index 4330bc4cda..b4d48678ad 100644
--- a/src-generated/edu/nps/moves/dis7/Vector3Double.java
+++ b/src-generated/edu/nps/moves/dis7/Vector3Double.java
@@ -87,7 +87,7 @@ public double getZ()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -107,7 +107,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -158,7 +158,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -185,9 +185,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof Vector3Double))
-        return false;
-
      final Vector3Double rhs = (Vector3Double)obj;
 
      if( ! (x == rhs.x)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/Vector3Float.java b/src-generated/edu/nps/moves/dis7/Vector3Float.java
index 8386eff27c..d48b2470fd 100644
--- a/src-generated/edu/nps/moves/dis7/Vector3Float.java
+++ b/src-generated/edu/nps/moves/dis7/Vector3Float.java
@@ -87,7 +87,7 @@ public float getZ()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -107,7 +107,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -158,7 +158,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -185,9 +185,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof Vector3Float))
-        return false;
-
      final Vector3Float rhs = (Vector3Float)obj;
 
      if( ! (x == rhs.x)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/VectoringNozzleSystem.java b/src-generated/edu/nps/moves/dis7/VectoringNozzleSystem.java
index 47f68d4f3e..9bd9fdb07d 100644
--- a/src-generated/edu/nps/moves/dis7/VectoringNozzleSystem.java
+++ b/src-generated/edu/nps/moves/dis7/VectoringNozzleSystem.java
@@ -70,7 +70,7 @@ public float getVerticalDeflectionAngle()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     try 
     {
@@ -89,7 +89,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     try 
@@ -136,7 +136,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -163,9 +163,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof VectoringNozzleSystem))
-        return false;
-
      final VectoringNozzleSystem rhs = (VectoringNozzleSystem)obj;
 
      if( ! (horizontalDeflectionAngle == rhs.horizontalDeflectionAngle)) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/WarfareFamilyPdu.java b/src-generated/edu/nps/moves/dis7/WarfareFamilyPdu.java
index 70124d6e61..f9a88fa84d 100644
--- a/src-generated/edu/nps/moves/dis7/WarfareFamilyPdu.java
+++ b/src-generated/edu/nps/moves/dis7/WarfareFamilyPdu.java
@@ -38,7 +38,7 @@ public int getMarshalledSize()
  * @see java.io.DataOutputStream
  * @param dos The DataOutputStream
  */
-public void marshal(DataOutputStream dos)
+public void marshal(DataOutputStream dos) throws Exception
 {
     super.marshal(dos);
     try 
@@ -56,7 +56,7 @@ public void marshal(DataOutputStream dos)
  * @param dis The DataInputStream
  * @return marshalled size
  */
-public int unmarshal(DataInputStream dis)
+public int unmarshal(DataInputStream dis) throws Exception
 {
     int uPosition = 0;
     uPosition += super.unmarshal(dis);
@@ -100,7 +100,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
 }
 
  /*
-  * The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
+  * Override of default equals method.  Calls equalsImpl() for content comparison.
   */
 @Override
  public boolean equals(Object obj)
@@ -122,9 +122,6 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
  {
      boolean ivarsEqual = true;
 
-    if(!(obj instanceof WarfareFamilyPdu))
-        return false;
-
      final WarfareFamilyPdu rhs = (WarfareFamilyPdu)obj;
 
     return ivarsEqual && super.equalsImpl(rhs);
diff --git a/src-generated/edu/nps/moves/dis7/enumerations/VariableRecordTypes.java b/src-generated/edu/nps/moves/dis7/enumerations/VariableRecordType.java
similarity index 99%
rename from src-generated/edu/nps/moves/dis7/enumerations/VariableRecordTypes.java
rename to src-generated/edu/nps/moves/dis7/enumerations/VariableRecordType.java
index fa8a9562d0..189e09a9c4 100644
--- a/src-generated/edu/nps/moves/dis7/enumerations/VariableRecordTypes.java
+++ b/src-generated/edu/nps/moves/dis7/enumerations/VariableRecordType.java
@@ -12,7 +12,7 @@ import edu.nps.moves.dis7.*;
  * UID 66 marshal size 32<br>
  * Variable Record Types
  */
-public enum VariableRecordTypes 
+public enum VariableRecordType 
 {
     /** DDCP Join Transaction Join Request Message */
     DDCP_JOIN_TRANSACTION_JOIN_REQUEST_MESSAGE (1001, "DDCP Join Transaction Join Request Message"),
@@ -2331,7 +2331,7 @@ public enum VariableRecordTypes
     private int value;
     private final String description;
 
-    VariableRecordTypes(int value, String description)
+    VariableRecordType(int value, String description)
     {
         this.value = value;
         this.description = description;
@@ -2352,13 +2352,13 @@ public enum VariableRecordTypes
       return 32;
     }
 
-    public static VariableRecordTypes getEnumForValue(int i)
+    public static VariableRecordType getEnumForValue(int i)
     {
-       for(VariableRecordTypes val: VariableRecordTypes.values()) {
+       for(VariableRecordType val: VariableRecordType.values()) {
           if(val.getValue()==i)
               return val;
        }
-       System.err.println("No enumeration found for value " + i + " of enumeration VariableRecordTypes");
+       System.err.println("No enumeration found for value " + i + " of enumeration VariableRecordType");
        return null;
     }
 
@@ -2373,12 +2373,12 @@ public enum VariableRecordTypes
         buff.putInt(getValue());
     }
 
-    public static VariableRecordTypes unmarshalEnum (DataInputStream dis) throws Exception
+    public static VariableRecordType unmarshalEnum (DataInputStream dis) throws Exception
     {
         return getEnumForValue(dis.readInt());
     } 
 
-    public static VariableRecordTypes unmarshalEnum (ByteBuffer buff)
+    public static VariableRecordType unmarshalEnum (ByteBuffer buff)
     {
         return getEnumForValue(buff.getInt());
     }
diff --git a/src/edu/nps/moves/dis7/Marshaller.java b/src/edu/nps/moves/dis7/Marshaller.java
index b3fbb1e48f..111ec5d714 100644
--- a/src/edu/nps/moves/dis7/Marshaller.java
+++ b/src/edu/nps/moves/dis7/Marshaller.java
@@ -16,20 +16,20 @@ public interface Marshaller
 {
     public int getMarshalledSize();
     
-    public void marshal(DataOutputStream dos);
-    public int unmarshal(DataInputStream dis);
+    public void marshal(DataOutputStream dos) throws Exception;
+    public int unmarshal(DataInputStream dis) throws Exception;
 
     /**
      * Packs a Pdu into the ByteBuffer.
      * @see java.nio.ByteBuffer
      * @param buff The ByteBuffer at the position to begin writing
      */
-    public void marshal(ByteBuffer buff);
+    public void marshal(ByteBuffer buff) throws Exception;
     
     /**
      * Unpacks a Pdu from the underlying data.
      * @see java.nio.ByteBuffer
      * @param buff The ByteBuffer at the position to begin reading
      */
-    public int unmarshal(ByteBuffer buff);
+    public int unmarshal(ByteBuffer buff) throws Exception;
 }
diff --git a/src/edu/nps/moves/dis7/PduStatus.java b/src/edu/nps/moves/dis7/PduStatus.java
index 8c32434c06..ead0641821 100644
--- a/src/edu/nps/moves/dis7/PduStatus.java
+++ b/src/edu/nps/moves/dis7/PduStatus.java
@@ -2,7 +2,6 @@
  * Copyright (c) 2008-2019, MOVES Institute, Naval Postgraduate School. All rights reserved.
  * This work is licensed under the BSD open source license, available at https://www.movesinstitute.org/licenses/bsd.html
  */
-
 package edu.nps.moves.dis7;
 
 import java.io.DataInputStream;
@@ -12,101 +11,109 @@ import java.nio.ByteBuffer;
 
 /**
  * PduStatus.java, section 6.2.67
- *
+ * <p>
  * Sample use:
- *      import static edu.nps.moves.dis.PduStatus.*;
+ * import static edu.nps.moves.dis7.PduStatus.*;
  * All pdus:
- *      PduStatus stat = new PduStatus((byte)(CEI_COUPLED | LVC_LIVE));
+ * PduStatus stat = new PduStatus((byte)(CEI_COUPLED | LVC_LIVE));
  * EntityState pdu:
- *      PduStatus stat = new PduStatus();
- *      stat.setValue((byte)(CEI_NOT_COUPLED | LVC_VIRTUAL | TEI_NO_DIFFERENCE));
- * 
+ * PduStatus stat = new PduStatus();
+ * stat.setValue((byte)(CEI_NOT_COUPLED | LVC_VIRTUAL | TEI_NO_DIFFERENCE));
+ *
  * @author Mike Bailey, jmbailey@nps.edu
  * @version $Id$
  */
 public class PduStatus
 {
-    public static byte TEI_NO_DIFFERENCE =          (byte) 0b00000000; // bit 0
-    public static byte TEI_DIFFERENCE =             (byte) 0b00000001;
-    
-    public static byte LVC_NO_STATEMENT =           (byte) 0b00000000; // bits 1-2
-    public static byte LVC_LIVE =                   (byte) 0b00000010;
-    public static byte LVC_VIRTUAL =                (byte) 0b00000100;
-    public static byte LVC_CONSTRUCTIVE =           (byte) 0b00000110;
-    
-    public static byte CEI_NOT_COUPLED =            (byte) 0b00000000; // bit 3
-    public static byte CEI_COUPLED =                (byte) 0b00001000;
-    
-    public static byte FTI_MUNITION =               (byte) 0b00000000; // bit 4
-    public static byte FTI_EXPENDABLE =             (byte) 0b00010000;
-    
-    public static byte DTI_MUNITION =               (byte) 0b00000000; // bits 4-5 
-    public static byte DTI_EXPENDABLE =             (byte) 0b00010000; 
-    public static byte DTI_NON_MUNITION_EXPLOSION = (byte) 0b00100000;
-    
-    public static byte RAI_NO_STATEMENT =           (byte) 0b00000000; // bits 4-5
-    public static byte RAI_UNATTACHED =             (byte) 0b00010000;
-    public static byte RAI_ATTACHED =               (byte) 0b00100000;
-    
-    public static byte IAI_NOSTATEMENT =            (byte) 0b00000000; // bits 4-5
-    public static byte IAI_UNATTACHED =             (byte) 0b00010000;
-    public static byte IAI_ATTACHED =               (byte) 0b00100000;
-    
-    public static byte ISM_REGENERATION =           (byte) 0b00000000; // bit 4
-    public static byte ISM_INTERACTIVE =            (byte) 0b00010000;
-    
-    public static byte AII_NOT_ACTIVE =             (byte) 0b00000000; // bit 5
-    public static byte AII_ACTIVE =                 (byte) 0b00100000;
-    
-    private byte value = 0;
-    
-    public PduStatus(){}
-    
-    public PduStatus(byte b)
-    {
-       value = b;
-    }
-    
-    public void setValue(byte b)
-    {
-        value = b;
-    }
-    
-    public byte getValue()
-    {
-        return value;
-    }
-    
-    public byte orTo(byte b)
-    {
-        value |= b;
-        return value;
-    }
-    
-    public int getMarshalledSize()
-    {
-        return 1;
-    }
-    
-    public void marshal(DataOutputStream dos) throws IOException
-    {
-        dos.writeByte(value);
-    }
-    
-    public int unmarshal(DataInputStream dis) throws IOException
-    {
-        value = dis.readByte();
-        return 1;
-    }
-
-    public void marshal(ByteBuffer buff)
-    {
-        buff.put(value);
-    }
-    
-    public int unmarshal(ByteBuffer buff)
-    {
-        value = buff.get();
-        return 1;
-    }
+  public static byte TEI_NO_DIFFERENCE = (byte) 0b00000000; // bit 0
+  public static byte TEI_DIFFERENCE = (byte) 0b00000001;
+
+  public static byte LVC_NO_STATEMENT = (byte) 0b00000000; // bits 1-2
+  public static byte LVC_LIVE = (byte) 0b00000010;
+  public static byte LVC_VIRTUAL = (byte) 0b00000100;
+  public static byte LVC_CONSTRUCTIVE = (byte) 0b00000110;
+
+  public static byte CEI_NOT_COUPLED = (byte) 0b00000000; // bit 3
+  public static byte CEI_COUPLED = (byte) 0b00001000;
+
+  public static byte FTI_MUNITION = (byte) 0b00000000; // bit 4
+  public static byte FTI_EXPENDABLE = (byte) 0b00010000;
+
+  public static byte DTI_MUNITION = (byte) 0b00000000; // bits 4-5 
+  public static byte DTI_EXPENDABLE = (byte) 0b00010000;
+  public static byte DTI_NON_MUNITION_EXPLOSION = (byte) 0b00100000;
+
+  public static byte RAI_NO_STATEMENT = (byte) 0b00000000; // bits 4-5
+  public static byte RAI_UNATTACHED = (byte) 0b00010000;
+  public static byte RAI_ATTACHED = (byte) 0b00100000;
+
+  public static byte IAI_NOSTATEMENT = (byte) 0b00000000; // bits 4-5
+  public static byte IAI_UNATTACHED = (byte) 0b00010000;
+  public static byte IAI_ATTACHED = (byte) 0b00100000;
+
+  public static byte ISM_REGENERATION = (byte) 0b00000000; // bit 4
+  public static byte ISM_INTERACTIVE = (byte) 0b00010000;
+
+  public static byte AII_NOT_ACTIVE = (byte) 0b00000000; // bit 5
+  public static byte AII_ACTIVE = (byte) 0b00100000;
+
+  private byte value = 0;
+
+  public PduStatus()
+  {
+  }
+
+  public PduStatus(byte b)
+  {
+    value = b;
+  }
+
+  public void setValue(byte b)
+  {
+    value = b;
+  }
+
+  public byte getValue()
+  {
+    return value;
+  }
+
+  public byte orTo(byte b)
+  {
+    value |= b;
+    return value;
+  }
+
+  public int getMarshalledSize()
+  {
+    return 1;
+  }
+
+  public void marshal(DataOutputStream dos) throws IOException
+  {
+    dos.writeByte(value);
+  }
+
+  public int unmarshal(DataInputStream dis) throws IOException
+  {
+    value = dis.readByte();
+    return 1;
+  }
+
+  public void marshal(ByteBuffer buff)
+  {
+    buff.put(value);
+  }
+
+  public int unmarshal(ByteBuffer buff)
+  {
+    value = buff.get();
+    return 1;
+  }
+
+  @Override
+  public boolean equals(Object obj)
+  {
+    return obj instanceof PduStatus && ((PduStatus) obj).getValue() == getValue();
+  }
 }
diff --git a/src/edu/nps/moves/dis7/examples/EntityUse.java b/src/edu/nps/moves/dis7/examples/EntityUse.java
index d33bb74ff6..0a2589eb85 100644
--- a/src/edu/nps/moves/dis7/examples/EntityUse.java
+++ b/src/edu/nps/moves/dis7/examples/EntityUse.java
@@ -72,7 +72,7 @@ public class EntityUse
    * Using two methods, create and send an EntityState PDU, describing an AD44 Shenandoah destroyer tender, uid 11963.
    * @throws IOException 
    */
-  public static void exampleUse() throws IOException
+  public static void exampleUse() throws Exception
   {
     PduFactory pduFactory = new PduFactory();  // uses defaults: usa, exercise id 1, site id 2, app id 3, absolute time
 
diff --git a/src/edu/nps/moves/dis7/examples/PduSender.java b/src/edu/nps/moves/dis7/examples/PduSender.java
index fe9ec05502..3ac613f696 100644
--- a/src/edu/nps/moves/dis7/examples/PduSender.java
+++ b/src/edu/nps/moves/dis7/examples/PduSender.java
@@ -311,7 +311,7 @@ public class PduSender
       //container.setPdus(generatedPdus);
       //container.marshallToXml("examplePdus.xml");
     }
-    catch (IOException e) {
+    catch (Exception e) {
       System.out.println(e);
     }
   }
diff --git a/src/edu/nps/moves/dis7/util/DisNetworking.java b/src/edu/nps/moves/dis7/util/DisNetworking.java
index f0f3eaae47..4010029414 100644
--- a/src/edu/nps/moves/dis7/util/DisNetworking.java
+++ b/src/edu/nps/moves/dis7/util/DisNetworking.java
@@ -95,7 +95,7 @@ public class DisNetworking
     return new BuffAndLength(packet.getData(), packet.getLength());
   }
 
-  public void sendPdu(Pdu pdu) throws IOException
+  public void sendPdu(Pdu pdu) throws Exception
   {
     // turn object into byte stream
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
diff --git a/src/edu/nps/moves/dis7/util/playerrecorder/Recorder.java b/src/edu/nps/moves/dis7/util/playerrecorder/Recorder.java
index 638460e769..d36cac0d2e 100644
--- a/src/edu/nps/moves/dis7/util/playerrecorder/Recorder.java
+++ b/src/edu/nps/moves/dis7/util/playerrecorder/Recorder.java
@@ -211,7 +211,7 @@ public class Recorder implements PduReceiver
           disnet.sendPdu(pdu);
           sleep(100);
         }
-        catch(IOException ex) {
+        catch(Exception ex) {
           System.err.println("Exception sending Pdu: "+ex.getLocalizedMessage());
         }
       }
diff --git a/src/edu/nps/moves/dis7/util/playerrecorder/ValidationPdusMakerV1.java b/src/edu/nps/moves/dis7/util/playerrecorder/ValidationPdusMakerV1.java
index 5f2a374144..75291cf74c 100644
--- a/src/edu/nps/moves/dis7/util/playerrecorder/ValidationPdusMakerV1.java
+++ b/src/edu/nps/moves/dis7/util/playerrecorder/ValidationPdusMakerV1.java
@@ -256,7 +256,7 @@ public class ValidationPdusMakerV1
     return 0; // no error
   }
   
-  private void sendPdu(Pdu pdu) throws IOException
+  private void sendPdu(Pdu pdu) throws Exception
   {
     disnet.sendPdu(pdu);
     sleep(100L); // Necessary because reading is asynchronous from the writing and DisNetworking is inefficiently
diff --git a/test/edu/nps/moves/dis7/CreateAllObjectTypesTest.java b/test/edu/nps/moves/dis7/CreateAllObjectTypesTest.java
index a1a7b46362..84fd82203d 100644
--- a/test/edu/nps/moves/dis7/CreateAllObjectTypesTest.java
+++ b/test/edu/nps/moves/dis7/CreateAllObjectTypesTest.java
@@ -258,6 +258,7 @@ public class CreateAllObjectTypesTest
 
   private void dumpObjectType(ObjectType ot)
   {
+    actualDumpObjectType(ot);
   }
 
   private void actualDumpObjectType(ObjectType ot)
@@ -268,4 +269,8 @@ public class CreateAllObjectTypesTest
     System.out.println(String.format(formatStr, nm, dom, kind, ot.getCategory(), ot.getSubCategory()));
   }
 
+  public static void main(String[] args)
+  {
+    new CreateAllObjectTypesTest().testCreateAllObjectTypes();
+  }
 }
diff --git a/test/edu/nps/moves/dis7/CreateAllPduTypesTest.java b/test/edu/nps/moves/dis7/CreateAllPduTypesTest.java
index e79c9a795e..cd59f150bf 100644
--- a/test/edu/nps/moves/dis7/CreateAllPduTypesTest.java
+++ b/test/edu/nps/moves/dis7/CreateAllPduTypesTest.java
@@ -134,185 +134,18 @@ public class CreateAllPduTypesTest
         /* marshal all */
         System.out.println("marshalling");
         pdus.stream().forEach(ob->{
+          try{
             ((Marshaller)ob).marshal(dos);
-            System.out.println("marshalled "+ob.getClass().getSimpleName());
-            });
-        /*
-APA.java
-AcousticEmitter.java
-AggregateIdentifier.java
-AggregateMarking.java
-AggregateType.java
-AngleDeception.java
-AngularVelocityVector.java
-AntennaLocation.java
-Appearance.java
-ArticulatedPartVP.java
-Association.java
-AttachedPartVP.java
-Attribute.java
-AttributeRecordSet.java
-        
-BeamAntennaPattern.java
-BeamData.java
-BeamStatus.java
-BlankingSector.java
-        
-ChangeOptions.java
-ClockTime.java
-CommunicationsNodeID.java
-
-DataFilterRecord.java
-DataQueryDatumSpecification.java
-DatumSpecification.java
-DeadReckoningParameters.java
-DirectedEnergyAreaAimpoint.java
-DirectedEnergyDamage.java
-DirectedEnergyPrecisionAimpoint.java
-DirectedEnergyTargetEnergyDeposition.java
-DistributedEmissionsFamilyPdu.java
-        
-EEFundamentalParameterData.java
-EightByteChunk.java
-ElectronicEmitter.java
-EmitterBeam.java
-EmitterSystem.java
-EngineFuel.java
-EngineFuelReload.java
-EntityAssociationVP.java
-EntityID.java
-EntityIdentifier.java
-EntityInformationFamilyPdu.java
-EntityManagementFamilyPdu.java
-EntityMarking.java
-EntityType.java
-EntityTypeRaw.java
-EntityTypeVP.java
-Environment.java
-EulerAngles.java
-EventIdentifier.java
-EventIdentifierLiveEntity.java
-Expendable.java
-ExpendableDescriptor.java
-ExpendableReload.java
-ExplosionDescriptor.java
-        
-FalseTargetsAttribute.java
-FastEntityStatePdu.java
-FixedDatum.java
-FourByteChunk.java
-FundamentalOperationalData.java
-        
-GridAxisDescriptor.java
-GridAxisDescriptorFixed.java
-GridAxisDescriptorVariable.java
-GridData.java
-GridDataType0.java
-GridDataType1.java
-GridDataType2.java
-GroupID.java
-        
-IFFData.java
-IFFFundamentalParameterData.java
-IOCommsNodeRecord.java
-IOEffectRecord.java
-IORecord.java
-IffDataSpecification.java
-IffLayer2Pdu.java
-InformationOperationsFamilyPdu.java
-IntercomCommunicationsParameters.java
-IntercomIdentifier.java
-
-JammingTechnique.java
-JammingTechniqueRaw.java
-
-LEVector3FixedByte.java
-LaunchedMunitionRecord.java
-LayerHeader.java
-LinearSegmentParameter.java
-LiveDeadReckoningParameters.java
-LiveEntityFamilyPdu.java
-LiveEntityIdentifier.java
-LiveEntityLinearVelocity.java
-LiveEntityOrientation.java
-LiveEntityOrientation16.java
-LiveEntityOrientationError.java
-LiveEntityPdu.java
-LiveEntityPositionError.java
-LiveEntityRelativeWorldCoordinates.java
-LiveSimulationAddress.java
-LogisticsFamilyPdu.java
-        
-MineEmplacementTime.java
-MineEntityIdentifier.java
-MinefieldFamilyPdu.java
-MinefieldIdentifier.java
-MinefieldSensorType.java
-ModulationParameters.java
-ModulationType.java
-Munition.java
-MunitionDescriptor.java
-MunitionReload.java
-        
-NamedLocationIdentification.java
-        
-ObjectIdentifier.java
-ObjectType.java
-OneByteChunk.java
-OwnershipStatus.java
-        
-Pdu.java
-PduContainer.java
-PduHeader.java
-PduStatus.java
-PropulsionSystemData.java
-ProtocolMode.java
-
-RadioCommsHeader.java
-RadioCommunicationsFamilyPdu.java
-RadioIdentifier.java
-RadioType.java
-RecordQuerySpecification.java
-RecordSpecification.java
-RecordSpecificationElement.java
-Relationship.java
-RequestID.java
-
-SecondaryOperationalData.java
-Sensor.java
-SeparationVP.java
-ShaftRPM.java
-SilentEntitySystem.java
-SimulationAddress.java
-SimulationIdentifier.java
-SimulationManagementFamilyPdu.java
-SimulationManagementWithReliabilityFamilyPdu.java
-StandardVariableRecord.java
-StandardVariableSpecification.java
-StorageFuel.java
-StorageFuelReload.java
-SupplyQuantity.java
-SyntheticEnvironmentFamilyPdu.java
-SystemIdentifier.java
-
-TotalRecordSets.java
-TrackJamData.java
-TwoByteChunk.java
-        
-UABeam.java
-UAEmitter.java
-UAFundamentalParameter.java
-UnattachedIdentifier.java
-UnsignedDISInteger.java
-        
-VariableDatum.java
-VariableParameter.java
-VariableTransmitterParameters.java
-Vector2Float.java
-Vector3Double.java
-Vector3Float.java
-VectoringNozzleSystem.java
-WarfareFamilyPdu.java
-*/
+             System.out.println("marshalled "+ob.getClass().getSimpleName());
+          }
+          catch(Exception ex) {
+             System.out.println("Error marshalling "+ob.getClass().getSimpleName() + ex.getClass().getSimpleName()+": "+ex.getLocalizedMessage());
+          }
+        });
     }
+      
+   public static void main(String[] args)
+   {
+     new CreateAllPduTypesTest().testCreateAll();
+   }
 }
diff --git a/test/edu/nps/moves/dis7/DataQueryPduRoundTrip.java b/test/edu/nps/moves/dis7/DataQueryPduRoundTrip.java
new file mode 100644
index 0000000000..f7f26f8c82
--- /dev/null
+++ b/test/edu/nps/moves/dis7/DataQueryPduRoundTrip.java
@@ -0,0 +1,151 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package edu.nps.moves.dis7;
+
+import edu.nps.moves.dis7.enumerations.ActionResponseRequestStatus;
+import edu.nps.moves.dis7.enumerations.VariableRecordType;
+import edu.nps.moves.dis7.util.DisNetworking;
+import edu.nps.moves.dis7.util.PduFactory;
+import java.io.IOException;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+/**
+ *
+ * @author mike
+ */
+public class DataQueryPduRoundTrip
+{
+  
+  public DataQueryPduRoundTrip()
+  {
+  }
+  
+  @BeforeAll
+  public static void setUpClass()
+  {
+  }
+  
+  @AfterAll
+  public static void tearDownClass()
+  {
+  }
+  
+  @BeforeEach
+  public void setUp()
+  {
+  }
+  
+  @AfterEach
+  public void tearDown()
+  {
+  }
+
+  private static int REQUEST_ID = 0x00112233;
+  private static int TIME_INTERVAL = 0x15151515;
+
+  private static FixedDatum fixedDatum1 = new FixedDatum();  
+  private static int fixedDatum1Value = 0x111111FF;
+  private static VariableRecordType fixedDatum1VarRecordType = VariableRecordType.$120_MM_HEAT_QUANTITY;
+  private static FixedDatum fixedDatum2 = new FixedDatum();
+  private static int fixedDatum2Value = 0x222222FF;
+  private static VariableRecordType fixedDatum2VarRecordType = VariableRecordType.ACCELERATION;
+  private static FixedDatum fixedDatum3 = new FixedDatum();
+  private static int fixedDatum3Value = 0x333333FF;
+  private static VariableRecordType fixedDatum3VarRecordType = VariableRecordType.NUMBER_OF_INTERCEPTORS_FIRED;
+  
+  private static VariableDatum variableDatum1 = new VariableDatum();
+  private static VariableRecordType variableDatum1Type = VariableRecordType.ADA_SHOOTING_STATUS;
+  private static byte[] variableDatum1Value = new String("varDatum1Value111").getBytes();
+  
+  private static VariableDatum variableDatum2 = new VariableDatum();
+  private static VariableRecordType variableDatum2Type = VariableRecordType.ORDER_STATUS;
+  private static byte[] variableDatum2Value = new String("222varDatum1Value222").getBytes();
+
+  static {
+    fixedDatum1.setFixedDatumValue(fixedDatum1Value);
+    fixedDatum1.setFixedDatumID(fixedDatum1VarRecordType);
+    
+    fixedDatum2.setFixedDatumValue(fixedDatum2Value);
+    fixedDatum2.setFixedDatumID(fixedDatum2VarRecordType);
+    
+    fixedDatum3.setFixedDatumValue(fixedDatum3Value);
+    fixedDatum3.setFixedDatumID(fixedDatum3VarRecordType);
+    
+    variableDatum1.setVariableDatumID(variableDatum1Type);
+    variableDatum1.setVariableDatumValue(variableDatum1Value);
+   // variableDatum1.setVariableDatumLength(variableDatum1Value.length);  // should be done automatically
+    
+    variableDatum2.setVariableDatumID(variableDatum2Type);
+    variableDatum2.setVariableDatumValue(variableDatum2Value);
+  //  variableDatum2.setVariableDatumLength(variableDatum2Value.length);  // should be done automatically
+ }
+  
+  private Pdu receivedPdu;
+  private Object waiter = new Object();
+  
+   @Test
+   public void TestRoundTrip()
+   {
+     PduFactory factory = new PduFactory();
+     
+     DataQueryPdu sendingPdu = factory.makeDataQueryPdu();
+     sendingPdu.setRequestID(REQUEST_ID);
+     sendingPdu.setTimeInterval(TIME_INTERVAL);
+     
+     sendingPdu.getFixedDatums().add(fixedDatum1);
+     sendingPdu.getFixedDatums().add(fixedDatum2);
+     sendingPdu.getFixedDatums().add(fixedDatum3);
+     
+     sendingPdu.getVariableDatums().add(variableDatum1);
+     sendingPdu.getVariableDatums().add(variableDatum2);
+     
+     setUpReceiver();
+     
+     try {
+       Thread.sleep(250l); // make sure receiver is listening
+       new DisNetworking().sendPdu(sendingPdu);
+       Thread.sleep(1000l); //(180*1000l));//waiter.wait();
+     }
+     catch(Exception ex) {
+         System.err.println("Error sending Multicast: "+ex.getLocalizedMessage());
+         System.exit(1);
+     }
+    
+    // Compare
+    // If we made it this far, we've sent and received.  Now compare.
+    if(receivedPdu.equalsImpl(sendingPdu))
+      System.out.println("passed test");
+    else
+      System.err.println("failed test");
+   }
+   
+   private void setUpReceiver()
+   {
+     Thread rcvThread = new Thread( ()->{
+       try {
+         receivedPdu = new DisNetworking().receivePdu();  // blocks
+       }
+       catch(IOException ex) {
+         System.err.println("Error receiving Multicast: "+ex.getLocalizedMessage());
+         System.exit(1);
+       }
+    //   waiter.notify();
+     });
+     
+     rcvThread.setPriority(Thread.NORM_PRIORITY);
+     rcvThread.setDaemon(true);
+     rcvThread.start();
+   }
+   
+   public static void main(String[] args)
+   {
+     new DataQueryPduRoundTrip().TestRoundTrip();
+   }
+}
diff --git a/test/edu/nps/moves/dis7/FixedAndVariableDatumRoundTrip.java b/test/edu/nps/moves/dis7/FixedAndVariableDatumRoundTrip.java
new file mode 100644
index 0000000000..a2137bd828
--- /dev/null
+++ b/test/edu/nps/moves/dis7/FixedAndVariableDatumRoundTrip.java
@@ -0,0 +1,150 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package edu.nps.moves.dis7;
+
+import edu.nps.moves.dis7.enumerations.ActionResponseRequestStatus;
+import edu.nps.moves.dis7.enumerations.VariableRecordType;
+import edu.nps.moves.dis7.util.DisNetworking;
+import edu.nps.moves.dis7.util.PduFactory;
+import java.io.IOException;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+/**
+ *
+ * @author mike
+ */
+public class FixedAndVariableDatumRoundTrip
+{
+  
+  public FixedAndVariableDatumRoundTrip()
+  {
+  }
+  
+  @BeforeAll
+  public static void setUpClass()
+  {
+  }
+  
+  @AfterAll
+  public static void tearDownClass()
+  {
+  }
+  
+  @BeforeEach
+  public void setUp()
+  {
+  }
+  
+  @AfterEach
+  public void tearDown()
+  {
+  }
+
+  private static int REQUEST_ID = 0x00112233;
+  private static ActionResponseRequestStatus REQUEST_STATUS = ActionResponseRequestStatus.RETRANSMIT_REQUEST_LATER;
+  
+  private static FixedDatum fixedDatum1 = new FixedDatum();  
+  private static int fixedDatum1Value = 0x111111FF;
+  private static VariableRecordType fixedDatum1VarRecordType = VariableRecordType.ACTIVATE_OWNSHIP;
+  private static FixedDatum fixedDatum2 = new FixedDatum();
+  private static int fixedDatum2Value = 0x222222FF;
+  private static VariableRecordType fixedDatum2VarRecordType = VariableRecordType.HUMIDITY;
+  private static FixedDatum fixedDatum3 = new FixedDatum();
+  private static int fixedDatum3Value = 0x333333FF;
+  private static VariableRecordType fixedDatum3VarRecordType = VariableRecordType.SKE_FREQUENCY;
+  
+  private static VariableDatum variableDatum1 = new VariableDatum();
+  private static VariableRecordType variableDatum1Type = VariableRecordType.ACLS_AIRCRAFT_REPORT;
+  private static String variableDatum1String = "varDatum1Value111";
+  private static byte[] variableDatum1Value = variableDatum1String.getBytes();
+  private static int variableDatum1LengthInBits = variableDatum1String.length()*8 -1; // test
+  
+  private static VariableDatum variableDatum2 = new VariableDatum();
+  private static VariableRecordType variableDatum2Type = VariableRecordType.Z_ACCELERATION;
+  private static byte[] variableDatum2Value = new String("222varDatum1Value222").getBytes();
+
+  static {
+    fixedDatum1.setFixedDatumValue(fixedDatum1Value);
+    fixedDatum1.setFixedDatumID(fixedDatum1VarRecordType);
+    
+    fixedDatum2.setFixedDatumValue(fixedDatum2Value);
+    fixedDatum2.setFixedDatumID(fixedDatum2VarRecordType);
+    
+    fixedDatum3.setFixedDatumValue(fixedDatum3Value);
+    fixedDatum3.setFixedDatumID(fixedDatum3VarRecordType);
+    
+    variableDatum1.setVariableDatumID(variableDatum1Type);
+    variableDatum1.setVariableDatumValue(variableDatum1Value);
+    variableDatum1.setVariableDatumLength(variableDatum1LengthInBits);
+    
+    variableDatum2.setVariableDatumID(variableDatum2Type);
+    variableDatum2.setVariableDatumValue(variableDatum2Value);
+    variableDatum2.setVariableDatumLength(variableDatum2Value.length * 8); //in bits
+ }
+  
+  private Pdu receivedPdu;
+  private Object waiter = new Object();
+  
+   @Test
+   public void TestRoundTrip()
+   {
+     PduFactory factory = new PduFactory();
+     ActionResponsePdu sentPdu = factory.makeActionResponsePdu();
+     
+     sentPdu.getFixedDatums().add(fixedDatum1);
+     sentPdu.getFixedDatums().add(fixedDatum2);
+     sentPdu.getFixedDatums().add(fixedDatum3);
+     
+     sentPdu.getVariableDatums().add(variableDatum1);
+     sentPdu.getVariableDatums().add(variableDatum2);
+     
+     setUpReceiver();
+     
+     try {
+       Thread.sleep(250l); // make sure receiver is listening
+       new DisNetworking().sendPdu(sentPdu);
+       Thread.sleep(1000l); //(180*1000l));//waiter.wait();
+     }
+     catch(Exception ex) {
+         System.err.println("Error sending Multicast: "+ex.getLocalizedMessage());
+         System.exit(1);
+     }
+    
+    // Compare
+    // If we made it this far, we've sent and received.  Now compare.
+    if(receivedPdu.equals(sentPdu))
+      System.out.println("passed test");
+    else
+      System.err.println("failed test");
+   }
+   
+   private void setUpReceiver()
+   {
+     Thread rcvThread = new Thread( ()->{
+       try {
+         receivedPdu = new DisNetworking().receivePdu();  // blocks
+       }
+       catch(IOException ex) {
+         System.err.println("Error receiving Multicast: "+ex.getLocalizedMessage());
+         System.exit(1);
+       }
+    //   waiter.notify();
+     });
+     
+     rcvThread.setPriority(Thread.NORM_PRIORITY);
+     rcvThread.setDaemon(true);
+     rcvThread.start();
+   }
+   
+   public static void main(String[] args)
+   {
+     new FixedAndVariableDatumRoundTrip().TestRoundTrip();
+   }
+}
diff --git a/test/edu/nps/moves/dis7/MarshalEnumsTest.java b/test/edu/nps/moves/dis7/MarshalEnumsTest.java
index ec991eef73..3e4e861ce4 100644
--- a/test/edu/nps/moves/dis7/MarshalEnumsTest.java
+++ b/test/edu/nps/moves/dis7/MarshalEnumsTest.java
@@ -441,7 +441,7 @@ public class MarshalEnumsTest
             marshalOne(UAScanPattern.values()[0]);
             marshalOne(UAStateChangeUpdateIndicator.values()[0]);
             marshalOne(VariableParameterRecordType.values()[0]);
-            marshalOne(VariableRecordTypes.values()[0]);
+            marshalOne(VariableRecordType.values()[0]);
             marshalOne(VariantsforAirCategory200Bird.values()[0]);
             marshalOne(VariantsforLandCategoriesReptilesAmphibiansInsectsandArachnids.values()[0]);
             marshalOne(VariantsforSubsurfaceCategory201Mammal.values()[0]);
diff --git a/test/edu/nps/moves/dis7/NullFieldsMarshallTest.java b/test/edu/nps/moves/dis7/NullFieldsMarshallTest.java
index 3634fd5096..5d42f04040 100644
--- a/test/edu/nps/moves/dis7/NullFieldsMarshallTest.java
+++ b/test/edu/nps/moves/dis7/NullFieldsMarshallTest.java
@@ -46,8 +46,10 @@ public class NullFieldsMarshallTest
             dumpET(lav105);
             lav105.marshal(bb);
             dumpBb(bb);
+            System.out.println("Test complete, no exception");
         }
         catch(Exception e) {
+          System.err.println(e.getClass().getSimpleName()+": "+e.getLocalizedMessage());
             ex = e;
         }
    //temp     assertNull(ex,"Exception should be null if successful marshal");
@@ -92,4 +94,11 @@ public class NullFieldsMarshallTest
         System.out.println("LAV_105 specific: "+et.getSpecific());
         System.out.println("LAV_105 extra: "+et.getExtra());
     }
+    
+    public static void main(String[] args)
+    {
+      NullFieldsMarshallTest inst = new NullFieldsMarshallTest();
+      inst.setUp();
+      inst.testNoSpecificNoExtraMarshal();
+    }
 }
diff --git a/test/edu/nps/moves/dis7/ObjectTypeMarshallTest.java b/test/edu/nps/moves/dis7/ObjectTypeMarshallTest.java
index ff1d34e1e6..66605af6e3 100644
--- a/test/edu/nps/moves/dis7/ObjectTypeMarshallTest.java
+++ b/test/edu/nps/moves/dis7/ObjectTypeMarshallTest.java
@@ -32,6 +32,7 @@ public class ObjectTypeMarshallTest
         try {
             _2_Roll roll2 = new _2_Roll();
             common(roll2);
+            System.out.println("testGoodMarshal successful");
         }
         catch (Throwable t) {
             thr = t;
@@ -46,6 +47,7 @@ public class ObjectTypeMarshallTest
         try {
             Tracks_Tire tracksTire = new Tracks_Tire();
             common(tracksTire);
+            System.out.println("TestNoSubCategory successful");
         }
         catch (Throwable t) {
             thr = t;
@@ -78,4 +80,11 @@ public class ObjectTypeMarshallTest
         System.out.println("ObjectType category: " + ot.getCategory());
         System.out.println("ObjectType subcategory: " + ot.getSubCategory());
     }
+    
+    public static void main(String[] args)
+    {
+      ObjectTypeMarshallTest inst = new ObjectTypeMarshallTest();
+      inst.testGoodMarshall();
+      inst.testNoSubCategory();
+    }
 }
diff --git a/test/edu/nps/moves/dis7/SignalPdusTest.java b/test/edu/nps/moves/dis7/SignalPdusTest.java
new file mode 100644
index 0000000000..335e0fed5e
--- /dev/null
+++ b/test/edu/nps/moves/dis7/SignalPdusTest.java
@@ -0,0 +1,110 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package edu.nps.moves.dis7;
+
+import edu.nps.moves.dis7.enumerations.*;
+import edu.nps.moves.dis7.util.DisNetworking;
+import edu.nps.moves.dis7.util.PduFactory;
+import java.io.IOException;
+import java.lang.reflect.Method;
+import java.nio.ByteBuffer;
+import org.junit.jupiter.api.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+
+@DisplayName("Signal Pdus Test")
+public class SignalPdusTest
+{
+  @BeforeAll
+  public static void setUpClass()
+  {
+  }
+
+  @AfterAll
+  public static void tearDownClass()
+  {
+  }
+
+  @BeforeEach
+  public void setUp()
+  {
+  }
+
+  @AfterEach
+  public void tearDown()
+  {
+  }
+
+  private Pdu receivedPdu;
+
+  @Test
+  public void testRoundTrip()
+  {
+    PduFactory factory = new PduFactory();
+    SignalPdu sigPdu = factory.makeSignalPdu();  // empty contents
+
+    SignalPdu sigPdu2 = factory.makeSignalPdu();
+    sigPdu2.setEncodingScheme((short) 0x1111);
+    sigPdu2.setSampleRate(0x22222222);
+    sigPdu2.setSamples((short) 0x3333);
+    sigPdu2.setData(new String("SignalPdu-testdata").getBytes());
+
+    IntercomSignalPdu isig = factory.makeIntercomSignalPdu();
+    IntercomSignalPdu isig2 = factory.makeIntercomSignalPdu();
+    isig2.setEncodingScheme((short) 0x1111);
+    isig2.setSampleRate(0x22222222);
+    isig2.setSamples((short) 0x3333);
+    isig2.setData(new String("IntercomSignalPdu-testdata").getBytes());
+    
+    setUpReceiver();
+
+    try {
+      Thread.sleep(250l); // make sure receiver is listening
+      DisNetworking disnet = new DisNetworking();
+      disnet.sendPdu(sigPdu);
+      disnet.sendPdu(sigPdu2);
+      disnet.sendPdu(isig);
+      disnet.sendPdu(isig2);
+      
+      Thread.sleep(1000l); //(180*1000l));//waiter.wait();
+    }
+    catch (Exception ex) {
+      System.err.println("Error sending Multicast: " + ex.getLocalizedMessage());
+      System.exit(1);
+    }
+
+    // Compare
+    // If we made it this far, we've sent and received.  Now compare.
+    if (receivedPdu.equals(sigPdu))
+      System.out.println("passed test");
+    else
+      System.err.println("failed test");
+  }
+
+  private void setUpReceiver()
+  {
+    Thread rcvThread = new Thread(() -> {
+      try {
+        receivedPdu = new DisNetworking().receivePdu();  // blocks
+      }
+      catch (IOException ex) {
+        System.err.println("Error receiving Multicast: " + ex.getLocalizedMessage());
+        System.exit(1);
+      }
+      //   waiter.notify();
+    });
+
+    rcvThread.setPriority(Thread.NORM_PRIORITY);
+    rcvThread.setDaemon(true);
+    rcvThread.start();
+  }
+
+  public static void main(String[] args)
+  {
+    new SignalPdusTest().testRoundTrip();
+  }
+
+}
-- 
GitLab