From 2d8b3e82bba04ee8fff0d1d05d7bb8cff38f5c2f Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Fri, 2 Feb 2018 16:31:34 +0100
Subject: [PATCH] kinetics equation can contain compartment id

---
 .../CellDesignerElementCollection.java        |   6 +-
 .../alias/CompartmentAliasXmlParser.java      | 317 ++++-----
 .../alias/ComplexAliasXmlParser.java          |   1 +
 .../alias/SpeciesAliasXmlParser.java          | 442 ++++++------
 .../reaction/ReactionFromXml.java             |  26 +-
 .../reaction/ReactionXmlParser.java           |   6 +-
 .../structure/CellDesignerElement.java        |   6 +-
 .../alias/AliasCollectionXmlParserTest.java   | 641 +++++++++---------
 .../alias/CompartmentAliasXmlParserTest.java  | 461 +++++++------
 .../alias/ComplexAliasXmlParserTest.java      | 119 ++--
 .../alias/SpeciesAliasXmlParserTest.java      | 594 ++++++++--------
 .../reaction/ReactionFromXmlTest.java         |  18 +-
 .../reaction/ReactionParserTests.java         |  12 +
 .../reactions/kinetics_with_compartment.xml   | 189 ++++++
 .../mapviewer/model/map/species/Element.java  |   2 +-
 15 files changed, 1558 insertions(+), 1282 deletions(-)
 create mode 100644 converter-CellDesigner/testFiles/reactions/kinetics_with_compartment.xml

diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerElementCollection.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerElementCollection.java
index 1eb8a39ac4..6857681265 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerElementCollection.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerElementCollection.java
@@ -155,7 +155,7 @@ public class CellDesignerElementCollection {
 			}
 		}
 
-		// identifier that distinguish elements in sbml depends only on type,
+		// identifier that distinguish elements in SBML depends only on type,
 		// name, compartment, modifications, homodimer, state, complex where it's
 		// located,
 		// children of the complex
