diff --git a/src-generated/edu/nps/moves/dis7/APA.java b/src-generated/edu/nps/moves/dis7/APA.java
index 123f371087364880bb29662ca669cc7d0e273d58..fbff55363018b16f8921202716869f11385ca653 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 9bdd31f512f695eaa0c05e2c7739fdb9219782a9..f68e6f2ff2734ce84a34b298bde0cf3bec228b6e 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 0f440bf0fcd30d7aa1c713232ff601d8cbba4350..32da80ccfcbf3d132bd4e432c754e844e05f9bd9 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 86dd88684edf59cd597c48d77856d138827260ea..8385c2f60188b1b427211aa1e270f6ac9130bf96 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 b1ffd530dda70ccacffd42976e7e464c7b846a83..da72ea63b8f2de2472be9876f0a64fe12b1696e9 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 218e17ea92a161c10e380f79a47d14ee8637dfbe..4b8e3676065c96e78b2b3294f7d292282f6aa214 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 3d13873010c45be6d0a25c72fa9af86c80342957..73174f7a1dbf028652eb5b6b3c6f1e63f5e7e74c 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 8b9ebf958d68f4373fde737e7eac253d564a4df2..0bec73a1e02eca927f452bbdfea2d27669309604 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 99287d37be226d82d1e1deb201060e8c067a2c66..5fcf12f269317d2c87de5eb5e9f98e5fe531c1dc 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 e3c2cb8f010ed95ffded359d3760401d77ab9772..c6e216f022d3ac5327762389de115917300f71a7 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 c23ddc7c122c19e535ba96f0e409a6f8f393b66f..62f6b9c474c282f2121037f79ee7cbb15730e2db 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 3eb39fbadf21d8433b5a4621f663e4083688c71b..d5087967a7cf2ae77ed15b91ace14863b63d3abf 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 b9f0be1ad6a80b22dd71907a73c9659b80af76bd..b2fa32328c667db9ba41882661e45d87b6d87191 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 be8f1de686a68bcb741ce1c16938b647e09f26e4..607ebd3a9ace69f0a17655cf87bcc5e5e0bab565 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 92853db10defa9ece1db8d556771e7eaaa4b3ded..3a849eede487e04515226ffde0428f6e36a50e5b 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 f8e7c01c2996bbaab165005b3a268dc2114c7835..b68aaf84c4ea1a2de1445c146ac79e506fae87b0 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 83322206ea5f98ceaff58591dd09a511fbd12f13..c36b85c33d86541e42e71a0d5959aff4ceedfdf8 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 cf3bff106c5d4a331835d18047bab4b78995b251..2dd87d0ff4eaa7d140306a1baa92017cefae986d 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 5cbb10849a37a02cbb6c6134d7f0e1d38aaecab9..fd904f0d011a953f026a663e9b633ed9ba904ce0 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 85db06a8f4dda051dc12e7a2f92b28b38b0c7de3..84f17d4ddc48e3f788e44518eab1b6dfac5dcf32 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 e21bc5b2402456f61c0d42f6512a8b4a00be91a8..35acca60484ca7077910927180929e8e11fccbe6 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 29ab37e918a9a0b53091467384032984ee1a9cd5..3e909528df2afca43ce5f0f18387d591913dd6ab 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 d07eb4c3399ef365e73a211df0b42c6e3a3660ac..643c7cab7389574ad1ac10f08c7670fbba1c8416 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 288b03cbabe2d92d63fefd1fe3439b2c7a2c762e..0a3d436b2b6c763bfbfe569cf21ade73b783efcc 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 b65b907626645129b25c5745d7fb4b2c3748b811..af479f0d4c8aeecc8a517bd711026fafc274920a 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 f67d8eb17aa72bedeb819890f4b87aaed471425c..8598551fa57b14dbf2aeb7f80938c22c0f9b7624 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 d1fb7b148d648ab1f17cfab0fdb32e9ab9e4a9c9..4cbc8cf49db15ce235ea3c29942881be759bda3e 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 6fdc57e82eab5bf6866da771c663ed94dc8f0921..7625a02094d9dcb403d2ae7fd4490b9e6f33589c 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 84e91459be8853916e40f8c79a8dbbb1b777be72..7929df04910f8e83d814b924b218ab9f7f153df0 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 b7eb92005970fa3002f1ae8456052ae36b7fabdd..aed05aa93e28b529ad4c0d9979c679d293a3507a 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 2a515030db2b91574c02339cd792d78d2ed3ee5e..1927a3db1d4217b12ad771914915a07c30e62356 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 4d001102f4c00c522ac4bed9fea9bd12f35d7f25..5ca36bba068390f230ec6ac43907e5189c3dbaf5 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 e9d8a98b942872b612e8b3db974f801a16f0d9d1..943fa6f40aae2291f7673fc07508742193ce3b82 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 7e73f45d0b2acbc5fb7ddb2e0b557ab299b63323..331ed2ea5dfe572d7eaea9015f15fc506a223525 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 03699f8f97238dc8431dc8ea679f436063d7a7dd..6294f59501a4a52d9816368d1f48f94a79e0bad6 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 00683ba32c818206ce634a7b7e3014304ac6d314..6fcbb5885ab7e4f13019b39b5507c397abc78a4d 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 33ca5fc5a55af9801b4737ef4bc0129527b2da32..431bf92b5594c844e09fd67c0730913a6d602cfc 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 c6dafd4dc895390339da1179f4d7faf23c53cbb9..49185b148fe77145c1874436e8c5bc79a141f90a 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 61d1ce66d9ce0f34bbd2b8814e33a3658e405856..0f8686fc5f501952def80ee50c84b1a4b748dab4 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 97a6a4c83c33fc620907cd5ee1b531814b45cbf4..4ce1362cb073e534fb85a52e4f8b28dafe8a6e60 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 723648c836b5664dff4ad229bb71ec124aca9af1..e6db4eb600d16417ccb6a5c090f9ec90d0cc1482 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 ef8c82198a86fe43d8f1a1337968949cb64f6a5d..6f49128071bf87c5dc1b5b1dddfc1abe7d758e26 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 8d959388447dccc17edd1eac3e0cad13302a843f..3df2a1370100bba056828f5c6b532570f9e7b071 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 846aea05d00ffa44b2548339da94bab93251fccc..5de89bdcc41a4c4258e4317afde90977accf0f5e 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 37da952ec9cc2272d9548282fdc44469268dd52a..94667c8b3b54f19350123dc8ee4dd6bae3a27e96 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 46b2887daa2589cb3c7b7a48bc1d70c26ec1db27..4a810aabbfb966805c78fc8c2dc0c498cb069ae5 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 653bc02ee44fef528975f17138dcd0efc37b4d00..e1b6b1ed264ad38a291b332d8fd2e4a0b7e7e254 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 e3704388ae172ff6a2d86ae56a376faea386f591..fd4a627a294bb615216f581c941779da51824e39 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 4debca1470ea8174ecf1cafb7e3a3d4301fa94e4..0534359d6ce19436ee706ced83f2739d193c3f97 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 d10f468264c86dc5f4e99d56b1a594048c0d8244..d4fd52bd73feb8e2996fc9f9a94f26fa4c0e811b 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 d1ae02a27c29e93001de052a8bc2565760f2d530..c62f76904874d8e16cd583df859a13cdaa5de0c3 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 0c8ecceda21df36e681efd284eedf0aac8701958..6ce1e1cf8666c62bda032bd73e48d18698dce322 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 9b23aa9c38f9a7e29a2c4e0e02afb27d071383f7..c5ff9b0e772dfa9dfc0f12233a906abc7bfc50dd 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 c8f149ee3def7b17faa6765cff0a4743f8f6d6cd..6ff88c6b650fd5f4b2cc5b35100664d6d116de29 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 878937fd30a7cb6aaedb84693e65d3617c178031..0d15a28ec499113797791e0c99bb065d56da1602 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 f9d24118643ec5255c27998de5f08529f92be7b7..e83b1a819edf57caa550ed094a578a60c4fe9a0e 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 f11af883690c2c53d585bacb5994c71724dc79e7..c8359095a7e06f494f77dc0f69e15d45388b69ad 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 f8dfe1f512339ec4ed170f0304fbfc694fd7c37e..8016201cc6c5e27d03e51a5cab832b6c10197c65 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 806eb55b9024ac9822b8d5ce798b89b404e87f0b..5a6b1e1deea1719c71e5f956accfe94019d70d17 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 4807f463dbca45706dd94178f4abc1791d9e3234..5798b71f2a4ed8998492902db8994ce7f9944d70 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 4b748e9b100fe8fe1af7dbcb73624e6e03e1e8fa..92b1dd138999efff4f0784950bbb26c342220ad5 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 466e2e6d8ba4a714807967bd6dcb3930f26b35d5..f2aad6e0eec7dfcdec049965ccd23658246ecdfd 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 aadeb09226345d13776ed723ad2d33ad4d521f83..c97a69a4076abc9b8774de98883a107b825ff907 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 093c6348e51047bd6a7c14e125940afb07b45f19..f625842b919fb8fada57766481a12d9154c25136 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 96f2499c101917f7dc30a9793dae7022e566985e..df94e05a04e354b02bd872aa3f9f6869a2efecf0 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 a20a6abd5f64c11921125b8c55278270199ecc86..8db153994db851b84ab5d03120acd24de8c1db60 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 4c26ffa592df18866f81e0b6d425296b5407423f..af5544b26d82a721732a96490275d5199f9818b1 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 6d62b52ceb3f09b58bd3043b65b7a45efd1fcce6..c87a03968d2b53955f259d3ec63262ee57a716a8 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 05e5637b2d3817e4117f3ba2ce3d6b7a6d12e470..db0a3c269c4977eb04a058dbae86288ca508db24 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 81db47517b2a9fb94693dec415c4831d878a92e5..fbd7a03ca052ac3f9cc7059a9821d2a211c7f57f 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 1b937c4c1a85c53c80f980557d02719f95b70bf2..9a6fa3108d9fbf630313bde5d1e28f092d0cf690 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 8e566a04aad72be23465a45aa6a304ced3b857ac..8aa177e0505857fdf5432edac887c131c6bc8a15 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 315fca943833d59676b5b9192f7379a9354207a3..2941c4107ee714c5a43eabdf69837c559e4d022c 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 189e3607c16979bfa4eba566ce6164bfbbf990be..06579711ec797122ebc7c3d92278e29c0d24886b 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 eaa8012753d17fc9187e177977213f1bb6da5be7..081bbbc234c9c8e3540d3efc1d858b70372ff5be 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 7355392c8ec2d62abe941afdde991b10fc5c9132..bfd2c7d04ed97977ac82b34ed19eac5b63ce6232 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 b60075cdaadcf57c7421902a5e2aad5e955b3cbb..d8985806354ec0fc6ad50da189b20a8988867df1 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 759d3c6969876c6bac82c029f3863bb7e285ed4d..cf24792817c14bd77f0044786931260ce29e3d5d 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 5f981f8485562b4eac63c7fdaf4dd4d0ed5d67d0..848fd2a9929e804a35d47791d42722973fa86d17 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 8cbe685909b6c1966abc8c68888da4eb60161858..85551755763f20afa3aac44ffdf21f7993b6b415 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 ca08c681d82393c26397cba2b777a6a3272692dc..b903ae4b37baf144f80dea3dd1c03f4c67bab40a 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 fc9699bea72e7ca98a46b77ba7d44d731d8d2233..16a1d3408693589908a4476f436503263a621a8f 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 9aaf04c7724a96f6f8b264df7bba19a75cf6bdf1..adb27b82066f8edce6279b197a3b854285e4134b 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 676fff438627920b250e894684856baa798d7111..a83486283d5809c4b6beb28bb28a10927e873a9e 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 39291fe7f9eb9f74f3a1bb6fea8c8dec15b12532..6012ac02d28d3394b61befc62dda772f4b24572e 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 4535563ca113e241724c4021a6ee38a7775a901a..829d0bf8a41bd408075eadd759d8b0f2f38db8ad 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 26df2ca604942dfc61d6b1b61d91f2118cf3d15e..7095f39e2e801d5fbfb4a651369d99a52be57a22 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 bfacdb32973adc4b1da9a538f3e1fab54ce12d51..6bf6d8922ab739d0d7c9d317bac2c092c7b7029c 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 b31e126a69f01a93c4c41a0130e28794f5004df2..eab39ecace8ed1febb99ccd86dac455f904406f3 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 1b968a1438a2ee826500f0aeccb7c8f63a70e27a..5a795007232bed8ea0a141e6484b22e291204d08 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 13e3e55628b97312b55efac357d42091148d3291..cba05e47ff2d005411624e0d0e2e3a7c2cde6238 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 5ad2c2ecfcea8af1e6a85124839206346cba6880..97aa9d2580f6a5cefed2095790c7df14cf3dc548 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 1a80b274bf744cf55456813f24b854d4177511b6..a219dbcf21ffa8e702a171f9c9062eec97b4112d 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 defc84d3b590459742b5b5fa139fdf016a8f9f21..baeb3fa3c15700f842d2de0071303efc8f79c4d3 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 08d6ec850619b5e2c73ec42b42843287b5493933..b3cad1ce1b254b125ceed17c8b1eb52c7ee88124 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 031e5dbce8496b5e9cc4397f995b4fdfed6908b4..3ee6244a2e7fb168c5316c1f1b251c94c4dfa226 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 91a98ff5e6f159bd2878aebea0aae282c23c5b51..da18ac21aa8770d7ef4360e63ba74c79947fca61 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 ab6de73070f183a86f41cfd378ed26e2fd1f8479..ba05723a776594b98be72b2b87df2f688933c880 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 3dbaa491ff25841c74837a664206c207e4baf045..45cc407de0699d8f5479c3ef1fea870dee784833 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 7613e14bf22f776e6b42cf9eb8dd1cc8933e69bc..4a306b925b96147942852939b697e3c1b26c19ff 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 9acaec69120c031d8308e67f86730859b54af028..1565e6bf5dd9c7603c1ee377b4997a5ccca8175c 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 dbe8dfac80fa5bbaf000cd0e1fcfcdab63530b05..400f3ff31bddddab23ad788170b7450a91bc7c69 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 aae478565ea9cbcc7c84c8adfadadd02e5a7ea3f..937bb97bb2ee1bd6d12b4d90f297866f6dcdb1ba 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 4dc128cb488ebd2a452dc2f9e17fcf3cc42fd048..45bfd171e77ef827801913000cdab5f37804ade6 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 71bef050021ba6560aad7497f98b0339036ac912..e13038a10329c73d53286c03dccc7e69e57401b8 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 565ab7709d9f8e0a43d510ea293a3b61a072ef23..691389599c73b505db172a10f016a5da274eb22c 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 5c6344208a4824b3d7a32b5db531bb7bf9174716..9e4d9bf4f42b4013430007558095533e6f90bf32 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 a64903e22e3e7bfb2e9a736e3cbfe11c1a0e1b74..5d9f612b70c07dbc58ef2b71272f827e4bfc9ea2 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 e2b2c03b22cb1c90e2dab70249c244d3dfe931bc..487f6c6c8f443c22c893697425ff62fd4cb6888c 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 79dde2d1c8e6dd89e38c890253a388527899f0f8..3f73fc1c19ed9d31401f179b9e27849662b006ce 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 562556af8e88ec564440f7a255f18a08b6099e09..0e73300096456a96a4e82719547902420536aa64 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 960ab62097974ce007a8331e5e675d9e8cd40789..7e257a4de73db1f74867b00b07645151d9551c23 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 fb79a5dea128e06e8a1e278538586bf75fd683a7..b5ab456093a160cc03aaee1102c8244bed409e07 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 c56a0f9beea87898dd4dfc7e41cea0d6ffc3910b..bdf11b27368313a885be6ed08af5c51c0653fbaf 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 15cfa8eef5a39d53e8082d3a5991aa5d3093f43b..5a5792f94462a29a006d6d7f51e0225f8fff49ef 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 cacea198209536bac561d7a38259d39c7817532e..eb9d358030dc72ee539b63deb5ea917381f9627a 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 f0d1bdc967c2e5fc2997d828fc3f5f71c738bf05..effc40f00d27426ae5c396ae30e1a9c63e4e1207 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 94ba50985b992eedb91f703124e93e192a809d4f..1ddcaadea00b018523fd7de69017bffed528f856 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 346a042aa0a5f323b8418d998c3a539cb361dd85..5c1e82e40c53be4a791e1082b7afba6b9f6e2d4b 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 92ba72fa23bf6ecd2e8cedd2008da3d6d21fc8a0..05137b8ca72ee96e7d211ea0da3bf3a8ccc6d05e 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 40b1b3511a1d4b3ca3cd9121934a52bbc8124c18..36e6082d9ec8f5ad7b090ade452cbcb6a4421712 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 e6a68e45a69759c8ecf8aaabbc3c534d3426cb90..888d92b4f8e64588434a408390e0786d702991ac 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 887df282f31ab892a638cc5bd84d69ea3b6c588a..f78c64096c38b2a196bfb2d3dfcd46d2da98b3af 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 4c447471c81c2c7f11573118d7fe4600c33cc722..7df6e7993300c579d2ccdd1450f2cefd54283953 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 ca4fa531d657d6bad2acaf910b4bb0ea27884456..7da4ba2b6e1ad1378c7cd5a1171466928779c29a 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 59d14587cfec1b50ebaac1491eca548c41fdfcb9..6b9b24df50b96f881fcaab05bb8f29e205c1eff6 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 c3a0c7e00b4a254a2c3a6b88297729e86c000582..35d6cc4d677cb64b16ff4413a8da9bf7486c8a55 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 cf7b2cda86ca8b9b4fd41274bbadaeb7625d930d..c7ec8ab998dafa57abb883f9ff72ead5c254e0e4 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 0919f5853167dc533b9611eb9d5ff9ace3b3951a..dee032051b5a33671df5108de83b7c456e23bdfb 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 c22fac402847312acb059991bcd4b247429a0480..ec3e969045b8e5dff0810ebba0b9cdfe14773695 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 7b7a1da7db3121539edb2da9604aa702eb2cd789..51ffcda148b290e984693a4420be429a08fccf61 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 49b710fb5700e8b40f3e4202f867040f09097226..c332388650868eb5bc80dd5a96378c60d4faf315 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 ca47cc490cfa53356fa930174c99b81ca885cfeb..67b78541a3e1239820f26db1c5ffc2abe9363387 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 7d9a15a7b122c5d3976f3016eef2e8ba4f66d0e9..f0a65a3b65e6bda6ce215aea8052495fc97aa615 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 d65c2b4643fbcdde03ac339dc80748577838221d..b10c8c4c4595a9b40183621ab5fe70692e61bfc1 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 f8707cd25e008f6d28fcbe3d3c597270be35a04c..9e12f136fa1dd1a08aad2c9bbe2ffcda362160f3 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 4d93a92a84dd1acedfd5a3f796a6003905520727..1f7c926435eeaf9cfe4a976c67b39d9078021553 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 50f025b66ca3f0603d3a112ae23969c407db54e5..a22cfdae81be1c900d53b43d8e124906eae23e9d 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 538699a4f878761eb715030676155e37a25d6288..59a4f5fdd3d24b190aed4980c307872f5afd6e3f 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 393fcb9a7f0e63049f7ddb55c5ea4db0f33940f7..afe98d1209139250f9a50e3452c2cb6187625543 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 910fb447f2509e77d18e28db470b07dd6d64a966..90fdb96b1f195601fed33472bb987fa278f4fa7a 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 dbb8714ce155d61e13f4b1d9a00871f00f4cc0c7..02d9e19268183239950343dc70dd5ee4aea439fe 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 0c0e0669fc0c1e547e36217200bb511653b9d345..1515759946f864b13a8669f3f3ae6da0c42802ff 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 be797e8523fe6fc8a2eec8df080bc573b9ad62fc..7028829338e342728f908bdf18000d21b963cf47 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 0ea8d6843238ac530d119a5004491eea310e24fa..5cfca1fccdb30a3447e246d83c9931ad26cf76fa 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 2ab7d8084b4895835592b745a5b15039c4413adc..3584c4ac09a175dded71b20c77c6f591154e6869 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 132a51c8bae41fdf952362b3b8fed7d7ba663e1f..4015c18f7632af9b767c0be41e90c577dc174c42 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 a0c0d4877e59f6e0b07b371d62fb9fcb301eee55..c50faeb54f919689b2216e6a50fdf1b38d036c69 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 094056e80c7c2f41908dc7bb5390d69e64e4025e..feedb76224b5a3385d9927835810c1975f68934c 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 39fbaad9249a859516e47767f4af62b89f264ed5..868e2b5bdbc8a45c628dbcdd49b269083229e3ed 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 8c2da6752b0827fe1b0e01f4e0ff0b8c2baa261e..0a0463a2e77536d6ce0c0839d98505bb92ee691b 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 95605d0b85b9d6323beaf567d6df956e6f0fc90d..070fa52858757ef47af02cfc9acbfb16d4ed6eb1 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 88f0b50b68299638f2b7970ae5f5d2d9a86ad547..0093c5bf339f257ebf65a541cfe52be963d76644 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 d7018b9cd9509c0327d0a56d1f12850e52e5b24f..88771eadca86519d1578539d826ec2d47600a576 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 f76766f6cb7be9117f7b3829215b3df55a067fb6..97ee56ab08a920ae3bb022f9411b2e5912d8afdc 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 99e1dc302ad75a863bf0078cadc780d287a370ec..5f404c6e5beb0eca00cf754fca38c2a76db370fb 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 cd4aec1e8deee52448180aaf3ec12c9d7bf5583e..07c4b9538e2f263e3ec048505754270443b853f4 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 a5cf9c4f41fdce75993a14ec6a6f9fc1ca637672..a48da9fa4eb985ba57cc62c913b049de903bf846 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 0f6555a519a086df68dd1657079a7a6c92177405..2187fc3d0e6a1b839dda3bfd8b44219672b1601f 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 17633c1119dd9cd0ef3468ff26381be11d6be403..c84b373ba144e63d8e43cf5086ac340da5f4ffff 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 e8b02d6609b0f0424f903ad21de02b1162406c63..9911310ae042cf9c5b087a647cf0999eee50e98a 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 2b1e9dd8327fc9a6c29098a6b5395a1930264dac..1d5a651dea3903241387e4cba31300aa0dc98877 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 c5a748a3b04789551f2286e1892b4b77639a4eec..6737100d5d8ca090fe449dc0aee8cbd7adf1bc76 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 8a79fa451b0d2cae9903305aa33e906d240fa682..a8684587b6035a18ff2696e0b10d7bab3b8bbd26 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 f724190a4a6a6be7e0b430cdc624c9dcbc5a073c..4106e6306c75b27ccb9f18bc696a3e52970efe58 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 a7a4fa6eb61aab0b1c8391dd13165f54a9d77e89..a945b34e174e4b499eed2e0340428839053e291e 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 c2c0d0da6ab39e9b1ce91f6eee8e4e0aa0911581..007fd50a3d49bcacd8e15c3a9f3bf50ccc2a53f8 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 778351d0aa0e7aae145b553652af4e7480aa737c..ca678e2f9833601a528138dae4212a9b4afa9f20 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 f26c50b80f9da756fec82ab36f6f278f0e19800f..f63e71389eb88362bfd2e1200b9531dc070db7f0 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 566cc3652d861f3281a7c51a3762645be7a3ad63..f76bafb9fd89eac5e4d97dc1597e3b73c47fe682 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 6192929b9f57e11e12525c432be763f0867cd4ed..b41ffee477637b2a918b5b25eb19f003423b591d 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 f2007849a4c34d48bdf9a90078afbf5a9dc3d17e..4c19212cea2a33d138847622dc605a62a046834b 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 2a0b3b006d3ba5ca72eb4dd86ea1869254904761..51ed130a9040d8e00046e1f4a7bd5bfe52051a68 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 1303c5ad23b6adff9c5b980ee236f010f5a0dfd5..21ce571c8ecbc55bdd4b4f8f056d0e3a2b0d0783 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 864c75d257ac026bf2488f87783938df6c97994b..5b1fe7353a48c35e78f04dbbd5e7fcee4e801363 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 7ba3f461b3e035d592363bb8028c96d204d3581a..1f07b383105f678188f51aae69b70953ea190f7b 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 c67fa5cc65a032d1f38173f8bbdd619ac7d9b879..2566b6f0e01a19fd6602bf981764a4d552b90227 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 05f934568910e7354aea6aca00784b78cd9af904..fd991f74abd30dda19caac44f4ddfe262c41f71d 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 c5fbc0fd1bcedf4e80022eae91924b8308bdb1a4..d692d45435fe9121274612591805db53dcdcc6f0 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 284cb113e97ee14b2437db903d12bc1c8df3fb91..d928f88e9ae8a78e5139e87678e93fecc0520a48 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 9c6c6c74970401d6310e91766d04e9574e2ea6a3..76f14aa2e5c7afa8950aff513b488a048c5a96b8 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 43c1e2359b441a78795bd0d22d82d6ecc5dc1574..f0e4a32f1356deba3924f7847c1554b10e3b2901 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 a115eec447360e94160d084744476f9a0c3d8833..1a3b1986c4149103cb125d6c6a588036df2af21b 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 02a604b32073b18ac0b840854973cbc868a54f10..a3d28f6d7f9db866e8a452cb8a84b7b8ac3afa89 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 4e46bbf59c812daed3b6bc174d7c5a0414c15432..956a186b55a91222f06b79d531fbdd0943521452 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 1a747607810a97886f62b02132799aadc948640c..488ea86e7982b92bcd6fb4bab659d9d1dc321482 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 65348ae0bde64cfe05c176399203bfd85c15295f..a3654f52a4574e2e1d8fdbe47562005b604a664a 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 985c384721695ede769cb56715fcd9918862d70f..3f6555ca95b60039d5fdfa786189233da526a956 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 c10d74556eafa5800c87bf1b7e5da6b6e435bc70..6c7d6646ca95fb140c61ac76e23557a63c9a7661 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 0e09b5040c3a09f20174f618a3f58c7bf4fc8c2a..7c2cf3e560c1b39ce163badccd928e0075b09179 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 b82acc067c0e6134af88c9c09365db840126ad7a..e037f98bbc8779db87572d4347948a2a69b78559 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 dcbaaf86fb76a827ea6d0d358a6abbe4a710cf17..10e547b80b47828b47cf2efb72c68f567629963c 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 0f732376435676b9a60f343fcff7f240bb560d28..5c8e628e982cc952eb3053e9eb98a153f523654f 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 7cca6a668bedb730542dd7caeb6246d849a9e8e2..88e6f78a8f639db8138c668e32c6e156c32b511a 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 69defb48ed9d69e45f6d3221c632a665d98cc533..46d8a06f3dab4bfbbb187bf55dc1582c8089c7bb 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 6cde03d8a22b167b741316db346eecaa2993767b..ac448e5600b93c95cc9d08c1b1abad22e95217d1 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 7cfbbb5538f95ab7f0297421cb70e4f7b9cd0cfe..c083bddcbf6554a3e01386c33c4d2c3305a843ed 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 94a5e657bd82647814bee9bb9a3d38988aa2ce47..a43448d67873364de5e80a06a538257e5671a027 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 06bfec82f581fd6f3173806a1ff810b6d0547583..6f9dde209e932064e32fc173ae00709c6f8beb94 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 9c0a4bb029ae5bf1e4e2a1e668f889bc946d3108..0c7bc6de1db1b14857a4e45823b0d8042acc239f 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 d3582a14b3622e765041655883755880fcc74df1..2f340d00a4f78922cf847164227ea699b04d01fb 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 8d147ba3475945cfb760c5e65b414b32bb1125ce..354b74d0445ea3a1b040500d1cbcf7458100d3ad 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 3098bf54da1bac8baac7bb3acaebf72e87e92b6f..55a5b476dc3c816abac18e5e64e069a03f4176f1 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 51128ee2a07f1e30124232608c830e3d0e8a49c8..e44a487c42fd2eb7a1a9d8144117521e9b366d38 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 1070b397aa75ab2ff302f600b1def0e61f5fd98a..129796e3c55f899b008dea632dfa5cda6847d098 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 694637fabf8f2fe44d121286a287fd8f3dc07a97..0be7db4db0ea17b9746dc9dfe2dba98a1861bd55 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 5290c96331790a7051608766ddb63772e304a322..d55cc8ee81053b2c663fa998aa93a5fd74a57607 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 22e787abaf8cde0fe6dcc6483040c333f9b37d62..8aa1ee72eff50b2eb79cbac55190118b1a0d2a1a 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 1a3184d262da69a3d4d230ce9df2e13484c77f15..3c8ce55e8d26f26d793410fcebbe4a4115915f4c 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 4c3640ad8b3551daca6dd405ebfd4e330398c62a..49787625097e2eb9b60da638054f9e276fe02e3d 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 d7ee857448653a5ec7763e00d96b07dee376adfb..1c2b49efb276f73b151cacc12f26a6939c175fdb 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 3c79cc9e9c507f2d0d7f5ea9c6e3af2b59528cde..1b46ce4ae550627bb43e2af70c3b15e347d20c59 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 051d5b851cfe3a38b5a9a6ae00faf27f3c07928b..565d436e57a1915bea107bb48e0cf0e8cd8dec2f 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 40d195ea7f7ef5537afd14fae38617da769c0ee2..f2b8a99becf05fc2a192721488a8d200fb1c6b96 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 3d0a4a1e43eaf27718aa479103a194977de1d474..15e028e517ffa298503acfd455c6da485261e9b9 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 f12a59d0dc62f8ae5aead79d128197b7e7f1b569..ace9248744f43241b402fd4ed438862c2262d033 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 113185bee33de550eb543091fc2d97bfb075141f..ed154d89bc8847add2bd66dea5a6dd772759951c 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 8cdcc0cd6f63b8631d500206052144b71d0755b1..e06af319ef6c0d24da83b8bbc1700d8ac7487b64 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 0d366c659aaf6000f4bb261dd8539a03cdabf032..0c61ab4133639d5597c60eb47d358cf3def47b3b 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 4330bc4cdabd8c6e260b5820fc5996ba01398aaa..b4d48678ad3fedf018747c804159277c2182d9eb 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 8386eff27c6e76e132a753ed8f4828648eddd842..d48b2470fd426919202a9301aa9e6f33f951f11f 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 47f68d4f3e30fc4554d5f73ba4a0f10c30ac335a..9bd9fdb07d434ee496760f9755b6ba0e8ee1e9f1 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 70124d6e61c14b311fbaf3ec286e3ae58e417afb..f9a88fa84db75847a5f76779049ee86b4920b79b 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 fa8a9562d00a1efec2609b253e065dfa9c450b57..189e09a9c4c156e115de9e8aacfa439c32cbe590 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 b3fbb1e48f0ae63072669db40a1ecea058a8d374..111ec5d7148a9877bf5a5eadd2c9024905f43af8 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 8c32434c066be637d6209646a550bfba505c6117..ead06418210c71b6e5a22378e09453cc054be5e4 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 d33bb74ff6798722aea808fd345f8b1d7fffa82c..0a2589eb85c3b33408d088897cf3bc2695f521cc 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 fe9ec05502087bfdbaa4dfbd66f2dc46080809f5..3ac613f69613a02e95216deb8bedb051152774e7 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 f0f3eaae477eab28fc0b7061ab0141e7d5c7a443..4010029414811e88fd9b05f0e0687b6cab210fa5 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 638460e769470eb50eb75028fdc30645c42c2c3d..d36cac0d2e8119d1350d986e4dab1bbb00856a76 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 5f2a374144cf6db7a810e3467c8f4c3f5dc92902..75291cf74c61c19a20aadb643d884a643dab06df 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 a1a7b46362c48611caa14e87c4fde9cbbada5403..84fd82203d4f27d3491699277e64ed3d1e36b794 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 e79c9a795e2794d30c0f6c56c5c823602882b3a0..cd59f150bf75f53d0f137fe61a07c1e109eeff00 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 0000000000000000000000000000000000000000..f7f26f8c82fb97572abc0c9a87266344a5c61d80
--- /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 0000000000000000000000000000000000000000..a2137bd828b650b892bb314cd763d03df8a3c60e
--- /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 ec991eef73850a9df9128939a90608d1bad7ed99..3e4e861ce4a845bcf625dc53387b8a5f673971b7 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 3634fd5096708e4be5b602c03e7a8a83b846ad66..5d42f04040d99e8d04be78635c0deee6979a5f48 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 ff1d34e1e6dcb7bf52d68ed7aca8b6d104657171..66605af6e3dd1fe407cdbf40f3ccc4f6cd81a68a 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 0000000000000000000000000000000000000000..335e0fed5e4202919c19d8713b53280ed74c7f94
--- /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();
+  }
+
+}