void runBinGobbler() {
		FileOutputStream redirectWriter = null;
		running = true;
		try {
			// Create buffer
			byte buffer[] = new byte[BUFFER_SIZE];
			int num = 0;

			// Create redirect file (if any)
			if (redirectTo != null) redirectWriter = new FileOutputStream(redirectTo);

			// Read input
			while ((num = is.read(buffer)) >= 0) {
				// Redirect
				if (redirectWriter != null) redirectWriter.write(buffer, 0, num);

				// Report progress
				if (progress != null) progress.progress();
			}

		} catch (IOException ioe) {
			ioe.printStackTrace();
		} finally {
			close();

			// Close redirect
			try {
				if (redirectWriter != null) redirectWriter.close();
			} catch (IOException ioe) {
				running = false;
				throw new RuntimeException(ioe);
			}

			running = false;
		}
	}