private final boolean fixFile(final File file, final String fileUrl, final FileType type, final FixMode mode) throws IOException {
		LogUtils.log(Level.INFO, LauncherConstants.GAME_TASKS_PREFIX + mode.name + " " + type.name + " : " + file.getPath() + ".");
		if(Skyolauncher.isOnline) {
			LogUtils.log(Level.INFO, LauncherConstants.GAME_TASKS_PREFIX + (mode == FixMode.INVALID ? "Re-" : "") + "Downloading it.");
			if(type != FileType.FILE) {
				file.getParentFile().mkdirs();
			}
			file.createNewFile();
			initializeGuiComponents(file.getName());
			if(!ConnectionUtils.download(fileUrl, file, downloadProgress)) {
				LogUtils.log(Level.SEVERE, LauncherConstants.GAME_TASKS_PREFIX + "Failed !");
				file.delete();
				notifyListeners(false);
				resetGuiComponents();
				return false;
			}
			resetGuiComponents();
			return true;
		}
		else {
			if(mode == FixMode.INVALID) {
				file.delete();
			}
			notifyListeners(false);
			return false;
		}
	}