diff --git a/test/edu/nps/moves/dis7/BitFieldRoundTripTest.java b/test/edu/nps/moves/dis7/BitFieldRoundTripTest.java
index 72747af9e8c8dfe28465b9d5432381e2e0641272..602e02052dd784a27d0b124d1489a49c6c75ade9 100644
--- a/test/edu/nps/moves/dis7/BitFieldRoundTripTest.java
+++ b/test/edu/nps/moves/dis7/BitFieldRoundTripTest.java
@@ -7,9 +7,8 @@ package edu.nps.moves.dis7;
 import edu.nps.moves.dis7.enumerations.AppearanceCamouflageType;
 import edu.nps.moves.dis7.enumerations.ForceID;
 import edu.nps.moves.dis7.enumerations.LandPlatformAppearance;
-import edu.nps.moves.dis7.utilities.DisNetworking;
+import edu.nps.moves.dis7.utilities.DisThreadedNetIF;
 import edu.nps.moves.dis7.utilities.PduFactory;
-import java.io.IOException;
 import org.junit.jupiter.api.*;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
@@ -17,7 +16,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 public class BitFieldRoundTripTest
 {
     Pdu receivedPdu;
-    DisNetworking disnet;
+    DisThreadedNetIF netif;
 
   @BeforeAll
   public static void setUpClass()
@@ -33,15 +32,15 @@ public class BitFieldRoundTripTest
   @BeforeEach
   public void setUp()
   {   
-      disnet = new DisNetworking();
-      setUpReceiver();
+      netif = new DisThreadedNetIF();
+      netif.addListener(pdu -> setUpReceiver(pdu));
   }
 
   @AfterEach
   public void tearDown()
   {
-//      disnet.stop();
-//      disnet = null;
+      netif.kill();
+      netif = null;
   }
 
   @Test
@@ -71,10 +70,10 @@ public class BitFieldRoundTripTest
   
     try {
       Thread.sleep(250l); // make sure receiver is listening
-      disnet.sendPdu(espdu);
+      netif.send(espdu);
       Thread.sleep(100l); 
     }
-    catch (Exception ex) {
+    catch (InterruptedException ex) {
       System.err.println("Error sending Multicast: " + ex.getLocalizedMessage());
       System.exit(1);
     }
@@ -87,23 +86,11 @@ public class BitFieldRoundTripTest
     assertTrue(same, "Sent and received pdu not the same");
   }
 
-  private void setUpReceiver()
+  private void setUpReceiver(Pdu pdu)
   {
-    Thread rcvThread = new Thread(() -> {
-      try {
-        receivedPdu = disnet.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();
+    receivedPdu = pdu;
   }
+  
   private void dump(String s, EntityStatePdu espdu)
   {
     System.out.println(s);
@@ -128,11 +115,12 @@ public class BitFieldRoundTripTest
     System.out.println("Variable Parameters: "+ espdu.getVariableParameters().toString());
     System.out.println();
  }
+  
   public static void main(String[] args)
   {
     BitFieldRoundTripTest brt = new BitFieldRoundTripTest();
     brt.setUp();
     brt.testRoundTrip();
-//    brt.tearDown();.testRoundTrip();
+    brt.tearDown();
   }
 }
diff --git a/test/edu/nps/moves/dis7/CommentPdusTest.java b/test/edu/nps/moves/dis7/CommentPdusTest.java
index faeca71845d68e5d02e73ee9e6eb9dc8dd0e2000..daceed84eb8f577b2d3fcab8279277320fdef41c 100644
--- a/test/edu/nps/moves/dis7/CommentPdusTest.java
+++ b/test/edu/nps/moves/dis7/CommentPdusTest.java
@@ -5,16 +5,15 @@
 package edu.nps.moves.dis7;
 
 import edu.nps.moves.dis7.enumerations.VariableRecordType;
-import edu.nps.moves.dis7.utilities.DisNetworking;
+import edu.nps.moves.dis7.utilities.DisThreadedNetIF;
 import edu.nps.moves.dis7.utilities.PduFactory;
-import java.io.IOException;
 import org.junit.jupiter.api.*;
 import static org.junit.jupiter.api.Assertions.*;
 
 @DisplayName("Comment Pdus Test")
 public class CommentPdusTest
 {
-  DisNetworking disnet;
+  DisThreadedNetIF netif;
   Pdu receivedPdu;
     
   @BeforeAll
@@ -31,15 +30,15 @@ public class CommentPdusTest
   @BeforeEach
   public void setUp()
   {
-      disnet = new DisNetworking();
-      setUpReceiver();
+      netif = new DisThreadedNetIF();
+      netif.addListener(pdu -> setUpReceiver(pdu));
   }
 
   @AfterEach
   public void tearDown()
   {
-//      disnet.stop();
-//      disnet = null;
+      netif.kill();
+      netif = null;
   }
 
   @Test
@@ -62,7 +61,7 @@ public class CommentPdusTest
   {
      sendPdu(pdu); // will wait a while
      assertTrue(receivedPdu != null, "No response from network receive");
-     assertTrue(compare(pdu,receivedPdu),"Comparison failed");
+     assertTrue(compare(pdu,receivedPdu), "Comparison failed");
      receivedPdu = null;
   }
   
@@ -70,10 +69,10 @@ public class CommentPdusTest
   {
     try {
       Thread.sleep(250l); // make sure receiver is listening
-      disnet.sendPdu(pdu);
+      netif.send(pdu);
       Thread.sleep(100l);
     }
-    catch (Exception ex) {
+    catch (InterruptedException ex) {
       System.err.println("Error sending Multicast: " + ex.getLocalizedMessage());
       System.exit(1);
     }
@@ -84,23 +83,9 @@ public class CommentPdusTest
     return pdu1.equals(pdu2);
   }
   
-  private void setUpReceiver()
+  private void setUpReceiver(Pdu pdu)
   {
-    Thread rcvThread = new Thread(() -> {
-      try {
-        while(true) {
-          receivedPdu = disnet.receivePdu();  // blocks
-        }
-      }
-      catch (IOException ex) {
-        System.err.println("Error receiving Multicast: " + ex.getLocalizedMessage());
-        System.exit(1);
-      }
-    });
-
-    rcvThread.setPriority(Thread.NORM_PRIORITY);
-    rcvThread.setDaemon(true);
-    rcvThread.start();
+    receivedPdu = pdu;
   }
 
   public static void main(String[] args)
@@ -108,6 +93,6 @@ public class CommentPdusTest
     CommentPdusTest cpt = new CommentPdusTest();
     cpt.setUp();
     cpt.testRoundTrip();
-//    cpt.tearDown();
+    cpt.tearDown();
   }
 }
diff --git a/test/edu/nps/moves/dis7/CreateAllObjectTypesTest.java b/test/edu/nps/moves/dis7/CreateAllObjectTypesTest.java
index af90a1b6fd2b078f657c70ed25a7e1dab13bc345..b178ddf0d7bf220f7a4893e4414890f83d0a2d9b 100644
--- a/test/edu/nps/moves/dis7/CreateAllObjectTypesTest.java
+++ b/test/edu/nps/moves/dis7/CreateAllObjectTypesTest.java
@@ -4,17 +4,16 @@
  */
 package edu.nps.moves.dis7;
 
+import org.junit.jupiter.api.*;
+import static org.junit.jupiter.api.Assertions.assertNull;
+
 /**
  * CreateAllObjectTypes()); created on May 20, 2019 MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
  *
  * @author Mike Bailey, jmbailey@edu.nps.edu
  * @version $Id$
  */
-import org.junit.jupiter.api.*;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
 @DisplayName("All Object Types Create")
-
 public class CreateAllObjectTypesTest
 {
   @BeforeAll
diff --git a/test/edu/nps/moves/dis7/DataQueryPduRoundTripTest.java b/test/edu/nps/moves/dis7/DataQueryPduRoundTripTest.java
index bd59556c8d037e2b0f19db3c98ec744740cf61db..84fafbb9a4ccd6a3f07aff28972601959dc2fd4d 100644
--- a/test/edu/nps/moves/dis7/DataQueryPduRoundTripTest.java
+++ b/test/edu/nps/moves/dis7/DataQueryPduRoundTripTest.java
@@ -5,9 +5,8 @@
 package edu.nps.moves.dis7;
 
 import edu.nps.moves.dis7.enumerations.VariableRecordType;
-import edu.nps.moves.dis7.utilities.DisNetworking;
+import edu.nps.moves.dis7.utilities.DisThreadedNetIF;
 import edu.nps.moves.dis7.utilities.PduFactory;
-import java.io.IOException;
 import org.junit.jupiter.api.*;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
@@ -15,9 +14,8 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 public class DataQueryPduRoundTripTest
 {
 
-  public DataQueryPduRoundTripTest()
-  {
-  }
+ Pdu receivedPdu;
+ DisThreadedNetIF netif;
 
   @BeforeAll
   public static void setUpClass()
@@ -33,11 +31,15 @@ public class DataQueryPduRoundTripTest
   @BeforeEach
   public void setUp()
   {
+      netif = new DisThreadedNetIF();
+      netif.addListener(pdu -> setUpReceiver(pdu));
   }
 
   @AfterEach
   public void tearDown()
   {
+      netif.kill();
+      netif = null;
   }
 
   private static int REQUEST_ID = 0x00112233;
@@ -80,8 +82,6 @@ public class DataQueryPduRoundTripTest
     //  variableDatum2.setVariableDatumLength(variableDatum2Value.length);  // should be done automatically
   }
 
-  private Pdu receivedPdu;
-
   @Test
   public void testRoundTrip()
   {
@@ -98,14 +98,12 @@ public class DataQueryPduRoundTripTest
     sendingPdu.getVariableDatums().add(variableDatum1);
     sendingPdu.getVariableDatums().add(variableDatum2);
 
-    setUpReceiver();
-
     try {
       Thread.sleep(250l); // make sure receiver is listening
-      new DisNetworking().sendPdu(sendingPdu);
+      netif.send(sendingPdu);
       Thread.sleep(1000l); 
     }
-    catch (Exception ex) {
+    catch (InterruptedException ex) {
       System.err.println("Error sending Multicast: " + ex.getLocalizedMessage());
       System.exit(1);
     }
@@ -115,25 +113,16 @@ public class DataQueryPduRoundTripTest
     assertTrue(receivedPdu.equals(sendingPdu), "Sent and received pdu not the same");
   }
 
-  private void setUpReceiver()
+  private void setUpReceiver(Pdu pdu)
   {
-    Thread rcvThread = new Thread(() -> {
-      try {
-        receivedPdu = new DisNetworking().receivePdu();  // blocks
-      }
-      catch (IOException ex) {
-        System.err.println("Error receiving Multicast: " + ex.getLocalizedMessage());
-        System.exit(1);
-      }
-    });
-
-    rcvThread.setPriority(Thread.NORM_PRIORITY);
-    rcvThread.setDaemon(true);
-    rcvThread.start();
+    receivedPdu = pdu;
   }
 
   public static void main(String[] args)
   {
-    new DataQueryPduRoundTripTest().testRoundTrip();
+    DataQueryPduRoundTripTest drt = new DataQueryPduRoundTripTest();
+    drt.setUp();
+    drt.testRoundTrip();
+    drt.tearDown();
   }
 }
diff --git a/test/edu/nps/moves/dis7/FixedAndVariableDatumRoundTripTest.java b/test/edu/nps/moves/dis7/FixedAndVariableDatumRoundTripTest.java
index 8bd6b2faefc36155b90cc00a51fcf6bade63af13..6f4cc2c7ac18f1a91d1c9eb76ee199931bd51839 100644
--- a/test/edu/nps/moves/dis7/FixedAndVariableDatumRoundTripTest.java
+++ b/test/edu/nps/moves/dis7/FixedAndVariableDatumRoundTripTest.java
@@ -6,18 +6,16 @@ package edu.nps.moves.dis7;
 
 import edu.nps.moves.dis7.enumerations.ActionResponseRequestStatus;
 import edu.nps.moves.dis7.enumerations.VariableRecordType;
-import edu.nps.moves.dis7.utilities.DisNetworking;
+import edu.nps.moves.dis7.utilities.DisThreadedNetIF;
 import edu.nps.moves.dis7.utilities.PduFactory;
-import java.io.IOException;
 import org.junit.jupiter.api.*;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 @DisplayName("Fixed and Variable Datum Round Trip Test")
 public class FixedAndVariableDatumRoundTripTest
 {
-  public FixedAndVariableDatumRoundTripTest()
-  {
-  }
+  Pdu receivedPdu;
+  DisThreadedNetIF netif;
 
   @BeforeAll
   public static void setUpClass()
@@ -32,12 +30,16 @@ public class FixedAndVariableDatumRoundTripTest
 
   @BeforeEach
   public void setUp()
-  {
+  {   
+      netif = new DisThreadedNetIF();
+      netif.addListener(pdu -> setUpReceiver(pdu));
   }
 
   @AfterEach
   public void tearDown()
   {
+      netif.kill();
+      netif = null;
   }
 
   private static int REQUEST_ID = 0x00112233;
@@ -61,7 +63,7 @@ public class FixedAndVariableDatumRoundTripTest
 
   private static VariableDatum variableDatum2 = new VariableDatum();
   private static VariableRecordType variableDatum2Type = VariableRecordType.Z_ACCELERATION;
-  private static byte[] variableDatum2Value = new String("222varDatum1Value222").getBytes();
+  private static byte[] variableDatum2Value = "222varDatum1Value222".getBytes();
 
   static {
     fixedDatum1.setFixedDatumValue(fixedDatum1Value);
@@ -82,9 +84,6 @@ public class FixedAndVariableDatumRoundTripTest
     //variableDatum2.setVariableDatumLength(variableDatum2Value.length * 8); //in bits
   }
 
-  private Pdu receivedPdu;
-  private Object waiter = new Object();
-
   @Test
   public void testRoundTrip()
   {
@@ -98,14 +97,12 @@ public class FixedAndVariableDatumRoundTripTest
     sentPdu.getVariableDatums().add(variableDatum1);
     sentPdu.getVariableDatums().add(variableDatum2);
 
-    setUpReceiver();
-
     try {
       Thread.sleep(250l); // make sure receiver is listening
-      new DisNetworking().sendPdu(sentPdu);
+      netif.send(sentPdu);
       Thread.sleep(1000l);
     }
-    catch (Exception ex) {
+    catch (InterruptedException ex) {
       System.err.println("Error sending Multicast: " + ex.getLocalizedMessage());
       System.exit(1);
     }
@@ -116,26 +113,16 @@ public class FixedAndVariableDatumRoundTripTest
     assertTrue(receivedPdu.equals(sentPdu),"Sent and received pdus not identical");
   }
 
-  private void setUpReceiver()
+  private void setUpReceiver(Pdu pdu)
   {
-    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();
+    receivedPdu = pdu;
   }
 
   public static void main(String[] args)
   {
-    new FixedAndVariableDatumRoundTripTest().testRoundTrip();
+    FixedAndVariableDatumRoundTripTest frt = new FixedAndVariableDatumRoundTripTest();
+    frt.setUp();
+    frt.testRoundTrip();
+    frt.tearDown();
   }
 }
diff --git a/test/edu/nps/moves/dis7/MarshalEnumsTest.java b/test/edu/nps/moves/dis7/MarshalEnumsTest.java
index 0094789a48589933531c7b606095f02a88e1e0a4..87ba13c8a3db3753e7a94ccf18519f8b8eda5a08 100644
--- a/test/edu/nps/moves/dis7/MarshalEnumsTest.java
+++ b/test/edu/nps/moves/dis7/MarshalEnumsTest.java
@@ -46,10 +46,10 @@ public class MarshalEnumsTest
       // this is a simple enum, never marshalled marshalOne(Acronyms.values()[0]);
       marshalOne(ActionRequestActionID.values()[0]);
       marshalOne(ActionResponseRequestStatus.values()[0]);
-//            marshalOne(AddSpecificDimensionEnumerationsforSubsurfaceAreaSize.values()[0]);
-//            marshalOne(AddVariantsforAirCategory201Insect.values()[0]);
-//            marshalOne(AddVariantsforLandCategory200Mammal.values()[0]);
-//            marshalOne(AddVariantsforSubsurfaceCategoriesFishMolluskCrustaceanandInsect.values()[0]);
+      marshalOne(AddSpecificDimensionEnumerationsforSubsurfaceAreaSize.values()[0]);
+      marshalOne(AddVariantsforAirCategory201Insect.values()[0]);
+      marshalOne(AddVariantsforLandCategory200Mammal.values()[0]);
+      marshalOne(AddVariantsforSubsurfaceCategoriesFishMolluskCrustaceanandInsect.values()[0]);
       marshalOne(AggregateStateAggregateKind.values()[0]);
       marshalOne(AggregateStateAggregateState.values()[0]);
       marshalOne(AggregateStateFormation.values()[0]);
@@ -60,7 +60,7 @@ public class MarshalEnumsTest
       marshalOne(AircraftIdentificationType.values()[0]);
       marshalOne(AircraftPresentDomain.values()[0]);
       marshalOne(AircraftTypeWake.values()[0]);
-//            marshalOne(AnimalLifeformGroupSizeRangeEnumerationforallDomains.values()[0]);
+      marshalOne(AnimalLifeformGroupSizeRangeEnumerationforallDomains.values()[0]);
       marshalOne(AntennaSelection.values()[0]);
       marshalOne(AntennaStatus.values()[0]);
       marshalOne(AppearanceAntiCollisionDayNight.values()[0]);
@@ -77,15 +77,15 @@ public class MarshalEnumsTest
       marshalOne(AppearanceLifeFormPosture.values()[0]);
       marshalOne(AppearanceLifeFormWeaponImplement.values()[0]);
       marshalOne(AppearanceLifeformHealth.values()[0]);
-//            marshalOne(AppearanceLinearObjectLaneMarkerVisible.values()[0]);
-//            marshalOne(AppearanceLinearObjectTankDitchBreach.values()[0]);
+      marshalOne(AppearanceLinearObjectLaneMarkerVisible.values()[0]);
+      marshalOne(AppearanceLinearObjectTankDitchBreach.values()[0]);
       marshalOne(AppearanceNVGMode.values()[0]);
       marshalOne(AppearanceNavigationPositionBrightness.values()[0]);
       marshalOne(AppearanceObjectGeneralDamage.values()[0]);
       marshalOne(AppearanceObjectGeneralIEDPresent.values()[0]);
       marshalOne(AppearanceObjectGeneralPredistributed.values()[0]);
-//            marshalOne(AppearanceObjectSpecificBreachState.values()[0]);
-//            marshalOne(AppearanceObjectSpecificChemicalType.values()[0]);
+      marshalOne(AppearanceObjectSpecificBreachState.values()[0]);
+      marshalOne(AppearanceObjectSpecificChemicalType.values()[0]);
       marshalOne(AppearancePaintScheme.values()[0]);
       marshalOne(AppearanceSubsurfaceHatch.values()[0]);
       marshalOne(AppearanceSupplyDeployed.values()[0]);
@@ -95,31 +95,31 @@ public class MarshalEnumsTest
       marshalOne(ArticulatedPartsTypeMetric.values()[0]);
       marshalOne(AttachedPartDetachedIndicator.values()[0]);
       marshalOne(AttachedParts.values()[0]);
-//            marshalOne(AustralianCategoryOverlay.values()[0]);
+      marshalOne(AustralianCategoryOverlay.values()[0]);
       marshalOne(BeamStatusBeamState.values()[0]);
-//            marshalOne(BuildingPaintScheme.values()[0]);
+      marshalOne(BuildingPaintScheme.values()[0]);
       marshalOne(CCTTSINCGARSClearChannel.values()[0]);
       marshalOne(CCTTSINCGARSStartofMessage.values()[0]);
-      //           marshalOne(CIGIExtensionPacketID.values()[0]);
+      marshalOne(CIGIExtensionPacketID.values()[0]);
       marshalOne(CapabilityReport.values()[0]);
-//            marshalOne(Class10SupplyCategoryMaterialtoSupportNonMilitaryPrograms.values()[0]);
-//            marshalOne(Class11SupplyCategorySuppliesNonDoctrinal.values()[0]);
-//            marshalOne(Class12SupplyCategorySlingLoadsNonDoctrinal.values()[0]);
-//            marshalOne(Class1SupplyCategorySubsistence.values()[0]);
-//            marshalOne(Class2SupplyCategoryClothingIndividualEquipmentToolsAdminSupplies.values()[0]);
-//            marshalOne(Class3SupplyCategoryPetroleumOilsLubricants.values()[0]);
-//            marshalOne(Class4SupplyCategoryConstructionMaterials.values()[0]);
-//            marshalOne(Class6SupplyCategoryPersonnelDemandItems.values()[0]);
-//            marshalOne(Class7SupplyCategoryMajorItems.values()[0]);
-//            marshalOne(Class8SupplyCategoryMedicalMaterial.values()[0]);
-//            marshalOne(Class9SupplyCategoryRepairPartsandComponents.values()[0]);
+      marshalOne(Class10SupplyCategoryMaterialtoSupportNonMilitaryPrograms.values()[0]);
+      marshalOne(Class11SupplyCategorySuppliesNonDoctrinal.values()[0]);
+      marshalOne(Class12SupplyCategorySlingLoadsNonDoctrinal.values()[0]);
+      marshalOne(Class1SupplyCategorySubsistence.values()[0]);
+      marshalOne(Class2SupplyCategoryClothingIndividualEquipmentToolsAdminSupplies.values()[0]);
+      marshalOne(Class3SupplyCategoryPetroleumOilsLubricants.values()[0]);
+      marshalOne(Class4SupplyCategoryConstructionMaterials.values()[0]);
+      marshalOne(Class6SupplyCategoryPersonnelDemandItems.values()[0]);
+      marshalOne(Class7SupplyCategoryMajorItems.values()[0]);
+      marshalOne(Class8SupplyCategoryMedicalMaterial.values()[0]);
+      marshalOne(Class9SupplyCategoryRepairPartsandComponents.values()[0]);
       marshalOne(CollisionType.values()[0]);
-//            marshalOne(Color.values()[0]);
+      marshalOne(Color.values()[0]);
       marshalOne(ComponentVisualDamageStatusSmoke.values()[0]);
       marshalOne(ComponentVisualDamageStatusSurfaceDamage.values()[0]);
       marshalOne(Country.values()[0]);
       marshalOne(CoverShroudStatus.values()[0]);
-      //           marshalOne(CryptoKeyIDCryptoMode.values()[0]);
+      marshalOne(CryptoKeyIDCryptoMode.values()[0]);
 
       marshalOne(DEDamageDescriptionComponentDamageStatus.values()[0]);
 
@@ -152,7 +152,7 @@ public class MarshalEnumsTest
       marshalOne(EEAttributeStateIndicator.values()[0]);
       marshalOne(ElectromagneticEmissionBeamFunction.values()[0]);
       marshalOne(ElectromagneticEmissionStateUpdateIndicator.values()[0]);
-      // why won't compile?     marshalOne(EmitterName.values()[0]);
+      marshalOne(EmitterName.values()[0]);
       marshalOne(EmitterSystemFunction.values()[0]);
       marshalOne(EntityAssociationAssociationStatus.values()[0]);
       marshalOne(EntityAssociationAssociationType.values()[0]);
diff --git a/test/edu/nps/moves/dis7/NullFieldsEntityMarshallTest.java b/test/edu/nps/moves/dis7/NullFieldsEntityMarshallTest.java
index 78ee6b470f2203a2ecbad5e9f4fc4f26185df4bb..4c99132da538f00feecfa56914341e9c28c0ac60 100644
--- a/test/edu/nps/moves/dis7/NullFieldsEntityMarshallTest.java
+++ b/test/edu/nps/moves/dis7/NullFieldsEntityMarshallTest.java
@@ -2,12 +2,6 @@
  * Copyright (c) 2008-2020, MOVES Institute, Naval Postgraduate School (NPS). All rights reserved.
  * This work is provided under a BSD open-source license, see project license.html and license.txt
  */
-/**
- * NullFieldsMarshallTest()); created on May 20, 2019 MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@edu.nps.edu
- * @version $Id$
- */
 package edu.nps.moves.dis7;
 
 import edu.nps.moves.dis7.entities.usa.platform.land.LAV_105;
@@ -15,6 +9,12 @@ import java.nio.ByteBuffer;
 import org.junit.jupiter.api.*;
 import static org.junit.jupiter.api.Assertions.*;
 
+/**
+ * NullFieldsMarshallTest()); created on May 20, 2019 MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
+ *
+ * @author Mike Bailey, jmbailey@edu.nps.edu
+ * @version $Id$
+ */
 @DisplayName("Null Fields Entity Marshall Test")
 public class NullFieldsEntityMarshallTest
 {
diff --git a/test/edu/nps/moves/dis7/ObjectTypeMarshallTest.java b/test/edu/nps/moves/dis7/ObjectTypeMarshallTest.java
index fbeaa127f34cc6413a390a06c3b7fc3e2bedc724..694b0e19290502f2fec5f989143b967591dcd998 100644
--- a/test/edu/nps/moves/dis7/ObjectTypeMarshallTest.java
+++ b/test/edu/nps/moves/dis7/ObjectTypeMarshallTest.java
@@ -58,10 +58,10 @@ public class ObjectTypeMarshallTest
     {
         Exception ex = null;
         ByteBuffer bb = ByteBuffer.allocate(100);
-        //dumpOT(ot);
+        dumpOT(ot);
         ot.marshal(bb);
         assertEquals(4, bb.position(), "Marshalled array should be 4 bytes long");
-        //dumpBb(bb);
+        dumpBb(bb);
     }
     
     private void dumpBb(ByteBuffer bb)
@@ -73,11 +73,12 @@ public class ObjectTypeMarshallTest
     }
 
     private void dumpOT(ObjectType ot)
-    {
-        System.out.println("ObjectType domain: " + ot.getDomain());
-        System.out.println("ObjectType object kind: " + ot.getObjectKind());
-        System.out.println("ObjectType category: " + ot.getCategory());
-        System.out.println("ObjectType subcategory: " + ot.getSubCategory());
+    {   
+        String formatStr = "Name: %s\tDomain: %s\tKind: %s\tCategory: %s\tSubcategory: %s";
+        String dom = ot.getDomain().toString();
+        String kind = ot.getObjectKind().toString();
+        String nm = ot.getClass().getName();
+        System.out.println(String.format(formatStr, nm, dom, kind, ot.getCategory(), ot.getSubCategory()));
     }
     
     public static void main(String[] args)
diff --git a/test/edu/nps/moves/dis7/PduFactoryTest.java b/test/edu/nps/moves/dis7/PduFactoryTest.java
index b39e6f459aab083d2f13c45a00400bb5a0f37454..b7b7efecd5357e0e7709e63f864037589a9ccfa2 100644
--- a/test/edu/nps/moves/dis7/PduFactoryTest.java
+++ b/test/edu/nps/moves/dis7/PduFactoryTest.java
@@ -4,19 +4,17 @@
  */
 package edu.nps.moves.dis7;
 
-/**
- *
- * @author Mike Bailey, jmbailey@edu.nps.edu
- * @version $Id$
- */
-
 import edu.nps.moves.dis7.enumerations.Country;
 import edu.nps.moves.dis7.utilities.PduFactory;
 import org.junit.jupiter.api.*;
 import static org.junit.jupiter.api.Assertions.assertNull;
 
+/**
+ *
+ * @author Mike Bailey, jmbailey@edu.nps.edu
+ * @version $Id$
+ */
 @DisplayName("Pdu Factory Test")
-
 public class PduFactoryTest
 {
     @BeforeAll
@@ -129,20 +127,6 @@ public class PduFactoryTest
 
         assertNull(ex, "Exception should be null if successful creation of all objects");
     }
-
-    String formatStr = "Name: %s\tDomain: %s\tKind: %s\tCategory: %s\tSubcategory: %s";
-
-    private void dumpObjectType(ObjectType ot)
-    {
-    }
-
-    private void actualDumpObjectType(ObjectType ot)
-    {
-        String dom = ot.getDomain().toString();
-        String kind = ot.getObjectKind().toString();
-        String nm = ot.getClass().getName();
-        System.out.println(String.format(formatStr, nm, dom, kind, ot.getCategory(), ot.getSubCategory()));
-    }
     
     public static void main(String[] args)
   {
diff --git a/test/edu/nps/moves/dis7/SignalPdusTest.java b/test/edu/nps/moves/dis7/SignalPdusTest.java
index 9b87bf19b5c84069cc11a3189d9260dac10244a3..b5f1607dea5577a3e3c874d12bbe098deeefb2a7 100644
--- a/test/edu/nps/moves/dis7/SignalPdusTest.java
+++ b/test/edu/nps/moves/dis7/SignalPdusTest.java
@@ -13,6 +13,7 @@ import java.nio.ByteBuffer;
 import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.Semaphore;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import org.junit.jupiter.api.*;
@@ -26,10 +27,12 @@ import static org.junit.jupiter.api.Assertions.*;
  */
 @DisplayName("Signal Pdus Test")
 public class SignalPdusTest {
-
-    static DisThreadedNetIF netif;
-    static List<Pdu> receivedPdus;
-    static PduRecorder recorder;
+    
+    DisThreadedNetIF netif;
+    List<Pdu> receivedPdus;
+    PduRecorder recorder;
+    
+    Semaphore mutex;
     PduFactory pduFac;
     List<Pdu> sentPdus;
     byte[] buff;
@@ -38,23 +41,21 @@ public class SignalPdusTest {
     @BeforeAll
     public static void setUpClass() throws IOException {
         System.out.println("SignalPdusTest");
-        recorder = new PduRecorder(); // default dir
-        netif = recorder.getDisThreadedNetIF();
-        netif.addListener(pdu -> handleReceivedPdu(pdu));
     }
 
     @AfterAll
     public static void tearDownClass() throws IOException {
-        recorder.end(); // kills the netif as well
-        recorder = null;
-        netif = null;
-
-        receivedPdus.clear();
-        receivedPdus = null;
     }
 
     @BeforeEach
-    public void setUp() {
+    public void setUp() throws IOException, InterruptedException {
+        recorder = new PduRecorder(); // default dir
+        netif = recorder.getDisThreadedNetIF();
+        netif.addListener(pdu -> handleReceivedPdu(pdu));
+        
+        mutex = new Semaphore(1);
+        mutex.acquire();
+        
         sentPdus = new ArrayList<>();
         receivedPdus = new ArrayList<>();
         pduFac = new PduFactory();
@@ -89,11 +90,18 @@ public class SignalPdusTest {
     }
 
     @AfterEach
-    public void tearDown() {
+    public void tearDown() throws IOException {
         pduFac = null;
         sentPdus.clear();
         sentPdus = null;
+        receivedPdus.clear();
+        receivedPdus = null;
         buff = null;
+        mutex.release();
+        mutex = null;
+        recorder.end(); // kills the netif as well
+        netif = null;
+        recorder = null;
     }
 
     @Test
@@ -116,37 +124,35 @@ public class SignalPdusTest {
                 Logger.getLogger(SignalPdusTest.class.getName()).log(Level.SEVERE, null, ex);
             }
         });
-        receivedPdus.clear();
 
         System.out.println("testRoundTripNet finished");
     }
 
     @Test
-    public void testRoundTripLog() throws IOException {
-
-        PduPlayer player = new PduPlayer(netif.getMcastGroup(), netif.getDisPort(), Path.of(recorder.getLogFile()));
+    public void testRoundTripLog() throws IOException, InterruptedException {
+        
+        Path path = Path.of(recorder.getLogFile()).getParent();
+        PduPlayer player = new PduPlayer(netif.getMcastGroup(), netif.getDisPort(), path);
         player.sendToNet(false);
         player.addRawListener(ba -> {
-            if (ba != null) {
-                Pdu pdu = pduFac.createPdu(ba);
-                receivedPdus.add(pdu);
-            } else {
+            if (ba != null)
+                assertNotNull(pduFac.createPdu(ba), "PDU creation failure");
+            else {
                 player.end();
-            }
+                mutex.release();
+            }   
         });
-        player.startResume();
     
-        // Compare
-        assertEquals(sentPdus, receivedPdus, "Sent and received pdus not identical");
-
+        mutex.acquire();
         System.out.println("testRoundTripLog finished");
     }
 
-    static private void handleReceivedPdu(Pdu pdu) {
-        receivedPdus.add(pdu);
+    private void handleReceivedPdu(Pdu pdu) {
+        if (receivedPdus != null)
+            receivedPdus.add(pdu);
     }
 
-    public static void main(String[] args) throws IOException {
+    public static void main(String[] args) throws IOException, InterruptedException {
         SignalPdusTest.setUpClass();
         SignalPdusTest spt = new SignalPdusTest();