protected boolean extractNatives() {
		setStatus("Extracting natives...");
		File nativesJar = new File(binDir, getFilename(jarURLs[jarURLs.length - 1]));
		File nativesDir = new File(binDir, "natives");
		if(!nativesDir.isDirectory()) {
			nativesDir.mkdirs();
		}
		FileInputStream input = null;
		ZipInputStream zipIn = null;
		try	{
			input = new FileInputStream(nativesJar);
			zipIn = new ZipInputStream(input); 
			ZipEntry currentEntry = zipIn.getNextEntry();
			while(currentEntry != null) {
				if(currentEntry.getName().contains("META-INF")) {
					currentEntry = zipIn.getNextEntry();
					continue;
				}
				setStatus("Extracting " + currentEntry + "...");
				FileOutputStream outStream = new FileOutputStream(new File(nativesDir, currentEntry.getName()));
				int readLen;
				byte[] buffer = new byte[1024];
				while((readLen = zipIn.read(buffer, 0, buffer.length)) > 0) {
					outStream.write(buffer, 0, readLen);
				}
				outStream.close();
				currentEntry = zipIn.getNextEntry();
			}
		} catch (IOException e) {
			Logger.logError(e.getMessage(), e);
			return false;
		} finally {
			try {
				zipIn.close();
				input.close();
			} catch (IOException e) { 
				Logger.logError(e.getMessage(), e);
			}
		}
		nativesJar.delete();
		return true;
	}