diff --git a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC1_MCAST_PduReceiver.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC1_MCAST_PduReceiver.java
deleted file mode 100644
index eeb3cf241e31b0abd0a506ad65016bcded9a05f0..0000000000000000000000000000000000000000
--- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC1_MCAST_PduReceiver.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package MV3500Cohort2019JulySeptember.homework2.Brennenstuhl.BRE_KNO_MCC;
-
-import java.net.*;
-import java.io.*;
-
-import edu.nps.moves.dis7.*;
-import edu.nps.moves.dis7.enumerations.*;
-import edu.nps.moves.dis7.util.*;
-
-public class BRE_KNO_MCC_PC1_MCAST_PduReceiver
-{
-  public static final int DEFAULT_MULTICAST_PORT = BRE_KNO_MCC_PC2_PC1_MCAST_PduSender.DEFAULT_MULTICAST_PORT;
-  public static final String DEFAULT_MULTICAST_ADDRESS = BRE_KNO_MCC_PC2_PC1_MCAST_PduSender.DEFAULT_MULTICAST_ADDRESS;
-  public static final boolean USE_FAST_ESPDU = false;
-    
-
-  public static void main(String args[])
-  {    
-    PduFactory factory;
-    MulticastSocket socket;
-    InetAddress address;
-    DatagramPacket packet;
-
-    try {
-        
-      System.out.println("BRE_KNO_MCC_PC2_MCAST_PduReceiver started...");
-      if (args.length == 2) {
-        socket = new MulticastSocket(Integer.parseInt(args[0]));
-        address = InetAddress.getByName(args[1]);
-      }
-      else {
-        System.out.println("Usage:   BRE_KNO_MCC_PC2_MCAST_PduReceiver <port> <multicast group>");
-        System.out.println("Default: BRE_KNO_MCC_PC2_MCAST_PduReceiver " + DEFAULT_MULTICAST_PORT + "   " + DEFAULT_MULTICAST_ADDRESS);
-        socket = new MulticastSocket(DEFAULT_MULTICAST_PORT);
-        address = InetAddress.getByName(DEFAULT_MULTICAST_ADDRESS);
-      }
-      socket.joinGroup(address);
-
-      factory = new PduFactory();
-
-      while (true) // Loop infinitely, receiving datagrams
-      {
-        byte buffer[] = new byte[1500]; // typical MTU size
-
-        packet = new DatagramPacket(buffer, buffer.length); // reset
-
-        socket.receive(packet);
-
-        Pdu pdu = factory.createPdu(packet.getData());
-        if (pdu != null) {
-          DISPDUType currentPduType = pdu.getPduType(); //short  currentPduType = pdu.getPduType();
-          String currentPduTypeName = pdu.getClass().getName();
-          DISProtocolFamily currentProtocolFamilyID = pdu.getProtocolFamily(); //short  currentProtocolFamilyID = pdu.getProtocolFamily();
-          //String currentPduFamilyName = pdu.getClass().getSuperclass().getSimpleName();
-
-          StringBuilder message = new StringBuilder();
-          message.append("received DIS PDU ");
-          if (currentPduType.getValue() < 10)
-            message.append(" ");
-          message.append(currentPduType.getValue());
-          String currentPduTypePadded     = String.format("%-34s", currentPduType); // - indicates right padding of whitespace
-          message.append(" " ).append(currentPduTypePadded);
-          String currentPduTypeNamePadded = String.format("%-49s", currentPduTypeName); // - indicates right padding of whitespace
-          message.append(" of type ").append(currentPduTypeNamePadded); // package.class name
-          message.append(" (protocolFamily ").append(currentProtocolFamilyID);
-//        message.append(" ").append(currentPduFamilyName); // class name is also available
-         message.append(")");
-          System.out.println(message.toString());
-        }
-        else
-          System.out.println("received packet but pdu is null, packet.getData().length=" + packet.getData().length + ", error...");
-      }
-    }
-    catch (IOException e) {
-      System.out.println("Problem with BRE_KNO_MCC_PC2_MCAST_PduReceiver, see exception trace:");
-      System.out.println(e);
-    }
-    finally {
-      System.out.println("BRE_KNO_MCC_PC2_MCAST_PduReceiver complete.");
-    }
-  }
-}
diff --git a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_Controller.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_Controller.java
index 9a6456ed508194070123884089a8613092be81ab..3e4623ff4e7049b8dc41f3e5845aaf1cfe000b65 100644
--- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_Controller.java
+++ b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_Controller.java
@@ -1,11 +1,8 @@
 package MV3500Cohort2019JulySeptember.homework2.Brennenstuhl.BRE_KNO_MCC;
 
