public byte[] ReceiveByte() {
		// Prep
		int read = 0;
		byte[] fetched = null;
		int sleepFOR = 25; // a very small fraction of a second
		int sleeptFOR = 0; // sleep counter

		// Wait (block) for data
		try {
			while (receive.available() == 0) {
				try {
					Thread.sleep(sleepFOR);
				} catch (InterruptedException e) {
					mylog.out("WARN", "Failed to sleep while waiting for data over the network.");
				}
				sleeptFOR += sleepFOR;
				if (sleeptFOR >= IdleLimit) {
					mylog.out("WARN", "Conection has timed out from inactvitiy. Limit of [" + IdleLimit + "ms].");
					break;
				}
			}
		} catch (IOException e2) {
			mylog.out("WARN", "Failed to determine if data would/was arriving on the network so we could wait for it.");
		}

		// Data has arrived
		try {
			fetched = new byte[receive.available()];
			try {
				read = receive.read(fetched);
				if (VERBOSE) {
					mylog.out("INFO", "Read [" + read + "] bytes.");
				}
			} catch (IOException e1) {
				mylog.out("ERROR", "Failed to RECEIVE data STRING");
				fetched = null;
			}
		} catch (IOException e) {
			mylog.out("ERROR", "Failed to determine size of inbound data in bytes");
		} finally {
			if (read <= 0) {
				fetched = null;
				mylog.out("WARN", "Failed to read anything from the input stream.");
			}
		}
		return fetched;
	}