@Override
	public void updPackageReceived(DatagramPacket recPackage) {
		String msg = new String(recPackage.getData());

		if (!this.lastBrdcstMsg.contains(msg)) {
			this.lastBrdcstMsg.add(msg);
			/*
			 * remeber the last SIZE brdcast msgs if no broadcasts could interfere which each other (infinite loop) looking for peer WHO_HAS and
			 * BROADCAST msg would alternate between these two messages
			 */
			if (this.lastBrdcstMsg.size() >= this.SIZE) {
				this.lastBrdcstMsg.remove(this.lastBrdcstMsg.size());
			}

			String[] splitMsg = msg.split(",", 2);

			MessageObject obj = getMessageObject(splitMsg);
			MessageObject returnObj = this.tcpTraffic.parseIncoming(obj);
			switch (returnObj.getHead()) {

			// looking for either node or ressource
			case I_DO:
				// case looking for node:
				Node n = (Node) returnObj.getData();
				Node asking = (Node) obj.getData();
				System.out.println("I do sending it to " + asking.getPort());
				this.udpMeth.sendUdpPackage(asking.getPort(), returnObj.getHead(), n.getName() + "," + n.getPort() + "," + n.getIp());

				break;

			case REQUEST_RESSOURCE:
			case WHO_HAS:
			case BROADCAST:
				Set<Node> myTable = ((Set<Node>) returnObj.getData());

				System.err.println(this.server.getLocalPort() + " got a broadcast from " + recPackage.getPort() + " fowarding to "
						+ myTable);

				this.udpMeth.broadCast(returnObj.getHead(), splitMsg[1], myTable);

				break;
			case UNKNOW_REQUEST:
				break;
			default:
				break;

			}

		}
	}