diff --git a/deliverables/src/MV3500Cohort2018JulySeptember/FinalProjects/FriscoFurrProject/originals/FDCSendRecieve.java b/deliverables/src/MV3500Cohort2018JulySeptember/FinalProjects/FriscoFurrProject/originals/FDCSendRecieve.java
new file mode 100644
index 0000000000000000000000000000000000000000..4dadb6ee76c47aba0fcf67c8eee08e1e1b5f4140
--- /dev/null
+++ b/deliverables/src/MV3500Cohort2018JulySeptember/FinalProjects/FriscoFurrProject/originals/FDCSendRecieve.java
@@ -0,0 +1,281 @@
+package MV3500Cohort2018JulySeptember.FinalProject.FriscoFurrProject;
+
+import java.net.*;
+import java.io.*;
+import java.util.*;
+import edu.nps.moves.dis.*;
+import java.io.IOException;
+import edu.nps.moves.disutil.PduFactory;
+import edu.nps.moves.disutil.DisTime;
+
+public class FDCSendRecieve {
+
+	/**
+	 * 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 = 3000;
+
+	private int port;
+	InetAddress multicastAddress;
+
+	public static final int MULTICAST_PORT = 3000;
+	public static final String MULTICAST_GROUP = "239.1.2.3";
+	public static final boolean USE_FAST_ESPDU = false;
+	public long[] sentBuffer = new long[100];
+	public static List sentBufferList;
+	DisTime disTime = DisTime.getInstance();
+
+	public FDCSendRecieve(int port, String multicast) {
+		this.sentBufferList = new ArrayList<>();
+		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(Pdu... pdupass) throws UnknownHostException, IOException {
+
+		List<Pdu> generatedPdus = new ArrayList<>();
+		Pdu aPdu = null;
+		System.out.println("\nFDC Sender started...");
+		// Send the PDUs we created
+		InetAddress localMulticastAddress = InetAddress.getByName(DEFAULT_MULTICAST_ADDRESS);
+		MulticastSocket socket = new MulticastSocket(DEFAULT_MULTICAST_PORT);
+		socket.joinGroup(localMulticastAddress);
+
+		for (Pdu i : pdupass) {
+			Pdu pdu = i;
+			if (sentBufferList.contains(pdu.getTimestamp())) {
+				break;
+			}
+
+			short currentPduType = pdu.getPduType();
+			System.out.println("in sender, recived PDU type: " + currentPduType);
+
+			switch (currentPduType) // using enumeration values from edu.nps.moves.disenum.*
+			{
+
+				case 1: //ENTITY_STATE:
+					aPdu = pdu;
+					break;
+
+				case 2: //FIRE
+					aPdu = pdu;
+					break;
+//
+				case 15: //AcknowledgePdu
+					aPdu = pdu;
+					break;
+
+				case 17:
+					aPdu = pdu;
+					break;
+
+				case 14:
+					aPdu = pdu;
+					break;
+
+				default:
+					System.out.print("PDU of type " + pdu + " not supported, created or sent ");
+					System.out.println();
+			}
+			if (aPdu != null) {
+				generatedPdus.add(aPdu);
+				System.out.println("APDU container count " + generatedPdus.size());
+			}
+
+		}
+		for (int idx = 0; idx < generatedPdus.size(); idx++) {
+			ByteArrayOutputStream baos = new ByteArrayOutputStream();
+			DataOutputStream dos = new DataOutputStream(baos);
+			byte[] buffer;
+
+			aPdu = generatedPdus.get(idx);
+			aPdu.marshal(dos);
+
+			buffer = baos.toByteArray();
+			DatagramPacket packet = new DatagramPacket(buffer, buffer.length, localMulticastAddress, DEFAULT_MULTICAST_PORT);
+			socket.send(packet);
+			sentBufferList.add(aPdu.getTimestamp());
+			System.out.println("Sent PDU of type " + aPdu.getClass().getName()+ "\n");
+		}
+	}
+
+	public static void main(String[] args) throws IOException, InterruptedException {
+		DisTime disTime = DisTime.getInstance();
+
+		FDCSendRecieve sender = new FDCSendRecieve(DEFAULT_MULTICAST_PORT, DEFAULT_MULTICAST_ADDRESS); //initalize the sender
+
+		EntityStatePdu FDCespdu = new EntityStatePdu();
+		Marking marking = new Marking();
+		marking.setCharactersString("FDC");
+		FDCespdu.setMarking(marking);
+		FDCespdu.setExerciseID((short) 1);
+		EntityID FDCID = FDCespdu.getEntityID();
+		FDCID.setSite(1);  // 0 is apparently not a valid site number, per the spec
+		FDCID.setApplication(1);
+		FDCID.setEntity(1);  //change for each person I think???  - JMF
+		EntityType entityType = FDCespdu.getEntityType();
+		//
+		//Need to update the info below to match the unit type IAW SISO-REF-010-2015 V.21
+		//  https://www.sisostds.org/DesktopModules/Bring2mind/DMX/Download.aspx?Command=Core_Download&EntryId=42916&PortalId=0&TabId=105 
+		//
+		entityType.setEntityKind((short) 1);      // Platform (vs lifeform, munition, sensor, etc.)  TGT=1, OBS = 1
+		entityType.setCountry(225);              // USA TGT = 222 (Russia), OBS = 225
+		entityType.setDomain((short) 1);          // Land (vs air, surface, subsurface, space) both TGT and OBS are 1
+		entityType.setCategory((short) 3);        // FDC  TGT = 1, Tank  OBS=40 OP
+		entityType.setSubcategory((short) 12);     // M1068 TGT = 2, T72 tank  NONE FOR OP
+		entityType.setSpec((short) 1);            // M1068 w/ SICUP Tent  NONE FOR TGT OR OP
+		Vector3Double location = new Vector3Double();
+		location.setX(0.0);  //TGT = 150   OBS = 75
+		location.setY(0.0);  //TGT = 150   OBS = 75
+		location.setZ(10.0); //TGT = 20    OBS = 50
+		FDCespdu.setEntityLocation(location);
+		int timestamp = disTime.getDisAbsoluteTimestamp();
+		FDCespdu.setTimestamp(timestamp);
+
+		sender.run(FDCespdu);  //sends inital here I am and who I am
+
+		//Set up other players to look for:
+		EntityID OBSEntityID = new EntityID();  // need to figure out what this is....and then just put into if statement below
+		OBSEntityID.setEntity(2);
+		OBSEntityID.setApplication(1);
+		OBSEntityID.setSite(1);
+
+		EntityID TGTEntityID = new EntityID();  // need to figure out what this is....and then just put into if statement below
+		TGTEntityID.setEntity(3);
+		TGTEntityID.setApplication(1);
+		TGTEntityID.setSite(1);
+
+		/*  BELOW IS THE RECIEVE CODE  //
+		//                             //
+		//                             //
+		 */                             //
+		PduFactory factory;
+		MulticastSocket socket = null;
+		InetAddress address = null;
+		DatagramPacket packet;
+		short currentPduType = 0;  //will use the curentPduType as the check for sending other packets.
+
+		try {
+			System.out.println("FDC is alive and ready to recieve fire missions...\n\n");
+			socket = new MulticastSocket(MULTICAST_PORT);
+			address = InetAddress.getByName(MULTICAST_GROUP);
+			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);
+
+				String marking2 = new String();
+				Pdu pdu = factory.createPdu(packet.getData());
+				currentPduType = pdu.getPduType();
+				if (currentPduType == 14) //stop/freeze PDU
+				{
+					System.out.println("recieved Stop/Freeze packet...");
+					return;
+				}
+//					pdu.setExerciseID((short)5);
+				if (pdu != null) {
+					if (sentBufferList.contains(pdu.getTimestamp())) {
+						pdu = null;
+					}
+					if (pdu != null) {
+
+						String currentPduTypeName = pdu.getClass().getName();
+
+						if (currentPduType == 1) {
+							EntityStatePdu pdu2 = (EntityStatePdu) pdu;
+							marking2 = pdu2.getMarking().getCharactersString();
+						}
+						StringBuilder message = new StringBuilder();
+						message.append("received DIS PDU: ");
+						message.append("pduType ");
+						if (currentPduType < 10) {
+							message.append(" ");
+						}
+						message.append(currentPduType).append(" ").append(currentPduTypeName);
+						message.append(" ");
+						message.append(marking2);
+						System.out.println(message.toString());
+						//Reference for PDU Types: 
+						// http://faculty.nps.edu/brutzman/vrtp/mil/navy/nps/disEnumerations/JdbeHtmlFiles/pdu/8.htm 
+						//
+
+						if (currentPduType == 1) //EntityState
+						{
+							EntityStatePdu entityPDU = (EntityStatePdu) pdu;
+							EntityType PduEntityType = entityPDU.getEntityType();
+							if (PduEntityType.getCountry() == 225) {
+								Thread.sleep((long) 200);
+								timestamp = disTime.getDisAbsoluteTimestamp();
+								FDCespdu.setTimestamp(timestamp);
+								System.out.println("Talking to the Observer, sending a radio check ");
+								sender.run(FDCespdu);
+							}
+						}
+						if (currentPduType == 16) //Action request
+						{
+							// Action response is sending a Null PDU, not sure why...
+							AcknowledgePdu ack = new AcknowledgePdu();
+							ack.setExerciseID((short) 1);
+							ack.setRequestID((long) 1);
+							timestamp = disTime.getDisAbsoluteTimestamp();
+							ack.setTimestamp(timestamp);
+
+							FirePdu fire = new FirePdu();
+							fire.setExerciseID((short) 1);
+							fire.setFireMissionIndex(1000);
+							fire.setRangeToTarget((float) Math.sqrt(Math.pow(150, 2) + Math.pow(150, 2)));  //would pass in target info, but here we know location of tgt is (150,150) and FDC (0,0)
+							fire.setFiringEntityID(FDCID);
+							fire.setTargetEntityID(TGTEntityID);
+							timestamp = disTime.getDisAbsoluteTimestamp();
+							fire.setTimestamp(timestamp);
+							sender.run(ack, fire);
+						}
+
+						if (currentPduType == 22) //Comment PDU
+						{
+							AcknowledgePdu ack = new AcknowledgePdu();
+							ack.setExerciseID((short) 1);
+							ack.setRequestID((long) 1);
+							timestamp = disTime.getDisAbsoluteTimestamp();
+							ack.setTimestamp(timestamp);
+
+							StopFreezePdu stop = new StopFreezePdu();
+							stop.setExerciseID((short) 1);
+							stop.setRequestID((long) 1);
+							sender.run(ack, stop);
+						}
+
+					} else {
+						System.out.println("received packet but pdu is null and originated from FDC. Still standing by...");
+					}
+				}
+			}
+		} catch (IOException e) {
+			System.out.println("Problem with FDC.PduReceiver, see exception trace:");
+			System.out.println(e);
+		} finally {
+			System.out.println("FDC.PduReceiver complete. - OUT!");
+		}
+
+	}
+
+}
diff --git a/deliverables/src/MV3500Cohort2018JulySeptember/FinalProjects/FriscoFurrProject/originals/FriscoFurrPduSender.java b/deliverables/src/MV3500Cohort2018JulySeptember/FinalProjects/FriscoFurrProject/originals/FriscoFurrPduSender.java
new file mode 100644
index 0000000000000000000000000000000000000000..f6b1a2fbc513e6d291d9c02d5c52c35838c9af4a
--- /dev/null
+++ b/deliverables/src/MV3500Cohort2018JulySeptember/FinalProjects/FriscoFurrProject/originals/FriscoFurrPduSender.java
@@ -0,0 +1,226 @@
+package MV3500Cohort2018JulySeptember.FinalProject.FriscoFurrProject;
+
+import java.io.*;
+import java.net.*;
+import java.util.*;
+
+import edu.nps.moves.dis.*;
+import edu.nps.moves.disenum.*;
+import edu.nps.moves.examples.ClassNameComparator;
+
+
+/**
+ * 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 FriscoFurrPduSender
+{
+    /** 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    = 3000;
+	
+    private int port;
+    InetAddress multicastAddress;
+
+    public FriscoFurrPduSender(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()
+	{
+		System.out.println("DisExamples.PduSender started...");
+        try {
+            List<Pdu> generatedPdus = new ArrayList<>();
+
+            // Loop through all the enumerated PDU types, create a PDU for each type,
+            // and add that PDU to a list.
+			System.out.println("number of PDU types in pduType is " + PduType.values().length);
+            for (PduType pdu : PduType.values()) {
+                Pdu aPdu = null;
+				System.out.println(pdu);
+                switch (pdu) // using enumeration values from edu.nps.moves.disenum.*
+				{
+//					
+//                    case ENTITY_STATE:
+//						System.out.println("Case: Enitity_State "+pdu+"\n");
+//                        aPdu = new EntityStatePdu();
+//						EntityStatePdu espdu = (EntityStatePdu) aPdu;
+//						Marking marking = new Marking();
+//						marking.setCharactersString("TEST DUDE");
+//						espdu.setMarking(marking);
+//						Vector3Double espduLocation = new Vector3Double();
+//						espduLocation.setX(1.0);
+//						espduLocation.setY(2.0);
+//						espduLocation.setZ(3.0);
+//						EntityType entityType = espdu.getEntityType();
+//						entityType.setCountry(222);
+//						
+//                        break;
+                        
+//                    case COMMENT:
+//                        aPdu = new CommentPdu();
+//						CommentPdu comment = (CommentPdu) aPdu;
+//						EntityID OBSEntityID = new EntityID();  // need to figure out what this is....and then just put into if statement below
+//						OBSEntityID.setEntity(2);
+//						OBSEntityID.setApplication(1);
+//						OBSEntityID.setSite(1);
+//						comment.setOriginatingEntityID(OBSEntityID);
+//						
+//						long number = 1;
+//						//comment.setNumberOfFixedDatumRecords(number);
+//						
+//						comment.setNumberOfVariableDatumRecords(number);
+//						List datum = new ArrayList<FixedDatum>();
+//						FixedDatum superDatum = new FixedDatum();
+//						superDatum.setFixedDatumID((long)5);
+//						superDatum.setFixedDatumValue((long) 54321);
+//						datum.add(10);
+//						datum.add(superDatum);
+//						comment.setFixedDatums(datum);
+//						List Vdatum = new ArrayList<VariableDatum>();
+//						VariableDatum testBitch = new VariableDatum();
+//						testBitch.setVariableDatumID(1);
+//						Vdatum.add(15);
+//						comment.setVariableDatums(Vdatum);
+//						break;
+
+//                    case FIRE:
+//                        aPdu = new FirePdu();
+//                        break;
+
+                    case DETONATION:
+                        aPdu = new DetonationPdu();
+						System.out.println("detonationPdu type " + aPdu.getPduType());
+                        break;
+//
+//                    case COLLISION:
+//                        aPdu = new CollisionPdu();
+//                        break;
+//
+//                    case SERVICE_REQUEST:
+//                        aPdu = new ServiceRequestPdu();
+//                        break;
+//
+//                    case RESUPPLY_OFFER:
+//                        aPdu = new ResupplyOfferPdu();
+//                        break;
+//
+//                    case RESUPPLY_RECEIVED:
+//                        aPdu = new ResupplyReceivedPdu();
+//                        break;
+//
+//                    case RESUPPLY_CANCEL:
+//                        aPdu = new ResupplyCancelPdu();
+//                        break;
+//
+//                    case REPAIR_COMPLETE:
+//                        aPdu = new RepairCompletePdu();
+//                        break;
+//
+//                    case REPAIR_RESPONSE:
+//                        aPdu = new RepairResponsePdu();
+//                        break;
+//
+//                    case CREATE_ENTITY:
+//                        aPdu = new CreateEntityPdu();
+//                        break;
+//
+//                    case REMOVE_ENTITY:
+//                        aPdu = new RemoveEntityPdu();
+//                        break;
+//
+//                    case START_RESUME:
+//                        aPdu = new StartResumePdu();
+//                        break;
+//
+//                    case STOP_FREEZE:
+//                        aPdu = new StopFreezePdu();
+//                        break;
+//
+//                    case ACKNOWLEDGE:
+//                        aPdu = new AcknowledgePdu();
+//                        break;
+//
+//                    case ACTION_REQUEST:
+//                        aPdu = new ActionRequestPdu();
+//						ActionRequestPdu action = (ActionRequestPdu) aPdu;
+//						EntityID OBSEntityID = new EntityID();  // need to figure out what this is....and then just put into if statement below
+//						OBSEntityID.setEntity(2);
+//						OBSEntityID.setApplication(1);
+//						OBSEntityID.setSite(1);
+//						action.setOriginatingEntityID(OBSEntityID);
+//                        break;
+
+                    default:
+                        System.out.print("PDU of type " + pdu + " not supported, created or sent ");
+                        System.out.println();
+                }
+                if (aPdu != null)
+				{
+                    generatedPdus.add(aPdu);
+					System.out.println("APDU container count "+generatedPdus.size());
+                }
+            }
+
+            // Sort the created PDUs by class name
+            Collections.sort(generatedPdus, new ClassNameComparator());
+
+            // Send the PDUs we created
+            InetAddress localMulticastAddress = InetAddress.getByName(DEFAULT_MULTICAST_ADDRESS);
+            MulticastSocket socket = new MulticastSocket(DEFAULT_MULTICAST_PORT);
+            socket.joinGroup(localMulticastAddress);
+
+            for (int idx = 0; idx < generatedPdus.size(); idx++)
+			{
+                ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                DataOutputStream dos = new DataOutputStream(baos);
+                byte[] buffer;
+
+                Pdu aPdu = generatedPdus.get(idx);
+                aPdu.marshal(dos);
+
+                buffer = baos.toByteArray();
+                DatagramPacket packet = new DatagramPacket(buffer, buffer.length, localMulticastAddress, DEFAULT_MULTICAST_PORT);
+                socket.send(packet);
+                System.out.println("Sent PDU of type " + aPdu.getClass().getName());
+            }
+            // write the PDUs out to an XML file.
+            //PduContainer container = new PduContainer();
+            //container.setPdus(generatedPdus);
+            //container.marshallToXml("examplePdus.xml");
+        } catch (IOException e)
+		{
+            System.out.println(e);
+        }
+    }
+
+    public static void main(String args[])
+	{
+        if (args.length == 2) {
+            FriscoFurrPduSender sender = new FriscoFurrPduSender(Integer.parseInt(args[0]), args[1]);
+            sender.run();
+        } else {
+            System.out.println("Usage:   PduSender <port> <multicast group>");
+            System.out.println("Default: PduSender  " + DEFAULT_MULTICAST_PORT + "   " + DEFAULT_MULTICAST_ADDRESS);
+            FriscoFurrPduSender sender = new  FriscoFurrPduSender(DEFAULT_MULTICAST_PORT, DEFAULT_MULTICAST_ADDRESS);
+            sender.run();
+        }
+    }
+}
diff --git a/deliverables/src/MV3500Cohort2018JulySeptember/FinalProjects/FriscoFurrProject/originals/OBSSendRecieve1.java b/deliverables/src/MV3500Cohort2018JulySeptember/FinalProjects/FriscoFurrProject/originals/OBSSendRecieve1.java
new file mode 100644
index 0000000000000000000000000000000000000000..30b53dad2f5639aaec21897941680a7f85c28fef
--- /dev/null
+++ b/deliverables/src/MV3500Cohort2018JulySeptember/FinalProjects/FriscoFurrProject/originals/OBSSendRecieve1.java
@@ -0,0 +1,310 @@
+package MV3500Cohort2018JulySeptember.FinalProject.FriscoFurrProject;
+
+import java.net.*;
+import java.io.*;
+import java.util.*;
+import edu.nps.moves.dis.*;
+import java.io.IOException;
+import edu.nps.moves.disutil.PduFactory;
+import edu.nps.moves.disutil.DisTime;
+
+public class OBSSendRecieve1 {
+
+	/**
+	 * 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 = 3000;
+
+	private int port;
+	InetAddress multicastAddress;
+
+	public static final int MULTICAST_PORT = 3000;
+	public static final String MULTICAST_GROUP = "239.1.2.3";
+	public static final boolean USE_FAST_ESPDU = false;
+	public long[] sentBuffer = new long[100];
+	public static List sentBufferList;
+	DisTime disTime = DisTime.getInstance();
+	int transmission =1;
+
+	public OBSSendRecieve1(int port, String multicast) {
+		this.sentBufferList = new ArrayList<>();
+		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(Pdu... pdupass) throws UnknownHostException, IOException {
+
+		List<Pdu> generatedPdus = new ArrayList<>();
+		Pdu aPdu = null;
+		if(transmission ==1){
+			System.out.println("\nInitalizing OP coms...");
+			transmission++;
+		}
+		if(transmission>1){
+		System.out.println("\nObserver Sending traffic...");
+		}
+		// Send the PDUs we created
+		InetAddress localMulticastAddress = InetAddress.getByName(DEFAULT_MULTICAST_ADDRESS);
+		MulticastSocket socket = new MulticastSocket(DEFAULT_MULTICAST_PORT);
+		socket.joinGroup(localMulticastAddress);
+
+		for (Pdu i : pdupass) {
+			Pdu pdu = i;
+			if (sentBufferList.contains(pdu.getTimestamp())) {
+				break;
+			}
+
+			short currentPduType = pdu.getPduType();
+			System.out.println("in observer sender, processing PDU type: " + currentPduType);
+//					String currentPduTypeName = pdu.getClass().getName();
+//					short currentProtocolFamilyID = pdu.getProtocolFamily();
+//					String currentPduFamilyName = pdu.getClass().getSuperclass().getSimpleName();
+
+			// Loop through all the enumerated PDU types, create a PDU for each type,
+			// and add that PDU to a list.
+			//System.out.println(pdu);
+			//Change the switch statement to the currentPduType from the recieve portion, then when a packet we want comes in, send the CASE file. 
+			switch (currentPduType) // using enumeration values from edu.nps.moves.disenum.*
+			{
+
+				case 1: //ENTITY_STATE:
+					aPdu = pdu;
+					break;
+
+//					case COMMENT:
+//						aPdu = new CommentPdu();
+//						break;
+//
+//				case 2: //FIRE
+//					aPdu = pdu;
+//					break;
+//
+//					case DETONATION:
+//						aPdu = new DetonationPdu();
+//						break;
+//
+//				case 15: //AcknowledgePdu
+//					aPdu = pdu;
+//					break;
+////
+				case 16: //ACTION_REQUEST:
+					aPdu = new ActionRequestPdu();
+					break;
+
+				case 22:  //CommentPdu
+					aPdu = pdu;
+					break;
+
+//				case 14:
+//					aPdu = pdu;
+//					break;
+				default:
+					//add some shit that makes sense here. 
+					System.out.print("PDU of type " + pdu + " not supported by Observer, created or sent ");
+					System.out.println();
+			}
+			if (aPdu != null) {
+				generatedPdus.add(aPdu);
+				System.out.println("APDU container count " + generatedPdus.size());
+			}
+
+		}
+		for (int idx = 0; idx < generatedPdus.size(); idx++) {
+			ByteArrayOutputStream baos = new ByteArrayOutputStream();
+			DataOutputStream dos = new DataOutputStream(baos);
+			byte[] buffer;
+
+			aPdu = generatedPdus.get(idx);
+			aPdu.marshal(dos);
+
+			buffer = baos.toByteArray();
+			DatagramPacket packet = new DatagramPacket(buffer, buffer.length, localMulticastAddress, DEFAULT_MULTICAST_PORT);
+			socket.send(packet);
+			//sentBuffer[sentBuffer.length] = aPdu.getTimestamp();
+			sentBufferList.add(aPdu.getTimestamp());
+			System.out.println("Observer Sent PDU of type " + aPdu.getClass().getName()+"/n");
+		}
+	}
+
+	public static void main(String[] args) throws IOException {
+		DisTime disTime = DisTime.getInstance();
+		//turns on the sender code - might need to move around down into the recieve with the if statements...
+		//
+		//    ORIGINAL SENDING CODE MAIN CLASS:
+		//
+		//
+//        if (args.length == 2) {
+//            FDCSendRecieve sender = new FDCSendRecieve(Integer.parseInt(args[0]), args[1]);
+//          //  sender.run();  //needs to be sender.run(pdu) 
+//        } else {
+//            System.out.println("Usage:   PduSender <port> <multicast group>");
+//            System.out.println("Default: PduSender  " + DEFAULT_MULTICAST_PORT + "   " + DEFAULT_MULTICAST_ADDRESS);
+//            FDCSendRecieve sender = new  FDCSendRecieve(DEFAULT_MULTICAST_PORT, DEFAULT_MULTICAST_ADDRESS);
+		//    sender.run();
+//        }
+
+		//
+		// Inital Hello world from entity:
+		//
+		OBSSendRecieve1 sender = new OBSSendRecieve1(DEFAULT_MULTICAST_PORT, DEFAULT_MULTICAST_ADDRESS); //initalize the sender
+
+		EntityStatePdu OBSespdu = new EntityStatePdu();
+		Marking marking = new Marking();
+		marking.setCharactersString("Observer");
+		OBSespdu.setMarking(marking);
+		OBSespdu.setExerciseID((short) 1);
+		EntityID OBSID = OBSespdu.getEntityID();
+		OBSID.setSite(1);  // 0 is apparently not a valid site number, per the spec
+		OBSID.setApplication(1);
+		OBSID.setEntity(2);  //change for each person I think???  - JMF
+		EntityType entityType = OBSespdu.getEntityType();
+		//
+		//Need to update the info below to match the unit type IAW SISO-REF-010-2015 V.21
+		//  https://www.sisostds.org/DesktopModules/Bring2mind/DMX/Download.aspx?Command=Core_Download&EntryId=42916&PortalId=0&TabId=105 
+		//
+		entityType.setEntityKind((short) 1);      // Platform (vs lifeform, munition, sensor, etc.)  TGT=1, OBS = 1
+		entityType.setCountry(225);              // USA TGT = 222 (Russia), OBS = 225
+		entityType.setDomain((short) 1);          // Land (vs air, surface, subsurface, space) both TGT and OBS are 1
+		entityType.setCategory((short) 40);        // FDC  TGT = 1, Tank  OBS=40 OP
+//		entityType.setSubcategory((short) 12);     // M1068 TGT = 2, T72 tank  NONE FOR OP
+//		entityType.setSpec((short) 1);            // M1068 w/ SICUP Tent  NONE FOR TGT OR OP
+		Vector3Double location = new Vector3Double();
+		location.setX(75.0);  //TGT = 150   OBS = 75
+		location.setY(75.0);  //TGT = 150   OBS = 75
+		location.setZ(50.0); //TGT = 20    OBS = 50
+		OBSespdu.setEntityLocation(location);
+		int timestamp = disTime.getDisAbsoluteTimestamp();
+		OBSespdu.setTimestamp(timestamp);
+		//FDCespdu.setTimestamp(System.currentTimeMillis());
+		sender.run(OBSespdu);  //sends inital here I am and who I am
+
+		//other player to look out for:
+		EntityID FDCEntityID = new EntityID();
+		FDCEntityID.setEntity(1);
+		FDCEntityID.setApplication(1);
+		FDCEntityID.setSite(1);
+
+		EntityID TGTEntityID = new EntityID();
+		TGTEntityID.setEntity(3);
+		TGTEntityID.setApplication(1);
+		TGTEntityID.setSite(1);
+
+		/*  BELOW IS THE RECIEVE CODE  //
+		//                             //
+		//                             //
+		 */                             //
+		PduFactory factory;
+		MulticastSocket socket = null;
+		InetAddress address = null;
+		DatagramPacket packet;
+		short currentPduType;  //will use the curentPduType as the check for sending other packets.
+		
+		try {
+			// TODO: Change the line below to make sense for each class
+			System.out.println("Observer is in the OP and looking for targets...\n\n");
+			socket = new MulticastSocket(MULTICAST_PORT);
+			address = InetAddress.getByName(MULTICAST_GROUP);
+			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);
+				//
+				//TODO: NEED IF STATEMENT IF THE SENDER IS THIS CLASS TO DELETE.
+				//
+
+				String marking2 = new String();
+				Pdu pdu = factory.createPdu(packet.getData());
+				currentPduType = pdu.getPduType();
+				if (currentPduType == 14) //stop/freeze PDU
+				{
+					System.out.println("recieved Stop/Freeze packet...");
+					return;
+				}
+//					pdu.setExerciseID((short)5);
+				if (pdu != null) {
+					if (sentBufferList.contains(pdu.getTimestamp())) {
+						pdu = null;
+					}
+					if (pdu != null) {
+
+						String currentPduTypeName = pdu.getClass().getName();
+						if (currentPduType == 1) {
+							EntityStatePdu pdu2 = (EntityStatePdu) pdu;
+							marking2 = pdu2.getMarking().getCharactersString();
+						}
+//Keep adding any if statements as needed for the class you are building. 
+						StringBuilder message = new StringBuilder();
+						message.append("received DIS PDU: ");
+						message.append("pduType ");
+						if (currentPduType < 10) {
+							message.append(" ");
+						}
+						message.append(currentPduType).append(" ").append(currentPduTypeName);
+						message.append(" ");
+						message.append(marking2);
+						System.out.println(message.toString());
+						//Reference for PDU Types: 
+						// http://faculty.nps.edu/brutzman/vrtp/mil/navy/nps/disEnumerations/JdbeHtmlFiles/pdu/8.htm 
+						//
+
+						if (currentPduType == 1) //EntityState
+						{
+							EntityStatePdu entityPDU = (EntityStatePdu) pdu;
+							EntityType PduEntityType = entityPDU.getEntityType();
+							if (PduEntityType.getCountry() == 222) {
+								ActionRequestPdu action = new ActionRequestPdu();
+								action.setExerciseID((short) 1);
+								action.setRequestID((long) 2);
+								action.setOriginatingEntityID(OBSID);
+								action.setReceivingEntityID(FDCEntityID);
+								timestamp = disTime.getDisAbsoluteTimestamp();
+								action.setTimestamp(timestamp);
+								System.out.println("\n Got a Russian SOB!  Preparing CFF to send.");
+								sender.run(action);
+							}
+						}
+
+						if (currentPduType == 3) //Detination
+						{
+							CommentPdu comment = new CommentPdu();
+							comment.setExerciseID((short) 1);
+							comment.setOriginatingEntityID(TGTEntityID);
+							timestamp = disTime.getDisAbsoluteTimestamp();
+							comment.setTimestamp(timestamp);
+							sender.run(comment);
+						}
+
+					} else {
+						System.out.println("received packet but pdu is null and originated from Observer. Still searching for other Targets...");
+					}
+				}
+			}
+		} catch (IOException e) {
+			System.out.println("Problem with Observer.PduReceiver, see exception trace:");
+			System.out.println(e);
+		} finally {
+			System.out.println("Observer.PduReceiver complete. - OUT!");
+		}
+
+	}
+
+}
diff --git a/deliverables/src/MV3500Cohort2018JulySeptember/FinalProjects/FriscoFurrProject/originals/TGTSendRecieve.java b/deliverables/src/MV3500Cohort2018JulySeptember/FinalProjects/FriscoFurrProject/originals/TGTSendRecieve.java
new file mode 100644
index 0000000000000000000000000000000000000000..7ba723cebaa7274f0a75b20eb4195354503a7294
--- /dev/null
+++ b/deliverables/src/MV3500Cohort2018JulySeptember/FinalProjects/FriscoFurrProject/originals/TGTSendRecieve.java
@@ -0,0 +1,250 @@
+package MV3500Cohort2018JulySeptember.FinalProject.FriscoFurrProject;
+
+import java.net.*;
+import java.io.*;
+import java.util.*;
+import edu.nps.moves.dis.*;
+import java.io.IOException;
+import edu.nps.moves.disutil.PduFactory;
+import edu.nps.moves.disutil.DisTime;
+
+public class TGTSendRecieve {
+
+	/**
+	 * 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 = 3000;
+
+	private int port;
+	InetAddress multicastAddress;
+
+	public static final int MULTICAST_PORT = 3000;
+	public static final String MULTICAST_GROUP = "239.1.2.3";
+	public static final boolean USE_FAST_ESPDU = false;
+	public long[] sentBuffer = new long[100];
+	public static List sentBufferList;
+	DisTime disTime = DisTime.getInstance();
+	int transmission = 1;
+
+	public TGTSendRecieve(int port, String multicast) {
+		this.sentBufferList = new ArrayList<>();
+		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(Pdu... pdupass) throws UnknownHostException, IOException {
+
+		List<Pdu> generatedPdus = new ArrayList<>();
+		Pdu aPdu = null;
+		if (transmission == 1) {
+			System.out.println("\nTarget is rolling out...");
+			transmission++;
+		}
+		if (transmission > 1) {
+			System.out.println("\nDeath from above everywhere! (sending function started)...");
+		}
+		// Send the PDUs we created
+		InetAddress localMulticastAddress = InetAddress.getByName(DEFAULT_MULTICAST_ADDRESS);
+		MulticastSocket socket = new MulticastSocket(DEFAULT_MULTICAST_PORT);
+		socket.joinGroup(localMulticastAddress);
+
+		for (Pdu i : pdupass) {
+			Pdu pdu = i;
+			if (sentBufferList.contains(pdu.getTimestamp())) {
+				break;
+			}
+
+			short currentPduType = pdu.getPduType();
+			System.out.println("in Target sender, processing PDU type: " + currentPduType);
+//					
+			switch (currentPduType) // using enumeration values from edu.nps.moves.disenum.*
+			{
+
+				case 1: //ENTITY_STATE:
+					aPdu = pdu;
+					break;
+
+				case 3: //detination PDU
+					aPdu = pdu;
+					break;
+
+				default:
+					//add some shit that makes sense here. 
+					System.out.print("PDU of type " + pdu + " not supported by Observer, created or sent ");
+					System.out.println();
+			}
+			if (aPdu != null) {
+				generatedPdus.add(aPdu);
+				System.out.println("APDU container count " + generatedPdus.size());
+			}
+
+		}
+		for (int idx = 0; idx < generatedPdus.size(); idx++) {
+			ByteArrayOutputStream baos = new ByteArrayOutputStream();
+			DataOutputStream dos = new DataOutputStream(baos);
+			byte[] buffer;
+
+			aPdu = generatedPdus.get(idx);
+			aPdu.marshal(dos);
+
+			buffer = baos.toByteArray();
+			DatagramPacket packet = new DatagramPacket(buffer, buffer.length, localMulticastAddress, DEFAULT_MULTICAST_PORT);
+			socket.send(packet);
+			//sentBuffer[sentBuffer.length] = aPdu.getTimestamp();
+			sentBufferList.add(aPdu.getTimestamp());
+			System.out.println("Observer Sent PDU of type " + aPdu.getClass().getName() + "/n");
+		}
+	}
+
+	public static void main(String[] args) throws IOException {
+		DisTime disTime = DisTime.getInstance();
+		//turns on the sender code - might need to move around down into the recieve with the if statements...
+
+		//
+		// Inital Hello world from entity:
+		//
+		TGTSendRecieve sender = new TGTSendRecieve(DEFAULT_MULTICAST_PORT, DEFAULT_MULTICAST_ADDRESS); //initalize the sender
+
+		EntityStatePdu TGTespdu = new EntityStatePdu();
+		Marking marking = new Marking();
+		marking.setCharactersString("Target");
+		TGTespdu.setMarking(marking);
+		TGTespdu.setExerciseID((short) 1);
+		EntityID OBSID = TGTespdu.getEntityID();
+		OBSID.setSite(1);  // 0 is apparently not a valid site number, per the spec
+		OBSID.setApplication(1);
+		OBSID.setEntity(3);  //change for each person I think???  - JMF
+		EntityType entityType = TGTespdu.getEntityType();
+		//
+		//Need to update the info below to match the unit type IAW SISO-REF-010-2015 V.21
+		//  https://www.sisostds.org/DesktopModules/Bring2mind/DMX/Download.aspx?Command=Core_Download&EntryId=42916&PortalId=0&TabId=105 
+		//
+		entityType.setEntityKind((short) 1);      // Platform (vs lifeform, munition, sensor, etc.)  TGT=1, OBS = 1
+		entityType.setCountry(222);              // USA TGT = 222 (Russia), OBS = 225
+		entityType.setDomain((short) 1);          // Land (vs air, surface, subsurface, space) both TGT and OBS are 1
+		entityType.setCategory((short) 1);        // FDC  TGT = 1, Tank  OBS=40 OP
+		entityType.setSubcategory((short) 2);     // M1068 TGT = 2, T72 tank  NONE FOR OP
+
+		Vector3Double location = new Vector3Double();
+		location.setX(150.0);  //TGT = 150   OBS = 75
+		location.setY(150.0);  //TGT = 150   OBS = 75
+		location.setZ(20.0); //TGT = 20    OBS = 50
+		TGTespdu.setEntityLocation(location);
+		int timestamp = disTime.getDisAbsoluteTimestamp();
+		TGTespdu.setTimestamp(timestamp);
+		sender.run(TGTespdu);  //sends inital here I am and who I am
+
+		//other player to look out for:
+		EntityID FDCEntityID = new EntityID();
+		FDCEntityID.setEntity(1);
+		FDCEntityID.setApplication(1);
+		FDCEntityID.setSite(1);
+
+		EntityID OBSEntityID = new EntityID();
+		OBSEntityID.setEntity(2);
+		OBSEntityID.setApplication(1);
+		OBSEntityID.setSite(1);
+
+		/*  BELOW IS THE RECIEVE CODE  //
+		//                             //
+		//                             //
+		 */                             //
+		PduFactory factory;
+		MulticastSocket socket = null;
+		InetAddress address = null;
+		DatagramPacket packet;
+		short currentPduType;  //will use the curentPduType as the check for sending other packets.
+
+		try {
+			// TODO: Change the line below to make sense for each class
+			System.out.println("Russian T72 out on the prowl...\n\n");
+			socket = new MulticastSocket(MULTICAST_PORT);
+			address = InetAddress.getByName(MULTICAST_GROUP);
+			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);
+				//
+				//TODO: NEED IF STATEMENT IF THE SENDER IS THIS CLASS TO DELETE.
+				//
+
+				String marking2 = new String();
+				Pdu pdu = factory.createPdu(packet.getData());
+				currentPduType = pdu.getPduType();
+				if (currentPduType == 14) //stop/freeze PDU
+				{
+					System.out.println("recieved Stop/Freeze packet...");
+					return;
+				}
+//					pdu.setExerciseID((short)5);
+				if (pdu != null) {
+					if (sentBufferList.contains(pdu.getTimestamp())) {
+						pdu = null;
+					}
+					if (pdu != null) {
+
+						String currentPduTypeName = pdu.getClass().getName();
+						if (currentPduType == 1) {
+							EntityStatePdu pdu2 = (EntityStatePdu) pdu;
+							marking2 = pdu2.getMarking().getCharactersString();
+						}
+//Keep adding any if statements as needed for the class you are building. 
+						StringBuilder message = new StringBuilder();
+						message.append("received DIS PDU: ");
+						message.append("pduType ");
+						if (currentPduType < 10) {
+							message.append(" ");
+						}
+						message.append(currentPduType).append(" ").append(currentPduTypeName);
+						message.append(" ");
+						message.append(marking2);
+						System.out.println(message.toString());
+						//Reference for PDU Types: 
+						// http://faculty.nps.edu/brutzman/vrtp/mil/navy/nps/disEnumerations/JdbeHtmlFiles/pdu/8.htm 
+						//
+
+
+						if (currentPduType == 2) //FirePDU
+						{
+							DetonationPdu det = new DetonationPdu();
+							det.setExerciseID((short) 1);
+							det.setDetonationResult((short)1);
+							timestamp = disTime.getDisAbsoluteTimestamp();
+							det.setTimestamp(timestamp);
+							sender.run(det);
+						}
+
+					} else {
+						System.out.println("received packet but pdu is null and originated from Target. Still doing sketchy Russian things...");
+					}
+				}
+			}
+		} catch (IOException e) {
+			System.out.println("Problem with Target.PduReceiver, see exception trace:");
+			System.out.println(e);
+		} finally {
+			System.out.println("Target.PduReceiver complete. - T-72 DESTROYED!");
+		}
+
+	}
+
+}