private LinkedList<SmallPacket> processData(Byte destination, Byte hops,
			byte[] data, boolean ack, boolean routing, boolean keepalive) {

		// data = eh.getPacket(data, destination);

		LinkedList<SmallPacket> result = new LinkedList<SmallPacket>();
		lock.lock();
		SmallPacket dp;

		boolean moar = false;

		int maxChunkSize = 1024 - SmallPacket.HEADER_LENGTH;
		byte[] chunk = new byte[maxChunkSize];

		for (int i = 0; i <= Math.ceil(data.length / maxChunkSize); i++) {
			if (data.length >= (i + 1) * maxChunkSize) {
				moar = true;
				System.arraycopy(data, i * maxChunkSize, chunk, 0, maxChunkSize);
			} else {
				moar = false;
				chunk = new byte[data.length - i * maxChunkSize];
				System.arraycopy(data, i * maxChunkSize, chunk, 0, data.length
						- i * maxChunkSize);
			}

			try {
				Byte sequencenr = 0;
				if (!routing)
					sequencenr = sequencer.getTo(destination);

				if (!(sequencenr == null)) {
					dp = new SmallPacket(IntegrationProject.DEVICE,
							destination, hops, sequencenr, chunk, ack, routing,
							keepalive, moar);
					result.add(dp);
				} else {
					System.out
							.println("Dropped packet because getTo return NULL GODDAMMIT!");
				}
			} catch (DatagramDataSizeException e) {
				e.printStackTrace();
			} catch (NullPointerException e) {
				System.out.println("Fuck this");
				e.printStackTrace();
			}
		}

		lock.unlock();
		return result;

	}