private void readAlterations(String path, DataModel dataModel) {
		try {
			DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
			DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
			Document doc = docBuilder.parse(new File(path));

			// normalize text representation
			doc.getDocumentElement().normalize();

			NodeList listOfAlterations = doc.getElementsByTagName("alteration");
			for (int s = 0; s < listOfAlterations.getLength(); s++) {

				Node alterationNode = listOfAlterations.item(s);
				if (alterationNode.getNodeType() == Node.ELEMENT_NODE) {

					Element alterationElement = (Element) alterationNode;

					String className = getTagValue("class", alterationElement);

					Alteration alteration = null;
					String tagValue = getTagValue("tag", alterationElement);
					String name = LanguageTools.translate(getTagValue("name", alterationElement));
					AlterationType type = AlterationType.valueOf(getTagValue("type", alterationElement));
					int maxDuration = Integer.parseInt(getTagValue("maxduration", alterationElement));
					int maxStack = Integer.parseInt(getTagValue("maxstack", alterationElement));
					if (className == null) {
						alteration = new Alteration(name, type, maxDuration, maxStack);
					} else {
						String classPath = "dss.alterations." + className;
						@SuppressWarnings("unchecked")
						Class<Alteration> alterationClass = (Class<Alteration>) Class.forName(classPath);
						//String name,AlterationType type, int maxDuration, int maxStack
						Constructor<Alteration> constructor = alterationClass.getConstructor(String.class, AlterationType.class,int.class,int.class);
						alteration = constructor.newInstance(name, type, maxDuration, maxStack);
					}

					String period = getTagValue("period", alterationElement);

					if (period != null) {
						alteration.setPeriod(Integer.parseInt(period));
					}
					alteration.setTag(tagValue);
					dataModel.getAlterations().add(tagValue, alteration);
				}
			}

		} catch (SAXParseException err) {
			System.out.println("** Parsing error" + ", line " + err.getLineNumber() + ", uri " + err.getSystemId());
			System.out.println(" " + err.getMessage());

		} catch (SAXException e) {
			Exception x = e.getException();
			((x == null) ? e : x).printStackTrace();

		} catch (Throwable t) {
			t.printStackTrace();
		}

	}