@@ -216,7 +216,7 @@ public class CellDesignerElementCollection {
 	 * @param id
 	 *          id that should be used for identifying element
 	 */
-	private void addElement(CellDesignerElement<?> element, String id) {
+	public void addElement(CellDesignerElement<?> element, String id) {
 		if (elementById.get(id) != null) {
 			throw new InvalidArgumentException(
 					"[" + element.getClass().getSimpleName() + " " + element.getElementId() + "]\t" + "Element with given id alread exists. ID: " + id);
@@ -233,7 +233,7 @@ public class CellDesignerElementCollection {
 	 * @param element
 	 *          element to be added
 	 */
-	public void addModelElement(Species modelElement, CellDesignerElement<?> element) {
+	public void addModelElement(Element modelElement, CellDesignerElement<?> element) {
 		addElement(element, getElementId(modelElement));
 		if (getElementByElementId(element.getElementId()) == null) {
 			addElement(element);
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/CompartmentAliasXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/CompartmentAliasXmlParser.java
index f3a8bf8492..bb923a34ce 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/CompartmentAliasXmlParser.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/CompartmentAliasXmlParser.java
@@ -26,162 +26,165 @@ import lcsb.mapviewer.model.map.model.Model;
  */
 public class CompartmentAliasXmlParser extends AbstractAliasXmlParser<Compartment> {
 
-	/**
-	 * Default class logger.
-	 */
-	@SuppressWarnings("unused")
-	private Logger												logger = Logger.getLogger(CompartmentAliasXmlParser.class.getName());
-
-	/**
-	 * Model for which we are parsing aliases.
-	 */
-	private Model													model	 = null;
-
-	/**
-	 * Collection of {@link CellDesignerElement cell designer elements} parsed
-	 * from xml.
-	 */
-	private CellDesignerElementCollection	elements;
-
-	/**
-	 * Default constructor.
-	 * 
-	 * @param elements
-	 *          collection of {@link CellDesignerElement cell designer elements}
-	 *          parsed from xml
-	 * @param model
-	 *          model for which this parser will be used
-	 */
-	public CompartmentAliasXmlParser(CellDesignerElementCollection elements, Model model) {
-		this.model = model;
-		this.elements = elements;
-	}
-
-	@Override
-	Compartment parseXmlAlias(Node aliasNode) throws InvalidXmlSchemaException {
-
-		String compartmentId = getNodeAttr("compartment", aliasNode);
-		CellDesignerCompartment compartment = elements.getElementByElementId(compartmentId);
-		if (compartment == null) {
-			throw new InvalidXmlSchemaException("Compartment does not exist in a model: " + compartmentId);
-		}
-		String aliasId = getNodeAttr("id", aliasNode);
-		Compartment result = compartment.createModelElement(aliasId);
-
-		NodeList nodes = aliasNode.getChildNodes();
-		for (int i = 0; i < nodes.getLength(); i++) {
-			Node node = nodes.item(i);
-			if (node.getNodeType() == Node.ELEMENT_NODE) {
-				if (node.getNodeName().equalsIgnoreCase("celldesigner:class")) {
-					String type = getNodeValue(node);
-					if (type.equalsIgnoreCase("SQUARE")) {
-						result = new SquareCompartment(result);
-					} else if (type.equalsIgnoreCase("SQUARE_CLOSEUP_NORTH")) {
-						result = new BottomSquareCompartment(result, model);
-					} else if (type.equalsIgnoreCase("SQUARE_CLOSEUP_SOUTH")) {
-						result = new TopSquareCompartment(result, model);
-					} else if (type.equalsIgnoreCase("SQUARE_CLOSEUP_WEST")) {
-						result = new RightSquareCompartment(result, model);
-					} else if (type.equalsIgnoreCase("SQUARE_CLOSEUP_EAST")) {
-						result = new LeftSquareCompartment(result, model);
-					} else if (type.equalsIgnoreCase("OVAL")) {
-						result = new OvalCompartment(result);
-					} else {
-						throw new InvalidXmlSchemaException("Unknown compartment type: " + type);
-					}
-				} else if (node.getNodeName().equalsIgnoreCase("celldesigner:bounds")) {
-					result.setX(getNodeAttr("x", node));
-					result.setY(getNodeAttr("y", node));
-					result.setWidth(getNodeAttr("w", node));
-					result.setHeight(getNodeAttr("h", node));
-				} else if (node.getNodeName().equalsIgnoreCase("celldesigner:doubleLine")) {
-					result.setLineThickness(getNodeAttr("thickness", node));
-					result.setLineOuterWidth(getNodeAttr("outerWidth", node));
-					result.setLineInnerWidth(getNodeAttr("innerWidth", node));
-				} else if (node.getNodeName().equalsIgnoreCase("celldesigner:paint")) {
-					result.setColor(getCommonParser().getColor(node));
-				} else if (node.getNodeName().equalsIgnoreCase("celldesigner:info")) {
-					// not handled
-					continue;
-				} else if (node.getNodeName().equalsIgnoreCase("celldesigner:point")) {
-					if (result instanceof BottomSquareCompartment) {
-						result.setY(getNodeAttr("y", node));
-					} else if (result instanceof LeftSquareCompartment) {
-						result.setX(getNodeAttr("x", node));
-					} else if (result instanceof RightSquareCompartment) {
-						result.setX(getNodeAttr("x", node));
-						result.setWidth(result.getWidth() - result.getX());
-					} else if (result instanceof TopSquareCompartment) {
-						result.setY(getNodeAttr("y", node));
-					} else {
-						throw new InvalidXmlSchemaException("Don't know what to do with celldesigner:point for class: " + result.getClass());
-					}
-				} else if (node.getNodeName().equalsIgnoreCase("celldesigner:namePoint")) {
-					result.setNamePoint(getCommonParser().getPosition(node));
-				} else {
-					throw new InvalidXmlSchemaException("Unknown element of celldesigner:compartmentAlias: " + node.getNodeName());
-				}
-			}
-		}
-		return result;
-	}
-
-	@Override
-	public String toXml(Compartment compartment) {
-		StringBuilder sb = new StringBuilder("");
-
-		sb.append("<celldesigner:compartmentAlias ");
-		sb.append("id=\"" + compartment.getElementId() + "\" ");
-		sb.append("compartment=\"" + elements.getElementId(compartment) + "\">\n");
-
-		boolean bounds = true;
-
-		if (compartment.getClass().getName().equals(SquareCompartment.class.getName())) {
-			sb.append("<celldesigner:class>SQUARE</celldesigner:class>\n");
-		} else if (compartment.getClass().getName().equals(OvalCompartment.class.getName())) {
-			sb.append("<celldesigner:class>OVAL</celldesigner:class>\n");
-		} else if (compartment.getClass().getName().equals(BottomSquareCompartment.class.getName())) {
-			sb.append("<celldesigner:class>SQUARE_CLOSEUP_NORTH</celldesigner:class>\n");
-			bounds = false;
-			sb.append("<celldesigner:point x=\"10\" y=\"" + compartment.getY() + "\"/>");
-		} else if (compartment.getClass().getName().equals(TopSquareCompartment.class.getName())) {
-			sb.append("<celldesigner:class>SQUARE_CLOSEUP_SOUTH</celldesigner:class>\n");
-			bounds = false;
-			sb.append("<celldesigner:point x=\"10\" y=\"" + compartment.getY() + "\"/>");
-		} else if (compartment.getClass().getName().equals(LeftSquareCompartment.class.getName())) {
-			sb.append("<celldesigner:class>SQUARE_CLOSEUP_EAST</celldesigner:class>\n");
-			bounds = false;
-			sb.append("<celldesigner:point x=\"" + compartment.getWidth() + "\" y=\"10\"/>");
-		} else if (compartment.getClass().getName().equals(RightSquareCompartment.class.getName())) {
-			sb.append("<celldesigner:class>SQUARE_CLOSEUP_WEST</celldesigner:class>\n");
-			bounds = false;
-			sb.append("<celldesigner:point x=\"" + compartment.getX() + "\" y=\"10\"/>");
-		} else {
-			throw new NotImplementedException("Unknown compartment class: " + compartment.getClass());
-		}
-		if (bounds) {
-			sb.append("<celldesigner:bounds ");
-			sb.append("x=\"" + compartment.getX() + "\" ");
-			sb.append("y=\"" + compartment.getY() + "\" ");
-			sb.append("w=\"" + compartment.getWidth() + "\" ");
-			sb.append("h=\"" + compartment.getHeight() + "\"/>\n");
-		}
-
-		sb.append("<celldesigner:namePoint ");
-		sb.append("x=\"" + compartment.getNamePoint().getX() + "\" ");
-		sb.append("y=\"" + compartment.getNamePoint().getY() + "\"/>\n");
-
-		sb.append("<celldesigner:doubleLine ");
-		sb.append("thickness=\"" + compartment.getThickness() + "\" ");
-		sb.append("outerWidth=\"" + compartment.getOuterWidth() + "\" ");
-		sb.append("innerWidth=\"" + compartment.getInnerWidth() + "\"/>\n");
-
-		sb.append("<celldesigner:paint ");
-		sb.append("color=\"" + colorToString(compartment.getColor()) + "\" scheme=\"Color\"/>\n");
-
-		sb.append("</celldesigner:compartmentAlias>\n");
-
-		return sb.toString();
-	}
+  /**
+   * Default class logger.
+   */
+  @SuppressWarnings("unused")
+  private Logger logger = Logger.getLogger(CompartmentAliasXmlParser.class.getName());
+
+  /**
+   * Model for which we are parsing aliases.
+   */
+  private Model model = null;
+
+  /**
+   * Collection of {@link CellDesignerElement cell designer elements} parsed from
+   * xml.
+   */
+  private CellDesignerElementCollection elements;
+
+  /**
+   * Default constructor.
+   * 
+   * @param elements
+   *          collection of {@link CellDesignerElement cell designer elements}
+   *          parsed from xml
+   * @param model
+   *          model for which this parser will be used
+   */
+  public CompartmentAliasXmlParser(CellDesignerElementCollection elements, Model model) {
+    this.model = model;
+    this.elements = elements;
+  }
+
+  @Override
+  Compartment parseXmlAlias(Node aliasNode) throws InvalidXmlSchemaException {
+
+    String compartmentId = getNodeAttr("compartment", aliasNode);
+    CellDesignerCompartment compartment = elements.getElementByElementId(compartmentId);
+    if (compartment == null) {
+      throw new InvalidXmlSchemaException("Compartment does not exist in a model: " + compartmentId);
+    }
+    String aliasId = getNodeAttr("id", aliasNode);
+    Compartment result = compartment.createModelElement(aliasId);
+    elements.addElement(compartment, aliasId);
+
+    NodeList nodes = aliasNode.getChildNodes();
+    for (int i = 0; i < nodes.getLength(); i++) {
+      Node node = nodes.item(i);
+      if (node.getNodeType() == Node.ELEMENT_NODE) {
+        if (node.getNodeName().equalsIgnoreCase("celldesigner:class")) {
+          String type = getNodeValue(node);
+          if (type.equalsIgnoreCase("SQUARE")) {
+            result = new SquareCompartment(result);
+          } else if (type.equalsIgnoreCase("SQUARE_CLOSEUP_NORTH")) {
+            result = new BottomSquareCompartment(result, model);
+          } else if (type.equalsIgnoreCase("SQUARE_CLOSEUP_SOUTH")) {
+            result = new TopSquareCompartment(result, model);
+          } else if (type.equalsIgnoreCase("SQUARE_CLOSEUP_WEST")) {
+            result = new RightSquareCompartment(result, model);
+          } else if (type.equalsIgnoreCase("SQUARE_CLOSEUP_EAST")) {
+            result = new LeftSquareCompartment(result, model);
+          } else if (type.equalsIgnoreCase("OVAL")) {
+            result = new OvalCompartment(result);
+          } else {
+            throw new InvalidXmlSchemaException("Unknown compartment type: " + type);
+          }
+        } else if (node.getNodeName().equalsIgnoreCase("celldesigner:bounds")) {
+          result.setX(getNodeAttr("x", node));
+          result.setY(getNodeAttr("y", node));
+          result.setWidth(getNodeAttr("w", node));
+          result.setHeight(getNodeAttr("h", node));
+        } else if (node.getNodeName().equalsIgnoreCase("celldesigner:doubleLine")) {
+          result.setLineThickness(getNodeAttr("thickness", node));
+          result.setLineOuterWidth(getNodeAttr("outerWidth", node));
+          result.setLineInnerWidth(getNodeAttr("innerWidth", node));
+        } else if (node.getNodeName().equalsIgnoreCase("celldesigner:paint")) {
+          result.setColor(getCommonParser().getColor(node));
+        } else if (node.getNodeName().equalsIgnoreCase("celldesigner:info")) {
+          // not handled
+          continue;
+        } else if (node.getNodeName().equalsIgnoreCase("celldesigner:point")) {
+          if (result instanceof BottomSquareCompartment) {
+            result.setY(getNodeAttr("y", node));
+          } else if (result instanceof LeftSquareCompartment) {
+            result.setX(getNodeAttr("x", node));
+          } else if (result instanceof RightSquareCompartment) {
+            result.setX(getNodeAttr("x", node));
+            result.setWidth(result.getWidth() - result.getX());
+          } else if (result instanceof TopSquareCompartment) {
+            result.setY(getNodeAttr("y", node));
+          } else {
+            throw new InvalidXmlSchemaException(
+                "Don't know what to do with celldesigner:point for class: " + result.getClass());
+          }
+        } else if (node.getNodeName().equalsIgnoreCase("celldesigner:namePoint")) {
+          result.setNamePoint(getCommonParser().getPosition(node));
+        } else {
+          throw new InvalidXmlSchemaException(
+              "Unknown element of celldesigner:compartmentAlias: " + node.getNodeName());
+        }
+      }
+    }
+    return result;
+  }
+
+  @Override
+  public String toXml(Compartment compartment) {
+    StringBuilder sb = new StringBuilder("");
+
+    sb.append("<celldesigner:compartmentAlias ");
+    sb.append("id=\"" + compartment.getElementId() + "\" ");
+    sb.append("compartment=\"" + elements.getElementId(compartment) + "\">\n");
+
+    boolean bounds = true;
+
+    if (compartment.getClass().getName().equals(SquareCompartment.class.getName())) {
+      sb.append("<celldesigner:class>SQUARE</celldesigner:class>\n");
+    } else if (compartment.getClass().getName().equals(OvalCompartment.class.getName())) {
+      sb.append("<celldesigner:class>OVAL</celldesigner:class>\n");
+    } else if (compartment.getClass().getName().equals(BottomSquareCompartment.class.getName())) {
+      sb.append("<celldesigner:class>SQUARE_CLOSEUP_NORTH</celldesigner:class>\n");
+      bounds = false;
+      sb.append("<celldesigner:point x=\"10\" y=\"" + compartment.getY() + "\"/>");
+    } else if (compartment.getClass().getName().equals(TopSquareCompartment.class.getName())) {
+      sb.append("<celldesigner:class>SQUARE_CLOSEUP_SOUTH</celldesigner:class>\n");
+      bounds = false;
+      sb.append("<celldesigner:point x=\"10\" y=\"" + compartment.getY() + "\"/>");
+    } else if (compartment.getClass().getName().equals(LeftSquareCompartment.class.getName())) {
+      sb.append("<celldesigner:class>SQUARE_CLOSEUP_EAST</celldesigner:class>\n");
+      bounds = false;
+      sb.append("<celldesigner:point x=\"" + compartment.getWidth() + "\" y=\"10\"/>");
+    } else if (compartment.getClass().getName().equals(RightSquareCompartment.class.getName())) {
+      sb.append("<celldesigner:class>SQUARE_CLOSEUP_WEST</celldesigner:class>\n");
+      bounds = false;
+      sb.append("<celldesigner:point x=\"" + compartment.getX() + "\" y=\"10\"/>");
+    } else {
+      throw new NotImplementedException("Unknown compartment class: " + compartment.getClass());
+    }
+    if (bounds) {
+      sb.append("<celldesigner:bounds ");
+      sb.append("x=\"" + compartment.getX() + "\" ");
+      sb.append("y=\"" + compartment.getY() + "\" ");
+      sb.append("w=\"" + compartment.getWidth() + "\" ");
+      sb.append("h=\"" + compartment.getHeight() + "\"/>\n");
+    }
+
+    sb.append("<celldesigner:namePoint ");
+    sb.append("x=\"" + compartment.getNamePoint().getX() + "\" ");
+    sb.append("y=\"" + compartment.getNamePoint().getY() + "\"/>\n");
+
+    sb.append("<celldesigner:doubleLine ");
+    sb.append("thickness=\"" + compartment.getThickness() + "\" ");
+    sb.append("outerWidth=\"" + compartment.getOuterWidth() + "\" ");
+    sb.append("innerWidth=\"" + compartment.getInnerWidth() + "\"/>\n");
+
+    sb.append("<celldesigner:paint ");
+    sb.append("color=\"" + colorToString(compartment.getColor()) + "\" scheme=\"Color\"/>\n");
+
+    sb.append("</celldesigner:compartmentAlias>\n");
+
+    return sb.toString();
+  }
 
 }
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/ComplexAliasXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/ComplexAliasXmlParser.java
index e3b9b91842..3e3b7bc662 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/ComplexAliasXmlParser.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/ComplexAliasXmlParser.java
@@ -88,6 +88,7 @@ public class ComplexAliasXmlParser extends AbstractAliasXmlParser<Complex> {
 			throw new InvalidXmlSchemaException("No species with id=\"" + speciesId + "\" for complex alias \"" + aliasId + "\"");
 		}
 		Complex result = species.createModelElement(aliasId);
+	    elements.addElement(species, aliasId);
 
 		String state = "usual";
 		NodeList nodes = aliasNode.getChildNodes();
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/SpeciesAliasXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/SpeciesAliasXmlParser.java
index b936673c9f..c92137511e 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/SpeciesAliasXmlParser.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/SpeciesAliasXmlParser.java
@@ -26,223 +26,227 @@ import lcsb.mapviewer.model.map.species.Species;
  * @see Complex
  */
 public class SpeciesAliasXmlParser extends AbstractAliasXmlParser<Species> {
-	/**
-	 * Default class logger.
-	 */
-	private Logger												logger = Logger.getLogger(SpeciesAliasXmlParser.class.getName());
-
-	/**
-	 * Collection of {@link CellDesignerElement cell designer elements} parsed
-	 * from xml.
-	 */
-	private CellDesignerElementCollection	elements;
-
-	/**
-	 * Model for which we parse elements.
-	 */
-	private Model													model;
-
-	/**
-	 * Default constructor with model object for which we parse data.
-	 * 
-	 * @param model
-	 *          model for which we parse elements
-	 * @param elements
-	 *          collection of {@link CellDesignerElement cell designer elements}
-	 *          parsed from xml
-	 */
-	public SpeciesAliasXmlParser(CellDesignerElementCollection elements, Model model) {
-		this.elements = elements;
-		this.model = model;
-	}
-
-	@Override
-	Species parseXmlAlias(Node aliasNode) throws InvalidXmlSchemaException {
-
-		String speciesId = getNodeAttr("species", aliasNode);
-		String aliasId = getNodeAttr("id", aliasNode);
-		CellDesignerSpecies<?> species = elements.getElementByElementId(speciesId);
-		if (species == null) {
-			throw new InvalidXmlSchemaException("Unknown species for alias (speciesId: " + speciesId + ")");
-		}
-		if (species instanceof CellDesignerComplexSpecies) {
-			logger.warn("[" + speciesId + "," + aliasId + "]\tSpecies is defined as a complex, but alias is not a complex. Changing alias to complex.");
-		}
-
-		Species result = species.createModelElement(aliasId);
-
-		String state = "usual";
-		NodeList nodes = aliasNode.getChildNodes();
-		View usualView = null;
-		View briefView = null;
-		for (int x = 0; x < nodes.getLength(); x++) {
-			Node node = nodes.item(x);
-			if (node.getNodeType() == Node.ELEMENT_NODE) {
-				if (node.getNodeName().equalsIgnoreCase("celldesigner:activity")) {
-					result.setActivity(getNodeValue(node).equalsIgnoreCase("active"));
-				} else if (node.getNodeName().equalsIgnoreCase("celldesigner:bounds")) {
-					result.setX(getNodeAttr("X", node));
-					result.setY(getNodeAttr("Y", node));
-				} else if (node.getNodeName().equalsIgnoreCase("celldesigner:font")) {
-					result.setFontSize(getNodeAttr("size", node));
-				} else if (node.getNodeName().equalsIgnoreCase("celldesigner:view")) {
-					state = getNodeAttr("state", node);
-				} else if (node.getNodeName().equalsIgnoreCase("celldesigner:usualView")) {
-					usualView = getCommonParser().getView(node);
-				} else if (node.getNodeName().equalsIgnoreCase("celldesigner:briefView")) {
-					briefView = getCommonParser().getView(node);
-				} else if (node.getNodeName().equalsIgnoreCase("celldesigner:info")) {
-					processAliasState(node, result);
-				} else if (node.getNodeName().equalsIgnoreCase("celldesigner:structuralState")) {
-					// not handled
-					continue;
-				} else {
-					throw new InvalidXmlSchemaException("Unknown element of celldesigner:speciesAlias: " + node.getNodeName());
-				}
-			}
-		}
-
-		View view = null;
-		if (state.equalsIgnoreCase("usual")) {
-			view = usualView;
-		} else if (state.equalsIgnoreCase("brief")) {
-			view = briefView;
-		}
-
-		if (view != null) {
-			// inner position defines the position in compartment
-			// result.moveBy(view.innerPosition);
-			result.setWidth(view.getBoxSize().width);
-			result.setHeight(view.getBoxSize().height);
-			result.setLineWidth(view.getSingleLine().getWidth());
-			result.setColor(view.getColor());
-		} else {
-			throw new InvalidXmlSchemaException("No view in Alias");
-		}
-		result.setState(state);
-		String compartmentAliasId = getNodeAttr("compartmentAlias", aliasNode);
-		if (!compartmentAliasId.isEmpty()) {
-			Compartment compartment = model.getElementByElementId(compartmentAliasId);
-			if (compartment == null) {
-				throw new InvalidXmlSchemaException("CompartmentAlias does not exist: " + compartmentAliasId);
-			} else {
-				result.setCompartment(compartment);
-				compartment.addElement(result);
-			}
-		}
-		String complexAliasId = getNodeAttr("complexSpeciesAlias", aliasNode);
-		if (!complexAliasId.isEmpty()) {
-			Complex complex = model.getElementByElementId(complexAliasId);
-			if (complex == null) {
-				throw new InvalidXmlSchemaException("ComplexAlias does not exist: " + complexAliasId + ", current: " + result.getElementId());
-			} else {
-				result.setComplex(complex);
-				complex.addSpecies(result);
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * Process node with information about alias state and puts data into alias.
-	 * 
-	 * @param node
-	 *          node where information about alias state is stored
-	 * @param alias
-	 *          alias object to be modified if necessary
-	 */
-	private void processAliasState(Node node, Species alias) {
-		String state = getNodeAttr("state", node);
-		if ("open".equalsIgnoreCase(state)) {
-			String prefix = getNodeAttr("prefix", node);
-			String label = getNodeAttr("label", node);
-			alias.setStatePrefix(prefix);
-			alias.setStateLabel(label);
-		} else if ("empty".equalsIgnoreCase(state)) {
-			return;
-		} else if (state == null || state.isEmpty()) {
-			return;
-		} else {
-			throw new NotImplementedException("[Alias: " + alias.getElementId() + "] Unkown alias state: " + state);
-		}
-
-	}
-
-	@Override
-	public String toXml(Species species) {
-		Compartment ca = null;
-		// artifitial compartment aliases should be excluded
-		if (species.getCompartment() != null && !(species.getCompartment() instanceof PathwayCompartment)) {
-			ca = (Compartment) species.getCompartment();
-		} else if (species.getComplex() == null) {
-			ModelData model = species.getModelData();
-			if (model != null) {
-				for (Compartment cAlias : model.getModel().getCompartments()) {
-					if (!(cAlias instanceof PathwayCompartment) && cAlias.cross(species)) {
-						if (ca == null) {
-							ca = cAlias;
-						} else if (ca.getSize() > cAlias.getSize()) {
-							ca = cAlias;
-						}
-					}
-				}
-			}
-		}
-
-		Complex complex = species.getComplex();
-
-		String compartmentAliasId = null;
-		if (ca != null) {
-			compartmentAliasId = ca.getElementId();
-		}
-		StringBuilder sb = new StringBuilder("");
-		sb.append("<celldesigner:speciesAlias ");
-		sb.append("id=\"" + species.getElementId() + "\" ");
-		sb.append("species=\"" + elements.getElementId(species) + "\" ");
-		if (compartmentAliasId != null) {
-			sb.append("compartmentAlias=\"" + compartmentAliasId + "\" ");
-		}
-
-		if (complex != null) {
-			sb.append("complexSpeciesAlias=\"" + complex.getElementId() + "\" ");
-		}
-		sb.append(">\n");
-
-		if (species.getActivity() != null) {
-			if (species.getActivity()) {
-				sb.append("<celldesigner:activity>active</celldesigner:activity>\n");
-			} else {
-				sb.append("<celldesigner:activity>inactive</celldesigner:activity>\n");
-			}
-		}
-
-		sb.append("<celldesigner:bounds ");
-		sb.append("x=\"" + species.getX() + "\" ");
-		sb.append("y=\"" + species.getY() + "\" ");
-		sb.append("w=\"" + species.getWidth() + "\" ");
-		sb.append("h=\"" + species.getHeight() + "\" ");
-		sb.append("/>\n");
-
-		sb.append("<celldesigner:font size=\"" + species.getFontSize() + "\"/>\n");
-
-		// TODO to be improved
-		sb.append("<celldesigner:view state=\"usual\"/>\n");
-		sb.append("<celldesigner:usualView>");
-		sb.append("<celldesigner:innerPosition x=\"" + species.getX() + "\" y=\"" + species.getY() + "\"/>");
-		sb.append("<celldesigner:boxSize width=\"" + species.getWidth() + "\" height=\"" + species.getHeight() + "\"/>");
-		sb.append("<celldesigner:singleLine width=\"" + species.getLineWidth() + "\"/>");
-		sb.append("<celldesigner:paint color=\"" + colorToString(species.getColor()) + "\" scheme=\"Color\"/>");
-		sb.append("</celldesigner:usualView>\n");
-		sb.append("<celldesigner:briefView>");
-		sb.append("<celldesigner:innerPosition x=\"" + species.getX() + "\" y=\"" + species.getY() + "\"/>");
-		sb.append("<celldesigner:boxSize width=\"" + species.getWidth() + "\" height=\"" + species.getHeight() + "\"/>");
-		sb.append("<celldesigner:singleLine width=\"" + species.getLineWidth() + "\"/>");
-		sb.append("<celldesigner:paint color=\"" + colorToString(species.getColor()) + "\" scheme=\"Color\"/>");
-		sb.append("</celldesigner:briefView>\n");
-		if (species.getStateLabel() != null || species.getStatePrefix() != null) {
-			sb.append("<celldesigner:info state=\"open\" prefix=\"" + species.getStatePrefix() + "\" label=\"" + species.getStateLabel() + "\"/>\n");
-		}
-		sb.append("</celldesigner:speciesAlias>\n");
-		return sb.toString();
-	}
+  /**
+   * Default class logger.
+   */
+  private Logger logger = Logger.getLogger(SpeciesAliasXmlParser.class.getName());
+
+  /**
+   * Collection of {@link CellDesignerElement cell designer elements} parsed from
+   * xml.
+   */
+  private CellDesignerElementCollection elements;
+
+  /**
+   * Model for which we parse elements.
+   */
+  private Model model;
+
+  /**
+   * Default constructor with model object for which we parse data.
+   * 
+   * @param model
+   *          model for which we parse elements
+   * @param elements
+   *          collection of {@link CellDesignerElement cell designer elements}
+   *          parsed from xml
+   */
+  public SpeciesAliasXmlParser(CellDesignerElementCollection elements, Model model) {
+    this.elements = elements;
+    this.model = model;
+  }
+
+  @Override
+  Species parseXmlAlias(Node aliasNode) throws InvalidXmlSchemaException {
+
+    String speciesId = getNodeAttr("species", aliasNode);
+    String aliasId = getNodeAttr("id", aliasNode);
+    CellDesignerSpecies<?> species = elements.getElementByElementId(speciesId);
+    if (species == null) {
+      throw new InvalidXmlSchemaException("Unknown species for alias (speciesId: " + speciesId + ")");
+    }
+    if (species instanceof CellDesignerComplexSpecies) {
+      logger.warn("[" + speciesId + "," + aliasId
+          + "]\tSpecies is defined as a complex, but alias is not a complex. Changing alias to complex.");
+    }
+
+    elements.addElement(species, aliasId);
+    Species result = species.createModelElement(aliasId);
+
+    String state = "usual";
+    NodeList nodes = aliasNode.getChildNodes();
+    View usualView = null;
+    View briefView = null;
+    for (int x = 0; x < nodes.getLength(); x++) {
+      Node node = nodes.item(x);
+      if (node.getNodeType() == Node.ELEMENT_NODE) {
+        if (node.getNodeName().equalsIgnoreCase("celldesigner:activity")) {
+          result.setActivity(getNodeValue(node).equalsIgnoreCase("active"));
+        } else if (node.getNodeName().equalsIgnoreCase("celldesigner:bounds")) {
+          result.setX(getNodeAttr("X", node));
+          result.setY(getNodeAttr("Y", node));
+        } else if (node.getNodeName().equalsIgnoreCase("celldesigner:font")) {
+          result.setFontSize(getNodeAttr("size", node));
+        } else if (node.getNodeName().equalsIgnoreCase("celldesigner:view")) {
+          state = getNodeAttr("state", node);
+        } else if (node.getNodeName().equalsIgnoreCase("celldesigner:usualView")) {
+          usualView = getCommonParser().getView(node);
+        } else if (node.getNodeName().equalsIgnoreCase("celldesigner:briefView")) {
+          briefView = getCommonParser().getView(node);
+        } else if (node.getNodeName().equalsIgnoreCase("celldesigner:info")) {
+          processAliasState(node, result);
+        } else if (node.getNodeName().equalsIgnoreCase("celldesigner:structuralState")) {
+          // not handled
+          continue;
+        } else {
+          throw new InvalidXmlSchemaException("Unknown element of celldesigner:speciesAlias: " + node.getNodeName());
+        }
+      }
+    }
+
+    View view = null;
+    if (state.equalsIgnoreCase("usual")) {
+      view = usualView;
+    } else if (state.equalsIgnoreCase("brief")) {
+      view = briefView;
+    }
+
+    if (view != null) {
+      // inner position defines the position in compartment
+      // result.moveBy(view.innerPosition);
+      result.setWidth(view.getBoxSize().width);
+      result.setHeight(view.getBoxSize().height);
+      result.setLineWidth(view.getSingleLine().getWidth());
+      result.setColor(view.getColor());
+    } else {
+      throw new InvalidXmlSchemaException("No view in Alias");
+    }
+    result.setState(state);
+    String compartmentAliasId = getNodeAttr("compartmentAlias", aliasNode);
+    if (!compartmentAliasId.isEmpty()) {
+      Compartment compartment = model.getElementByElementId(compartmentAliasId);
+      if (compartment == null) {
+        throw new InvalidXmlSchemaException("CompartmentAlias does not exist: " + compartmentAliasId);
+      } else {
+        result.setCompartment(compartment);
+        compartment.addElement(result);
+      }
+    }
+    String complexAliasId = getNodeAttr("complexSpeciesAlias", aliasNode);
+    if (!complexAliasId.isEmpty()) {
+      Complex complex = model.getElementByElementId(complexAliasId);
+      if (complex == null) {
+        throw new InvalidXmlSchemaException(
+            "ComplexAlias does not exist: " + complexAliasId + ", current: " + result.getElementId());
+      } else {
+        result.setComplex(complex);
+        complex.addSpecies(result);
+      }
+    }
+    return result;
+  }
+
+  /**
+   * Process node with information about alias state and puts data into alias.
+   * 
+   * @param node
+   *          node where information about alias state is stored
+   * @param alias
+   *          alias object to be modified if necessary
+   */
+  private void processAliasState(Node node, Species alias) {
+    String state = getNodeAttr("state", node);
+    if ("open".equalsIgnoreCase(state)) {
+      String prefix = getNodeAttr("prefix", node);
+      String label = getNodeAttr("label", node);
+      alias.setStatePrefix(prefix);
+      alias.setStateLabel(label);
+    } else if ("empty".equalsIgnoreCase(state)) {
+      return;
+    } else if (state == null || state.isEmpty()) {
+      return;
+    } else {
+      throw new NotImplementedException("[Alias: " + alias.getElementId() + "] Unkown alias state: " + state);
+    }
+
+  }
+
+  @Override
+  public String toXml(Species species) {
+    Compartment ca = null;
+    // artificial compartment aliases should be excluded
+    if (species.getCompartment() != null && !(species.getCompartment() instanceof PathwayCompartment)) {
+      ca = (Compartment) species.getCompartment();
+    } else if (species.getComplex() == null) {
+      ModelData model = species.getModelData();
+      if (model != null) {
+        for (Compartment cAlias : model.getModel().getCompartments()) {
+          if (!(cAlias instanceof PathwayCompartment) && cAlias.cross(species)) {
+            if (ca == null) {
+              ca = cAlias;
+            } else if (ca.getSize() > cAlias.getSize()) {
+              ca = cAlias;
+            }
+          }
+        }
+      }
+    }
+
+    Complex complex = species.getComplex();
+
+    String compartmentAliasId = null;
+    if (ca != null) {
+      compartmentAliasId = ca.getElementId();
+    }
+    StringBuilder sb = new StringBuilder("");
+    sb.append("<celldesigner:speciesAlias ");
+    sb.append("id=\"" + species.getElementId() + "\" ");
+    sb.append("species=\"" + elements.getElementId(species) + "\" ");
+    if (compartmentAliasId != null) {
+      sb.append("compartmentAlias=\"" + compartmentAliasId + "\" ");
+    }
+
+    if (complex != null) {
+      sb.append("complexSpeciesAlias=\"" + complex.getElementId() + "\" ");
+    }
+    sb.append(">\n");
+
+    if (species.getActivity() != null) {
+      if (species.getActivity()) {
+        sb.append("<celldesigner:activity>active</celldesigner:activity>\n");
+      } else {
+        sb.append("<celldesigner:activity>inactive</celldesigner:activity>\n");
+      }
+    }
+
+    sb.append("<celldesigner:bounds ");
+    sb.append("x=\"" + species.getX() + "\" ");
+    sb.append("y=\"" + species.getY() + "\" ");
+    sb.append("w=\"" + species.getWidth() + "\" ");
+    sb.append("h=\"" + species.getHeight() + "\" ");
+    sb.append("/>\n");
+
+    sb.append("<celldesigner:font size=\"" + species.getFontSize() + "\"/>\n");
+
+    // TODO to be improved
+    sb.append("<celldesigner:view state=\"usual\"/>\n");
+    sb.append("<celldesigner:usualView>");
+    sb.append("<celldesigner:innerPosition x=\"" + species.getX() + "\" y=\"" + species.getY() + "\"/>");
+    sb.append("<celldesigner:boxSize width=\"" + species.getWidth() + "\" height=\"" + species.getHeight() + "\"/>");
+    sb.append("<celldesigner:singleLine width=\"" + species.getLineWidth() + "\"/>");
+    sb.append("<celldesigner:paint color=\"" + colorToString(species.getColor()) + "\" scheme=\"Color\"/>");
+    sb.append("</celldesigner:usualView>\n");
+    sb.append("<celldesigner:briefView>");
+    sb.append("<celldesigner:innerPosition x=\"" + species.getX() + "\" y=\"" + species.getY() + "\"/>");
+    sb.append("<celldesigner:boxSize width=\"" + species.getWidth() + "\" height=\"" + species.getHeight() + "\"/>");
+    sb.append("<celldesigner:singleLine width=\"" + species.getLineWidth() + "\"/>");
+    sb.append("<celldesigner:paint color=\"" + colorToString(species.getColor()) + "\" scheme=\"Color\"/>");
+    sb.append("</celldesigner:briefView>\n");
+    if (species.getStateLabel() != null || species.getStatePrefix() != null) {
+      sb.append("<celldesigner:info state=\"open\" prefix=\"" + species.getStatePrefix() + "\" label=\""
+          + species.getStateLabel() + "\"/>\n");
+    }
+    sb.append("</celldesigner:speciesAlias>\n");
+    return sb.toString();
+  }
 }
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXml.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXml.java
index 735682c067..c0a3ef113e 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXml.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXml.java
@@ -17,6 +17,7 @@ import org.w3c.dom.NodeList;
 import lcsb.mapviewer.common.XmlParser;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
+import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
 import lcsb.mapviewer.converter.model.celldesigner.annotation.RestAnnotationParser;
 import lcsb.mapviewer.converter.model.celldesigner.annotation.XmlAnnotationParser;
 import lcsb.mapviewer.converter.model.celldesigner.geometry.CellDesignerAliasConverter;
@@ -35,6 +36,7 @@ import lcsb.mapviewer.model.graphics.ArrowType;
 import lcsb.mapviewer.model.graphics.ArrowTypeData;
 import lcsb.mapviewer.model.graphics.LineType;
 import lcsb.mapviewer.model.graphics.PolylineData;
+import lcsb.mapviewer.model.map.compartment.Compartment;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.reaction.AbstractNode;
 import lcsb.mapviewer.model.map.reaction.AndOperator;
@@ -136,13 +138,16 @@ public class ReactionFromXml extends XmlParser {
    */
   private boolean sbgn;
 
+  CellDesignerElementCollection elements;
+
   /**
    * Default constructor.
    * 
    * @param sbgn
    *          Should the converter use SBGN standard
    */
-  public ReactionFromXml(boolean sbgn) {
+  public ReactionFromXml(CellDesignerElementCollection elements, boolean sbgn) {
+    this.elements = elements;
     this.sbgn = sbgn;
   }
 
@@ -153,7 +158,7 @@ public class ReactionFromXml extends XmlParser {
    *          xml node
    * @param model
    *          model where the reaction is placed
-   * @return reactin from xml node
+   * @return reaction from xml node
    * @throws ReactionParserException
    *           thrown when the xml is invalid
    * @throws InvalidXmlSchemaException
@@ -211,16 +216,25 @@ public class ReactionFromXml extends XmlParser {
 
   private Map<String, Element> getSpeciesIdToElementMappingFromAnnotationNode(Node annotationNode, Model model) {
     Map<String, Element> result = new HashMap<>();
-    
+
     List<Node> elementNodes = new ArrayList<>();
     elementNodes.addAll(super.getAllNotNecessirellyDirectChild("celldesigner:baseReactant", annotationNode));
     elementNodes.addAll(super.getAllNotNecessirellyDirectChild("celldesigner:baseProduct", annotationNode));
     elementNodes.addAll(super.getAllNotNecessirellyDirectChild("celldesigner:linkTarget", annotationNode));
-    
-    for (Node node: elementNodes) {
+
+    for (Node node : elementNodes) {
       String speciesId = super.getNodeAttr("species", node);
       String aliasId = super.getNodeAttr("alias", node);
-      result.put(speciesId, model.getElementByElementId(aliasId));
+      Element element = model.getElementByElementId(aliasId);
+      result.put(speciesId, element);
+
+      Compartment compartment = element.getCompartment();
+      if (compartment != null) {
+        // in kinetics we can have reference to compartment (so we need to find SBML
+        // compartment id)
+        String compartmentId = elements.getElementByElementId(compartment.getElementId()).getElementId();
+        result.put(compartmentId, compartment);
+      }
     }
     return result;
   }
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionXmlParser.java
index 1bdd6a7a7a..96d37edc31 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionXmlParser.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionXmlParser.java
@@ -35,14 +35,14 @@ public class ReactionXmlParser extends XmlParser {
 	 * other parts of the model.
 	 * 
 	 * @param sbgn
-	 *          Should sbgn standard be used
+	 *          Should SBGN standard be used
 	 * @param elements
 	 *          collection of {@link CellDesignerElement cell designer elements}
 	 *          parsed from xml
 	 */
 	public ReactionXmlParser(CellDesignerElementCollection elements, boolean sbgn) {
 		reactionToXml = new ReactionToXml(elements, sbgn);
-		reactionFromXml = new ReactionFromXml(sbgn);
+		reactionFromXml = new ReactionFromXml(elements, sbgn);
 	}
 
 	/**
@@ -52,7 +52,7 @@ public class ReactionXmlParser extends XmlParser {
 	 *          xml node
 	 * @param model
 	 *          model where the reaction is placed
-	 * @return reactin from xml node
+	 * @return reaction from xml node
 	 * @throws ReactionParserException
 	 *           thrown when the xml is invalid
 	 * @throws InvalidXmlSchemaException
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerElement.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerElement.java
index c686ccb3cf..577844e965 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerElement.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerElement.java
@@ -14,13 +14,13 @@ import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.species.Element;
 
 /**
- * Generic CellDesigner elementmap. It is a root object in inheritence three for
+ * Generic CellDesigner element map. It is a root object in inheritance three for
  * every element ({@link CellDesignerSpecies} or {@link CellDesignerCompartment}
  * ).
  * 
  * @param <T>
- *          type of the {@link Element} in the model that is desrbide byy this
- *          celldesigner class
+ *          type of the {@link Element} in the model that is describe by this
+ *          CellDesigner class
  * @author Piotr Gawron
  * 
  */
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/AliasCollectionXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/AliasCollectionXmlParserTest.java
index bb1aa8ad25..e5b4e0509e 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/AliasCollectionXmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/AliasCollectionXmlParserTest.java
@@ -5,6 +5,8 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
+import java.awt.geom.Point2D;
+import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.log4j.Logger;
@@ -20,320 +22,343 @@ import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerCompart
 import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerComplexSpecies;
 import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerGenericProtein;
 import lcsb.mapviewer.model.map.compartment.Compartment;
+import lcsb.mapviewer.model.map.compartment.SquareCompartment;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
 import lcsb.mapviewer.model.map.species.Complex;
+import lcsb.mapviewer.model.map.species.GenericProtein;
 import lcsb.mapviewer.model.map.species.Species;
 
 public class AliasCollectionXmlParserTest extends CellDesignerTestFunctions {
 
-	AliasCollectionXmlParser			parser;
-	Model													model;
-	CellDesignerElementCollection	elements;
-	Logger												logger = Logger.getLogger(AliasCollectionXmlParserTest.class.getName());
-
-	@Before
-	public void setUp() throws Exception {
-		model = new ModelFullIndexed(null);
-
-		elements = new CellDesignerElementCollection();
-
-		parser = new AliasCollectionXmlParser(elements, model);
-
-	}
-
-	@After
-	public void tearDown() throws Exception {
-	}
-
-	@Test
-	public void testParseXmlSpeciesAliasCollection() throws Exception {
-		try {
-			elements.addElement(new CellDesignerGenericProtein("s2594"));
-			elements.addElement(new CellDesignerGenericProtein("s2595"));
-			elements.addElement(new CellDesignerGenericProtein("s2596"));
-			elements.addElement(new CellDesignerGenericProtein("s2506"));
-			String xmlString = readFile("testFiles/xmlNodeTestExamples/cd_species_alias_collection.xml");
-			Node node = getNodeFromXmlString(xmlString);
-			List<Species> list = parser.parseXmlSpeciesAliasCollection(node);
-			assertEquals(0, getWarnings().size());
-			assertNotNull(list);
-			assertEquals(4, list.size());
-			Species aliasSa8 = null;
-			Species aliasSa9 = null;
-			Species aliasSa10 = null;
-			Species aliasSa11 = null;
-			for (Species alias : list) {
-				if (alias.getElementId().equals("sa8"))
-					aliasSa8 = alias;
-				if (alias.getElementId().equals("sa9"))
-					aliasSa9 = alias;
-				if (alias.getElementId().equals("sa10"))
-					aliasSa10 = alias;
-				if (alias.getElementId().equals("sa11"))
-					aliasSa11 = alias;
-			}
-			assertNotNull(aliasSa8);
-			assertNotNull(aliasSa9);
-			assertNotNull(aliasSa10);
-			assertNotNull(aliasSa11);
-
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testParseInvalidXmlSpeciesAliasCollection() throws Exception {
-		try {
-			String xmlString = readFile("testFiles/invalid/species_alias_collection.xml");
-			Node node = getNodeFromXmlString(xmlString);
-			parser.parseXmlSpeciesAliasCollection(node);
-			fail("Exception expected");
-		} catch (InvalidXmlSchemaException e) {
-			assertTrue(e.getMessage().contains("Unknown element of celldesigner:listOfSpeciesAliases"));
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testParseInvalidXmlComplexAliasCollection() throws Exception {
-		try {
-			String xmlString = readFile("testFiles/invalid/complex_alias_collection.xml");
-			Node node = getNodeFromXmlString(xmlString);
-			parser.parseXmlComplexAliasCollection(node);
-			fail("Exception expected");
-		} catch (InvalidXmlSchemaException e) {
-			assertTrue("Invalid message: " + e.getMessage(), e.getMessage().contains("Unknown element of celldesigner:listOfComplexSpeciesAliases"));
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testParseInvalidXmlCompartmentAliasCollection() throws Exception {
-		try {
-			String xmlString = readFile("testFiles/invalid/compartment_alias_collection.xml");
-			Node node = getNodeFromXmlString(xmlString);
-			parser.parseXmlCompartmentAliasCollection(node);
-			fail("Exception expected");
-		} catch (InvalidXmlSchemaException e) {
-			assertTrue("Invalid message: " + e.getMessage(), e.getMessage().contains("Unknown element of celldesigner:listOfCompartmentAliases"));
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testSpeciesAliasCollectionToXmlString() throws Exception {
-		try {
-			elements.addElement(new CellDesignerGenericProtein("s2594"));
-			elements.addElement(new CellDesignerGenericProtein("s2506"));
-			elements.addElement(new CellDesignerGenericProtein("s2595"));
-			elements.addElement(new CellDesignerGenericProtein("s2596"));
-			String xmlString = readFile("testFiles/xmlNodeTestExamples/cd_species_alias_collection.xml");
-			Node node = getNodeFromXmlString(xmlString);
-			List<Species> list = parser.parseXmlSpeciesAliasCollection(node);
-			assertEquals(0, getWarnings().size());
-			String xmlString2 = parser.speciesAliasCollectionToXmlString(list);
-			assertNotNull(xmlString2);
-
-			// add position to elements list, because parser forgot CD ids and created
-			// new for them
-			for (Species alias : list) {
-				elements.addElement(new CellDesignerGenericProtein(elements.getElementId(alias)));
-			}
-
-			node = getNodeFromXmlString(xmlString2);
-			list = parser.parseXmlSpeciesAliasCollection(node);
-			assertEquals(0, getWarnings().size());
-			assertNotNull(list);
-			assertEquals(4, list.size());
-			Species aliasSa8 = null;
-			Species aliasSa9 = null;
-			Species aliasSa10 = null;
-			Species aliasSa11 = null;
-			for (Species alias : list) {
-				if (alias.getElementId().equals("sa8"))
-					aliasSa8 = alias;
-				if (alias.getElementId().equals("sa9"))
-					aliasSa9 = alias;
-				if (alias.getElementId().equals("sa10"))
-					aliasSa10 = alias;
-				if (alias.getElementId().equals("sa11"))
-					aliasSa11 = alias;
-			}
-			assertNotNull(aliasSa8);
-			assertNotNull(aliasSa9);
-			assertNotNull(aliasSa10);
-			assertNotNull(aliasSa11);
-
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testParseXmlComplexAliasCollection() throws Exception {
-		try {
-			elements.addElement(new CellDesignerComplexSpecies("s2597"));
-			elements.addElement(new CellDesignerComplexSpecies("s2598"));
-			elements.addElement(new CellDesignerComplexSpecies("s2599"));
-			String xmlString = readFile("testFiles/xmlNodeTestExamples/cd_complex_alias_collection.xml");
-			Node node = getNodeFromXmlString(xmlString);
-			List<Complex> list = parser.parseXmlComplexAliasCollection(node);
-			assertEquals(0, getWarnings().size());
-			assertNotNull(list);
-			assertEquals(3, list.size());
-			Complex aliasSa1 = null;
-			Complex aliasSa2 = null;
-			Complex aliasSa3 = null;
-			for (Complex alias : list) {
-				if (alias.getElementId().equals("csa1"))
-					aliasSa1 = alias;
-				if (alias.getElementId().equals("csa2"))
-					aliasSa2 = alias;
-				if (alias.getElementId().equals("csa3"))
-					aliasSa3 = alias;
-			}
-			assertNotNull(aliasSa1);
-			assertNotNull(aliasSa2);
-			assertNotNull(aliasSa3);
-
-		} catch (Exception e) {
-			throw e;
-		}
-	}
-
-	@Test
-	public void testComplexAliasCollectionToXmlString() throws Exception {
-		try {
-			elements.addElement(new CellDesignerComplexSpecies("s2597"));
-			elements.addElement(new CellDesignerComplexSpecies("s2598"));
-			elements.addElement(new CellDesignerComplexSpecies("s2599"));
-			String xmlString = readFile("testFiles/xmlNodeTestExamples/cd_complex_alias_collection.xml");
-			Node node = getNodeFromXmlString(xmlString);
-			List<Complex> list = parser.parseXmlComplexAliasCollection(node);
-			assertEquals(0, getWarnings().size());
-			String xmlString2 = parser.complexAliasCollectionToXmlString(list);
-			assertNotNull(xmlString2);
-
-			// add position to elements list, because parser forgot CD ids and created
-			// new for them
-			for (Complex complexAlias : list) {
-				elements.addElement(new CellDesignerComplexSpecies(elements.getElementId(complexAlias)));
-			}
-
-			node = getNodeFromXmlString(xmlString2);
-			list = parser.parseXmlComplexAliasCollection(node);
-			assertEquals(0, getWarnings().size());
-			assertNotNull(list);
-			assertEquals(3, list.size());
-			Complex aliasSa1 = null;
-			Complex aliasSa2 = null;
-			Complex aliasSa3 = null;
-			for (Complex alias : list) {
-				if (alias.getElementId().equals("csa1"))
-					aliasSa1 = alias;
-				if (alias.getElementId().equals("csa2"))
-					aliasSa2 = alias;
-				if (alias.getElementId().equals("csa3"))
-					aliasSa3 = alias;
-			}
-			assertNotNull(aliasSa1);
-			assertNotNull(aliasSa2);
-			assertNotNull(aliasSa3);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testParseXmlCompartmentAliasCollection() throws Exception {
-		try {
-			elements.addElement(new CellDesignerCompartment("c1"));
-			elements.addElement(new CellDesignerCompartment("c2"));
-			elements.addElement(new CellDesignerCompartment("c3"));
-
-			String xmlString = readFile("testFiles/xmlNodeTestExamples/cd_compartment_alias_collection.xml");
-			Node node = getNodeFromXmlString(xmlString);
-			List<Compartment> list = parser.parseXmlCompartmentAliasCollection(node);
-			assertEquals(0, getWarnings().size());
-			assertNotNull(list);
-			assertEquals(3, list.size());
-			Compartment aliasCa1 = null;
-			Compartment aliasCa2 = null;
-			Compartment aliasCa3 = null;
-			for (Compartment alias : list) {
-				if (alias.getElementId().equals("ca1"))
-					aliasCa1 = alias;
-				if (alias.getElementId().equals("ca2"))
-					aliasCa2 = alias;
-				if (alias.getElementId().equals("ca3"))
-					aliasCa3 = alias;
-			}
-			assertNotNull(aliasCa1);
-			assertNotNull(aliasCa2);
-			assertNotNull(aliasCa3);
-
-		} catch (Exception e) {
-			throw e;
-		}
-	}
-
-	@Test
-	public void testCompartmentAliasCollectionToXmlString() throws Exception {
-		try {
-			elements.addElement(new CellDesignerCompartment("c1"));
-			elements.addElement(new CellDesignerCompartment("c2"));
-			elements.addElement(new CellDesignerCompartment("c3"));
-
-			String xmlString = readFile("testFiles/xmlNodeTestExamples/cd_compartment_alias_collection.xml");
-			Node node = getNodeFromXmlString(xmlString);
-			List<Compartment> list = parser.parseXmlCompartmentAliasCollection(node);
-			assertEquals(0, getWarnings().size());
-
-			String xmlString2 = parser.compartmentAliasCollectionToXmlString(list);
-			assertNotNull(xmlString2);
-
-			// add position to elements list, because parser forgot CD ids and created
-			// new for them
-			for (Compartment alias : list) {
-				elements.addElement(new CellDesignerCompartment(elements.getElementId(alias)));
-			}
-
-			node = getNodeFromXmlString(xmlString2);
-			list = parser.parseXmlCompartmentAliasCollection(node);
-			assertEquals(0, getWarnings().size());
-
-			assertNotNull(list);
-			assertEquals(3, list.size());
-			Compartment aliasSa1 = null;
-			Compartment aliasSa2 = null;
-			Compartment aliasSa3 = null;
-			for (Compartment alias : list) {
-				if (alias.getElementId().equals("ca1"))
-					aliasSa1 = alias;
-				if (alias.getElementId().equals("ca2"))
-					aliasSa2 = alias;
-				if (alias.getElementId().equals("ca3"))
-					aliasSa3 = alias;
-			}
-			assertNotNull(aliasSa1);
-			assertNotNull(aliasSa2);
-			assertNotNull(aliasSa3);
-
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
+  AliasCollectionXmlParser parser;
+  Model model;
+  CellDesignerElementCollection elements;
+  Logger logger = Logger.getLogger(AliasCollectionXmlParserTest.class.getName());
+
+  @Before
+  public void setUp() throws Exception {
+    model = new ModelFullIndexed(null);
+
+    elements = new CellDesignerElementCollection();
+
+    parser = new AliasCollectionXmlParser(elements, model);
+
+  }
+
+  @After
+  public void tearDown() throws Exception {
+  }
+
+  @Test
+  public void testParseXmlSpeciesAliasCollection() throws Exception {
+    try {
+      elements.addElement(new CellDesignerGenericProtein("s2594"));
+      elements.addElement(new CellDesignerGenericProtein("s2595"));
+      elements.addElement(new CellDesignerGenericProtein("s2596"));
+      elements.addElement(new CellDesignerGenericProtein("s2506"));
+      String xmlString = readFile("testFiles/xmlNodeTestExamples/cd_species_alias_collection.xml");
+      Node node = getNodeFromXmlString(xmlString);
+      List<Species> list = parser.parseXmlSpeciesAliasCollection(node);
+      assertEquals(0, getWarnings().size());
+      assertNotNull(list);
+      assertEquals(4, list.size());
+      Species aliasSa8 = null;
+      Species aliasSa9 = null;
+      Species aliasSa10 = null;
+      Species aliasSa11 = null;
+      for (Species alias : list) {
+        if (alias.getElementId().equals("sa8"))
+          aliasSa8 = alias;
+        if (alias.getElementId().equals("sa9"))
+          aliasSa9 = alias;
+        if (alias.getElementId().equals("sa10"))
+          aliasSa10 = alias;
+        if (alias.getElementId().equals("sa11"))
+          aliasSa11 = alias;
+      }
+      assertNotNull(aliasSa8);
+      assertNotNull(aliasSa9);
+      assertNotNull(aliasSa10);
+      assertNotNull(aliasSa11);
+
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void testParseInvalidXmlSpeciesAliasCollection() throws Exception {
+    try {
+      String xmlString = readFile("testFiles/invalid/species_alias_collection.xml");
+      Node node = getNodeFromXmlString(xmlString);
+      parser.parseXmlSpeciesAliasCollection(node);
+      fail("Exception expected");
+    } catch (InvalidXmlSchemaException e) {
+      assertTrue(e.getMessage().contains("Unknown element of celldesigner:listOfSpeciesAliases"));
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void testParseInvalidXmlComplexAliasCollection() throws Exception {
+    try {
+      String xmlString = readFile("testFiles/invalid/complex_alias_collection.xml");
+      Node node = getNodeFromXmlString(xmlString);
+      parser.parseXmlComplexAliasCollection(node);
+      fail("Exception expected");
+    } catch (InvalidXmlSchemaException e) {
+      assertTrue("Invalid message: " + e.getMessage(),
+          e.getMessage().contains("Unknown element of celldesigner:listOfComplexSpeciesAliases"));
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void testParseInvalidXmlCompartmentAliasCollection() throws Exception {
+    try {
+      String xmlString = readFile("testFiles/invalid/compartment_alias_collection.xml");
+      Node node = getNodeFromXmlString(xmlString);
+      parser.parseXmlCompartmentAliasCollection(node);
+      fail("Exception expected");
+    } catch (InvalidXmlSchemaException e) {
+      assertTrue("Invalid message: " + e.getMessage(),
+          e.getMessage().contains("Unknown element of celldesigner:listOfCompartmentAliases"));
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void testSpeciesAliasCollectionToXmlString() throws Exception {
+    try {
+      List<Species> originalLlist = createSpeciesList();
+      String xmlString2 = parser.speciesAliasCollectionToXmlString(originalLlist);
+      assertNotNull(xmlString2);
+
+      for (Species alias : originalLlist) {
+        elements.addElement(new CellDesignerGenericProtein(elements.getElementId(alias)));
+      }
+
+      Node node = getNodeFromXmlString(xmlString2);
+      List<Species> list = parser.parseXmlSpeciesAliasCollection(node);
+      assertEquals(0, getWarnings().size());
+      assertNotNull(list);
+      assertEquals(3, list.size());
+      for (Species species : originalLlist) {
+        boolean found = false;
+        for (Species alias : list) {
+          if (alias.getElementId().equals(species.getElementId())) {
+            found = true;
+          }
+        }
+        assertTrue(found);
+      }
+
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  private List<Species> createSpeciesList() {
+    List<Species> result = new ArrayList<>();
+    result.add(createProtein("sa1"));
+    result.add(createProtein("sa2"));
+    result.add(createProtein("sa3"));
+    return result;
+  }
+
+  private Species createProtein(String id) {
+    GenericProtein protein = new GenericProtein(id);
+    protein.setActivity(true);
+    protein.setFontSize(4);
+    protein.setHeight(10);
+    protein.setWidth(20);
+    protein.setX(30);
+    protein.setY(40);
+    protein.setName(id + "name");
+    protein.setStateLabel("xxx");
+    protein.setStatePrefix("yyy");
+    return protein;
+  }
+
+  @Test
+  public void testParseXmlComplexAliasCollection() throws Exception {
+    try {
+      elements.addElement(new CellDesignerComplexSpecies("s2597"));
+      elements.addElement(new CellDesignerComplexSpecies("s2598"));
+      elements.addElement(new CellDesignerComplexSpecies("s2599"));
+      String xmlString = readFile("testFiles/xmlNodeTestExamples/cd_complex_alias_collection.xml");
+      Node node = getNodeFromXmlString(xmlString);
+      List<Complex> list = parser.parseXmlComplexAliasCollection(node);
+      assertEquals(0, getWarnings().size());
+      assertNotNull(list);
+      assertEquals(3, list.size());
+      Complex aliasSa1 = null;
+      Complex aliasSa2 = null;
+      Complex aliasSa3 = null;
+      for (Complex alias : list) {
+        if (alias.getElementId().equals("csa1"))
+          aliasSa1 = alias;
+        if (alias.getElementId().equals("csa2"))
+          aliasSa2 = alias;
+        if (alias.getElementId().equals("csa3"))
+          aliasSa3 = alias;
+      }
+      assertNotNull(aliasSa1);
+      assertNotNull(aliasSa2);
+      assertNotNull(aliasSa3);
+
+    } catch (Exception e) {
+      throw e;
+    }
+  }
+
+  @Test
+  public void testComplexAliasCollectionToXmlString() throws Exception {
+    try {
+      List<Complex> list = createComplexAliasList();
+      String xmlString2 = parser.complexAliasCollectionToXmlString(list);
+      assertNotNull(xmlString2);
+
+      for (Complex complexAlias : list) {
+        elements.addElement(new CellDesignerComplexSpecies(elements.getElementId(complexAlias)));
+      }
+
+      Node node = getNodeFromXmlString(xmlString2);
+      list = parser.parseXmlComplexAliasCollection(node);
+      assertEquals(0, getWarnings().size());
+      assertNotNull(list);
+      assertEquals(3, list.size());
+      Complex aliasSa1 = null;
+      Complex aliasSa2 = null;
+      Complex aliasSa3 = null;
+      for (Complex alias : list) {
+        if (alias.getElementId().equals("csa1"))
+          aliasSa1 = alias;
+        if (alias.getElementId().equals("csa2"))
+          aliasSa2 = alias;
+        if (alias.getElementId().equals("csa3"))
+          aliasSa3 = alias;
+      }
+      assertNotNull(aliasSa1);
+      assertNotNull(aliasSa2);
+      assertNotNull(aliasSa3);
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  private List<Complex> createComplexAliasList() {
+    List<Complex> result = new ArrayList<>();
+    result.add(createComplex("csa1"));
+    result.add(createComplex("csa2"));
+    result.add(createComplex("csa3"));
+    return result;
+  }
+
+  private Complex createComplex(String id) {
+    Complex complex = new Complex(id);
+    complex.setFontSize(13.5);
+    complex.setHeight(90);
+    complex.setWidth(80);
+    complex.setName("name_112_" + id);
+    complex.setX(32);
+    complex.setY(42);
+    return complex;
+  }
+
+  @Test
+  public void testParseXmlCompartmentAliasCollection() throws Exception {
+    try {
+      elements.addElement(new CellDesignerCompartment("c1"));
+      elements.addElement(new CellDesignerCompartment("c2"));
+      elements.addElement(new CellDesignerCompartment("c3"));
+
+      String xmlString = readFile("testFiles/xmlNodeTestExamples/cd_compartment_alias_collection.xml");
+      Node node = getNodeFromXmlString(xmlString);
+      List<Compartment> list = parser.parseXmlCompartmentAliasCollection(node);
+      assertEquals(0, getWarnings().size());
+      assertNotNull(list);
+      assertEquals(3, list.size());
+      Compartment aliasCa1 = null;
+      Compartment aliasCa2 = null;
+      Compartment aliasCa3 = null;
+      for (Compartment alias : list) {
+        if (alias.getElementId().equals("ca1"))
+          aliasCa1 = alias;
+        if (alias.getElementId().equals("ca2"))
+          aliasCa2 = alias;
+        if (alias.getElementId().equals("ca3"))
+          aliasCa3 = alias;
+      }
+      assertNotNull(aliasCa1);
+      assertNotNull(aliasCa2);
+      assertNotNull(aliasCa3);
+
+    } catch (Exception e) {
+      throw e;
+    }
+  }
+
+  @Test
+  public void testCompartmentAliasCollectionToXmlString() throws Exception {
+    try {
+      List<Compartment> originalLlist = createCompartmentList();
+      for (Compartment alias : originalLlist) {
+        elements.addElement(new CellDesignerCompartment(elements.getElementId(alias)));
+      }
+
+      String xmlString2 = parser.compartmentAliasCollectionToXmlString(originalLlist);
+
+      Node node = getNodeFromXmlString(xmlString2);
+      List<Compartment> list = parser.parseXmlCompartmentAliasCollection(node);
+      assertEquals(0, getWarnings().size());
+
+      assertNotNull(list);
+      assertEquals(originalLlist.size(), list.size());
+      for (Compartment species : originalLlist) {
+        boolean found = false;
+        for (Compartment alias : list) {
+          if (alias.getElementId().equals(species.getElementId())) {
+            found = true;
+          }
+        }
+        assertTrue(found);
+      }
+
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  private List<Compartment> createCompartmentList() {
+    List<Compartment> result = new ArrayList<>();
+    result.add(createCompartment("ca1"));
+    result.add(createCompartment("ca2"));
+    result.add(createCompartment("ca3"));
+    return result;
+  }
+
+  private Compartment createCompartment(String id) {
+    Compartment compartment = new SquareCompartment(id);
+    compartment.setName("name" + id);
+    compartment.setX(13);
+    compartment.setY(14);
+    compartment.setWidth(100);
+    compartment.setHeight(120);
+    compartment.setNamePoint(new Point2D.Double(0, 1));
+
+    return compartment;
+  }
 
 }
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/CompartmentAliasXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/CompartmentAliasXmlParserTest.java
index 45cfe9ee61..c0b01bb7d8 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/CompartmentAliasXmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/CompartmentAliasXmlParserTest.java
@@ -6,6 +6,8 @@ import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
+import java.awt.geom.Point2D;
+
 import org.apache.log4j.Logger;
 import org.junit.After;
 import org.junit.Before;
@@ -27,231 +29,238 @@ import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
 
 public class CompartmentAliasXmlParserTest extends CellDesignerTestFunctions {
-	static Logger									logger = Logger.getLogger(CompartmentAliasXmlParser.class);
-
-	CompartmentAliasXmlParser			parser;
-	Model													model;
-	CellDesignerElementCollection	elements;
-
-	@Before
-	public void setUp() throws Exception {
-		model = new ModelFullIndexed(null);
-		elements = new CellDesignerElementCollection();
-		parser = new CompartmentAliasXmlParser(elements, model);
-	}
-
-	@After
-	public void tearDown() throws Exception {
-	}
-
-	@Test
-	public void testToXml() throws Exception {
-		try {
-			elements.addElement(new CellDesignerCompartment("c1"));
-
-			String xmlString = readFile("testFiles/xmlNodeTestExamples/cd_compartment_alias.xml");
-			Compartment alias = parser.parseXmlAlias(xmlString);
-			assertEquals(0, getWarnings().size());
-			assertEquals(0, getWarnings().size());
-			String xmlString2 = parser.toXml(alias);
-			assertNotNull(xmlString2);
-
-			elements.addElement(new CellDesignerCompartment(elements.getElementId(alias)));
-
-			Compartment alias2 = parser.parseXmlAlias(xmlString2);
-			assertEquals(0, getWarnings().size());
-
-			assertEquals(alias.getElementId(), alias2.getElementId());
-			assertNotNull(alias.getName());
-			assertEquals(alias.getFontSize(), alias2.getFontSize(), 1e-6);
-			assertEquals(alias.getHeight(), alias2.getHeight(), 1e-6);
-			assertEquals(alias.getWidth(), alias2.getWidth(), 1e-6);
-			assertEquals(alias.getX(), alias2.getX(), 1e-6);
-			assertEquals(alias.getY(), alias2.getY(), 1e-6);
-			assertEquals(alias.getNamePoint().getX(), alias2.getNamePoint().getX(), 1e-6);
-			assertEquals(alias.getNamePoint().getY(), alias2.getNamePoint().getY(), 1e-6);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void parseInvalidAlias() throws Exception {
-		try {
-			Model model = new ModelFullIndexed(null);
-			parser = new CompartmentAliasXmlParser(elements, model);
-			String xmlString = readFile("testFiles/xmlNodeTestExamples/cd_compartment_alias.xml");
-			parser.parseXmlAlias(xmlString);
-			fail("Exception expceted");
-		} catch (InvalidXmlSchemaException e) {
-			assertTrue(e.getMessage().contains("Compartment does not exist in a model"));
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void parseInvalidAlias2() throws Exception {
-		try {
-			Model model = new ModelFullIndexed(null);
-			CellDesignerCompartment comp = new CellDesignerCompartment();
-			comp.setElementId("c1");
-			elements.addElement(comp);
-			parser = new CompartmentAliasXmlParser(elements, model);
-			String xmlString = readFile("testFiles/invalid/compartment_alias.xml");
-			parser.parseXmlAlias(xmlString);
-			fail("Exception expceted");
-		} catch (InvalidXmlSchemaException e) {
-			assertTrue(e.getMessage().contains("Unknown compartment type"));
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void parseInvalidAlias3() throws Exception {
-		try {
-			Model model = new ModelFullIndexed(null);
-			CellDesignerCompartment comp = new CellDesignerCompartment();
-			comp.setElementId("c1");
-			elements.addElement(comp);
-			parser = new CompartmentAliasXmlParser(elements, model);
-			String xmlString = readFile("testFiles/invalid/compartment_alias2.xml");
-			parser.parseXmlAlias(xmlString);
-			fail("Exception expceted");
-		} catch (InvalidXmlSchemaException e) {
-			assertTrue(e.getMessage().contains("Don't know what to do with celldesigner:point for class"));
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void parseInvalidAlias4() throws Exception {
-		try {
-			Model model = new ModelFullIndexed(null);
-			CellDesignerCompartment comp = new CellDesignerCompartment();
-			comp.setElementId("c1");
-			elements.addElement(comp);
-			parser = new CompartmentAliasXmlParser(elements, model);
-			String xmlString = readFile("testFiles/invalid/compartment_alias3.xml");
-			parser.parseXmlAlias(xmlString);
-			fail("Exception expceted");
-		} catch (InvalidXmlSchemaException e) {
-			assertTrue(e.getMessage().contains("Unknown element of celldesigner:compartmentAlias"));
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testParseXmlAliasNode() throws Exception {
-		try {
-			elements.addElement(new CellDesignerCompartment("c1"));
-
-			String xmlString = readFile("testFiles/xmlNodeTestExamples/cd_compartment_alias.xml");
-			Compartment alias = (Compartment) parser.parseXmlAlias(xmlString);
-			assertEquals(0, getWarnings().size());
-			assertNotNull(alias);
-			assertEquals("ca1", alias.getElementId());
-			assertNotNull(alias.getName());
-			assertTrue(alias instanceof SquareCompartment);
-			assertEquals(139.0, alias.getX(), 1e-6);
-			assertEquals(55.0, alias.getY(), 1e-6);
-			assertEquals(522.0, alias.getWidth(), 1e-6);
-			assertEquals(392.5, alias.getNamePoint().getX(), 1e-6);
-			assertEquals(196.5, alias.getNamePoint().getY(), 1e-6);
-			assertEquals(0xffcccc00, alias.getColor().getRGB());
-
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testGetters() {
-		try {
-			parser.setCommonParser(null);
-
-			assertNull(parser.getCommonParser());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testLeftToXml() throws Exception {
-		try {
-			Compartment alias = new LeftSquareCompartment("id");
-			String xml = parser.toXml(alias);
-			assertNotNull(xml);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-
-	}
-
-	@Test
-	public void testRightToXml() throws Exception {
-		try {
-			Compartment alias = new RightSquareCompartment("id");
-			String xml = parser.toXml(alias);
-			assertNotNull(xml);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-
-	}
-
-	@Test
-	public void testTopToXml() throws Exception {
-		try {
-			Compartment alias = new TopSquareCompartment("id");
-			String xml = parser.toXml(alias);
-			assertNotNull(xml);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-
-	}
-
-	@Test
-	public void testBotttomToXml() throws Exception {
-		try {
-			Compartment alias = new BottomSquareCompartment("id");
-			String xml = parser.toXml(alias);
-			assertNotNull(xml);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-
-	}
-
-	@Test
-	public void testUnknownToXml() throws Exception {
-		try {
-			Compartment alias = Mockito.mock(BottomSquareCompartment.class);
-			Mockito.when(alias.getElementId()).thenReturn("some id");
-			parser.toXml(alias);
-			fail("Exception expected");
-		} catch (NotImplementedException e) {
-			assertTrue(e.getMessage().contains("Unknown compartment class"));
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-
-	}
+  static Logger logger = Logger.getLogger(CompartmentAliasXmlParser.class);
+
+  CompartmentAliasXmlParser parser;
+  Model model;
+  CellDesignerElementCollection elements;
+
+  @Before
+  public void setUp() throws Exception {
+    model = new ModelFullIndexed(null);
+    elements = new CellDesignerElementCollection();
+    parser = new CompartmentAliasXmlParser(elements, model);
+  }
+
+  @After
+  public void tearDown() throws Exception {
+  }
+
+  @Test
+  public void testToXml() throws Exception {
+    try {
+      Compartment compartment = createCompartment();
+      String xmlString = parser.toXml(compartment);
+      assertNotNull(xmlString);
+
+      elements.addElement(new CellDesignerCompartment(elements.getElementId(compartment)));
+
+      Compartment alias2 = parser.parseXmlAlias(xmlString);
+      assertEquals(0, getWarnings().size());
+
+      assertEquals(compartment.getElementId(), alias2.getElementId());
+      assertNotNull(compartment.getName());
+      assertEquals(compartment.getFontSize(), alias2.getFontSize(), 1e-6);
+      assertEquals(compartment.getHeight(), alias2.getHeight(), 1e-6);
+      assertEquals(compartment.getWidth(), alias2.getWidth(), 1e-6);
+      assertEquals(compartment.getX(), alias2.getX(), 1e-6);
+      assertEquals(compartment.getY(), alias2.getY(), 1e-6);
+      assertEquals(compartment.getNamePoint().getX(), alias2.getNamePoint().getX(), 1e-6);
+      assertEquals(compartment.getNamePoint().getY(), alias2.getNamePoint().getY(), 1e-6);
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  private Compartment createCompartment() {
+    Compartment compartment = new SquareCompartment("comp_id");
+    compartment.setName("name");
+    compartment.setX(13);
+    compartment.setY(14);
+    compartment.setWidth(100);
+    compartment.setHeight(120);
+    compartment.setNamePoint(new Point2D.Double(0, 1));
+
+    return compartment;
+  }
+
+  @Test
+  public void parseInvalidAlias() throws Exception {
+    try {
+      Model model = new ModelFullIndexed(null);
+      parser = new CompartmentAliasXmlParser(elements, model);
+      String xmlString = readFile("testFiles/xmlNodeTestExamples/cd_compartment_alias.xml");
+      parser.parseXmlAlias(xmlString);
+      fail("Exception expceted");
+    } catch (InvalidXmlSchemaException e) {
+      assertTrue(e.getMessage().contains("Compartment does not exist in a model"));
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void parseInvalidAlias2() throws Exception {
+    try {
+      Model model = new ModelFullIndexed(null);
+      CellDesignerCompartment comp = new CellDesignerCompartment();
+      comp.setElementId("c1");
+      elements.addElement(comp);
+      parser = new CompartmentAliasXmlParser(elements, model);
+      String xmlString = readFile("testFiles/invalid/compartment_alias.xml");
+      parser.parseXmlAlias(xmlString);
+      fail("Exception expceted");
+    } catch (InvalidXmlSchemaException e) {
+      assertTrue(e.getMessage().contains("Unknown compartment type"));
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void parseInvalidAlias3() throws Exception {
+    try {
+      Model model = new ModelFullIndexed(null);
+      CellDesignerCompartment comp = new CellDesignerCompartment();
+      comp.setElementId("c1");
+      elements.addElement(comp);
+      parser = new CompartmentAliasXmlParser(elements, model);
+      String xmlString = readFile("testFiles/invalid/compartment_alias2.xml");
+      parser.parseXmlAlias(xmlString);
+      fail("Exception expceted");
+    } catch (InvalidXmlSchemaException e) {
+      assertTrue(e.getMessage().contains("Don't know what to do with celldesigner:point for class"));
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void parseInvalidAlias4() throws Exception {
+    try {
+      Model model = new ModelFullIndexed(null);
+      CellDesignerCompartment comp = new CellDesignerCompartment();
+      comp.setElementId("c1");
+      elements.addElement(comp);
+      parser = new CompartmentAliasXmlParser(elements, model);
+      String xmlString = readFile("testFiles/invalid/compartment_alias3.xml");
+      parser.parseXmlAlias(xmlString);
+      fail("Exception expceted");
+    } catch (InvalidXmlSchemaException e) {
+      assertTrue(e.getMessage().contains("Unknown element of celldesigner:compartmentAlias"));
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void testParseXmlAliasNode() throws Exception {
+    try {
+      elements.addElement(new CellDesignerCompartment("c1"));
+
+      String xmlString = readFile("testFiles/xmlNodeTestExamples/cd_compartment_alias.xml");
+      Compartment alias = (Compartment) parser.parseXmlAlias(xmlString);
+      assertEquals(0, getWarnings().size());
+      assertNotNull(alias);
+      assertEquals("ca1", alias.getElementId());
+      assertNotNull(alias.getName());
+      assertTrue(alias instanceof SquareCompartment);
+      assertEquals(139.0, alias.getX(), 1e-6);
+      assertEquals(55.0, alias.getY(), 1e-6);
+      assertEquals(522.0, alias.getWidth(), 1e-6);
+      assertEquals(392.5, alias.getNamePoint().getX(), 1e-6);
+      assertEquals(196.5, alias.getNamePoint().getY(), 1e-6);
+      assertEquals(0xffcccc00, alias.getColor().getRGB());
+
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void testGetters() {
+    try {
+      parser.setCommonParser(null);
+
+      assertNull(parser.getCommonParser());
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void testLeftToXml() throws Exception {
+    try {
+      Compartment alias = new LeftSquareCompartment("id");
+      String xml = parser.toXml(alias);
+      assertNotNull(xml);
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+
+  }
+
+  @Test
+  public void testRightToXml() throws Exception {
+    try {
+      Compartment alias = new RightSquareCompartment("id");
+      String xml = parser.toXml(alias);
+      assertNotNull(xml);
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+
+  }
+
+  @Test
+  public void testTopToXml() throws Exception {
+    try {
+      Compartment alias = new TopSquareCompartment("id");
+      String xml = parser.toXml(alias);
+      assertNotNull(xml);
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+
+  }
+
+  @Test
+  public void testBotttomToXml() throws Exception {
+    try {
+      Compartment alias = new BottomSquareCompartment("id");
+      String xml = parser.toXml(alias);
+      assertNotNull(xml);
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+
+  }
+
+  @Test
+  public void testUnknownToXml() throws Exception {
+    try {
+      Compartment alias = Mockito.mock(BottomSquareCompartment.class);
+      Mockito.when(alias.getElementId()).thenReturn("some id");
+      parser.toXml(alias);
+      fail("Exception expected");
+    } catch (NotImplementedException e) {
+      assertTrue(e.getMessage().contains("Unknown compartment class"));
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+
+  }
 
 }
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/ComplexAliasXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/ComplexAliasXmlParserTest.java
index c129a0ac83..2864a26ee2 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/ComplexAliasXmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/ComplexAliasXmlParserTest.java
@@ -7,6 +7,7 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
+import lcsb.mapviewer.common.Configuration;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerTestFunctions;
 import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerComplexSpecies;
@@ -15,66 +16,74 @@ import lcsb.mapviewer.model.map.model.ModelFullIndexed;
 import lcsb.mapviewer.model.map.species.Complex;
 
 public class ComplexAliasXmlParserTest extends CellDesignerTestFunctions {
-	Model													model;
-	private ComplexAliasXmlParser	parser;
-	CellDesignerElementCollection	elements;
+  Model model;
+  private ComplexAliasXmlParser parser;
+  CellDesignerElementCollection elements;
 
-	@Before
-	public void setUp() throws Exception {
-		model = new ModelFullIndexed(null);
-		elements = new CellDesignerElementCollection();
-		parser = new ComplexAliasXmlParser(elements, model);
-	}
+  @Before
+  public void setUp() throws Exception {
+    model = new ModelFullIndexed(null);
+    elements = new CellDesignerElementCollection();
+    parser = new ComplexAliasXmlParser(elements, model);
+  }
 
-	@After
-	public void tearDown() throws Exception {
-	}
+  @After
+  public void tearDown() throws Exception {
+  }
 
-	@Test
-	public void testToXml() throws Exception {
-		try {
-			elements.addElement(new CellDesignerComplexSpecies("s2597"));
-			String xmlString = readFile("testFiles/xmlNodeTestExamples/cd_complex_alias.xml");
-			Complex alias = (Complex) parser.parseXmlAlias(xmlString);
-			assertEquals(0, getWarnings().size());
-			String xmlString2 = parser.toXml(alias);
-			assertNotNull(xmlString2);
+  @Test
+  public void testToXml() throws Exception {
+    try {
+      Complex complex = createComplex();
+      String xmlString = parser.toXml(complex);
+      assertNotNull(xmlString);
 
-			elements.addElement(new CellDesignerComplexSpecies(elements.getElementId(alias)));
-			Complex alias2 = (Complex) parser.parseXmlAlias(xmlString2);
-			assertEquals(0, getWarnings().size());
+      elements.addElement(new CellDesignerComplexSpecies(elements.getElementId(complex)));
+      Complex complexFromXml = parser.parseXmlAlias(xmlString);
+      assertEquals(0, getWarnings().size());
 
-			assertEquals(alias.getElementId(), alias2.getElementId());
-			assertNotNull(alias.getName());
-			assertEquals(alias.getFontSize(), alias2.getFontSize(), 1e-6);
-			assertEquals(alias.getHeight(), alias2.getHeight(), 1e-6);
-			assertEquals(alias.getWidth(), alias2.getWidth(), 1e-6);
-			assertEquals(alias.getX(), alias2.getX(), 1e-6);
-			assertEquals(alias.getY(), alias2.getY(), 1e-6);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
+      assertEquals(complex.getElementId(), complexFromXml.getElementId());
+      assertNotNull(complex.getName());
+      assertEquals(complex.getFontSize(), complexFromXml.getFontSize(), Configuration.EPSILON);
+      assertEquals(complex.getHeight(), complexFromXml.getHeight(), Configuration.EPSILON);
+      assertEquals(complex.getWidth(), complexFromXml.getWidth(), Configuration.EPSILON);
+      assertEquals(complex.getX(), complexFromXml.getX(), Configuration.EPSILON);
+      assertEquals(complex.getY(), complexFromXml.getY(), Configuration.EPSILON);
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
 
-	@Test
-	public void testParseXmlAliasNode() throws Exception {
-		try {
-			elements.addElement(new CellDesignerComplexSpecies("s2597"));
+  private Complex createComplex() {
+    Complex complex = new Complex("id");
+    complex.setFontSize(13.5);
+    complex.setHeight(90);
+    complex.setWidth(80);
+    complex.setName("112");
+    complex.setX(32);
+    complex.setY(42);
+    return complex;
+  }
 
-			String xmlString = readFile("testFiles/xmlNodeTestExamples/cd_complex_alias.xml");
-			Complex alias = (Complex) parser.parseXmlAlias(xmlString);
-			assertEquals(0, getWarnings().size());
-			assertEquals(false, alias.getActivity());
-			assertEquals("csa1", alias.getElementId());
-			assertEquals(12.0, alias.getFontSize(), 1e-6);
-			assertEquals(120.0, alias.getHeight(), 1e-6);
-			assertEquals(100.0, alias.getWidth(), 1e-6);
-			assertEquals(744.0, alias.getX(), 1e-6);
-			assertEquals(0.0, alias.getY(), 1e-6);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
+  @Test
+  public void testParseXmlAliasNode() throws Exception {
+    try {
+      elements.addElement(new CellDesignerComplexSpecies("s2597"));
+
+      String xmlString = readFile("testFiles/xmlNodeTestExamples/cd_complex_alias.xml");
+      Complex alias = (Complex) parser.parseXmlAlias(xmlString);
+      assertEquals(0, getWarnings().size());
+      assertEquals(false, alias.getActivity());
+      assertEquals("csa1", alias.getElementId());
+      assertEquals(12.0, alias.getFontSize(), Configuration.EPSILON);
+      assertEquals(120.0, alias.getHeight(), Configuration.EPSILON);
+      assertEquals(100.0, alias.getWidth(), Configuration.EPSILON);
+      assertEquals(744.0, alias.getX(), Configuration.EPSILON);
+      assertEquals(0.0, alias.getY(), Configuration.EPSILON);
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
 }
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/SpeciesAliasXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/SpeciesAliasXmlParserTest.java
index eb9952801d..64bacf8376 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/SpeciesAliasXmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/alias/SpeciesAliasXmlParserTest.java
@@ -27,300 +27,310 @@ import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelData;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
 import lcsb.mapviewer.model.map.species.Complex;
+import lcsb.mapviewer.model.map.species.GenericProtein;
 import lcsb.mapviewer.model.map.species.Species;
 
 public class SpeciesAliasXmlParserTest extends CellDesignerTestFunctions {
-	static Logger									logger									= Logger.getLogger(SpeciesAliasXmlParser.class);
-
-	Model													model;
-	private SpeciesAliasXmlParser	parser;
-
-	private String								testCompartmentAliasId2	= "s3";
-	private String								testCompartmentAliasId	= "s4";
-	private String								testSpeciesId						= "s5";
-	private String								testAliasId							= "s6";
-	CellDesignerElementCollection	elements;
-
-	@Before
-	public void setUp() throws Exception {
-		elements = new CellDesignerElementCollection();
-
-		model = createStubModel();
-
-		CellDesignerGenericProtein species = new CellDesignerGenericProtein();
-		species.setElementId("s78");
-		elements.addElement(species);
-
-		parser = new SpeciesAliasXmlParser(elements, model);
-	}
-
-	private Model createStubModel() {
-		Model model = new ModelFullIndexed(null);
-		model.addElement(new Compartment("ca1"));
-		return model;
-	}
-
-	@After
-	public void tearDown() throws Exception {
-	}
-
-	@Test
-	public void testParseXmlAliasNode() throws Exception {
-		try {
-			String xmlString = readFile("testFiles/xmlNodeTestExamples/species_alias.xml");
-			Species alias = parser.parseXmlAlias(xmlString);
-			assertEquals(0, getWarnings().size());
-			assertEquals(false, alias.getActivity());
-			assertEquals("sa36", alias.getElementId());
-			assertEquals(16.0, alias.getFontSize(), 1e-6);
-			assertEquals(25.0, alias.getHeight(), 1e-6);
-			assertEquals(80, alias.getWidth(), 1e-6);
-			assertEquals(11813.0, alias.getX(), 1e-6);
-			assertEquals(2840.5, alias.getY(), 1e-6);
-			assertEquals("ca1", alias.getCompartment().getElementId());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testParseXmlAliasFont() throws Exception {
-		try {
-			String xmlString = readFile("testFiles/xmlNodeTestExamples/species_alias_with_font.xml");
-			Species alias = parser.parseXmlAlias(xmlString);
-			assertEquals(30.0, alias.getFontSize(), 1e-6);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testToXml() throws Exception {
-		try {
-			String xmlString = readFile("testFiles/xmlNodeTestExamples/species_alias.xml");
-			Species alias = parser.parseXmlAlias(xmlString);
-			assertEquals(0, getWarnings().size());
-			String xmlString2 = parser.toXml(alias);
-			assertNotNull(xmlString2);
-
-			elements.addElement(new CellDesignerGenericProtein(elements.getElementId(alias)));
-			
-			Model model2 = createStubModel();
-			
-			parser = new SpeciesAliasXmlParser(elements, model2);
-			Species alias2 = parser.parseXmlAlias(xmlString2);
-			assertEquals(0, getWarnings().size());
-
-			assertEquals(alias.getActivity(), alias2.getActivity());
-			assertEquals(alias.getElementId(), alias2.getElementId());
-			assertEquals(alias.getFontSize(), alias2.getFontSize(), 1e-6);
-			assertEquals(alias.getHeight(), alias2.getHeight(), 1e-6);
-			assertEquals(alias.getWidth(), alias2.getWidth(), 1e-6);
-			assertEquals(alias.getX(), alias2.getX(), 1e-6);
-			assertEquals(alias.getY(), alias2.getY(), 1e-6);
-			assertEquals(alias.getCompartment().getElementId(), alias2.getCompartment().getElementId());
-			assertEquals("Alias state label different", alias.getStateLabel(), alias2.getStateLabel());
-			assertEquals("Alias state prefix different", alias.getStatePrefix(), alias2.getStatePrefix());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testToXmlAliasWithStateNode() throws Exception {
-		try {
-			String xmlString = readFile("testFiles/xmlNodeTestExamples/species_alias_with_state.xml");
-			Species alias = parser.parseXmlAlias(xmlString);
-			assertEquals(0, getWarnings().size());
-			String xmlString2 = parser.toXml(alias);
-			assertNotNull(xmlString2);
-
-			elements.addElement(new CellDesignerGenericProtein(elements.getElementId(alias)));
-			Species alias2 = parser.parseXmlAlias(xmlString2);
-			assertEquals(0, getWarnings().size());
-
-			assertEquals("Alias state label different", alias.getStateLabel(), alias2.getStateLabel());
-			assertEquals("Alias state prefix different", alias.getStatePrefix(), alias2.getStatePrefix());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testParseXmlAliasWithStateNode() throws Exception {
-		try {
-			String xmlString = readFile("testFiles/xmlNodeTestExamples/species_alias_with_state.xml");
-			Species alias = parser.parseXmlAlias(xmlString);
-			assertEquals(0, getWarnings().size());
-			assertNotNull(alias);
-			assertEquals("test", alias.getStateLabel());
-			assertEquals("free input", alias.getStatePrefix());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testParseXmlAliasWithoutStateNode() throws Exception {
-		try {
-			String xmlString = readFile("testFiles/xmlNodeTestExamples/species_alias_without_state.xml");
-			Species alias = parser.parseXmlAlias(xmlString);
-			assertEquals(0, getWarnings().size());
-			assertNotNull(alias);
-			assertNull(alias.getStateLabel());
-			assertNull(alias.getStatePrefix());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testParseInvalidXmlAliasNode() throws Exception {
-		try {
-			String xmlString = readFile("testFiles/invalid/species_alias.xml");
-			parser.parseXmlAlias(xmlString);
-			fail("Exception expected");
-		} catch (InvalidXmlSchemaException e) {
-			assertTrue(e.getMessage().contains("Unknown species for alias"));
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testParseInvalidXmlAliasNode2() throws Exception {
-		try {
-			String xmlString = readFile("testFiles/invalid/species_alias2.xml");
-			parser.parseXmlAlias(xmlString);
-			fail("Exception expected");
-		} catch (InvalidXmlSchemaException e) {
-			assertTrue(e.getMessage().contains("Unknown element of celldesigner:speciesAlias"));
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testParseInvalidXmlAliasNode3() throws Exception {
-		try {
-			String xmlString = readFile("testFiles/invalid/species_alias3.xml");
-			parser.parseXmlAlias(xmlString);
-			fail("Exception expected");
-		} catch (InvalidXmlSchemaException e) {
-			assertTrue(e.getMessage().contains("No view in Alias"));
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testParseInvalidXmlAliasNode4() throws Exception {
-		try {
-			parser = new SpeciesAliasXmlParser(elements, model);
-
-			String xmlString = readFile("testFiles/invalid/species_alias4.xml");
-			parser.parseXmlAlias(xmlString);
-			fail("Exception expected");
-		} catch (InvalidXmlSchemaException e) {
-			assertTrue(e.getMessage().contains("CompartmentAlias does not exist"));
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testParseInvalidXmlAliasNode5() throws Exception {
-		try {
-			parser = new SpeciesAliasXmlParser(elements, model);
-
-			String xmlString = readFile("testFiles/invalid/species_alias5.xml");
-			parser.parseXmlAlias(xmlString);
-			fail("Exception expected");
-		} catch (InvalidXmlSchemaException e) {
-			assertTrue(e.getMessage().contains("ComplexAlias does not exist"));
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testParseInvalidXmlAliasNode6() throws Exception {
-		try {
-			parser = new SpeciesAliasXmlParser(elements, model);
-
-			String xmlString = readFile("testFiles/invalid/species_alias6.xml");
-			parser.parseXmlAlias(xmlString);
-			fail("Exception expected");
-		} catch (NotImplementedException e) {
-			assertTrue(e.getMessage().contains("Unkown alias state"));
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testToXmlWithUnknownCompartment() throws Exception {
-		try {
-			Model model = Mockito.mock(ModelFullIndexed.class);
-			ModelData md = new ModelData();
-			md.setModel(model);
-
-			Compartment ca2 = new Compartment(testCompartmentAliasId2);
-			ca2.setElementId(testCompartmentAliasId2);
-			ca2.setX(6);
-			ca2.setY(6);
-			ca2.setWidth(190);
-			ca2.setHeight(190);
-
-			Compartment ca = new Compartment(testCompartmentAliasId);
-			ca.setElementId(testCompartmentAliasId);
-			ca.setX(5);
-			ca.setY(5);
-			ca.setWidth(200);
-			ca.setHeight(200);
-
-			List<Compartment> list = new ArrayList<>();
-			list.add(ca);
-			list.add(ca2);
-
-			// ensure that we return list (firts bigger compartment, then smaller)
-			when(model.getCompartments()).thenReturn(list);
-			when(model.getModelData()).thenReturn(md);
-
-			Species alias = new Complex(testAliasId);
-			alias.setX(10);
-			alias.setY(10);
-			alias.setWidth(100);
-			alias.setHeight(100);
-			alias.setModel(model);
-			alias.setActivity(true);
-
-			elements.addElement(new CellDesignerComplexSpecies(testSpeciesId));
-			model.addElement(alias);
-			SpeciesAliasXmlParser parser = new SpeciesAliasXmlParser(elements, model);
-
-			String xml = parser.toXml(alias);
-
-			assertTrue(xml.contains(testAliasId));
-			assertTrue(xml.contains(testCompartmentAliasId2));
-			assertTrue(xml.contains("<celldesigner:activity>active</celldesigner:activity>"));
-
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
+  static Logger logger = Logger.getLogger(SpeciesAliasXmlParser.class);
+
+  Model model;
+  private SpeciesAliasXmlParser parser;
+
+  private String testCompartmentAliasId2 = "s3";
+  private String testCompartmentAliasId = "s4";
+  private String testSpeciesId = "s5";
+  private String testAliasId = "s6";
+  CellDesignerElementCollection elements;
+
+  @Before
+  public void setUp() throws Exception {
+    elements = new CellDesignerElementCollection();
+
+    model = createStubModel();
+
+    CellDesignerGenericProtein species = new CellDesignerGenericProtein();
+    species.setElementId("s78");
+    elements.addElement(species);
+
+    parser = new SpeciesAliasXmlParser(elements, model);
+  }
+
+  private Model createStubModel() {
+    Model model = new ModelFullIndexed(null);
+    model.addElement(new Compartment("ca1"));
+    return model;
+  }
+
+  @After
+  public void tearDown() throws Exception {
+  }
+
+  @Test
+  public void testParseXmlAliasNode() throws Exception {
+    try {
+      String xmlString = readFile("testFiles/xmlNodeTestExamples/species_alias.xml");
+      Species alias = parser.parseXmlAlias(xmlString);
+      assertEquals(0, getWarnings().size());
+      assertEquals(false, alias.getActivity());
+      assertEquals("sa36", alias.getElementId());
+      assertEquals(16.0, alias.getFontSize(), 1e-6);
+      assertEquals(25.0, alias.getHeight(), 1e-6);
+      assertEquals(80, alias.getWidth(), 1e-6);
+      assertEquals(11813.0, alias.getX(), 1e-6);
+      assertEquals(2840.5, alias.getY(), 1e-6);
+      assertEquals("ca1", alias.getCompartment().getElementId());
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void testParseXmlAliasFont() throws Exception {
+    try {
+      String xmlString = readFile("testFiles/xmlNodeTestExamples/species_alias_with_font.xml");
+      Species alias = parser.parseXmlAlias(xmlString);
+      assertEquals(30.0, alias.getFontSize(), 1e-6);
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void testToXml() throws Exception {
+    try {
+      Model model2 = createStubModel();
+      Species protein = createProtein();
+      protein.setCompartment(model2.getCompartments().iterator().next());
+      elements.addElement(new CellDesignerGenericProtein(elements.getElementId(protein)));
+      String xmlString = parser.toXml(protein);
+
+      parser = new SpeciesAliasXmlParser(elements, model2);
+      Species alias2 = parser.parseXmlAlias(xmlString);
+      assertEquals(0, getWarnings().size());
+
+      assertEquals(protein.getActivity(), alias2.getActivity());
+      assertEquals(protein.getElementId(), alias2.getElementId());
+      assertEquals(protein.getFontSize(), alias2.getFontSize(), 1e-6);
+      assertEquals(protein.getHeight(), alias2.getHeight(), 1e-6);
+      assertEquals(protein.getWidth(), alias2.getWidth(), 1e-6);
+      assertEquals(protein.getX(), alias2.getX(), 1e-6);
+      assertEquals(protein.getY(), alias2.getY(), 1e-6);
+      assertEquals(protein.getCompartment().getElementId(), alias2.getCompartment().getElementId());
+      assertEquals("Alias state label different", protein.getStateLabel(), alias2.getStateLabel());
+      assertEquals("Alias state prefix different", protein.getStatePrefix(), alias2.getStatePrefix());
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  private Species createProtein() {
+    GenericProtein protein = new GenericProtein("id");
+    protein.setActivity(true);
+    protein.setFontSize(4);
+    protein.setHeight(10);
+    protein.setWidth(20);
+    protein.setX(30);
+    protein.setY(40);
+    protein.setStateLabel("xxx");
+    protein.setStatePrefix("yyy");
+    return protein;
+  }
+
+  @Test
+  public void testToXmlAliasWithStateNode() throws Exception {
+    try {
+      Model model = createStubModel();
+      Species protein = createProtein();
+      protein.setState("sssstate");
+      protein.setCompartment(model.getCompartments().iterator().next());
+      elements.addElement(new CellDesignerGenericProtein(elements.getElementId(protein)));
+      String xmlString = parser.toXml(protein);
+
+      Species alias2 = parser.parseXmlAlias(xmlString);
+      assertEquals(0, getWarnings().size());
+
+      assertEquals("Alias state label different", protein.getStateLabel(), alias2.getStateLabel());
+      assertEquals("Alias state prefix different", protein.getStatePrefix(), alias2.getStatePrefix());
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void testParseXmlAliasWithStateNode() throws Exception {
+    try {
+      String xmlString = readFile("testFiles/xmlNodeTestExamples/species_alias_with_state.xml");
+      Species alias = parser.parseXmlAlias(xmlString);
+      assertEquals(0, getWarnings().size());
+      assertNotNull(alias);
+      assertEquals("test", alias.getStateLabel());
+      assertEquals("free input", alias.getStatePrefix());
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void testParseXmlAliasWithoutStateNode() throws Exception {
+    try {
+      String xmlString = readFile("testFiles/xmlNodeTestExamples/species_alias_without_state.xml");
+      Species alias = parser.parseXmlAlias(xmlString);
+      assertEquals(0, getWarnings().size());
+      assertNotNull(alias);
+      assertNull(alias.getStateLabel());
+      assertNull(alias.getStatePrefix());
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void testParseInvalidXmlAliasNode() throws Exception {
+    try {
+      String xmlString = readFile("testFiles/invalid/species_alias.xml");
+      parser.parseXmlAlias(xmlString);
+      fail("Exception expected");
+    } catch (InvalidXmlSchemaException e) {
+      assertTrue(e.getMessage().contains("Unknown species for alias"));
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void testParseInvalidXmlAliasNode2() throws Exception {
+    try {
+      String xmlString = readFile("testFiles/invalid/species_alias2.xml");
+      parser.parseXmlAlias(xmlString);
+      fail("Exception expected");
+    } catch (InvalidXmlSchemaException e) {
+      assertTrue(e.getMessage().contains("Unknown element of celldesigner:speciesAlias"));
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void testParseInvalidXmlAliasNode3() throws Exception {
+    try {
+      String xmlString = readFile("testFiles/invalid/species_alias3.xml");
+      parser.parseXmlAlias(xmlString);
+      fail("Exception expected");
+    } catch (InvalidXmlSchemaException e) {
+      assertTrue(e.getMessage().contains("No view in Alias"));
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void testParseInvalidXmlAliasNode4() throws Exception {
+    try {
+      parser = new SpeciesAliasXmlParser(elements, model);
+
+      String xmlString = readFile("testFiles/invalid/species_alias4.xml");
+      parser.parseXmlAlias(xmlString);
+      fail("Exception expected");
+    } catch (InvalidXmlSchemaException e) {
+      assertTrue(e.getMessage().contains("CompartmentAlias does not exist"));
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void testParseInvalidXmlAliasNode5() throws Exception {
+    try {
+      parser = new SpeciesAliasXmlParser(elements, model);
+
+      String xmlString = readFile("testFiles/invalid/species_alias5.xml");
+      parser.parseXmlAlias(xmlString);
+      fail("Exception expected");
+    } catch (InvalidXmlSchemaException e) {
+      assertTrue(e.getMessage().contains("ComplexAlias does not exist"));
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void testParseInvalidXmlAliasNode6() throws Exception {
+    try {
+      parser = new SpeciesAliasXmlParser(elements, model);
+
+      String xmlString = readFile("testFiles/invalid/species_alias6.xml");
+      parser.parseXmlAlias(xmlString);
+      fail("Exception expected");
+    } catch (NotImplementedException e) {
+      assertTrue(e.getMessage().contains("Unkown alias state"));
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void testToXmlWithUnknownCompartment() throws Exception {
+    try {
+      Model model = Mockito.mock(ModelFullIndexed.class);
+      ModelData md = new ModelData();
+      md.setModel(model);
+
+      Compartment ca2 = new Compartment(testCompartmentAliasId2);
+      ca2.setElementId(testCompartmentAliasId2);
+      ca2.setX(6);
+      ca2.setY(6);
+      ca2.setWidth(190);
+      ca2.setHeight(190);
+
+      Compartment ca = new Compartment(testCompartmentAliasId);
+      ca.setElementId(testCompartmentAliasId);
+      ca.setX(5);
+      ca.setY(5);
+      ca.setWidth(200);
+      ca.setHeight(200);
+
+      List<Compartment> list = new ArrayList<>();
+      list.add(ca);
+      list.add(ca2);
+
+      // ensure that we return list (firts bigger compartment, then smaller)
+      when(model.getCompartments()).thenReturn(list);
+      when(model.getModelData()).thenReturn(md);
+
+      Species alias = new Complex(testAliasId);
+      alias.setX(10);
+      alias.setY(10);
+      alias.setWidth(100);
+      alias.setHeight(100);
+      alias.setModel(model);
+      alias.setActivity(true);
+
+      elements.addElement(new CellDesignerComplexSpecies(testSpeciesId));
+      model.addElement(alias);
+      SpeciesAliasXmlParser parser = new SpeciesAliasXmlParser(elements, model);
+
+      String xml = parser.toXml(alias);
+
+      assertTrue(xml.contains(testAliasId));
+      assertTrue(xml.contains(testCompartmentAliasId2));
+      assertTrue(xml.contains("<celldesigner:activity>active</celldesigner:activity>"));
+
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
 
 }
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXmlTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXmlTest.java
index 6b027c8e0f..5828d1ac3e 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXmlTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXmlTest.java
@@ -452,7 +452,7 @@ public class ReactionFromXmlTest extends CellDesignerTestFunctions {
     try {
       // test situation when createProperTypeReaction returns reaction of
       // unknown type
-      ReactionFromXml parser = new ReactionFromXml(false) {
+      ReactionFromXml parser = new ReactionFromXml(null, false) {
         Reaction createProperTypeReaction(String type, Reaction result) throws UnknownReactionClassException {
           return result;
         }
@@ -483,7 +483,7 @@ public class ReactionFromXmlTest extends CellDesignerTestFunctions {
         }
       }
 
-      ReactionFromXml parser = new ReactionFromXml(false) {
+      ReactionFromXml parser = new ReactionFromXml(null, false) {
         Reaction createProperTypeReaction(String type, Reaction result) throws UnknownReactionClassException {
           return new NewReactionType(result);
         }
@@ -507,7 +507,7 @@ public class ReactionFromXmlTest extends CellDesignerTestFunctions {
       // test situation when createOperatorsForTwoProductReaction encounter
       // reaction with two many base reactants
 
-      ReactionFromXml parser = new ReactionFromXml(false) {
+      ReactionFromXml parser = new ReactionFromXml(null, false) {
         Reaction createProperTypeReaction(String type, Reaction result) throws UnknownReactionClassException {
           Reaction r = super.createProperTypeReaction(type, result);
           r.addReactant(new Reactant());
@@ -533,7 +533,7 @@ public class ReactionFromXmlTest extends CellDesignerTestFunctions {
       // test situation when createOperatorsForTwoProductReaction encounter
       // reaction with two many base products
 
-      ReactionFromXml parser = new ReactionFromXml(false) {
+      ReactionFromXml parser = new ReactionFromXml(null, false) {
         Reaction createProperTypeReaction(String type, Reaction result) throws UnknownReactionClassException {
           Reaction r = super.createProperTypeReaction(type, result);
           r.addProduct(new Product());
@@ -567,7 +567,7 @@ public class ReactionFromXmlTest extends CellDesignerTestFunctions {
         }
       }
 
-      ReactionFromXml parser = new ReactionFromXml(false) {
+      ReactionFromXml parser = new ReactionFromXml(null, false) {
         Reaction createProperTypeReaction(String type, Reaction result) throws UnknownReactionClassException {
           return new NewReactionType(result);
         }
@@ -590,7 +590,7 @@ public class ReactionFromXmlTest extends CellDesignerTestFunctions {
       // test situation when createOperatorsForTwoReactantReaction encounter
       // reaction with two many base reactants
 
-      ReactionFromXml parser = new ReactionFromXml(false) {
+      ReactionFromXml parser = new ReactionFromXml(null, false) {
         Reaction createProperTypeReaction(String type, Reaction result) throws UnknownReactionClassException {
           Reaction r = super.createProperTypeReaction(type, result);
           r.addReactant(new Reactant());
@@ -615,7 +615,7 @@ public class ReactionFromXmlTest extends CellDesignerTestFunctions {
       // test situation when createOperatorsForTwoReactantReaction encounter
       // reaction with two many base products
 
-      ReactionFromXml parser = new ReactionFromXml(false) {
+      ReactionFromXml parser = new ReactionFromXml(null, false) {
         Reaction createProperTypeReaction(String type, Reaction result) throws UnknownReactionClassException {
           Reaction r = super.createProperTypeReaction(type, result);
           r.addProduct(new Product());
@@ -637,7 +637,7 @@ public class ReactionFromXmlTest extends CellDesignerTestFunctions {
   @Test
   public void testParseInvalidEditPointsString() throws Exception {
     try {
-      ReactionFromXml parser = new ReactionFromXml(false);
+      ReactionFromXml parser = new ReactionFromXml(null, false);
 
       parser.parseEditPointsString("1");
       fail("Exception expected");
@@ -652,7 +652,7 @@ public class ReactionFromXmlTest extends CellDesignerTestFunctions {
   @Test
   public void testParseInvalidEditPointsString2() throws Exception {
     try {
-      ReactionFromXml parser = new ReactionFromXml(false);
+      ReactionFromXml parser = new ReactionFromXml(null, false);
 
       parser.parseEditPointsString("1,Infinity");
       fail("Exception expected");
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionParserTests.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionParserTests.java
index f9f7d55853..a62c5c340e 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionParserTests.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionParserTests.java
@@ -1856,4 +1856,16 @@ public class ReactionParserTests extends CellDesignerTestFunctions {
     }
   }
 
+  @Test
+  public void testKinetcsWithCompartment() throws Exception {
+    try {
+      Model model = getModelForFile("testFiles/reactions/kinetics_with_compartment.xml");
+      Reaction reaction = model.getReactionByReactionId("re1");
+      assertNotNull(reaction.getKinetics());
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
 }
diff --git a/converter-CellDesigner/testFiles/reactions/kinetics_with_compartment.xml b/converter-CellDesigner/testFiles/reactions/kinetics_with_compartment.xml
new file mode 100644
index 0000000000..5bc746a066
--- /dev/null
+++ b/converter-CellDesigner/testFiles/reactions/kinetics_with_compartment.xml
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level2/version4" xmlns:celldesigner="http://www.sbml.org/2001/ns/celldesigner" level="2" version="4">
+<model metaid="untitled" id="untitled">
+<annotation>
+<celldesigner:extension>
+<celldesigner:modelVersion>4.0</celldesigner:modelVersion>
+<celldesigner:modelDisplay sizeX="600" sizeY="400"/>
+<celldesigner:listOfCompartmentAliases>
+<celldesigner:compartmentAlias id="ca1" compartment="c1">
+<celldesigner:class>SQUARE</celldesigner:class>
+<celldesigner:bounds x="46.0" y="105.0" w="413.0" h="201.0"/>
+<celldesigner:namePoint x="244.0" y="270.5"/>
+<celldesigner:doubleLine thickness="12.0" outerWidth="2.0" innerWidth="1.0"/>
+<celldesigner:paint color="ffcccc00" scheme="Color"/>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:compartmentAlias>
+</celldesigner:listOfCompartmentAliases>
+<celldesigner:listOfComplexSpeciesAliases/>
+<celldesigner:listOfSpeciesAliases>
+<celldesigner:speciesAlias id="sa1" species="s1" compartmentAlias="ca1">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="67.0" y="151.0" w="80.0" h="40.0"/>
+<celldesigner:font size="12"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="21.0" y="46.0"/>
+<celldesigner:boxSize width="80.0" height="40.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa2" species="s2" compartmentAlias="ca1">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="296.0" y="174.0" w="80.0" h="40.0"/>
+<celldesigner:font size="12"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="250.0" y="69.0"/>
+<celldesigner:boxSize width="80.0" height="40.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:speciesAlias>
+</celldesigner:listOfSpeciesAliases>
+<celldesigner:listOfGroups/>
+<celldesigner:listOfProteins>
+<celldesigner:protein id="pr1" name="s1" type="GENERIC"/>
+<celldesigner:protein id="pr2" name="s2" type="GENERIC"/>
+</celldesigner:listOfProteins>
+<celldesigner:listOfGenes/>
+<celldesigner:listOfRNAs/>
+<celldesigner:listOfAntisenseRNAs/>
+<celldesigner:listOfLayers/>
+<celldesigner:listOfBlockDiagrams/>
+</celldesigner:extension>
+</annotation>
+<listOfUnitDefinitions>
+<unitDefinition metaid="substance" id="substance" name="substance">
+<listOfUnits>
+<unit metaid="CDMT00004" kind="mole"/>
+</listOfUnits>
+</unitDefinition>
+<unitDefinition metaid="volume" id="volume" name="volume">
+<listOfUnits>
+<unit metaid="CDMT00005" kind="litre"/>
+</listOfUnits>
+</unitDefinition>
+<unitDefinition metaid="area" id="area" name="area">
+<listOfUnits>
+<unit metaid="CDMT00006" kind="metre" exponent="2"/>
+</listOfUnits>
+</unitDefinition>
+<unitDefinition metaid="length" id="length" name="length">
+<listOfUnits>
+<unit metaid="CDMT00007" kind="metre"/>
+</listOfUnits>
+</unitDefinition>
+<unitDefinition metaid="time" id="time" name="time">
+<listOfUnits>
+<unit metaid="CDMT00008" kind="second"/>
+</listOfUnits>
+</unitDefinition>
+</listOfUnitDefinitions>
+<listOfCompartments>
+<compartment metaid="default" id="default" size="1" units="volume"/>
+<compartment metaid="c1" id="c1" name="c1" size="1" units="volume" outside="default">
+<annotation>
+<celldesigner:extension>
+<celldesigner:name>c1</celldesigner:name>
+</celldesigner:extension>
+</annotation>
+</compartment>
+</listOfCompartments>
+<listOfSpecies>
+<species metaid="s1" id="s1" name="s1" compartment="c1" initialAmount="0">
+<annotation>
+<celldesigner:extension>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr1</celldesigner:proteinReference>
+</celldesigner:speciesIdentity>
+</celldesigner:extension>
+</annotation>
+</species>
+<species metaid="s2" id="s2" name="s2" compartment="c1" initialAmount="0">
+<annotation>
+<celldesigner:extension>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr2</celldesigner:proteinReference>
+</celldesigner:speciesIdentity>
+</celldesigner:extension>
+</annotation>
+</species>
+</listOfSpecies>
+<listOfReactions>
+<reaction metaid="re1" id="re1" reversible="false" fast="false">
+<annotation>
+<celldesigner:extension>
+<celldesigner:reactionType>STATE_TRANSITION</celldesigner:reactionType>
+<celldesigner:baseReactants>
+<celldesigner:baseReactant species="s1" alias="sa1"/>
+</celldesigner:baseReactants>
+<celldesigner:baseProducts>
+<celldesigner:baseProduct species="s2" alias="sa2"/>
+</celldesigner:baseProducts>
+<celldesigner:connectScheme connectPolicy="direct" rectangleIndex="0">
+<celldesigner:listOfLineDirection>
+<celldesigner:lineDirection index="0" value="unknown"/>
+</celldesigner:listOfLineDirection>
+</celldesigner:connectScheme>
+<celldesigner:line width="1.0" color="ff000000"/>
+</celldesigner:extension>
+</annotation>
+<listOfReactants>
+<speciesReference metaid="CDMT00001" species="s1">
+<annotation>
+<celldesigner:extension>
+<celldesigner:alias>sa1</celldesigner:alias>
+</celldesigner:extension>
+</annotation>
+</speciesReference>
+</listOfReactants>
+<listOfProducts>
+<speciesReference metaid="CDMT00002" species="s2">
+<annotation>
+<celldesigner:extension>
+<celldesigner:alias>sa2</celldesigner:alias>
+</celldesigner:extension>
+</annotation>
+</speciesReference>
+</listOfProducts>
+<kineticLaw metaid="CDMT00003">
+<math xmlns="http://www.w3.org/1998/Math/MathML">
+<apply>
+<divide/>
+<apply>
+<times/>
+<ci> c1 </ci>
+<apply>
+<plus/>
+<ci> s1 </ci>
+<ci> s2 </ci>
+</apply>
+</apply>
+<cn type="integer"> 2 </cn>
+</apply>
+</math>
+</kineticLaw>
+</reaction>
+</listOfReactions>
+</model>
+</sbml>
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/Element.java b/model/src/main/java/lcsb/mapviewer/model/map/species/Element.java
index 190f1c84fb..8b7657a831 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/Element.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/species/Element.java
@@ -351,7 +351,7 @@ public abstract class Element implements BioEntity, Serializable, SbmlArgument {
    * Parse and set font size.
    * 
    * @param string
-   *          text representing font sizee
+   *          text representing font size
    * @see fontSize
    */
   public void setFontSize(String string) {
-- 
GitLab