private void resetElements() {

		// remove ParameterChangeListeners on editable elements to prevent memory leaks
		if (nt != null)
			nt.removeParameterChangeListener(this);
		if (pl != null)
			pl.removeParameterChangeListener(this);
		if (ws != null)
			ws.removeParameterChangeListener(this);
		if (ck != null)
			ck.removeParameterChangeListener(this);
		if (mo != null)
			mo.removeParameterChangeListener(this);
		if (affinity != null)
			affinity.destroy();

		nt = new Element(ID_NT, 20.0 / 120.0, 7.0, 0.1);
		pl = new Element(ID_PL, 40.0 / 120.0, 14.0, 0.1);
		ws = new Element(ID_WS, 0.5, 21.0, 0.1);
		ck = new Element(ID_CK, 80.0 / 120.0, 28.0, 0.1);
		mo = new Element(ID_MO, 5.0, 12.0, 0.1);
		sp = new Element(ID_SP, 5.0, 16.0, 0.01);
		for (byte i = ID_ALA; i <= ID_VAL; i++) {
			if (aminoAcidElement[i - ID_ALA] == null) {
				Aminoacid aa = AminoAcidAdapter.getAminoAcid(i);
				aminoAcidElement[i - ID_ALA] = new Element(i, ((Float) aa.getProperty("mass")).floatValue(), ((Double) aa.getProperty("sigma")).doubleValue(), 0.1);
			}
		}
		for (int i = ID_A; i <= ID_U; i++) {
			nucleotideElement[i - ID_A] = new Element(i, 5.0, 12.0, 0.01);
		}

		nt.addParameterChangeListener(this);
		pl.addParameterChangeListener(this);
		ws.addParameterChangeListener(this);
		ck.addParameterChangeListener(this);
		mo.addParameterChangeListener(this);

		affinity = new Affinity(new Element[] { nt, pl, ws, ck, mo });
		affinity.addParameterChangeListener(this);
		setCutOffMatrix(2.0f);
		setListMatrix(2.5f);

	}