public static DCPackage getPackage(byte[] raw) throws InputMismatchException{
		if(raw.length != PACKAGE_SIZE) {
			throw new InputMismatchException("The size of the raw byte input is " + raw.length+" and does not match the expected package size " + PACKAGE_SIZE);
		} else {
			byte number = raw[0];
			if(number < 0 || number > getNumberRange()) {
				throw new InputMismatchException("The round number " + number + " is out of bounds");
			}
			byte[] payload = new byte[PAYLOAD_SIZE];
			int payloadOffset = HEADER_SIZE;
			for(int i = 0; i < PAYLOAD_SIZE; i++) {
				payload[i] = raw[i+payloadOffset];
			}
			return new DCPackage(number, payload);
		}
	}