public void run() {
		byte[] receiveData = new byte[20000];
		while(true && !this.stop) {
			try {
				DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
				getServer().receive(receivePacket);
				ByteArrayInputStream bis = new ByteArrayInputStream(receivePacket.getData());
				ObjectInput in = new ObjectInputStream(bis);
				Object temp = null;
				try {
					temp = in.readObject();
				} catch (ClassNotFoundException e) {
					System.out.println("Did not find gossiped object.");
					e.printStackTrace();
				} catch (EOFException e) {
					System.out.println("EOF Exception");
					e.printStackTrace();
				}
				
				//needs to be able to take 1 inputs
				//1.  membership list
				MembershipList ml = (MembershipList) temp;				
				//spin up a new thread to merge the two lists
				MergeMembershipListThread mmlt = new MergeMembershipListThread(ml, this.gs);
				//System.out.println(this.gs.getMembershipList().toString());
				mmlt.start();
				bis.close();
				in.close();

			}      	
			catch(SocketException e) {
				//System.out.println("Gossip Socket Closed.\n");
			}       	
			catch(EOFException e) {
				System.out.println("End of File Error\n");
				e.printStackTrace();
			}
			catch(IOException e) {
				System.out.println("I/O issue on the server side");
				e.printStackTrace();
			}        	
		}
	}