@Override
	@SuppressWarnings("unchecked")
	public void distributePacket(int id, final byte[] data, IIOHandler sender) {

		APacket p = IMH.getPacketRegistrie().getNewPacketOfID(id);

		log.fine("Distributing Packet\nID:" + id + "\nClass:" + p.getClass());
		log.fine("Incoming Packet with " + data.length + " bytes!" + System.lineSeparator() + "Packet is of class:" + p.getClass());
		try {
			p.readFromData(DataIn.newInstance(data.clone()));
		}
		catch(IOException e) {
			e.printStackTrace();
		}
		log.finer("Packet:" + p);
		main:
		for(IPacketHandler iph : PHList) {
			for(Class c : iph.getAssociatedPackets()) {
				if(c.equals(IMH.getPacketRegistrie().getPacketClassByID(id))) {
					iph.HandlePacket(p.copy(), sender);
					continue main;
				}
			}
		}
	}