* @param outputLocation - location to extract to
     */
    public static void extractZipTo (String zipLocation, String outputLocation) {
        ZipInputStream zipinputstream = null;
        try {
            byte[] buf = new byte[1024];
            zipinputstream = new ZipInputStream(new FileInputStream(zipLocation));
            ZipEntry zipentry = zipinputstream.getNextEntry();
            while (zipentry != null) {
                String entryName = zipentry.getName();
                int n;
                if (!zipentry.isDirectory() && !entryName.equalsIgnoreCase("minecraft") && !entryName.equalsIgnoreCase(".minecraft") && !entryName.equalsIgnoreCase("instMods")) {
                    new File(outputLocation + File.separator + entryName).getParentFile().mkdirs();
                    FileOutputStream fileoutputstream = new FileOutputStream(outputLocation + File.separator + entryName);
                    while ((n = zipinputstream.read(buf, 0, 1024)) > -1) {
                        fileoutputstream.write(buf, 0, n);
                    }
                    fileoutputstream.close();
                }
                zipinputstream.closeEntry();
                zipentry = zipinputstream.getNextEntry();
            }
        } catch (Exception e) {
            Logger.logError("Error while extracting zip", e);
            backupExtract(zipLocation, outputLocation);
        } finally {
            try {
                zipinputstream.close();
            } catch (IOException e) {
            }
        }
    }