-import edu.nps.moves.dis7.CommentPdu;
 import edu.nps.moves.dis7.Pdu;
-import edu.nps.moves.dis7.VariableDatum;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
-import java.util.ArrayList;
 import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -16,6 +13,7 @@ public class BRE_KNO_MCC_PC2_Controller
     static boolean keepRunningMainThread = false;
     static BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver pc2_pc1_receiver;
     static BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender pc2_pc3_sender;
+    static BRE_KNO_MCC_PC2_PC3_UNICAST_PduReceiver pc2_pc3_receiver;
 
     static InetAddress mcastIPPC1;
     static InetAddress ipPC3;
@@ -24,12 +22,10 @@ public class BRE_KNO_MCC_PC2_Controller
 
     public static void main(String[] args) throws UnknownHostException
     {
-
         mcastIPPC1 = InetAddress.getByName("239.1.2.3");
         portPC1 = 2342;
-
         ipPC3 = InetAddress.getByName("172.20.156.94");
-        portPC3 = 1719;
+        portPC3 = 2343;
 
         pc2_pc1_receiver = new BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver();
         pc2_pc1_receiver.resetMcastMessagesToSend();
@@ -38,6 +34,8 @@ public class BRE_KNO_MCC_PC2_Controller
         pc2_pc1_receiver.run(mcastIPPC1, portPC1);
 
         pc2_pc3_sender = new BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender();
+        pc2_pc3_receiver = new BRE_KNO_MCC_PC2_PC3_UNICAST_PduReceiver();
+        pc2_pc3_receiver.run(portPC3);
 
         //start main thread
         keepRunningMainThread = true;
@@ -46,7 +44,6 @@ public class BRE_KNO_MCC_PC2_Controller
 
     public static void run()
     {
-
         while (keepRunningMainThread)
         {
             List<Pdu> tempSet = pc2_pc1_receiver.getMCASTMessagesToSend();
@@ -55,10 +52,15 @@ public class BRE_KNO_MCC_PC2_Controller
                 pc2_pc3_sender.setKeepRunning(true);
                 pc2_pc3_sender.setListToSend(tempSet);
 
-                if (!pc2_pc3_sender.isRunning())
+                if (!pc2_pc3_sender.getIsRunning())
                 {
                     pc2_pc3_sender.run(ipPC3, portPC3);
                 }
+
+                if (!pc2_pc3_receiver.getIsRunning())
+                {
+                    pc2_pc3_receiver.run(portPC3);
+                }
             }
             else
             {
diff --git a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver.java
index 9c45727d380815c3c15f3befcd2230d64f317bb7..56bb51e7c3ca2cbf103fdf0177909bae7c8d4d26 100644
--- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver.java
+++ b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver.java
@@ -12,7 +12,8 @@ import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-public class BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver {
+public class BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver
+{
 
     public static final boolean USE_FAST_ESPDU = false;
     static List<Integer> savedMCASTMessages = new ArrayList();
@@ -20,16 +21,17 @@ public class BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver {
     static Mutex mutex = new Mutex();
     static boolean keepRunning = false;
     static boolean isRunning = false;
-    
-    public static void run(InetAddress addr, int port) {
+
+    public static void run(InetAddress addr, int port)
+    {
         PduFactory factory;
         MulticastSocket socket;
         InetAddress address;
         DatagramPacket packet;
 
-        try {
+        try
+        {
             isRunning = true;
-            System.out.println("BRE_KNO_MCC_PC1_MCAST_PduReceiver started...");
             address = addr;
             socket = new MulticastSocket(port);
             socket.joinGroup(address);
@@ -44,81 +46,104 @@ public class BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver {
                 socket.receive(packet);
 
                 Pdu pdu = factory.createPdu(packet.getData());
-                if (pdu != null && (pdu.getPduType() == DISPDUType.COMMENT)) {
-                    
+                if (pdu != null && (pdu.getPduType() == DISPDUType.COMMENT))
+                {
+
                     if (!savedMCASTMessages.contains(pdu.getTimestamp()))
                     {
                         System.out.println("BRE_KNO_MCC_PC1_MCAST received Massage.");
                         savedMCASTMessages.add(pdu.getTimestamp());
-                        
-                        try {
+
+                        try
+                        {
                             mutex.acquire();
                             mcastMessagesToSend.add(pdu);
                             mutex.release();
-                        
-                            System.out.println("Added to SendList and saved in archiv."); 
-                        } catch (InterruptedException ex) {
+
+                            System.out.println("Added to SendList and saved in archiv.");
+                        }
+                        catch (InterruptedException ex)
+                        {
                             Logger.getLogger(BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex);
-                        }                       
+                        }
                     }
                     else
                     {
-                        System.out.println("BRE_KNO_MCC_PC1_MCAST received Massage. Is already in list. Nothing added to SendList.");                         
-                    }                
-                    
-                } else {
+                        System.out.println("BRE_KNO_MCC_PC1_MCAST received Massage. Is already in list. Nothing added to SendList.");
+                    }
+
+                }
+                else
+                {
                     System.out.println("received packet but pdu is null or not a PDU from type COMMENT");
                 }
             }
-        } catch (IOException e) {
+        }
+        catch (IOException e)
+        {
             System.out.println("Problem with BRE_KNO_MCC_PC1_MCAST_PduReceiver, see exception trace:");
             System.out.println(e);
-        } finally {
+        }
+        finally
+        {
             System.out.println("BRE_KNO_MCC_PC1_MCAST_PduReceiver complete.");
         }
-        
+
         isRunning = false;
     }
 
-    public boolean isRunning(){
-        return isRunning;                
+    public boolean isRunning()
+    {
+        return isRunning;
     }
-    
+
     public void setKeepRunning(boolean k)
     {
         keepRunning = k;
     }
-    
-    public void resetSavedMCASTMessagesList(){
-        try {
+
+    public void resetSavedMCASTMessagesList()
+    {
+        try
+        {
             mutex.acquire();
             savedMCASTMessages.clear();
             mutex.release();
-        } catch (InterruptedException ex) {
+        }
+        catch (InterruptedException ex)
+        {
             Logger.getLogger(BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex);
         }
     }
-    
-    public void resetMcastMessagesToSend(){
-        try {
+
+    public void resetMcastMessagesToSend()
+    {
+        try
+        {
             mutex.acquire();
             mcastMessagesToSend.clear();
             mutex.release();
-        } catch (InterruptedException ex) {
+        }
+        catch (InterruptedException ex)
+        {
             Logger.getLogger(BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex);
         }
     }
 
-    public List<Pdu> getMCASTMessagesToSend(){
+    public List<Pdu> getMCASTMessagesToSend()
+    {
         List<Pdu> temp = null;
-        try {
+        try
+        {
             mutex.acquire();
             temp = new ArrayList(mcastMessagesToSend);
-            mutex.release();            
-        } catch (InterruptedException ex) {
+            mutex.release();
+        }
+        catch (InterruptedException ex)
+        {
             Logger.getLogger(BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex);
         }
-        
+
         return temp;
     }
 }
diff --git a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC1_MCAST_PduSender.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC1_MCAST_PduSender.java
deleted file mode 100755
index 91cc80158da29e03e07b750d4b49add6511d8f71..0000000000000000000000000000000000000000
--- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC1_MCAST_PduSender.java
+++ /dev/null
@@ -1,178 +0,0 @@
-package MV3500Cohort2019JulySeptember.homework2.Brennenstuhl.BRE_KNO_MCC;
-
-import java.io.*;
-import java.net.*;
-import java.util.*;
-
-import edu.nps.moves.dis7.*;
-import edu.nps.moves.dis7.enumerations.*;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-/**
- * This is an example that sends many/most types of PDUs. Useful for testing standards
- * compliance or getting a full set of PDUs. It also writes the generated PDUs to an XML file.
- * Adapted from OpenDIS library example package edu.nps.moves.examples
- *
- * @author DMcG
- * @version $Id:$
- */
-public class BRE_KNO_MCC_PC2_PC1_MCAST_PduSender
-{
-    /** Default multicast group address we send on. */
-    public static final String DEFAULT_MULTICAST_ADDRESS = "239.1.2.3";
-	
-    /** Default multicast port used, matches Wireshark DIS capture default */
-    public static final int    DEFAULT_MULTICAST_PORT    = 2342;
-	
-    private int port;
-    InetAddress multicastAddress;
-
-    public BRE_KNO_MCC_PC2_PC1_MCAST_PduSender(int port, String multicast) {
-        try
-		{
-            this.port = port;
-            multicastAddress = InetAddress.getByName(multicast);
-            if (!multicastAddress.isMulticastAddress())
-			{
-                System.out.println("Not a multicast address: " + multicast);
-            }
-        } 
-		catch (UnknownHostException e) {
-            System.out.println("Unable to open socket: " + e);
-        }
-    }
-
-    public void run(int numbOfPDUS)
-    {
-	System.out.println("BRE_KNO_MCC_PC2_MCAST_PduSender started...");
-        System.out.println("Generate PDUs and note issues, if any...");
-        
-        List<Pdu> generatedPdusList = createPDU(numbOfPDUS);
-          
-        // Send the PDUs we created
-        System.out.println("Send the " + generatedPdusList.size() + " PDUs we created...");
-
-        try
-        {
-            InetAddress localMulticastAddress = InetAddress.getByName(DEFAULT_MULTICAST_ADDRESS);
-            MulticastSocket socket = new MulticastSocket(DEFAULT_MULTICAST_PORT);
-            socket.joinGroup(localMulticastAddress);
-
-            for (int idx = 0; idx < generatedPdusList.size(); idx++)
-            {
-                ByteArrayOutputStream baos = new ByteArrayOutputStream();
-                DataOutputStream dos = new DataOutputStream(baos);
-                byte[] buffer;
-
-                Pdu aPdu = generatedPdusList.get(idx);
-                try {
-                    aPdu.marshal(dos);
-                } catch (Exception ex) {
-                    Logger.getLogger(BRE_KNO_MCC_PC2_PC1_MCAST_PduSender.class.getName()).log(Level.SEVERE, null, ex);
-                }
-
-                buffer = baos.toByteArray();
-                DatagramPacket packet = new DatagramPacket(buffer, buffer.length, localMulticastAddress, DEFAULT_MULTICAST_PORT);
-                socket.send(packet);
-                try {
-                    Thread.sleep(100L);
-                } catch (InterruptedException ex) {
-                }
-                String currentPduTypeValuePadded = String.format("%2s", aPdu.getPduType().getValue());
-                String currentPduTypePadded = String.format("%-34s", aPdu.getPduType()); // - indicates right padding of whitespace
-                System.out.print  ("Sent DIS PDU " + currentPduTypeValuePadded + " " + currentPduTypePadded );
-                System.out.println(" of type " + aPdu.getClass().getName());
-            }
-        }            
-        catch (IOException e)
-	{
-            System.out.println(e);
-        }
-    }
-
-    public static void main(String args[])
-    {
-        if (args.length == 2)
-        {
-            BRE_KNO_MCC_PC2_PC1_MCAST_PduSender sender = new BRE_KNO_MCC_PC2_PC1_MCAST_PduSender(Integer.parseInt(args[0]), args[1]);
-            sender.run(5);
-        } 
-        else
-        {
-            System.out.println("Usage:   BRE_KNO_MCC_PC2_MCAST_PduSender <port> <multicast group>");
-            System.out.println("Default: BRE_KNO_MCC_PC2_MCAST_PduSender  " + DEFAULT_MULTICAST_PORT + "   " + DEFAULT_MULTICAST_ADDRESS);
-            BRE_KNO_MCC_PC2_PC1_MCAST_PduSender sender = new  BRE_KNO_MCC_PC2_PC1_MCAST_PduSender(DEFAULT_MULTICAST_PORT, DEFAULT_MULTICAST_ADDRESS);
-            sender.run(5);
-        }
-        System.out.println("BRE_KNO_MCC_PC2_MCAST_PduSender complete.");
-    }
-    
-    private List<Pdu> createPDU(int numbOfPDUs)
-    {
-        List<Pdu> list = new ArrayList<>();
-        List<Short> entityIDs = new ArrayList<>();        
-        Random r = new Random();
-        
-        //generate Entity ID (no douplications)        
-        for (int i = 0; i < numbOfPDUs; i++)
-        {
-            short temp = (short) r.nextInt();        
-            while (entityIDs.contains(temp))
-            {
-                temp = (short) r.nextInt();
-            }
-            entityIDs.add(temp);
-        }
-        
-        //
-        for (int i = 0; i < numbOfPDUs; i++){
-            EntityStatePdu myPdu = new EntityStatePdu();
-            
-            //ID
-            EntityID tempID = new EntityID();
-            tempID.setEntityID(entityIDs.get(i));
-            myPdu.setEntityID(tempID);
-            
-            //Enemy or Friend
-            myPdu.setForceId(ForceID.FRIENDLY);
-            
-            //location
-            Vector3Double tempLoc = new Vector3Double();
-            tempLoc.setX(r.nextInt(1000) + r.nextDouble());
-            tempLoc.setY(r.nextInt(1000) + r.nextDouble());
-            tempLoc.setZ(r.nextInt(1000) + r.nextDouble());
-            
-            myPdu.setEntityLocation(tempLoc);
-            
-            //orientation
-            EulerAngles tempOri = new EulerAngles();
-            tempOri.setPhi(r.nextFloat());
-            tempOri.setPsi(r.nextFloat());
-            tempOri.setTheta(r.nextFloat());
-            
-            myPdu.setEntityOrientation(tempOri);
-            
-            
-            //velocity
-            Vector3Double tempVel = new Vector3Double();
-            tempVel.setX(r.nextDouble());
-            tempVel.setY(r.nextDouble());
-            tempVel.setZ(r.nextDouble());
-            
-            myPdu.setEntityLocation(tempVel);
-            
-            
-//            Category? Country? Domain?...
-//            EntityType tempType = new EntityType();
-//            tempType.set
-//            myPdu.setEntityType(tempType)
-
-            list.add(myPdu);
-        }
-        
-               
-        return list;
-    }
-}
-
diff --git a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC3_UNICAST_PduReceiver.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC3_UNICAST_PduReceiver.java
index 6ea4fbc68c9418bcd9084df1c51f837a7b5c92ba..2d2e16806926ecc00355cc5bc525792349ebb655 100644
--- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC3_UNICAST_PduReceiver.java
+++ b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC3_UNICAST_PduReceiver.java
@@ -1,81 +1,53 @@
 package MV3500Cohort2019JulySeptember.homework2.Brennenstuhl.BRE_KNO_MCC;
 
-import MV3500Cohort2019JulySeptember.homework4.Knobeloch.*;
-import java.net.*;
-import java.io.*;
-
-import edu.nps.moves.dis7.*;
-import edu.nps.moves.dis7.enumerations.*;
-import edu.nps.moves.dis7.util.*;
+import java.io.IOException;
+import java.net.DatagramPacket;
+import java.net.DatagramSocket;
+import java.net.SocketException;
 
 public class BRE_KNO_MCC_PC2_PC3_UNICAST_PduReceiver
 {
-  public static final int DEFAULT_MULTICAST_PORT = BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender.DEFAULT_MULTICAST_PORT;
-  public static final String DEFAULT_MULTICAST_ADDRESS = BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender.DEFAULT_MULTICAST_ADDRESS;
-  public static final boolean USE_FAST_ESPDU = false;
 
-  public static void main(String args[])
-  {
-    PduFactory factory;
-    MulticastSocket socket;
-    InetAddress address;
-    DatagramPacket packet;
+    static boolean keepRunning = false;
+    static boolean isRunning = false;
+
+    static int portPC3;
 
-    try {
-      System.out.println("BRE_KNO_MCC_PC2_UNICAST_PduReceiver started...");
-      if (args.length == 2) {
-        socket = new MulticastSocket(Integer.parseInt(args[0]));
-        address = InetAddress.getByName(args[1]);
-      }
-      else {
-        System.out.println("Usage:   BRE_KNO_MCC_PC2_UNICAST_PduReceiver <port> <multicast group>");
-        System.out.println("Default: BRE_KNO_MCC_PC2_UNICAST_PduReceiver " + DEFAULT_MULTICAST_PORT + "   " + DEFAULT_MULTICAST_ADDRESS);
-        socket = new MulticastSocket(DEFAULT_MULTICAST_PORT);
-        address = InetAddress.getByName(DEFAULT_MULTICAST_ADDRESS);
-      }
-      socket.joinGroup(address);
+    public static void run(int port)
+    {
+        portPC3 = port;
+        isRunning = true;
 
-      factory = new PduFactory();
+        try (DatagramSocket socket = new DatagramSocket(port))
+        {
 
-      while (true) // Loop infinitely, receiving datagrams
-      {
-        byte buffer[] = new byte[1500]; // typical MTU size
+            byte[] buffer = new byte[65507];
 
-        packet = new DatagramPacket(buffer, buffer.length); // reset
+            socket.setSoTimeout(10000);
 
-        socket.receive(packet);
+            while (true)
+            {
+                DatagramPacket datagramPacket = new DatagramPacket(buffer, 0, buffer.length);
 
-        Pdu pdu = factory.createPdu(packet.getData());
-        if (pdu != null) {
-          DISPDUType currentPduType = pdu.getPduType(); //short  currentPduType = pdu.getPduType();
-          String currentPduTypeName = pdu.getClass().getName();
-          DISProtocolFamily currentProtocolFamilyID = pdu.getProtocolFamily(); //short  currentProtocolFamilyID = pdu.getProtocolFamily();
-          //String currentPduFamilyName = pdu.getClass().getSuperclass().getSimpleName();
+                socket.receive(datagramPacket);
 
-          StringBuilder message = new StringBuilder();
-          message.append("received DIS PDU ");
-          if (currentPduType.getValue() < 10)
-            message.append(" ");
-          message.append(currentPduType.getValue());
-          String currentPduTypePadded     = String.format("%-34s", currentPduType); // - indicates right padding of whitespace
-          message.append(" " ).append(currentPduTypePadded);
-          String currentPduTypeNamePadded = String.format("%-49s", currentPduTypeName); // - indicates right padding of whitespace
-          message.append(" of type ").append(currentPduTypeNamePadded); // package.class name
-          message.append(" (protocolFamily ").append(currentProtocolFamilyID);
-//        message.append(" ").append(currentPduFamilyName); // class name is also available
-         message.append(")");
-          System.out.println(message.toString());
+                String receivedMessage = new String(datagramPacket.getData());
+                System.out.println(receivedMessage);
+            }
+        }
+        catch (SocketException e)
+        {
+            isRunning = false;
+            e.printStackTrace();
+        }
+        catch (IOException e)
+        {
+            isRunning = false;
+            System.out.println("Timeout. Client is closing.");
         }
-        else
-          System.out.println("received packet but pdu is null, packet.getData().length=" + packet.getData().length + ", error...");
-      }
-    }
-    catch (IOException e) {
-      System.out.println("Problem with BRE_KNO_MCC_PC2_UNICAST_PduReceiver, see exception trace:");
-      System.out.println(e);
     }
-    finally {
-      System.out.println("BRE_KNO_MCC_PC2_UNICAST_PduReceiver complete.");
+    
+    public boolean getIsRunning(){
+        return isRunning;
     }
-  }
 }
diff --git a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender.java
index 5c95c3b366820a052de6097a9c705242fc5cfef1..b4a80d14e7c932af6517460278c205621eb8a715 100755
--- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender.java
+++ b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender.java
@@ -90,7 +90,7 @@ public class BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender
         }
     }
 
-    public boolean isRunning()
+    public boolean getIsRunning()
     {
         return isRunning;
     }
diff --git a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver.java
index f7f6de6976327cc3c90bdc2928c93f75821cf6e1..99512720b737b8da5633e7c832b89482149755a2 100644
--- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver.java
+++ b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver.java
@@ -1,61 +1,82 @@
 package MV3500Cohort2019JulySeptember.homework2.Brennenstuhl.BRE_KNO_MCC;
 
-import com.sun.corba.se.impl.orbutil.concurrent.Mutex;
 import java.net.*;
 import java.io.*;
 
 import edu.nps.moves.dis7.*;
 import edu.nps.moves.dis7.util.PduFactory;
 import java.util.ArrayList;
-import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
 public class BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver
 {
+
     static boolean keepRunning = false;
     static boolean isRunning = false;
-    
+
     static int portPC3;
+    static InetAddress ipPC2;
+
+    public static void main()
+    {
+
+        portPC3 = 2343;
+        try
+        {
+            ipPC2 = InetAddress.getByName("172.20.148.181");
+        }
+        catch (UnknownHostException ex)
+        {
+            Logger.getLogger(BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex);
+        }
+
+        run();
 
+    }
 
     public static void run()
     {
         isRunning = true;
         byte[] buffer = new byte[65507];
-        portPC3 = 2343;      
-        
+
         try
         {
             DatagramSocket clientSocket = new DatagramSocket(portPC3);
             while (keepRunning)
             {
                 DatagramPacket datagramPacket = new DatagramPacket(buffer, 0, buffer.length);
-                
+
                 try
                 {
-                    clientSocket.receive(datagramPacket);  
+                    System.out.println("waiting for receiving message...");
+                    clientSocket.receive(datagramPacket);
+                    System.out.println("Message received.");
+
                     PduFactory factory = new PduFactory();
-                    
+
                     Pdu tempPdu = factory.createPdu(datagramPacket.getData());
                     StringBuilder message = new StringBuilder();
                     message.append("Pdu type: ");
                     message.append(tempPdu.getPduType());
                     message.append(" Intern ID: ");
                     message.append(tempPdu.getTimestamp());
-                    
+
                     //extract comments
-                    CommentPdu commentPdu = (CommentPdu)tempPdu; // cast to precise type
-                    ArrayList<VariableDatum> payloadList = (ArrayList)commentPdu.getVariableDatums();
-                    
+                    CommentPdu commentPdu = (CommentPdu) tempPdu; // cast to precise type
+                    ArrayList<VariableDatum> payloadList = (ArrayList) commentPdu.getVariableDatums();
+
                     for (VariableDatum variableDatum : payloadList)
                     {
                         String nextComment = new String(variableDatum.getVariableDatumValue()); // convert byte[] to String
                         message.append(nextComment);
-                    }                    
-                    
-                    System.out.println(message);                    
-                }                
+                    }
+
+                    System.out.println(message);
+
+                    sendAnswer(tempPdu.getTimestamp());
+
+                }
                 catch (IOException ex)
                 {
                     Logger.getLogger(BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex);
@@ -65,6 +86,33 @@ public class BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver
         catch (SocketException ex)
         {
             Logger.getLogger(BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex);
-        }   
+        }
+    }
+
+    public boolean isRunning()
+    {
+        return isRunning;
+    }
+
+    public void setKeepRunning(boolean k)
+    {
+        keepRunning = k;
+    }
+
+    static void sendAnswer(int internID)
+    {
+        //Sending via UNICAST
+
+        String message = ("PC3: Packet with InternID " + internID + " received.");
+        DatagramPacket packet = new DatagramPacket(message.getBytes(), message.length(), ipPC2, portPC3);
+        try
+        {
+            DatagramSocket socket = new DatagramSocket(portPC3);
+            socket.send(packet);
+        }
+        catch (IOException ex)
+        {
+            Logger.getLogger(BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender.class.getName()).log(Level.SEVERE, null, ex);
+        }
     }
 }
diff --git a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC3_PC2_UNICAST_PduSender.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC3_PC2_UNICAST_PduSender.java
deleted file mode 100755
index c444e2fd7cff84ec3a55453e9061f896ca1e20c9..0000000000000000000000000000000000000000
--- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC3_PC2_UNICAST_PduSender.java
+++ /dev/null
@@ -1,178 +0,0 @@
-package MV3500Cohort2019JulySeptember.homework2.Brennenstuhl.BRE_KNO_MCC;
-
-import java.io.*;
-import java.net.*;
-import java.util.*;
-
-import edu.nps.moves.dis7.*;
-import edu.nps.moves.dis7.enumerations.*;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-/**
- * This is an example that sends many/most types of PDUs. Useful for testing standards
- * compliance or getting a full set of PDUs. It also writes the generated PDUs to an XML file.
- * Adapted from OpenDIS library example package edu.nps.moves.examples
- *
- * @author DMcG
- * @version $Id:$
- */
-public class BRE_KNO_MCC_PC3_PC2_UNICAST_PduSender
-{
-    /** Default multicast group address we send on. */
-    public static final String DEFAULT_MULTICAST_ADDRESS = "239.1.2.3";
-	
-    /** Default multicast port used, matches Wireshark DIS capture default */
-    public static final int    DEFAULT_MULTICAST_PORT    = 2343;
-	
-    private int port;
-    InetAddress multicastAddress;
-
-    public BRE_KNO_MCC_PC3_PC2_UNICAST_PduSender(int port, String multicast) {
-        try
-		{
-            this.port = port;
-            multicastAddress = InetAddress.getByName(multicast);
-            if (!multicastAddress.isMulticastAddress())
-			{
-                System.out.println("Not a multicast address: " + multicast);
-            }
-        } 
-		catch (UnknownHostException e) {
-            System.out.println("Unable to open socket: " + e);
-        }
-    }
-
-    public void run(int numbOfPDUS)
-    {
-	System.out.println("BRE_KNO_MCC_PC3_UNICAST_PduSender started...");
-        System.out.println("Generate PDUs and note issues, if any...");
-        
-        List<Pdu> generatedPdusList = createPDU(numbOfPDUS);
-          
-        // Send the PDUs we created
-        System.out.println("Send the " + generatedPdusList.size() + " PDUs we created...");
-
-        try
-        {
-            InetAddress localMulticastAddress = InetAddress.getByName(DEFAULT_MULTICAST_ADDRESS);
-            MulticastSocket socket = new MulticastSocket(DEFAULT_MULTICAST_PORT);
-            socket.joinGroup(localMulticastAddress);
-
-            for (int idx = 0; idx < generatedPdusList.size(); idx++)
-            {
-                ByteArrayOutputStream baos = new ByteArrayOutputStream();
-                DataOutputStream dos = new DataOutputStream(baos);
-                byte[] buffer;
-
-                Pdu aPdu = generatedPdusList.get(idx);
-                try {
-                    aPdu.marshal(dos);
-                } catch (Exception ex) {
-                    Logger.getLogger(BRE_KNO_MCC_PC3_PC2_UNICAST_PduSender.class.getName()).log(Level.SEVERE, null, ex);
-                }
-
-                buffer = baos.toByteArray();
-                DatagramPacket packet = new DatagramPacket(buffer, buffer.length, localMulticastAddress, DEFAULT_MULTICAST_PORT);
-                socket.send(packet);
-                try {
-                    Thread.sleep(100L);
-                } catch (InterruptedException ex) {
-                }
-                String currentPduTypeValuePadded = String.format("%2s", aPdu.getPduType().getValue());
-                String currentPduTypePadded = String.format("%-34s", aPdu.getPduType()); // - indicates right padding of whitespace
-                System.out.print  ("Sent DIS PDU " + currentPduTypeValuePadded + " " + currentPduTypePadded );
-                System.out.println(" of type " + aPdu.getClass().getName());
-            }
-        }            
-        catch (IOException e)
-	{
-            System.out.println(e);
-        }
-    }
-
-    public static void main(String args[])
-    {
-        if (args.length == 2)
-        {
-            BRE_KNO_MCC_PC3_PC2_UNICAST_PduSender sender = new BRE_KNO_MCC_PC3_PC2_UNICAST_PduSender(Integer.parseInt(args[0]), args[1]);
-            sender.run(5);
-        } 
-        else
-        {
-            System.out.println("Usage:   BRE_KNO_MCC_PC3_UNICAST_PduSender <port> <multicast group>");
-            System.out.println("Default: BRE_KNO_MCC_PC3_UNICAST_PduSender  " + DEFAULT_MULTICAST_PORT + "   " + DEFAULT_MULTICAST_ADDRESS);
-            BRE_KNO_MCC_PC3_PC2_UNICAST_PduSender sender = new  BRE_KNO_MCC_PC3_PC2_UNICAST_PduSender(DEFAULT_MULTICAST_PORT, DEFAULT_MULTICAST_ADDRESS);
-            sender.run(5);
-        }
-        System.out.println("BRE_KNO_MCC_PC3_UNICAST_PduSender complete.");
-    }
-    
-    private List<Pdu> createPDU(int numbOfPDUs)
-    {
-        List<Pdu> list = new ArrayList<>();
-        List<Short> entityIDs = new ArrayList<>();        
-        Random r = new Random();
-        
-        //generate Entity ID (no douplications)        
-        for (int i = 0; i < numbOfPDUs; i++)
-        {
-            short temp = (short) r.nextInt();        
-            while (entityIDs.contains(temp))
-            {
-                temp = (short) r.nextInt();
-            }
-            entityIDs.add(temp);
-        }
-        
-        //
-        for (int i = 0; i < numbOfPDUs; i++){
-            EntityStatePdu myPdu = new EntityStatePdu();
-            
-            //ID
-            EntityID tempID = new EntityID();
-            tempID.setEntityID(entityIDs.get(i));
-            myPdu.setEntityID(tempID);
-            
-            //Enemy or Friend
-            myPdu.setForceId(ForceID.FRIENDLY);
-            
-            //location
-            Vector3Double tempLoc = new Vector3Double();
-            tempLoc.setX(r.nextInt(1000) + r.nextDouble());
-            tempLoc.setY(r.nextInt(1000) + r.nextDouble());
-            tempLoc.setZ(r.nextInt(1000) + r.nextDouble());
-            
-            myPdu.setEntityLocation(tempLoc);
-            
-            //orientation
-            EulerAngles tempOri = new EulerAngles();
-            tempOri.setPhi(r.nextFloat());
-            tempOri.setPsi(r.nextFloat());
-            tempOri.setTheta(r.nextFloat());
-            
-            myPdu.setEntityOrientation(tempOri);
-            
-            
-            //velocity
-            Vector3Double tempVel = new Vector3Double();
-            tempVel.setX(r.nextDouble());
-            tempVel.setY(r.nextDouble());
-            tempVel.setZ(r.nextDouble());
-            
-            myPdu.setEntityLocation(tempVel);
-            
-            
-//            Category? Country? Domain?...
-//            EntityType tempType = new EntityType();
-//            tempType.set
-//            myPdu.setEntityType(tempType)
-
-            list.add(myPdu);
-        }
-        
-               
-        return list;
-    }
-}
-