public static Config readDefaultArchive() throws ZipException, IOException, JSONException {
		loadNetworkShapes();
		Config c = new Config(new JSONObject(new JSONTokener(new InputStreamReader(NetworkIO.class.getResourceAsStream("data/source.json"), "UTF-8"))));
		HashSet<String> taken = new HashSet<String>();
		for (Config.Identifier identifier : c.identifiers) {
			if (identifier instanceof Config.NNIdentifier) {
				String name = getName(identifier, taken);
				Config.NNIdentifier id = (Config.NNIdentifier) identifier;
				for (int i = 0; i < id.numberOfNetworks; i++) {
					// qqDPS
					//FastLoadingNetwork fln = (id.classes.size() == 2 ? discriminatorTemplate : identifierTemplate).cloneWithSameShape();
					FastLoadingNetwork fln = identifierTemplate.cloneWithSameShape();
					fln.loadWeights(NetworkIO.class.getResourceAsStream("data/" + name + "_weights_" + i));
					id.fastNetworks.add(fln);
					readTargets(id, NetworkIO.class.getResourceAsStream("data/" + name + "_targets_" + i));
				}
				readRelativeSizeInfo(id, NetworkIO.class.getResourceAsStream("data/" + name + "_sizes.json"));
				readAspectRatioInfo(id, NetworkIO.class.getResourceAsStream("data/" + name + "_aspectRatios.json"));
			}
			if (identifier instanceof Config.NumberOfPartsIdentifier) {
				String name = getName(identifier, taken);
				Config.NumberOfPartsIdentifier id = (Config.NumberOfPartsIdentifier) identifier;
				readNumberOfPartsInfo(id, NetworkIO.class.getResourceAsStream("data/" + name + "_numberOfParts.json"));
			}
			if (identifier instanceof Config.TreeIdentifier) {
				String name = getName(identifier, taken);
				Config.TreeIdentifier id = (Config.TreeIdentifier) identifier;
				id.tree = TreePredict.readNode(new ObjectInputStream(NetworkIO.class.getResourceAsStream("data/" + name + "_tree")));
			}
			if (identifier instanceof Config.NearestNeighbourIdentifier) {
				String name = getName(identifier, taken);
				Config.NearestNeighbourIdentifier id = (Config.NearestNeighbourIdentifier) identifier;
				id.comparisons = NearestNeighbour.read(new ObjectInputStream(NetworkIO.class.getResourceAsStream("data/" + name + "_comparisons")));
			}
		}
		
		return c;
	}