protected void parseFeatures() {
		// Empty?
		if (featuresStr.length() <= 0) return;

		String type = null;
		String value = "";
		StringBuilder values = new StringBuilder();
		int lineNum = 0;
		for (String line : featuresStr.toString().split("\n")) {
			lineNum++;

			// Feature start
			if (isNewFeature(line)) {
				String kv[] = line.trim().split(" ", 2);
				if (kv.length > 1) {
					// Previous feature data is available? => Add it
					if (type != null) addFeature(type, values, lineNum);

					// Parse new feature's name
					type = kv[0];
					value = kv[1].trim();
				} else {
					// New type
					type = line.trim();
					value = "";
				}

				// New values
				values = new StringBuilder();
			} else value = line.trim();

			// Append values to feature
			if (value.startsWith("/")) values.append("\n");
			values.append(value);
		}

		// Add last feature
		addFeature(type, values, lineNum);
	}