diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/services/MeSHParser.java b/annotation/src/main/java/lcsb/mapviewer/annotation/services/MeSHParser.java
index 15342408b1b473567e5aed50b38aa5fcce21d6f8..51dd938cbf68221aa537876b6ec514bd66453480 100644
--- a/annotation/src/main/java/lcsb/mapviewer/annotation/services/MeSHParser.java
+++ b/annotation/src/main/java/lcsb/mapviewer/annotation/services/MeSHParser.java
@@ -179,6 +179,13 @@ public class MeSHParser extends CachableInterface implements IExternalService {
 		}
 	}
 
+	/**
+	 * Extracts name from gson object.
+	 * 
+	 * @param gsonObject
+	 *          gson to process
+	 * @return name of {@link MeSH} entry
+	 */
 	private String getName(Map<?, ?> gsonObject) {
 		StringMap<?> descriptorTag = (StringMap<?>) gsonObject.get("DescriptorName");
 		if (descriptorTag == null) {
@@ -187,6 +194,13 @@ public class MeSHParser extends CachableInterface implements IExternalService {
 		return (String) (((StringMap<?>) descriptorTag.get("String")).get("t"));
 	}
 
+	/**
+	 * Extracts Mesh id name from gson object.
+	 * 
+	 * @param gsonObject
+	 *          gson to process
+	 * @return id of {@link MeSH} entry
+	 */
 	private String getId(Map<?, ?> gsonObject) {
 		StringMap<?> descriptorTag = (StringMap<?>) gsonObject.get("DescriptorUI");
 		if (descriptorTag == null) {
@@ -195,11 +209,25 @@ public class MeSHParser extends CachableInterface implements IExternalService {
 		return (String) descriptorTag.get("t");
 	}
 
+	/**
+	 * Extracts Mesh term description from gson object.
+	 * 
+	 * @param gsonObject
+	 *          gson to process
+	 * @return descriptionof {@link MeSH} entry
+	 */
 	private String getDescription(Map<?, ?> gsonObject) {
 		StringMap<?> concepts = (StringMap<?>) gsonObject.get("_generated");
 		return (String) concepts.get("PreferredConceptScopeNote");
 	}
 
+	/**
+	 * Extracts list of synonyms from gson object.
+	 * 
+	 * @param gsonObject
+	 *          gson to process
+	 * @return synonyms of {@link MeSH} entry
+	 */
 	private Set<String> getSynonyms(Map<?, ?> gsonObject) {
 		Set<String> synonyms = new HashSet<>();
 		StringMap<?> concepts = (StringMap<?>) gsonObject.get("ConceptList");
diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/services/PubmedParser.java b/annotation/src/main/java/lcsb/mapviewer/annotation/services/PubmedParser.java
index 3a7d65c3169f06a0da280f4e0f2f1621c0f068bc..4c2ea656faff5c2618285c743db096871c2f513f 100644
--- a/annotation/src/main/java/lcsb/mapviewer/annotation/services/PubmedParser.java
+++ b/annotation/src/main/java/lcsb/mapviewer/annotation/services/PubmedParser.java
@@ -54,7 +54,7 @@ public class PubmedParser extends CachableInterface implements IExternalService
 	/**
 	 * Version of the remote API thnat is supported by this connecting class.
 	 */
-	static final String						 SUPPORTED_VERSION				= "5.0";
+	static final String						 SUPPORTED_VERSION				= "5.2.1";
 
 	/**
 	 * Connector used for accessing data from miriam registry.
diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/EnsemblAnnotator.java b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/EnsemblAnnotator.java
index 61233cb0aca326d933b0f12e53c571a93a0f3c09..4ac8160718ce1fe15a0f85b6cabbaed1ee1351f7 100644
--- a/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/EnsemblAnnotator.java
+++ b/annotation/src/main/java/lcsb/mapviewer/annotation/services/annotators/EnsemblAnnotator.java
@@ -41,7 +41,7 @@ public class EnsemblAnnotator extends ElementAnnotator implements IExternalServi
 	/**
 	 * Version of the rest API that is supported by this annotator.
 	 */
-	static final String					SUPPORTED_VERSION				 = "4.8";
+	static final String					SUPPORTED_VERSION				 = "6.0";
 
 	/**
 	 * Url address of ensembl restfull service.
diff --git a/commons/src/test/java/lcsb/mapviewer/common/TextFileUtilsTest.java b/commons/src/test/java/lcsb/mapviewer/common/TextFileUtilsTest.java
index a0136bd8eb8fde74ad2bfc11111754be20cbefb7..9eafbad9a8f86b6742fc2f51411852ddeeb96c1a 100644
--- a/commons/src/test/java/lcsb/mapviewer/common/TextFileUtilsTest.java
+++ b/commons/src/test/java/lcsb/mapviewer/common/TextFileUtilsTest.java
@@ -3,6 +3,7 @@ package lcsb.mapviewer.common;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
 
 import java.io.ByteArrayInputStream;
 import java.io.FileInputStream;
@@ -35,7 +36,7 @@ public class TextFileUtilsTest {
 					"#param2=value\n";
 
 			Map<String, String> params = TextFileUtils.getHeaderParametersFromFile(new ByteArrayInputStream(fileContent.getBytes(StandardCharsets.UTF_8)));
-			assertEquals(1, params.keySet().size());
+			assertTrue(params.keySet().size() >= 1);
 			assertNull(params.get("param2"));
 			assertEquals("value1", params.get("param1"));
 			assertNull(params.get("header"));
@@ -45,6 +46,7 @@ public class TextFileUtilsTest {
 			throw e;
 		}
 	}
+
 	@Test
 	public void testParseHeader() throws Exception {
 		try {
diff --git a/console/src/main/java/lcsb/mapviewer/run/LegendGenerator.java b/console/src/main/java/lcsb/mapviewer/run/LegendGenerator.java
index 9df1420f0ec98316d275ecea40f8b14f17fda233..bccf00ae7569ac8a525612ca6977ce6f265527c0 100644
--- a/console/src/main/java/lcsb/mapviewer/run/LegendGenerator.java
+++ b/console/src/main/java/lcsb/mapviewer/run/LegendGenerator.java
@@ -4,6 +4,8 @@ import java.awt.Desktop;
 import java.io.File;
 import java.io.IOException;
 
+import org.apache.log4j.Logger;
+
 import lcsb.mapviewer.commands.CopyCommand;
 import lcsb.mapviewer.converter.ConverterParams;
 import lcsb.mapviewer.converter.InvalidInputDataExecption;
@@ -13,8 +15,6 @@ import lcsb.mapviewer.converter.graphics.PngImageGenerator;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
 import lcsb.mapviewer.model.map.model.Model;
 
-import org.apache.log4j.Logger;
-
 /**
  * This class is responsible for creation of legend.PNG from CellDesigner file.
  * 
@@ -30,18 +30,21 @@ public class LegendGenerator {
 	 * 
 	 */
 	private enum LegendObject {
-//		/**
-//		 * First legend element.
-//		 */
-//		LEGEND_A("testFiles/legend/legend_5_2.xml", "legend_a.png", 50, 0, 600, 480),
-//		/**
-//		 * Second legend element.
-//		 */
-//		LEGEND_B("testFiles/legend/legend_4_3.xml", "legend_b.png", 920, 0, 600, 480),
-//		/**
-//		 * Third legend element.
-//		 */
-//		LEGEND_C("testFiles/legend/legend_4_4.xml", "legend_c.png", 500, 0, 600, 480),
+		// /**
+		// * First legend element.
+		// */
+		// LEGEND_A("testFiles/legend/legend_5_2.xml", "legend_a.png", 50, 0, 600,
+		// 480),
+		// /**
+		// * Second legend element.
+		// */
+		// LEGEND_B("testFiles/legend/legend_4_3.xml", "legend_b.png", 920, 0, 600,
+		// 480),
+		// /**
+		// * Third legend element.
+		// */
+		// LEGEND_C("testFiles/legend/legend_4_4.xml", "legend_c.png", 500, 0, 600,
+		// 480),
 		/**
 		 * Fourth legend element.
 		 */
@@ -50,27 +53,27 @@ public class LegendGenerator {
 		/**
 		 * File with the legend data in CellDEsigner format.
 		 */
-		private String	inputFile		= null;
+		private String	inputFile	 = null;
 		/**
 		 * Where the legend should be saved.
 		 */
-		private String	outputFile	= null;
+		private String	outputFile = null;
 		/**
 		 * X coordinate where the image in input file starts.
 		 */
-		private int			startX			= 0;
+		private int			startX		 = 0;
 		/**
 		 * Y coordinate where the image in input file starts.
 		 */
-		private int			startY			= 0;
+		private int			startY		 = 0;
 		/**
 		 * Width of the legend image.
 		 */
-		private Integer	width				= null;
+		private Integer	width			 = null;
 		/**
 		 * Height of the legend image.
 		 */
-		private Integer	height			= null;
+		private Integer	height		 = null;
 
 		/**
 		 * Default constructor.
@@ -129,11 +132,11 @@ public class LegendGenerator {
 	 * 
 	 * @throws IOException
 	 *           thrown when there are some general problems with files
-	 * @throws DrawingException 
+	 * @throws DrawingException
 	 *           thrown when there was a problem with drawing one of the maps
-	 * @throws InvalidInputDataExecption 
+	 * @throws InvalidInputDataExecption
 	 */
-	public void run() throws IOException, DrawingException, InvalidInputDataExecption {
+	public void run() throws Exception {
 		for (LegendObject lo : LegendObject.values()) {
 			createLegend(lo);
 		}
@@ -147,20 +150,20 @@ public class LegendGenerator {
 	 * @throws IOException
 	 *           thrown when there are some general problems with input/output
 	 *           file
-	 * @throws DrawingException 
+	 * @throws DrawingException
 	 *           thrown when there was a problem with drawing a legend
 	 * @throws InvalidInputDataExecption
 	 *           thrown when xml file is invalid
 	 */
-	private void createLegend(LegendObject lo) throws IOException, DrawingException, InvalidInputDataExecption {
+	private void createLegend(LegendObject lo) throws Exception {
 		Model model = new CellDesignerXmlParser().createModel(new ConverterParams().filename(lo.inputFile));
 
 		// and save it to leged.png
 		String fileName = lo.outputFile;
 
 		Model copy = new CopyCommand(model).execute();
-		PngImageGenerator generator = new PngImageGenerator(new Params()
-				.scale(ZOOM_FACTOR).x(lo.startX).y(lo.startY).width(lo.width).height(lo.height).model(copy).level(2).semanticZoom(true));
+		PngImageGenerator generator = new PngImageGenerator(
+				new Params().scale(ZOOM_FACTOR).x(lo.startX).y(lo.startY).width(lo.width).height(lo.height).model(copy).level(2).nested(true));
 		generator.saveToFile(fileName);
 		Desktop.getDesktop().open(new File(fileName));
 	}
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/AliasCollectionXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/AliasCollectionXmlParser.java
index 688f761cfe4fd7804d14a954e87cbe16025a4738..e80d09ae7a837be2e9b201c80cc16cd2899a2b71 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/AliasCollectionXmlParser.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/AliasCollectionXmlParser.java
@@ -215,6 +215,7 @@ public class AliasCollectionXmlParser extends XmlParser {
 			}
 			if (parent != nullParent) {
 				child.setCompartment(parent);
+				parent.addElement(child);
 			}
 		}
 	}
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 71c0aa5f0cadf4ba184ed3089c73b36e3c086cf1..f3a8bf849288d8cac9380e9830e7a07d2a9f1500 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
@@ -127,57 +127,57 @@ public class CompartmentAliasXmlParser extends AbstractAliasXmlParser<Compartmen
 	}
 
 	@Override
-	public String toXml(Compartment alias) {
+	public String toXml(Compartment compartment) {
 		StringBuilder sb = new StringBuilder("");
 
 		sb.append("<celldesigner:compartmentAlias ");
-		sb.append("id=\"" + alias.getElementId() + "\" ");
-		sb.append("compartment=\"" + elements.getElementId(alias) + "\">\n");
+		sb.append("id=\"" + compartment.getElementId() + "\" ");
+		sb.append("compartment=\"" + elements.getElementId(compartment) + "\">\n");
 
 		boolean bounds = true;
 
-		if (alias.getClass().getName().equals(SquareCompartment.class.getName())) {
+		if (compartment.getClass().getName().equals(SquareCompartment.class.getName())) {
 			sb.append("<celldesigner:class>SQUARE</celldesigner:class>\n");
-		} else if (alias.getClass().getName().equals(OvalCompartment.class.getName())) {
+		} else if (compartment.getClass().getName().equals(OvalCompartment.class.getName())) {
 			sb.append("<celldesigner:class>OVAL</celldesigner:class>\n");
-		} else if (alias.getClass().getName().equals(BottomSquareCompartment.class.getName())) {
+		} 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=\"" + alias.getY() + "\"/>");
-		} else if (alias.getClass().getName().equals(TopSquareCompartment.class.getName())) {
+			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=\"" + alias.getY() + "\"/>");
-		} else if (alias.getClass().getName().equals(LeftSquareCompartment.class.getName())) {
+			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=\"" + alias.getWidth() + "\" y=\"10\"/>");
-		} else if (alias.getClass().getName().equals(RightSquareCompartment.class.getName())) {
+			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=\"" + alias.getX() + "\" y=\"10\"/>");
+			sb.append("<celldesigner:point x=\"" + compartment.getX() + "\" y=\"10\"/>");
 		} else {
-			throw new NotImplementedException("Unknown compartment class: " + alias.getClass());
+			throw new NotImplementedException("Unknown compartment class: " + compartment.getClass());
 		}
 		if (bounds) {
 			sb.append("<celldesigner:bounds ");
-			sb.append("x=\"" + alias.getX() + "\" ");
-			sb.append("y=\"" + alias.getY() + "\" ");
-			sb.append("w=\"" + alias.getWidth() + "\" ");
-			sb.append("h=\"" + alias.getHeight() + "\"/>\n");
+			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=\"" + alias.getNamePoint().getX() + "\" ");
-		sb.append("y=\"" + alias.getNamePoint().getY() + "\"/>\n");
+		sb.append("x=\"" + compartment.getNamePoint().getX() + "\" ");
+		sb.append("y=\"" + compartment.getNamePoint().getY() + "\"/>\n");
 
 		sb.append("<celldesigner:doubleLine ");
-		sb.append("thickness=\"" + alias.getThickness() + "\" ");
-		sb.append("outerWidth=\"" + alias.getOuterWidth() + "\" ");
-		sb.append("innerWidth=\"" + alias.getInnerWidth() + "\"/>\n");
+		sb.append("thickness=\"" + compartment.getThickness() + "\" ");
+		sb.append("outerWidth=\"" + compartment.getOuterWidth() + "\" ");
+		sb.append("innerWidth=\"" + compartment.getInnerWidth() + "\"/>\n");
 
 		sb.append("<celldesigner:paint ");
-		sb.append("color=\"" + colorToString(alias.getColor()) + "\" scheme=\"Color\"/>\n");
+		sb.append("color=\"" + colorToString(compartment.getColor()) + "\" scheme=\"Color\"/>\n");
 
 		sb.append("</celldesigner:compartmentAlias>\n");
 
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/annotation/RestAnnotationParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/annotation/RestAnnotationParser.java
index 6838b61339f23be0e3c976b672d5e1f3dc713b94..97cbe2c445492fe9e1256eb6562115cb302e68d3 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/annotation/RestAnnotationParser.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/annotation/RestAnnotationParser.java
@@ -9,7 +9,6 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import org.apache.commons.lang3.StringEscapeUtils;
-import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.w3c.dom.Node;
 
@@ -22,8 +21,6 @@ import lcsb.mapviewer.common.comparator.StringSetComparator;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerElement;
-import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerSpecies;
 import lcsb.mapviewer.model.map.BioEntity;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.MiriamRelationType;
@@ -132,7 +129,7 @@ public class RestAnnotationParser extends XmlParser {
 		sb.append(createEntry(NoteField.PANTHER, filterMiriam(data, MiriamType.PANTHER), forceFullInfo));
 		sb.append(createEntry(NoteField.DESCRIPTION, null, forceFullInfo));
 		sb.append(createEntry(NoteField.ABBREVIATION, element.getAbbreviation(), forceFullInfo));
-		sb.append(createEntry(NoteField.SEMANTIC_ZOOM_LEVEL_VISIBILITY, element.getSemanticZoomLevelVisibility(), forceFullInfo));
+		sb.append(createEntry(NoteField.SEMANTIC_ZOOM_LEVEL_VISIBILITY, element.getVisibilityLevel(), forceFullInfo));
 		sb.append(createEntry(NoteField.CHARGED_FORMULA, element.getFormula(), forceFullInfo));
 		if (element instanceof Species) {
 			sb.append(createEntry(NoteField.CHARGE, ((Species) element).getCharge(), forceFullInfo));
@@ -164,7 +161,7 @@ public class RestAnnotationParser extends XmlParser {
 		} else if (value instanceof Integer) {
 			return type.getCommonName() + ": " + value + "\n";
 		} else if (value instanceof Collection) {
-			Collection<?> collection = (Collection) value;
+			Collection<?> collection = (Collection<?>) value;
 			if (collection.size() > 0 || forceFullInfo) {
 				String result = "";
 				for (Object object : collection) {
@@ -643,12 +640,12 @@ public class RestAnnotationParser extends XmlParser {
 		if (zoomLevelVisibility == null) {
 			return;
 		}
-		if (element.getSemanticZoomLevelVisibility() == null) {
-			element.setSemanticZoomLevelVisibility(zoomLevelVisibility);
-		} else if (!element.getSemanticZoomLevelVisibility().equals(zoomLevelVisibility)) {
+		if (element.getVisibilityLevel() == null || element.getVisibilityLevel().isEmpty()) {
+			element.setVisibilityLevel(zoomLevelVisibility);
+		} else if (!element.getVisibilityLevel().equals(zoomLevelVisibility)) {
 			logger.warn(
 					elementUtils.getElementTag(element) + " New " + NoteField.SEMANTIC_ZOOM_LEVEL_VISIBILITY.getCommonName() + " different than default ["
-							+ zoomLevelVisibility + "][" + element.getSemanticZoomLevelVisibility() + "]. Ignoring.");
+							+ zoomLevelVisibility + "][" + element.getVisibilityLevel() + "]. Ignoring.");
 		}
 	}
 
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerXmlParserTest.java
index 445722f2721ab372ecf8e31f9188c3822fb3551b..5ebeb1ae3a7f6e0ec3ad7ddfb08aa9551f24c10a 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerXmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerXmlParserTest.java
@@ -29,6 +29,7 @@ import lcsb.mapviewer.converter.ConverterParams;
 import lcsb.mapviewer.converter.InvalidInputDataExecption;
 import lcsb.mapviewer.converter.model.celldesigner.annotation.RestAnnotationParser;
 import lcsb.mapviewer.model.graphics.PolylineData;
+import lcsb.mapviewer.model.map.compartment.Compartment;
 import lcsb.mapviewer.model.map.layout.graphics.Layer;
 import lcsb.mapviewer.model.map.layout.graphics.LayerOval;
 import lcsb.mapviewer.model.map.layout.graphics.LayerRect;
@@ -991,4 +992,27 @@ public class CellDesignerXmlParserTest extends CellDesignerTestFunctions {
 		}
 	}
 
+	@Test
+	public void testCompartmentWithSubcompartments() throws Exception {
+		try {
+			CellDesignerXmlParser parser = new CellDesignerXmlParser();
+			Model model = parser.createModel(new ConverterParams().filename("testFiles/compartment/nested_compartments_in_few_compartments.xml"));
+			Compartment c3 = model.getElementByElementId("ca3");
+			Compartment c4 = model.getElementByElementId("ca4");
+			Compartment c1 = model.getElementByElementId("ca1");
+			Compartment c2 = model.getElementByElementId("ca2");
+			assertEquals("ca1", c3.getCompartment().getElementId());
+			assertEquals("ca2", c4.getCompartment().getElementId());
+
+			assertEquals(1, c1.getElements().size());
+			assertEquals(1, c2.getElements().size());
+			assertEquals(0, c3.getElements().size());
+			assertEquals(0, c4.getElements().size());
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
 }
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/annotation/RestAnnotationParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/annotation/RestAnnotationParserTest.java
index 0195858815d730bba0c0f50d7c2d40e07ac64ff0..f9d45fd607a6ecc4e8bfb6c1ce9995de66c4f6b9 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/annotation/RestAnnotationParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/annotation/RestAnnotationParserTest.java
@@ -289,7 +289,6 @@ public class RestAnnotationParserTest extends CellDesignerTestFunctions {
 			element.addFormerSymbol(former2);
 			element.setCharge(1);
 			String str = rap.createAnnotationString(element, true);
-			logger.debug(str);
 			assertTrue(str.contains(former1));
 			assertTrue(str.contains(former2));
 
@@ -429,16 +428,22 @@ public class RestAnnotationParserTest extends CellDesignerTestFunctions {
 				}
 
 				@Override
-				public void setSemanticZoomLevelVisibility(String zoomLevelVisibility) {
+				public void setVisibilityLevel(String zoomLevelVisibility) {
 					// TODO Auto-generated method stub
-
+					
 				}
 
 				@Override
-				public String getSemanticZoomLevelVisibility() {
+				public String getVisibilityLevel() {
 					// TODO Auto-generated method stub
 					return null;
 				}
+
+				@Override
+				public void setVisibilityLevel(Integer zoomLevelVisibility) {
+					// TODO Auto-generated method stub
+					
+				}
 			});
 			fail("Exception expected");
 		} catch (NotImplementedException e) {
diff --git a/converter-CellDesigner/testFiles/compartment/nested_compartments_in_few_compartments.xml b/converter-CellDesigner/testFiles/compartment/nested_compartments_in_few_compartments.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8ca2988a0dc27601a866b61f495e46af8bb6fee2
--- /dev/null
+++ b/converter-CellDesigner/testFiles/compartment/nested_compartments_in_few_compartments.xml
@@ -0,0 +1,105 @@
+<?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="35.0" y="77.0" w="171.0" h="179.0"/>
+<celldesigner:namePoint x="98.5" y="153.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:compartmentAlias id="ca2" compartment="c2">
+<celldesigner:class>SQUARE</celldesigner:class>
+<celldesigner:bounds x="316.0" y="110.0" w="248.0" h="149.0"/>
+<celldesigner:namePoint x="432.5" y="222.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:compartmentAlias id="ca3" compartment="c3">
+<celldesigner:class>SQUARE</celldesigner:class>
+<celldesigner:bounds x="64.0" y="144.0" w="105.0" h="68.0"/>
+<celldesigner:namePoint x="109.0" y="175.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:compartmentAlias id="ca4" compartment="c3">
+<celldesigner:class>SQUARE</celldesigner:class>
+<celldesigner:bounds x="351.0" y="180.0" w="86.0" h="33.0"/>
+<celldesigner:namePoint x="386.5" y="184.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:listOfGroups/>
+<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="CDMT00001" kind="mole"/>
+</listOfUnits>
+</unitDefinition>
+<unitDefinition metaid="volume" id="volume" name="volume">
+<listOfUnits>
+<unit metaid="CDMT00002" kind="litre"/>
+</listOfUnits>
+</unitDefinition>
+<unitDefinition metaid="area" id="area" name="area">
+<listOfUnits>
+<unit metaid="CDMT00003" kind="metre" exponent="2"/>
+</listOfUnits>
+</unitDefinition>
+<unitDefinition metaid="length" id="length" name="length">
+<listOfUnits>
+<unit metaid="CDMT00004" kind="metre"/>
+</listOfUnits>
+</unitDefinition>
+<unitDefinition metaid="time" id="time" name="time">
+<listOfUnits>
+<unit metaid="CDMT00005" 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>
+<compartment metaid="c2" id="c2" name="c2" size="1" units="volume" outside="default">
+<annotation>
+<celldesigner:extension>
+<celldesigner:name>c2</celldesigner:name>
+</celldesigner:extension>
+</annotation>
+</compartment>
+<compartment metaid="c3" id="c3" name="c3" size="1" units="volume" outside="c2">
+<annotation>
+<celldesigner:extension>
+<celldesigner:name>c3</celldesigner:name>
+</celldesigner:extension>
+</annotation>
+</compartment>
+</listOfCompartments>
+</model>
+</sbml>
diff --git a/converter-SBGNML/src/main/java/lcsb/mapviewer/converter/model/sbgnml/SbgnmlXmlParser.java b/converter-SBGNML/src/main/java/lcsb/mapviewer/converter/model/sbgnml/SbgnmlXmlParser.java
index b66908389d19846ae461ed243800a41f0bb81577..3733c04f545ddf0b3ee7bfc46508dcc1750c2634 100644
--- a/converter-SBGNML/src/main/java/lcsb/mapviewer/converter/model/sbgnml/SbgnmlXmlParser.java
+++ b/converter-SBGNML/src/main/java/lcsb/mapviewer/converter/model/sbgnml/SbgnmlXmlParser.java
@@ -62,6 +62,7 @@ import lcsb.mapviewer.model.map.reaction.type.StateTransitionReaction;
 import lcsb.mapviewer.model.map.reaction.type.UnknownTransitionReaction;
 import lcsb.mapviewer.model.map.species.Complex;
 import lcsb.mapviewer.model.map.species.Degraded;
+import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.map.species.Gene;
 import lcsb.mapviewer.model.map.species.GenericProtein;
 import lcsb.mapviewer.model.map.species.Phenotype;
@@ -622,52 +623,76 @@ public class SbgnmlXmlParser {
 			}
 		}
 
-		parseAlias(g, newSpecies, model);
+		parseSpecies(g, newSpecies, model);
 	}
 
 	/**
 	 * Method used to create a new alias from SBGN-ML glyph.
 	 * 
-	 * @param g
+	 * @param glyph
 	 *          SBGN-ML glyph representing the alias
-	 * @param newSpecies
+	 * @param species
 	 *          species of the alias
 	 * @param model
 	 *          model to be updated
 	 */
-	private void parseAlias(Glyph g, Species newSpecies, Model model) {
-		newSpecies.setHeight(new Double(g.getBbox().getH()));
-		newSpecies.setWidth(new Double(g.getBbox().getW()));
-		newSpecies.setX(new Double(g.getBbox().getX()));
-		newSpecies.setY(new Double(g.getBbox().getY()));
-
-		if (g.getCompartmentRef() != null) {
-			Glyph compartmentGlyph = (Glyph) g.getCompartmentRef();
-			Compartment compartmentAlias = model.getElementByElementId(compartmentGlyph.getId());
-			newSpecies.setCompartment(compartmentAlias);
-			compartmentAlias.addElement(newSpecies);
-		} else if (newSpecies.getComplex() == null) {
-			// If the alias is in any compartment, assign it to that compartment
-			for (Compartment compartmentAlias : model.getCompartments()) {
-				boolean dx1 = compartmentAlias.getX() + compartmentAlias.getWidth() - newSpecies.getX() >= 0;
-				boolean dx2 = compartmentAlias.getX() - (newSpecies.getX() + newSpecies.getWidth()) <= 0;
-				boolean dy1 = compartmentAlias.getY() + compartmentAlias.getHeight() - newSpecies.getY() >= 0;
-				boolean dy2 = compartmentAlias.getY() - (newSpecies.getY() + newSpecies.getHeight()) <= 0;
-				if (dx1 && dx2 && dy1 && dy2) {
-					newSpecies.setCompartment(compartmentAlias);
-					compartmentAlias.addElement(newSpecies);
-				}
-			}
+	private void parseSpecies(Glyph glyph, Species species, Model model) {
+		species.setHeight(new Double(glyph.getBbox().getH()));
+		species.setWidth(new Double(glyph.getBbox().getW()));
+		species.setX(new Double(glyph.getBbox().getX()));
+		species.setY(new Double(glyph.getBbox().getY()));
+
+		Compartment parentCompartment = null;
+		if (glyph.getCompartmentRef() != null) {
+			Glyph compartmentGlyph = (Glyph) glyph.getCompartmentRef();
+			parentCompartment = model.getElementByElementId(compartmentGlyph.getId());
+		} else if (species.getComplex() == null) {
+			parentCompartment = findParentCompartment(species, model);
+		}
+		if (parentCompartment != null) {
+			species.setCompartment(parentCompartment);
+			parentCompartment.addElement(species);
 		}
 
 		// Parse units of information
-		for (Glyph child : g.getGlyph()) {
+		for (Glyph child : glyph.getGlyph()) {
 			if (GlyphClazz.fromClazz(child.getClazz()).equals(GlyphClazz.UNIT_OF_INFORMATION)) {
-				parseUnitOfInformation(child, newSpecies);
+				parseUnitOfInformation(child, species);
 			}
 		}
 
-		model.addElement(newSpecies);
+		model.addElement(species);
+	}
+
+	/**
+	 * Finds a compartment where element should be located (base on the
+	 * coordinates).
+	 * 
+	 * @param child
+	 *          {@link Element} for which we want to find compartment
+	 * @param model
+	 *          {@link Model} where we look for a compartment
+	 * @return parent {@link Compartment}
+	 */
+	private Compartment findParentCompartment(Element child, Model model) {
+		Compartment nullParent = new Compartment("null");
+		nullParent.setWidth(Double.MAX_VALUE);
+		nullParent.setHeight(Double.MAX_VALUE);
+		nullParent.setX(0.0);
+		nullParent.setY(0.0);
+		Compartment parent = nullParent;
+		for (Compartment potentialParent : model.getCompartments()) {
+			if (potentialParent.contains(child)) {
+				if (parent.getSize() > potentialParent.getSize()) {
+					parent = potentialParent;
+				}
+			}
+		}
+		if (parent != nullParent) {
+			return parent;
+		} else {
+			return null;
+		}
 	}
 
 	/**
@@ -1474,32 +1499,37 @@ public class SbgnmlXmlParser {
 	/**
 	 * Method used for parsing compartments.
 	 * 
-	 * @param g
+	 * @param glyph
 	 *          compartment glyph from sbgn-ml file
 	 * @param model
 	 *          model to be updated with the parsed compartment
 	 */
-	private void parseCompartment(Glyph g, Model model) {
+	private void parseCompartment(Glyph glyph, Model model) {
 
-		Compartment compAlias = new SquareCompartment(g.getId());
-		if (g.getLabel() != null) {
-			compAlias.setName(g.getLabel().getText());
+		Compartment compartment = new SquareCompartment(glyph.getId());
+		if (glyph.getLabel() != null) {
+			compartment.setName(glyph.getLabel().getText());
 		}
-		compAlias.setModel(model);
-		compAlias.setHeight(new Double(g.getBbox().getH()));
-		compAlias.setWidth(new Double(g.getBbox().getW()));
-		compAlias.setX(new Double(g.getBbox().getX()));
-		compAlias.setY(new Double(g.getBbox().getY()));
-		compAlias.setThickness(1.0);
-		compAlias.setColor(COMPARTMENT_COLOR);
-
-		if (g.getLabel() != null && g.getLabel().getBbox() != null) {
-			compAlias.setNamePoint(g.getLabel().getBbox().getX(), g.getLabel().getBbox().getY());
+		compartment.setModel(model);
+		compartment.setHeight(new Double(glyph.getBbox().getH()));
+		compartment.setWidth(new Double(glyph.getBbox().getW()));
+		compartment.setX(new Double(glyph.getBbox().getX()));
+		compartment.setY(new Double(glyph.getBbox().getY()));
+		compartment.setThickness(1.0);
+		compartment.setColor(COMPARTMENT_COLOR);
+
+		if (glyph.getLabel() != null && glyph.getLabel().getBbox() != null) {
+			compartment.setNamePoint(glyph.getLabel().getBbox().getX(), glyph.getLabel().getBbox().getY());
 		} else {
-			compAlias.setNamePoint(
-					compAlias.getX() + compAlias.getThickness() + CONTAINER_NAME_MARGIN, compAlias.getY() + compAlias.getThickness() + CONTAINER_NAME_MARGIN);
+			compartment.setNamePoint(
+					compartment.getX() + compartment.getThickness() + CONTAINER_NAME_MARGIN, compartment.getY() + compartment.getThickness() + CONTAINER_NAME_MARGIN);
+		}
+		Compartment parent = findParentCompartment(compartment, model);
+		if (parent != null) {
+			compartment.setCompartment(parent);
+			parent.addElement(compartment);
 		}
 
-		model.addElement(compAlias);
+		model.addElement(compartment);
 	}
 }
diff --git a/converter-SBGNML/src/test/java/lcsb/mapviewer/converter/model/sbgnml/CellDesigner2SbgnmlConversionTest.java b/converter-SBGNML/src/test/java/lcsb/mapviewer/converter/model/sbgnml/CellDesigner2SbgnmlConversionTest.java
index 62d728acb672288f45120380749c056fc6ee342d..e2a840138654230d741cd76280c5790d4abd160a 100644
--- a/converter-SBGNML/src/test/java/lcsb/mapviewer/converter/model/sbgnml/CellDesigner2SbgnmlConversionTest.java
+++ b/converter-SBGNML/src/test/java/lcsb/mapviewer/converter/model/sbgnml/CellDesigner2SbgnmlConversionTest.java
@@ -8,6 +8,7 @@ import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Collection;
 
+import org.apache.commons.io.FileUtils;
 import org.apache.log4j.Logger;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -22,9 +23,9 @@ import lcsb.mapviewer.model.map.model.Model;
 @RunWith(Parameterized.class)
 public class CellDesigner2SbgnmlConversionTest {
 
-	Logger			 logger	= Logger.getLogger(CellDesigner2SbgnmlConversionTest.class.getName());
+	private static Logger	logger = Logger.getLogger(CellDesigner2SbgnmlConversionTest.class.getName());
 
-	private Path testPath;
+	private Path					testPath;
 
 	public CellDesigner2SbgnmlConversionTest(Path testPath) {
 		this.testPath = testPath;
@@ -32,15 +33,19 @@ public class CellDesigner2SbgnmlConversionTest {
 
 	@Parameters(name = "{index} : {0}")
 	public static Collection<Object[]> data() throws IOException {
-		Collection<Object[]> data = new ArrayList<Object[]>();
+		Collection<Object[]> data = new ArrayList<>();
 		Files.walk(Paths.get("../converter-CellDesigner/testFiles")).forEach(fPath -> {
-			if (Files.isRegularFile(fPath) && fPath.toString().endsWith(".xml")) {
-				String tempPath = fPath.toString().substring(fPath.toString().indexOf("testFiles") + "testFiles".length() + 1);
-				if (!tempPath.contains("_full")) {
-					// String tName =
-					// fPath.toString().substring(fPath.toString().indexOf("testFiles") +
-					// "testFiles".length(), fPath.toString().indexOf(".xml"));
-					data.add(new Object[] { fPath });
+			if (Files.isRegularFile(fPath) && fPath.toString().endsWith(".xml")&& fPath.toString().indexOf("invalid")==-1) {
+				try {
+					String tempPath = fPath.toString().substring(fPath.toString().indexOf("testFiles") + "testFiles".length() + 1);
+					if (!tempPath.contains("_full")) {
+						String content = FileUtils.readFileToString(fPath.toFile());
+						if (content.indexOf("xmlns:celldesigner") >= 0) {
+							data.add(new Object[] { fPath });
+						}
+					}
+				} catch (Exception e) {
+					throw new RuntimeException();
 				}
 			}
 		});
diff --git a/converter-SBGNML/src/test/java/lcsb/mapviewer/converter/model/sbgnml/CellDesignerToSbgnTest.java b/converter-SBGNML/src/test/java/lcsb/mapviewer/converter/model/sbgnml/CellDesignerToSbgnTest.java
index 6b89b857dba22bc7a15564310b03e9b1f5ba2fb0..a711f585acec0857a7fa32a9532ddc2a70f0022e 100644
--- a/converter-SBGNML/src/test/java/lcsb/mapviewer/converter/model/sbgnml/CellDesignerToSbgnTest.java
+++ b/converter-SBGNML/src/test/java/lcsb/mapviewer/converter/model/sbgnml/CellDesignerToSbgnTest.java
@@ -2,16 +2,16 @@ package lcsb.mapviewer.converter.model.sbgnml;
 
 import java.io.File;
 
-import lcsb.mapviewer.converter.ConverterParams;
-import lcsb.mapviewer.converter.IConverter;
-import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
-import lcsb.mapviewer.model.map.model.Model;
-
 import org.apache.log4j.Logger;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
+import lcsb.mapviewer.converter.ConverterParams;
+import lcsb.mapviewer.converter.IConverter;
+import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
+import lcsb.mapviewer.model.map.model.Model;
+
 public class CellDesignerToSbgnTest {
 	Logger logger = Logger.getLogger(CellDesignerToSbgnTest.class);
 
@@ -34,6 +34,7 @@ public class CellDesignerToSbgnTest {
 
 			String output = File.createTempFile("temp-sbgn-output", ".sbgn").getAbsolutePath();
 			converter2.exportModelToFile(model, output);
+			new File(output).delete();
 		} catch (Exception e) {
 			e.printStackTrace();
 			throw e;
@@ -51,6 +52,7 @@ public class CellDesignerToSbgnTest {
 
 			String output = File.createTempFile("temp-sbgn-output", ".sbgn").getAbsolutePath();
 			converter2.exportModelToFile(model, output);
+			new File(output).delete();
 		} catch (Exception e) {
 			e.printStackTrace();
 			throw e;
diff --git a/converter-SBGNML/src/test/java/lcsb/mapviewer/converter/model/sbgnml/SbgnmlXmlParserTest.java b/converter-SBGNML/src/test/java/lcsb/mapviewer/converter/model/sbgnml/SbgnmlXmlParserTest.java
index 60fb01fd58a46533cdf62f231ee308edcd2be514..97da4b1aa9df9806b0d60f0c66fac046cd8c8d20 100644
--- a/converter-SBGNML/src/test/java/lcsb/mapviewer/converter/model/sbgnml/SbgnmlXmlParserTest.java
+++ b/converter-SBGNML/src/test/java/lcsb/mapviewer/converter/model/sbgnml/SbgnmlXmlParserTest.java
@@ -4,6 +4,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
 import java.io.ByteArrayInputStream;
+import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.PrintWriter;
@@ -13,6 +14,7 @@ import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Collection;
 
+import org.apache.commons.io.FileUtils;
 import org.apache.log4j.Logger;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -53,6 +55,8 @@ public class SbgnmlXmlParserTest {
 	@Test
 	public void createModelTest() throws Exception {
 		try {
+			String dir = Files.createTempDirectory("sbgn-temp-images-dir").toFile().getAbsolutePath();
+
 			IConverter converter = new SbgnmlXmlConverter();
 
 			Model model = converter.createModel(new ConverterParams().filename(filePath.toString()));
@@ -61,39 +65,27 @@ public class SbgnmlXmlParserTest {
 			AbstractImageGenerator.Params params = new AbstractImageGenerator.Params()
 					.height(model.getHeight()).width(model.getWidth()).nested(true).scale(1).level(20).x(0).y(0).model(model);
 			NormalImageGenerator nig = new PngImageGenerator(params);
-			String pngFilePath = Files
-					.createTempDirectory("sbgn-temp-images-dir").toFile().getAbsolutePath()
-					.concat(filePath.getFileName().toString().substring(0, filePath.getFileName().toString().indexOf(".sbgn"))).concat(".png");
-			// String pngFilePath = filePath.toString().substring(0,
-			// filePath.toString().indexOf(".sbgn")).concat(".png");
-			logger.debug(pngFilePath);
+			String pngFilePath = dir + "/".concat(filePath.getFileName().toString().substring(0, filePath.getFileName().toString().indexOf(".sbgn"))).concat(".png");
 			nig.saveToFile(pngFilePath);
 
 			CellDesignerXmlParser cellDesignerXmlParser = new CellDesignerXmlParser();
 			String xmlString = cellDesignerXmlParser.toXml(model);
 
-			String cellDesignerFilePath = Files
-					.createTempDirectory("sbgn-temp-dir").toFile().getAbsolutePath()
-					.concat(filePath.getFileName().toString().substring(0, filePath.getFileName().toString().indexOf(".sbgn"))).concat(".xml");
+			String cellDesignerFilePath = dir
+					+ "/".concat(filePath.getFileName().toString().substring(0, filePath.getFileName().toString().indexOf(".sbgn"))).concat(".xml");
 			PrintWriter out = new PrintWriter(cellDesignerFilePath);
 			out.print(xmlString);
 			out.close();
 
 			InputStream is = new ByteArrayInputStream(xmlString.getBytes("UTF-8"));
-			// InputStream is = new
-			// FileInputStream("testFiles/CellDesignerUnitOfInformationTest.xml");
 
 			Model model2 = cellDesignerXmlParser.createModel(new ConverterParams().inputStream(is).sizeAutoAdjust(false));
 
 			AbstractImageGenerator.Params params2 = new AbstractImageGenerator.Params()
 					.height(model2.getHeight()).width(model2.getWidth()).nested(true).scale(1).level(20).x(0).y(0).model(model2);
 			NormalImageGenerator nig2 = new PngImageGenerator(params2);
-			String pngFilePath2 = Files
-					.createTempDirectory("sbgn-temp-images-dir2").toFile().getAbsolutePath()
-					.concat(filePath.getFileName().toString().substring(0, filePath.getFileName().toString().indexOf(".sbgn"))).concat("_2.png");
-			// String pngFilePath2 = filePath.toString().substring(0,
-			// filePath.toString().indexOf(".sbgn")).concat("_2.png");
-			logger.debug(pngFilePath2);
+			String pngFilePath2 = dir
+					+ "/".concat(filePath.getFileName().toString().substring(0, filePath.getFileName().toString().indexOf(".sbgn"))).concat("_2.png");
 			nig2.saveToFile(pngFilePath2);
 
 			assertNotNull(model2);
@@ -116,8 +108,12 @@ public class SbgnmlXmlParserTest {
 			// logger.debug("--");
 			// }
 
+			// logger.debug(pngFilePath);
+			// logger.debug(pngFilePath2);
 			ModelComparator comparator = new ModelComparator(1.0);
 			assertEquals(0, comparator.compare(model, model2));
+			FileUtils.deleteDirectory(new File(dir));
+
 		} catch (Exception e) {
 			// TODO Auto-generated catch block
 			e.printStackTrace();
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/AbstractImageGenerator.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/AbstractImageGenerator.java
index 4841de9b38bb51a02959f7c75562d910e30384a9..036d3b221f8cdf631b18cf7b2a5c5c09f1f50541 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/AbstractImageGenerator.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/AbstractImageGenerator.java
@@ -15,6 +15,7 @@ import java.util.Map;
 import org.apache.log4j.Logger;
 
 import lcsb.mapviewer.commands.ColorExtractor;
+import lcsb.mapviewer.commands.SemanticZoomLevelMatcher;
 import lcsb.mapviewer.common.MimeType;
 import lcsb.mapviewer.converter.graphics.bioEntity.BioEntityConverterImpl;
 import lcsb.mapviewer.converter.graphics.layer.LayerConverter;
@@ -67,6 +68,13 @@ import lcsb.mapviewer.modelutils.map.ElementUtils;
  * 
  */
 public abstract class AbstractImageGenerator {
+	
+	/**
+	 * Class that allows to check if element is visible (or transparent) when
+	 * drawing. It's used to filter out invisible elements when drawing
+	 * semantic/hierarchy view.
+	 */
+	private SemanticZoomLevelMatcher zoomLevelMatcher		 = new SemanticZoomLevelMatcher();
 
 	/**
 	 * Model is drawn as a partial image (x,y,width,height parameters of
@@ -78,32 +86,32 @@ public abstract class AbstractImageGenerator {
 	 * TODO maybe more effecient (and safe) solution would be to include text
 	 * desciption as parts of the object border
 	 */
-	private static final int	 SINGLE_FRAME_MARGIN = 100;
+	private static final int				 SINGLE_FRAME_MARGIN = 100;
 
 	/**
 	 * On which level in hierarchical view we should visualize map.
 	 */
-	private int								 level							 = Integer.MAX_VALUE;
+	private int											 level							 = Integer.MAX_VALUE;
 
 	/**
 	 * Zoom factor of the drawing.
 	 */
-	private double						 scale							 = 1;
+	private double									 scale							 = 1;
 
 	/**
 	 * This is a frame border from which we take all elements to draw.
 	 */
-	private Rectangle2D.Double border							 = null;
+	private Rectangle2D.Double			 border							 = null;
 
 	/**
 	 * Object that helps to convert {@link ColorSchema} values into colors.
 	 */
-	private ColorExtractor		 colorExtractor			 = null;
+	private ColorExtractor					 colorExtractor			 = null;
 
 	/**
 	 * Util class for simple operations on {@link Element elements}.
 	 */
-	private ElementUtils			 eu									 = new ElementUtils();
+	private ElementUtils						 eu									 = new ElementUtils();
 
 	/**
 	 * This class contains a list of params that are used for drawing.
@@ -173,11 +181,6 @@ public abstract class AbstractImageGenerator {
 		 */
 		private boolean												 nested					= false;
 
-		/**
-		 * Should the visualization include semantic zoom view or not.
-		 */
-		private boolean												 semanticZoom		= false;
-
 		/**
 		 * Should sbgn standard be used.
 		 */
@@ -213,17 +216,6 @@ public abstract class AbstractImageGenerator {
 			return this;
 		}
 
-		/**
-		 * @param semanticZoom
-		 *          semanticZoom to set
-		 * @return object with all parameters
-		 * @see #semanticZoom
-		 */
-		public Params semanticZoom(boolean semanticZoom) {
-			this.semanticZoom = semanticZoom;
-			return this;
-		}
-
 		/**
 		 * @param scale
 		 *          scale to set
@@ -358,6 +350,12 @@ public abstract class AbstractImageGenerator {
 		 */
 		public Params model(final Model model) {
 			this.model = model;
+			if (this.width == null) {
+				this.width = model.getWidth();
+			}
+			if (this.height == null) {
+				this.height = model.getHeight();
+			}
 			return this;
 		}
 
@@ -592,7 +590,6 @@ public abstract class AbstractImageGenerator {
 	/**
 	 * Default class logger.
 	 */
-	@SuppressWarnings("unused")
 	private Logger		 logger			= Logger.getLogger(AbstractImageGenerator.class);
 
 	/**
@@ -605,6 +602,11 @@ public abstract class AbstractImageGenerator {
 	 */
 	private boolean		 sbgnFormat	= false;
 
+	/**
+	 * List of params used for drawing.
+	 */
+	private Params		 params;
+
 	/**
 	 * This method creates a graphics object for different implementations of
 	 * canvas with fixed width and height.
@@ -628,7 +630,26 @@ public abstract class AbstractImageGenerator {
 	 *           thrown when there was a problem with drawing a map
 	 * 
 	 */
-	protected AbstractImageGenerator(final Params params) throws DrawingException {
+	protected AbstractImageGenerator(final Params params) {
+		this.params = params;
+	}
+
+	/**
+	 * Flag indicating {@link #draw()} method was executed.
+	 */
+	private boolean drawn = false;
+
+	/**
+	 * Draw a model into {@link #getGraphics()} object.
+	 * 
+	 * @throws DrawingException
+	 *           thrown when there is a problem with drawing
+	 */
+	protected void draw() throws DrawingException {
+		if (isDrawn()) {
+			logger.warn("Model was already drawn. Skipping");
+			return;
+		}
 		this.level = params.getLevel();
 		this.scale = params.getScale();
 
@@ -675,21 +696,21 @@ public abstract class AbstractImageGenerator {
 			// draw only elements that don't have parents (aren't included in any
 			// compartment/complexes)
 			if (element instanceof Species) {
-				if (((Species) element).getComplex() == null) {
-					drawSpecies((Species) element, params.getVisibleLayoutsForElement(element), params);
+				if (((Species) element).getComplex() == null && element.getCompartment() == null) {
+					drawSpecies((Species) element);
 				}
 			}
 		}
 		// draw all reactions
 		for (Reaction reaction : params.getModel().getSortedReactions()) {
-			drawReaction(reaction, params.getVisibleLayoutsForElement(reaction), params);
+			drawReaction(reaction);
 		}
 		// draw all compartments
 		for (Compartment compartment : params.getModel().getSortedCompartments()) {
 			// draw only compartment that don't have parents (aren't included in any
 			// compartment/complexes)
 			if (compartment.getCompartment() == null) {
-				drawCompartment(compartment, params.isNested(), params.getVisibleLayoutsForElement(compartment), params);
+				drawCompartment(compartment);
 			}
 		}
 
@@ -697,8 +718,15 @@ public abstract class AbstractImageGenerator {
 		for (Layer layer : params.getModel().getLayers()) {
 			drawLayer(layer);
 		}
+		closeImageObject();
+		setDrawn(true);
 	}
 
+	/**
+	 * Method called after drawing. It should close drawing canvas properly.
+	 */
+	protected abstract void closeImageObject();
+
 	/**
 	 * This method draw layer on the graphics.
 	 * 
@@ -724,81 +752,50 @@ public abstract class AbstractImageGenerator {
 	 * 
 	 * @param compartment
 	 *          object that we want to draw
-	 * @param nested
-	 *          are the compartments drawn in hierarchical view
-	 * @param visibleLayouts
-	 *          list of {@link ColorSchema} used for coloring element in layouts
-	 * @param params
-	 *          list of all params to create apropriate image
 	 * @throws DrawingException
 	 *           thrown when there was a problem with drawing {@link Compartment}
 	 */
-	protected void drawCompartment(final Compartment compartment, final boolean nested, List<ColorSchema> visibleLayouts, Params params)
-			throws DrawingException {
-		// If 'compartment' has not the big enough visibility level then should not
-		// be
-		// visible.
-
-		if (compartment.getVisibilityLevel() > level && params.nested) {
-			return;
-		}
-
-		/**
-		 * This part is responsible for transparency of compartments. Compartment
-		 * should be transparent if the field of it is big enough, its visibility
-		 * level is sufficient.
-		 */
-
-		boolean fill = true;
-		if (compartment.getTransparencyLevel() <= level) {
-			fill = false;
-		}
-
+	protected void drawCompartment(final Compartment compartment) throws DrawingException {
 		// get a converter for this compartment
 		BioEntityConverterImpl converter = new BioEntityConverterImpl(compartment, colorExtractor);
-		ConverterParams compartmentParams = new ConverterParams().textCentered(fill).level(level).semanticZoomingOn(params.semanticZoom);
+		ConverterParams compartmentParams = new ConverterParams().level(level).nested(params.nested);
 
-		if (nested) {
-			compartmentParams.fill(fill).scale(Math.max(scale, 1));
+		if (params.nested) {
+			compartmentParams.scale(Math.max(scale, 1));
 		}
 
 		// we draw compartment only when we have hierarchical view or it's
 		// standard compartment (not the pathway)
-		if (nested || !(compartment instanceof PathwayCompartment)) {
-			try {
-				converter.draw(compartment, graphics, compartmentParams, visibleLayouts);
-			} catch (Exception e) {
-				throw new DrawingException(eu.getElementTag(compartment) + "Problem with drawing element.", e);
-			}
+		if (params.nested || !(compartment instanceof PathwayCompartment)) {
+			converter.draw(compartment, graphics, compartmentParams, params.getVisibleLayoutsForElement(compartment));
 		}
 
 		// If compartment should be filled, then we could skip drawing the inside
 		// compartments.
 
-		if (fill) {
-			return;
-		}
-		List<Element> result = new ArrayList<>();
-		result.addAll(compartment.getElements());
-		Collections.sort(result, Element.SIZE_COMPARATOR);
+		if (zoomLevelMatcher.isTransparent(level, compartment.getTransparencyLevel()) || !params.nested) {
+			List<Element> result = new ArrayList<>();
+			result.addAll(compartment.getElements());
+			Collections.sort(result, Element.SIZE_COMPARATOR);
+
+			// draw all children of this compartment
+			for (Element child : result) {
+				// if a child is a standard species
+				if (child instanceof Species) {
+					drawSpecies((Species) child);
+				} else if (child instanceof Compartment) {
+					drawCompartment((Compartment) child);
+				} else {
+					// if a child is not a compartment or a species then we have a
+					// problem
+					throw new DrawingException(eu.getElementTag(child) + "Unknown Element type");
+				}
 
-		// draw all children of this compartment
-		for (Element element : result) {
-			// if a child is a standard species
-			if (element instanceof Species) {
-				drawSpecies((Species) element, params.getVisibleLayoutsForElement(element), params);
-			} else if (element instanceof Compartment) {
-				drawCompartment((Compartment) element, nested, params.getVisibleLayoutsForElement(element), params);
-			} else {
-				// if a child is not a compartment or a species then we have a
-				// problem
-				throw new DrawingException(eu.getElementTag(compartment) + "Unknown Element type");
 			}
-
-		}
-		if (!compartment.containsIdenticalSpecies()) {
-			if (!(compartment instanceof PathwayCompartment)) {
-				converter.drawText(compartment, graphics, compartmentParams);
+			if (!compartment.containsIdenticalSpecies()) {
+				if (!(compartment instanceof PathwayCompartment)) {
+					converter.drawText(compartment, graphics, compartmentParams);
+				}
 			}
 		}
 	}
@@ -808,38 +805,26 @@ public abstract class AbstractImageGenerator {
 	 * 
 	 * @param species
 	 *          object to be drawn
-	 * @param visibleLayouts
-	 *          list of {@link ColorSchema} used for coloring species in layouts
-	 * @param params
-	 *          list of all params to create apropriate image
 	 * @throws DrawingException
 	 *           thrown when there was a problem with drawing a {@link Species}
 	 */
-	protected void drawSpecies(final Species species, List<ColorSchema> visibleLayouts, Params params) throws DrawingException {
-
-		// The displaying of species is indicated by values of VisibilityLevel. If
-		// VisibilityLevel is big enough, then it is
-		// displayed.
-
-		if (species.getVisibilityLevel() > level && params.nested) {
-			return;
-		}
-
-		/**
-		 * Last conditions in this 'ifs' provides the certainty of visibility of
-		 * most bottom Complexes.
-		 */
-
+	protected void drawSpecies(final Species species) throws DrawingException {
 		if (!cross(species.getBorder())) {
 			return;
 		}
 
 		boolean rescale = false;
 		if (species instanceof Complex) {
-			if (((Complex) species).getElements().size() == 0) {
+			Complex complex = (Complex) species;
+			if (complex.getElements().size() == 0) {
 				rescale = true;
-			} else if (((Complex) species).getElements().get(0).getVisibilityLevel() > level) {
+			} else {
 				rescale = true;
+				for (Element child : complex.getElements()) {
+					if ((zoomLevelMatcher.isVisible(level, child.getVisibilityLevel())) || !params.nested) {
+						rescale = false;
+					}
+				}
 			}
 		}
 
@@ -849,14 +834,9 @@ public abstract class AbstractImageGenerator {
 		if (rescale) {
 			customScale = scale;
 		}
-		try {
-			converter.draw(
-					species, graphics,
-					new ConverterParams().scale(customScale).textCentered(rescale).level(level).sbgnFormat(sbgnFormat).semanticZoomingOn(params.semanticZoom),
-					visibleLayouts);
-		} catch (Exception e) {
-			throw new DrawingException(eu.getElementTag(species) + "Problem with drawing element.", e);
-		}
+		converter.draw(
+				species, graphics, new ConverterParams().scale(customScale).level(level).sbgnFormat(sbgnFormat).nested(params.nested),
+				params.getVisibleLayoutsForElement(species));
 
 		// if the species is a complex then we may want to draw children
 		// objects
@@ -866,9 +846,9 @@ public abstract class AbstractImageGenerator {
 			// mode
 			if (!complex.getState().equalsIgnoreCase("brief")) {
 				// depending on current zoom level, children are drawn or not
-				if (complex.getTransparencyLevel() <= level) {
-					for (Species a : complex.getElements()) {
-						drawSpecies(a, visibleLayouts, params);
+				if (zoomLevelMatcher.isTransparent(level, complex.getTransparencyLevel()) || !params.nested) {
+					for (Species child : complex.getElements()) {
+						drawSpecies(child);
 					}
 				}
 			}
@@ -880,17 +860,16 @@ public abstract class AbstractImageGenerator {
 	 * 
 	 * @param reaction
 	 *          object to be drawn
-	 * @param visibleLayouts
-	 *          list of {@link ColorSchema} used for coloring reaction in layouts
-	 * @param params
-	 *          list of all params to create apropriate image
+	 * @throws DrawingException
+	 *           thrown when there was a problem with drawing a {@link Reaction}
 	 */
-	protected void drawReaction(final Reaction reaction, List<ColorSchema> visibleLayouts, Params params) {
+	protected void drawReaction(final Reaction reaction) throws DrawingException {
 		if (!cross(reaction.getLines())) {
 			return;
 		}
 		BioEntityConverterImpl converter = new BioEntityConverterImpl(reaction, sbgnFormat, colorExtractor);
-		converter.draw(reaction, graphics, new ConverterParams().sbgnFormat(sbgnFormat).semanticZoomingOn(params.semanticZoom).level(level), visibleLayouts);
+		converter.draw(
+				reaction, graphics, new ConverterParams().sbgnFormat(sbgnFormat).nested(params.nested).level(level), params.getVisibleLayoutsForElement(reaction));
 	}
 
 	/**
@@ -943,8 +922,27 @@ public abstract class AbstractImageGenerator {
 	 *          file where the images should be saved
 	 * @throws IOException
 	 *           thrown when there is problem with output file
+	 * @throws DrawingException
+	 *           thrown when there was a problem with drawing map
 	 */
-	public abstract void saveToFile(String fileName) throws IOException;
+	public final void saveToFile(String fileName) throws IOException, DrawingException {
+		if (!isDrawn()) {
+			draw();
+		}
+		saveToFileImplementation(fileName);
+	};
+
+	/**
+	 * Saves generated image from {@link #getGraphics()} into file.
+	 * 
+	 * @param fileName
+	 *          file where the images should be saved
+	 * @throws IOException
+	 *           thrown when there is problem with output file
+	 * @throws DrawingException
+	 *           thrown when there was a problem with drawing map
+	 */
+	protected abstract void saveToFileImplementation(String fileName) throws IOException;
 
 	/**
 	 * Saves generated image into {@link OutputStream}.
@@ -953,8 +951,28 @@ public abstract class AbstractImageGenerator {
 	 *          stream where the images should be saved
 	 * @throws IOException
 	 *           thrown when there is problem with output stream
+	 * @throws DrawingException
+	 *           thrown when there was a problem with drawing map
 	 */
-	public abstract void saveToOutputStream(OutputStream os) throws IOException;
+	public final void saveToOutputStream(OutputStream os) throws IOException, DrawingException {
+		if (!isDrawn()) {
+			draw();
+		}
+		saveToOutputStream(os);
+	}
+
+	/**
+	 * Saves generated image from {@link #getGraphics()} into {@link OutputStream}
+	 * .
+	 * 
+	 * @param os
+	 *          stream where the images should be saved
+	 * @throws IOException
+	 *           thrown when there is problem with output stream
+	 * @throws DrawingException
+	 *           thrown when there was a problem with drawing map
+	 */
+	protected abstract void saveToOutputStreamImplementation(OutputStream os) throws IOException;
 
 	/**
 	 * Saves part of the generated image file.
@@ -971,8 +989,33 @@ public abstract class AbstractImageGenerator {
 	 *          hieght of the image part
 	 * @throws IOException
 	 *           thrown when there is problem with output file
+	 * @throws DrawingException
+	 *           thrown when there was a problem with drawing map
 	 */
-	public abstract void savePartToFile(final int x, final int y, final int width, final int height, final String fileName) throws IOException;
+	public final void savePartToFile(final int x, final int y, final int width, final int height, final String fileName) throws IOException, DrawingException {
+		if (!isDrawn()) {
+			draw();
+		}
+		savePartToFileImplementation(x, y, width, height, fileName);
+	}
+
+	/**
+	 * Saves part of the generated image from {@link #getGraphics()} into file.
+	 * 
+	 * @param fileName
+	 *          file where the images should be saved
+	 * @param x
+	 *          x left margin of the image part
+	 * @param y
+	 *          y top margin of the image part
+	 * @param width
+	 *          width of the image part
+	 * @param height
+	 *          hieght of the image part
+	 * @throws IOException
+	 *           thrown when there is problem with output file
+	 */
+	protected abstract void savePartToFileImplementation(final int x, final int y, final int width, final int height, final String fileName) throws IOException;
 
 	/**
 	 * Saves part of the generated image into {@link OutputStream}.
@@ -989,8 +1032,38 @@ public abstract class AbstractImageGenerator {
 	 *          hieght of the image part
 	 * @throws IOException
 	 *           thrown when there is problem with output file
+	 * @throws DrawingException
+	 *           thrown when there was a problem with drawing map
 	 */
-	public abstract void savePartToOutputStream(final int x, final int y, final int width, final int height, final OutputStream os) throws IOException;
+	public final void savePartToOutputStream(final int x, final int y, final int width, final int height, final OutputStream os)
+			throws IOException, DrawingException {
+		if (!isDrawn()) {
+			draw();
+		}
+		savePartToOutputStreamImplementation(x, y, width, height, os);
+	}
+
+	/**
+	 * Saves part of the generated image from {@link #getGraphics()} into
+	 * {@link OutputStream}.
+	 * 
+	 * @param os
+	 *          stream where the images should be saved
+	 * @param x
+	 *          x left margin of the image part
+	 * @param y
+	 *          y top margin of the image part
+	 * @param width
+	 *          width of the image part
+	 * @param height
+	 *          hieght of the image part
+	 * @throws IOException
+	 *           thrown when there is problem with output file
+	 * @throws DrawingException
+	 *           thrown when there was a problem with drawing map
+	 */
+	protected abstract void savePartToOutputStreamImplementation(final int x, final int y, final int width, final int height, final OutputStream os)
+			throws IOException;
 
 	/**
 	 * Returns name of the format to which this graphic converter will transform.
@@ -1029,4 +1102,38 @@ public abstract class AbstractImageGenerator {
 	protected void sbgnFormat(boolean sbgnFormat) {
 		this.sbgnFormat = sbgnFormat;
 	}
+
+	/**
+	 * @return the drawn
+	 * @see #drawn
+	 */
+	private boolean isDrawn() {
+		return drawn;
+	}
+
+	/**
+	 * @param drawn
+	 *          the drawn to set
+	 * @see #drawn
+	 */
+	private void setDrawn(boolean drawn) {
+		this.drawn = drawn;
+	}
+
+	/**
+	 * @return the params
+	 * @see #params
+	 */
+	protected Params getParams() {
+		return params;
+	}
+
+	/**
+	 * @param params
+	 *          the params to set
+	 * @see #params
+	 */
+	protected void setParams(Params params) {
+		this.params = params;
+	}
 }
\ No newline at end of file
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/ConverterParams.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/ConverterParams.java
index 59577a9350b052778edde539029263c7bb881727..d46ccdf50836f784cd2dcb166e6a9cd9f6622ca8 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/ConverterParams.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/ConverterParams.java
@@ -7,48 +7,27 @@ package lcsb.mapviewer.converter.graphics;
  * 
  */
 public class ConverterParams {
-	/**
-	 * Should the object be filled with the solid color. In other words it tells
-	 * us if the object is not transparent.
-	 */
-	private boolean	fill							= false;
 
 	/**
 	 * At which level the object is visualized. It helps to deterimine font size.
 	 * However it's possible that this value is not required.
 	 */
-	private int			level							= 0;
+	private int			level			 = 0;
 
 	/**
 	 * What is the scale. It allows to adjust font size to be readable.
 	 */
-	private double	scale							= 1;
-
-	/**
-	 * Should the text describing element be centered or not.
-	 */
-	private boolean	textCentered			= false;
+	private double	scale			 = 1;
 
 	/**
 	 * Should the map be displayed in SBGN format.
 	 */
-	private boolean	sbgnFormat				= false;
+	private boolean	sbgnFormat = false;
 
 	/**
-	 * Is the semantic zooming filtered.
+	 * Does the visualization include nesting/hierarchy.
 	 */
-	private boolean	semanticZoomingOn	= false;
-
-	/**
-	 * @param fill
-	 *          the fill to set
-	 * @return object with all parameters
-	 * @see #fill
-	 */
-	public ConverterParams fill(final boolean fill) {
-		this.fill = fill;
-		return this;
-	}
+	private boolean	nested		 = false;
 
 	/**
 	 * @param scale
@@ -62,24 +41,13 @@ public class ConverterParams {
 	}
 
 	/**
-	 * @param semanticZoomingOn
-	 *          the semanticZoomingOn to set
+	 * @param nested
+	 *          the nested to set
 	 * @return object with all parameters
-	 * @see #semanticZoomingOn
+	 * @see #nested
 	 */
-	public ConverterParams semanticZoomingOn(final boolean semanticZoomingOn) {
-		this.semanticZoomingOn = semanticZoomingOn;
-		return this;
-	}
-
-	/**
-	 * @param textCentered
-	 *          the textCentered to set
-	 * @return object with all parameters
-	 * @see #textCentered
-	 */
-	public ConverterParams textCentered(final boolean textCentered) {
-		this.textCentered = textCentered;
+	public ConverterParams nested(final boolean nested) {
+		this.nested = nested;
 		return this;
 	}
 
@@ -113,14 +81,6 @@ public class ConverterParams {
 		return this;
 	}
 
-	/**
-	 * @return the fill
-	 * @see #fill
-	 */
-	public boolean isFill() {
-		return fill;
-	}
-
 	/**
 	 * @return the scale
 	 * @see #scale
@@ -129,14 +89,6 @@ public class ConverterParams {
 		return scale;
 	}
 
-	/**
-	 * @return the textCentered
-	 * @see #textCentered
-	 */
-	public boolean isTextCentered() {
-		return textCentered;
-	}
-
 	/**
 	 * @return the sbgnFormat
 	 * @see #sbgnFormat
@@ -146,21 +98,19 @@ public class ConverterParams {
 	}
 
 	/**
-	 * @return the semanticZoomingOn
-	 * @see #semanticZoomingOn
+	 * @return the nested
+	 * @see #nested
 	 */
-	public boolean isSemanticZoomingOn() {
-		return semanticZoomingOn;
+	public boolean isNested() {
+		return nested;
 	}
 
 	@Override
 	public String toString() {
 		String result = "[" + this.getClass().getSimpleName() + "] " + //
-				"fill:" + fill + "," + //
 				"level:" + level + "," + //
 				"scale:" + scale + "," + //
-				"textCentered:" + textCentered + "," + //
-				"semanticZoomingOn:" + semanticZoomingOn + "," + //
+				"nested:" + nested + "," + //
 				"sbgnFormat:" + sbgnFormat;
 		return result;
 	}
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/ImageGenerators.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/ImageGenerators.java
index 9498239a8b6119e74b3b51136d462066af9f336a..def4fbc887b886ef0abcce359c77e7b2ea308ba3 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/ImageGenerators.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/ImageGenerators.java
@@ -89,8 +89,11 @@ public class ImageGenerators {
 	 * @return {@link MimeType} of the generated object
 	 * @throws IOException
 	 *           thrown when there is a problem with output file
+	 * @throws DrawingException
+	 *           thrown when there is a problem drawing map
 	 */
-	public MimeType generate(Class<? extends AbstractImageGenerator> generatorClass, AbstractImageGenerator.Params params, String filename) throws IOException {
+	public MimeType generate(Class<? extends AbstractImageGenerator> generatorClass, AbstractImageGenerator.Params params, String filename)
+			throws IOException, DrawingException {
 		try {
 			AbstractImageGenerator generator = generatorClass.getConstructor(AbstractImageGenerator.Params.class).newInstance(params);
 			generator.saveToFile(filename);
@@ -124,8 +127,10 @@ public class ImageGenerators {
 	 * @return {@link MimeType} of the generated object
 	 * @throws IOException
 	 *           thrown when there is a problem with output file
+	 * @throws DrawingException
+	 *           thrown when there is a problem drawing map
 	 */
-	public MimeType generate(String generatorClass, Params params, String filename) throws IOException {
+	public MimeType generate(String generatorClass, Params params, String filename) throws IOException, DrawingException {
 		for (Pair<String, Class<? extends AbstractImageGenerator>> element : availableGenerators) {
 			if (element.getRight().getCanonicalName().equals(generatorClass)) {
 				return generate(element.getRight(), params, filename);
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/JpgImageGenerator.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/JpgImageGenerator.java
index 028ff920c3d437707e0c53745e75a30652c279b8..c903920061e6d139072d4238d6f39fbf417d70b9 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/JpgImageGenerator.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/JpgImageGenerator.java
@@ -36,26 +36,26 @@ public class JpgImageGenerator extends NormalImageGenerator {
 	}
 
 	@Override
-	public void saveToFile(String fileName) throws IOException {
+	public void saveToFileImplementation(String fileName) throws IOException {
 		FileOutputStream fos = new FileOutputStream(new File(fileName));
-		saveToOutputStream(fos);
+		saveToOutputStreamImplementation(fos);
 		fos.close();
 	}
 
 	@Override
-	public void saveToOutputStream(OutputStream os) throws IOException {
+	public void saveToOutputStreamImplementation(OutputStream os) throws IOException {
 		ImageIO.write(getBi(), "JPG", os);
 	}
 
 	@Override
-	public void savePartToFile(int x, int y, int width, int height, String fileName) throws IOException {
+	public void savePartToFileImplementation(int x, int y, int width, int height, String fileName) throws IOException {
 		FileOutputStream fos = new FileOutputStream(new File(fileName));
-		savePartToOutputStream(x, y, width, height, fos);
+		savePartToOutputStreamImplementation(x, y, width, height, fos);
 		fos.close();
 	}
 
 	@Override
-	public void savePartToOutputStream(int x, int y, int width, int height, OutputStream os) throws IOException {
+	public void savePartToOutputStreamImplementation(int x, int y, int width, int height, OutputStream os) throws IOException {
 		BufferedImage tmpBI = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
 		Graphics2D tmpGraphics = tmpBI.createGraphics();
 		tmpGraphics.drawImage(getBi(), 0, 0, width, height, x, y, x + width, y + width, null);
@@ -77,4 +77,8 @@ public class JpgImageGenerator extends NormalImageGenerator {
 		return "jpg";
 	}
 
+	@Override
+	protected void closeImageObject() {
+	}
+
 }
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/MapGenerator.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/MapGenerator.java
index 5e44baf42537fb87f7051a0005efa08c45a86f97..4500e81c15c787632664ebb7486542e0ade77d31 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/MapGenerator.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/MapGenerator.java
@@ -6,8 +6,6 @@ import java.io.IOException;
 import org.apache.commons.io.FileUtils;
 import org.apache.log4j.Logger;
 
-import lcsb.mapviewer.commands.CommandExecutionException;
-import lcsb.mapviewer.commands.CreateHierarchyCommand;
 import lcsb.mapviewer.common.Configuration;
 import lcsb.mapviewer.common.IProgressUpdater;
 import lcsb.mapviewer.converter.graphics.AbstractImageGenerator.Params;
@@ -57,25 +55,21 @@ public class MapGenerator {
 		 * Do we want to generate images in hierarchical view or normal.
 		 * 
 		 */
-		private boolean					 nested				= false;
-		/**
-		 * Do we want to generate images with semantic zoom view or not.
-		 */
-		private boolean					 semanticZoom	= false;
+		private boolean					 nested			 = false;
 		/**
 		 * Should we remove empty elements in nested view.
 		 * 
 		 */
-		private boolean					 removeEmpty	= false;
+		private boolean					 removeEmpty = false;
 		/**
 		 * Callback function that update progress information.
 		 * 
 		 */
-		private IProgressUpdater updater			= new IProgressUpdater() {
-																						@Override
-																						public void setProgress(double progress) {
-																						}
-																					};
+		private IProgressUpdater updater		 = new IProgressUpdater() {
+																					 @Override
+																					 public void setProgress(double progress) {
+																					 }
+																				 };
 
 		/**
 		 * Zoom factor on the lowest level.
@@ -139,17 +133,6 @@ public class MapGenerator {
 			return this;
 		}
 
-		/**
-		 * @param semanticZoom
-		 *          the semanticZoom to set
-		 * @see #nested
-		 * @return full {@link MapGeneratorParams} object
-		 */
-		public MapGeneratorParams semanticZoom(boolean semanticZoom) {
-			this.semanticZoom = semanticZoom;
-			return this;
-		}
-
 		/**
 		 * @return the removeEmpty
 		 * @see #removeEmpty
@@ -285,11 +268,6 @@ public class MapGenerator {
 
 		if (params.nested) {
 			logger.debug("Creating nested model with " + params.levels + " levels and maximum zoom rate: " + params.zoomFactor);
-			try {
-				new CreateHierarchyCommand(params.model, params.levels, params.zoomFactor).execute();
-			} catch (CommandExecutionException e) {
-				throw new DrawingException("Problem with preparing nested model", e);
-			}
 		} else {
 			logger.debug("Creating not nested model with " + params.levels + " levels and maximum zoom rate: " + params.zoomFactor);
 		}
@@ -342,11 +320,7 @@ public class MapGenerator {
 						imgParams.model(params.model);
 						imgParams.sbgn(params.sbgn);
 						imgParams.level(i);
-						imgParams.semanticZoom(params.semanticZoom);
-
-						if (params.nested) {
-							imgParams.level(i).nested(params.nested);
-						}
+						imgParams.nested(params.nested);
 						PngImageGenerator generator = new PngImageGenerator(imgParams);
 						for (int cx = 0; cx < TILES_CACHE_NUM; cx++) {
 							for (int cy = 0; cy < TILES_CACHE_NUM; cy++) {
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/NormalImageGenerator.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/NormalImageGenerator.java
index c94ee6c3d14c2a1d6ad49fb203bdb7cd10ea1b05..5c6e6fa3d3a05656a6ac014ae61c8916f3f0cae6 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/NormalImageGenerator.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/NormalImageGenerator.java
@@ -16,7 +16,7 @@ public abstract class NormalImageGenerator extends AbstractImageGenerator {
 	 * Default class logger.
 	 */
 	@SuppressWarnings("unused")
-	private Logger				logger	= Logger.getLogger(NormalImageGenerator.class);
+	private Logger				logger = Logger.getLogger(NormalImageGenerator.class);
 
 	/**
 	 * Buffered image structure used for image generating.
@@ -42,11 +42,11 @@ public abstract class NormalImageGenerator extends AbstractImageGenerator {
 	protected void createImageObject(final double width, final double height) {
 		bi = new BufferedImage((int) width, (int) height, BufferedImage.TYPE_INT_ARGB);
 		setGraphics(bi.createGraphics());
-
 	}
 
 	/**
 	 * @return the bi
+	 * @throws DrawingException
 	 * @see #bi
 	 */
 	protected BufferedImage getBi() {
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/PdfImageGenerator.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/PdfImageGenerator.java
index 7583d103d4300bacb26aa1516cb9605d27cfaeca..504b4e2d1cbd31e084318e5ef79474468dbc70f3 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/PdfImageGenerator.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/PdfImageGenerator.java
@@ -55,9 +55,9 @@ public class PdfImageGenerator extends AbstractImageGenerator {
 	}
 
 	@Override
-	public void saveToFile(final String fileName) throws IOException {
+	public void saveToFileImplementation(final String fileName) throws IOException {
 		FileOutputStream fos = new FileOutputStream(fileName);
-		saveToOutputStream(fos);
+		saveToOutputStreamImplementation(fos);
 		fos.close();
 	}
 
@@ -74,22 +74,26 @@ public class PdfImageGenerator extends AbstractImageGenerator {
 	 */
 	public PdfImageGenerator(final Params params) throws DrawingException {
 		super(params);
+	}
+
+	@Override
+	protected void closeImageObject() {
 		getGraphics().dispose();
 		pdfDocument.close();
 	}
 
 	@Override
-	public void saveToOutputStream(OutputStream os) throws IOException {
+	public void saveToOutputStreamImplementation(OutputStream os) throws IOException {
 		inMemoryOutputStream.writeTo(os);
 	}
 
 	@Override
-	public void savePartToFile(int x, int y, int width, int height, String fileName) throws IOException {
+	public void savePartToFileImplementation(int x, int y, int width, int height, String fileName) throws IOException {
 		throw new NotImplementedException("Partial save is not implemented in PNG image generator");
 	}
 
 	@Override
-	public void savePartToOutputStream(int x, int y, int width, int height, OutputStream os) throws IOException {
+	public void savePartToOutputStreamImplementation(int x, int y, int width, int height, OutputStream os) throws IOException {
 		throw new NotImplementedException("Partial save is not implemented in PNG image generator");
 	}
 
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/PngImageGenerator.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/PngImageGenerator.java
index 69fdc2a2e0532a5a6acfda760654c4f739378d0b..77f65da695c922cf7d192656de4907e9b7301dea 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/PngImageGenerator.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/PngImageGenerator.java
@@ -44,26 +44,30 @@ public class PngImageGenerator extends NormalImageGenerator {
 	}
 
 	@Override
-	public void saveToFile(String fileName) throws IOException {
+	protected void closeImageObject() {
+	}
+
+	@Override
+	public void saveToFileImplementation(String fileName) throws IOException {
 		FileOutputStream fos = new FileOutputStream(new File(fileName));
-		saveToOutputStream(fos);
+		saveToOutputStreamImplementation(fos);
 		fos.close();
 	}
 
 	@Override
-	public void saveToOutputStream(OutputStream os) throws IOException {
+	public void saveToOutputStreamImplementation(OutputStream os) throws IOException {
 		ImageIO.write(getBi(), "PNG", os);
 	}
 
 	@Override
-	public void savePartToFile(int x, int y, int width, int height, String fileName) throws IOException {
+	public void savePartToFileImplementation(int x, int y, int width, int height, String fileName) throws IOException {
 		FileOutputStream fos = new FileOutputStream(new File(fileName));
-		savePartToOutputStream(x, y, width, height, fos);
+		savePartToOutputStreamImplementation(x, y, width, height, fos);
 		fos.close();
 	}
 
 	@Override
-	public void savePartToOutputStream(int x, int y, int width, int height, OutputStream os) throws IOException {
+	public void savePartToOutputStreamImplementation(int x, int y, int width, int height, OutputStream os) throws IOException {
 		BufferedImage tmpBI = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
 		Graphics2D tmpGraphics = tmpBI.createGraphics();
 		tmpGraphics.drawImage(getBi(), 0, 0, width, height, x, y, x + width, y + width, null);
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/SvgImageGenerator.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/SvgImageGenerator.java
index 8e7cdf013ac4a6663a1797556790807d0b64424c..bf97fec4fdbd82a3f0e544c08deeea55f24c72cf 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/SvgImageGenerator.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/SvgImageGenerator.java
@@ -38,7 +38,7 @@ public class SvgImageGenerator extends AbstractImageGenerator {
 	}
 
 	@Override
-	public void saveToFile(final String fileName) throws SVGGraphics2DIOException {
+	public void saveToFileImplementation(final String fileName) throws SVGGraphics2DIOException {
 		((SVGGraphics2D) getGraphics()).stream(fileName);
 	}
 
@@ -58,18 +58,22 @@ public class SvgImageGenerator extends AbstractImageGenerator {
 	}
 
 	@Override
-	public void saveToOutputStream(OutputStream os) throws IOException {
+	protected void closeImageObject() {
+	}
+
+	@Override
+	public void saveToOutputStreamImplementation(OutputStream os) throws IOException {
 		((SVGGraphics2D) getGraphics()).stream(new OutputStreamWriter(os));
 
 	}
 
 	@Override
-	public void savePartToFile(int x, int y, int width, int height, String fileName) throws IOException {
+	public void savePartToFileImplementation(int x, int y, int width, int height, String fileName) throws IOException {
 		throw new NotImplementedException("Partial save is not implemented in SVG image generator");
 	}
 
 	@Override
-	public void savePartToOutputStream(int x, int y, int width, int height, OutputStream os) throws IOException {
+	public void savePartToOutputStreamImplementation(int x, int y, int width, int height, OutputStream os) throws IOException {
 		throw new NotImplementedException("Partial save is not implemented in SVG image generator");
 	}
 
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/BioEntityConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/BioEntityConverter.java
index eaa090e2966932c54e93380b2f1844dd52f5217c..373ee420b1edf78f27fd734ae765b7c164e2a64f 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/BioEntityConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/BioEntityConverter.java
@@ -6,6 +6,7 @@ import java.util.List;
 
 import org.apache.log4j.Logger;
 
+import lcsb.mapviewer.commands.SemanticZoomLevelMatcher;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.InvalidStateException;
 import lcsb.mapviewer.converter.graphics.ConverterParams;
@@ -38,16 +39,23 @@ public abstract class BioEntityConverter<T extends BioEntity> {
 	 * Default class logger.
 	 */
 	@SuppressWarnings("unused")
-	private final Logger		logger			 = Logger.getLogger(BioEntityConverter.class);
+	private final Logger						 logger						= Logger.getLogger(BioEntityConverter.class);
+
+	/**
+	 * Class that allows to check if element is visible (or transparent) when
+	 * drawing. It's used to filter out invisible elements when drawing
+	 * semantic/hierarchy view.
+	 */
+	private SemanticZoomLevelMatcher zoomLevelMatcher	= new SemanticZoomLevelMatcher();
 
 	/**
 	 * Alpha value (0..255) used for visualizing overlay data that are normally
 	 * visualized in javascript.
 	 */
-	public static final int	LAYOUT_ALPHA = 200;
+	public static final int					 LAYOUT_ALPHA			= 200;
 
 	/**
-	 * This function draw representation of the alias on the graphics object.
+	 * This function draw {@link BioEntity} on the {@link Graphics2D} object.
 	 * 
 	 * @param bioEntity
 	 *          {@link BioEntity} that should be drawn
@@ -57,9 +65,11 @@ public abstract class BioEntityConverter<T extends BioEntity> {
 	 *          visuzalization params (like, should the object be filled with
 	 *          solid color, etc.), for more information see
 	 *          {@link ConverterParams}
+	 * @throws DrawingException
+	 *           thrown when there is a problem with drawing {@link BioEntity}
 	 * 
 	 */
-	public void draw(T bioEntity, Graphics2D graphics, ConverterParams params) {
+	public void draw(T bioEntity, Graphics2D graphics, ConverterParams params) throws DrawingException {
 		draw(bioEntity, graphics, params, new ArrayList<>());
 	}
 
@@ -78,22 +88,25 @@ public abstract class BioEntityConverter<T extends BioEntity> {
 	 *          list of {@link ColorSchema} that were used for visualizing this
 	 *          bioentity in different data overlays that should be overlayed on
 	 *          the alias
+	 * @throws DrawingException
+	 *           thrown when there is a problem with drawing {@link BioEntity}
 	 * 
 	 */
-	public abstract void draw(T bioEntity, Graphics2D graphics, ConverterParams params, List<ColorSchema> visualizedOverlaysColorSchemas);
+	public abstract void draw(T bioEntity, Graphics2D graphics, ConverterParams params, List<ColorSchema> visualizedOverlaysColorSchemas)
+			throws DrawingException;
 
 	/**
 	 * This function will find proper font size to display text within it. Then it
 	 * will print this text.
 	 * 
 	 * @param bioEntity
-	 *          bioEntity with description to be drawn
+	 *          {@link BioEntity} with description to be drawn
 	 * @param graphics
 	 *          where the description should be drawn
 	 * @param params
 	 *          parameters of visualization (centering, scale)
 	 * @throws DrawingException
-	 *           thrown when there is a problem with drawing bioEntity
+	 *           thrown when there is a problem with drawing {@link BioEntity}
 	 */
 	public abstract void drawText(T bioEntity, Graphics2D graphics, ConverterParams params) throws DrawingException;
 
@@ -144,8 +157,8 @@ public abstract class BioEntityConverter<T extends BioEntity> {
 	}
 
 	/**
-	 * Checks if {@link BioEntity} is visible according to visualization
-	 * given in params.
+	 * Checks if {@link BioEntity} is visible according to visualization given in
+	 * params.
 	 * 
 	 * @param bioEntity
 	 *          visibility of this object will be checked
@@ -154,8 +167,8 @@ public abstract class BioEntityConverter<T extends BioEntity> {
 	 * @return true if object is visible
 	 */
 	protected boolean isVisible(BioEntity bioEntity, ConverterParams params) {
-		if (params.isSemanticZoomingOn()) {
-			boolean result = matchLevel(params.getLevel(), bioEntity.getSemanticZoomLevelVisibility());
+		if (params.isNested()) {
+			boolean result = zoomLevelMatcher.isVisible(params.getLevel(), bioEntity.getVisibilityLevel());
 			if (bioEntity instanceof Element) {
 				Compartment compartment = ((Element) bioEntity).getCompartment();
 				if (compartment != null) {
@@ -181,6 +194,21 @@ public abstract class BioEntityConverter<T extends BioEntity> {
 		return true;
 	}
 
+	/**
+	 * Checks if {@link Element} given in the argument is transparent accordind to
+	 * the level given in the {@link ConverterParams}.
+	 * 
+	 * @param bioEntity
+	 *          {@link BioEntity} to be checked
+	 * @param params
+	 *          params against which check is run
+	 * @return <code>true</code> if object is transparent, <code>false</code>
+	 *         otherwise
+	 */
+	protected boolean isTransparent(Element bioEntity, ConverterParams params) {
+		return zoomLevelMatcher.isTransparent(params.getLevel(), bioEntity.getTransparencyLevel()) || !params.isNested();
+	}
+
 	/**
 	 * Checks if at least one reactant is visible.
 	 * 
@@ -219,33 +247,4 @@ public abstract class BioEntityConverter<T extends BioEntity> {
 		return result;
 	}
 
-	/**
-	 * Checks if level belongs to the range defined in
-	 * semanticZoomLevelVisibility.
-	 * 
-	 * @param level
-	 *          level to ve checked
-	 * @param semanticZoomLevelVisibility
-	 *          range of levels to be checked
-	 * @return true if level is in the range
-	 */
-	protected boolean matchLevel(int level, String semanticZoomLevelVisibility) {
-		if (semanticZoomLevelVisibility == null || semanticZoomLevelVisibility.isEmpty()) {
-			return true;
-		}
-		if (semanticZoomLevelVisibility.contains("{")) {
-			String strLevels = semanticZoomLevelVisibility.replace("{", "").replace("}", "");
-			String[] ranges = strLevels.split(",");
-			for (String string : ranges) {
-				if (Integer.valueOf(string).equals(level)) {
-					return true;
-				}
-			}
-		}
-		if (Integer.valueOf(semanticZoomLevelVisibility) <= level) {
-			return true;
-		}
-		return false;
-	}
-
 }
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/BioEntityConverterImpl.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/BioEntityConverterImpl.java
index 6f71c865dce77931cf7c3ebb27c619d3c464a177..ee41d7e57230d4bf9f2d6cd51d5cce7839774117 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/BioEntityConverterImpl.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/BioEntityConverterImpl.java
@@ -189,9 +189,13 @@ public class BioEntityConverterImpl extends BioEntityConverter<BioEntity> {
 
 	@SuppressWarnings("unchecked")
 	@Override
-	public void draw(BioEntity element, Graphics2D graphics, ConverterParams params, List<ColorSchema> visualizedLayoutsColorSchemas) {
-		if (isVisible(element, params)) {
-			elementConverter.draw(element, graphics, params, visualizedLayoutsColorSchemas);
+	public void draw(BioEntity element, Graphics2D graphics, ConverterParams params, List<ColorSchema> visualizedLayoutsColorSchemas) throws DrawingException {
+		try {
+			if (isVisible(element, params)) {
+				elementConverter.draw(element, graphics, params, visualizedLayoutsColorSchemas);
+			}
+		} catch (Exception e) {
+			throw new DrawingException(new ElementUtils().getElementTag(element) + "Problem with drawing element.", e);
 		}
 	}
 
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/BottomSquareCompartmentConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/BottomSquareCompartmentConverter.java
index c13cdbdaf24231be3974fe5bc902b7caaf22072b..de023622f39a0f46f708c8f4b8d30dab0f67b8dd 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/BottomSquareCompartmentConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/BottomSquareCompartmentConverter.java
@@ -9,15 +9,16 @@ import java.awt.geom.Line2D;
 import java.awt.geom.Point2D;
 import java.awt.geom.Rectangle2D;
 
+import org.apache.log4j.Logger;
+
 import lcsb.mapviewer.commands.ColorExtractor;
 import lcsb.mapviewer.converter.graphics.ConverterParams;
+import lcsb.mapviewer.converter.graphics.DrawingException;
 import lcsb.mapviewer.model.graphics.LineType;
 import lcsb.mapviewer.model.map.compartment.BottomSquareCompartment;
 import lcsb.mapviewer.model.map.layout.ColorSchema;
 import lcsb.mapviewer.model.map.species.Species;
 
-import org.apache.log4j.Logger;
-
 /**
  * Class responsible for drawing BottomSquareCompartment on the Graphics2D.
  * 
@@ -30,7 +31,7 @@ public class BottomSquareCompartmentConverter extends CompartmentConverter<Botto
 	 * Default class logger.
 	 */
 	@SuppressWarnings("unused")
-	private static Logger	logger	= Logger.getLogger(BottomSquareCompartmentConverter.class.getName());
+	private static Logger logger = Logger.getLogger(BottomSquareCompartmentConverter.class.getName());
 
 	/**
 	 * Default constructor.
@@ -44,24 +45,25 @@ public class BottomSquareCompartmentConverter extends CompartmentConverter<Botto
 	}
 
 	@Override
-	public void draw(final BottomSquareCompartment alias, final Graphics2D graphics, final ConverterParams params) {
+	public void draw(final BottomSquareCompartment compartment, final Graphics2D graphics, final ConverterParams params) throws DrawingException {
 		// keep the old values of colors and line
 		Color oldColor = graphics.getColor();
 		Stroke oldStroke = graphics.getStroke();
 
 		// create shape of the compartment
-		Shape s1 = new Line2D.Double(0, alias.getY(), alias.getWidth(), alias.getY());
-		Shape s3 = new Line2D.Double(0, alias.getY() + alias.getThickness(), alias.getWidth(), alias.getY() + alias.getThickness());
-		Area a1 = new Area(new Rectangle2D.Double(0.0, alias.getY(), alias.getWidth(), alias.getHeight()));
+		Shape s1 = new Line2D.Double(0, compartment.getY(), compartment.getWidth(), compartment.getY());
+		Shape s3 = new Line2D.Double(0, compartment.getY() + compartment.getThickness(), compartment.getWidth(), compartment.getY() + compartment.getThickness());
+		Area a1 = new Area(new Rectangle2D.Double(0.0, compartment.getY(), compartment.getWidth(), compartment.getHeight()));
 
-		Color c1 = alias.getColor();
+		Color c1 = compartment.getColor();
 		Color c2 = new Color(c1.getRed(), c1.getGreen(), c1.getBlue(), HIGH_ALPHA_LEVEL);
 		if (c1.equals(Color.WHITE)) {
 			c1 = Color.BLACK;
 		}
 
 		// fill the background
-		if (params.isFill()) {
+		boolean fill = !isTransparent(compartment, params);
+		if (fill) {
 			graphics.setColor(c1);
 		} else {
 			Color bgAlphaColor = new Color(c1.getRed(), c1.getGreen(), c1.getBlue(), getAlphaLevel());
@@ -76,7 +78,7 @@ public class BottomSquareCompartmentConverter extends CompartmentConverter<Botto
 		graphics.setStroke(LineType.SOLID.getStroke());
 		graphics.draw(s3);
 		graphics.setColor(c2);
-		if (params.isFill()) {
+		if (fill) {
 			graphics.fill(a1);
 		}
 		// restore color and line type
@@ -84,11 +86,11 @@ public class BottomSquareCompartmentConverter extends CompartmentConverter<Botto
 		graphics.setStroke(oldStroke);
 
 		// draw description
-		if (params.isFill()) {
-			Point2D tmpPoint = alias.getNamePoint();
-			alias.setNamePoint(alias.getCenter());
-			drawText(alias, graphics, params);
-			alias.setNamePoint(tmpPoint);
+		if (fill) {
+			Point2D tmpPoint = compartment.getNamePoint();
+			compartment.setNamePoint(compartment.getCenter());
+			drawText(compartment, graphics, params);
+			compartment.setNamePoint(tmpPoint);
 		}
 	}
 }
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/CompartmentConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/CompartmentConverter.java
index 555a06d3d0e4ffb5246bc36d5b137c9c9b8d79c6..0846c804c82be180025eb073a2c2afaa31a4a307 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/CompartmentConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/CompartmentConverter.java
@@ -10,16 +10,17 @@ import org.apache.log4j.Logger;
 
 import lcsb.mapviewer.commands.ColorExtractor;
 import lcsb.mapviewer.common.Configuration;
-import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.geometry.EllipseTransformation;
 import lcsb.mapviewer.common.geometry.LineTransformation;
 import lcsb.mapviewer.converter.graphics.ConverterParams;
+import lcsb.mapviewer.converter.graphics.DrawingException;
 import lcsb.mapviewer.converter.graphics.bioEntity.element.ElementConverter;
 import lcsb.mapviewer.converter.graphics.geometry.FontFinder;
 import lcsb.mapviewer.converter.graphics.geometry.RectangleTooSmallException;
 import lcsb.mapviewer.converter.graphics.placefinder.PlaceFinder;
 import lcsb.mapviewer.model.map.compartment.Compartment;
 import lcsb.mapviewer.model.map.layout.ColorSchema;
+import lcsb.mapviewer.modelutils.map.ElementUtils;
 
 /**
  * Abstract class responsible for common methods to draw compartmentAliases on
@@ -97,32 +98,34 @@ public abstract class CompartmentConverter<T extends Compartment> extends Elemen
 	};
 
 	@Override
-	public void drawText(final T alias, final Graphics2D graphics, final ConverterParams params) {
-		if (alias.getWidth() < Configuration.EPSILON || alias.getHeight() < Configuration.EPSILON) {
-			throw new InvalidArgumentException(
-					"Dimension of the alias must be bigger than 0. Alias id: " + alias.getElementId() + " (name: \"" + alias.getName() + "\")");
+	public void drawText(final T compartment, final Graphics2D graphics, final ConverterParams params) throws DrawingException {
+		if (compartment.getWidth() < Configuration.EPSILON || compartment.getHeight() < Configuration.EPSILON) {
+			throw new DrawingException(new ElementUtils().getElementTag(compartment) + "Dimension of the alias must be bigger than 0.");
 		}
-		Rectangle2D border = alias.getBorder();
-		if (params.getLevel() >= alias.getVisibilityLevel() && params.getLevel() < alias.getTransparencyLevel()) {
+		boolean textCentered = !isTransparent(compartment, params);
+		Rectangle2D border;
+		if (textCentered) {
 			synchronized (placeFinderSynchronization) {
-				if (placeFinder == null || placeFinder.getModel() != alias.getModelData()) {
-					placeFinder = new PlaceFinder(alias.getModelData().getModel());
+				if (placeFinder == null || placeFinder.getModel() != compartment.getModelData()) {
+					placeFinder = new PlaceFinder(compartment.getModelData().getModel());
 				}
-				border = placeFinder.getRetangle(alias);
+				border = placeFinder.getRetangle(compartment, params.getLevel());
 			}
-		} else if (!params.isTextCentered()) {
+		} else {
 			border = new Rectangle2D.Double(
-					alias.getNamePoint().getX(), alias.getNamePoint().getY(), alias.getWidth() - (alias.getNamePoint().getX() - alias.getX()),
-					alias.getHeight() - (alias.getNamePoint().getY() - alias.getY()));
+					compartment.getNamePoint().getX(), compartment.getNamePoint().getY(),
+					compartment.getWidth() - (compartment.getNamePoint().getX() - compartment.getX()),
+					compartment.getHeight() - (compartment.getNamePoint().getY() - compartment.getY()));
+
 		}
 		double fontSize = DEFAULT_FONT_SIZE * params.getScale();
-		if (alias.getFontSize() != null) {
-			fontSize = alias.getFontSize() * params.getScale();
+		if (compartment.getFontSize() != null) {
+			fontSize = compartment.getFontSize() * params.getScale();
 		}
 		String fontName = Font.SANS_SERIF;
 		try {
-			fontSize = FontFinder.findMaxFontSize((int) Math.round(fontSize), fontName, graphics, border, alias.getName());
-			FontFinder.drawText((int) fontSize, fontName, graphics, border, alias.getName(), params.isTextCentered());
+			fontSize = FontFinder.findMaxFontSize((int) Math.round(fontSize), fontName, graphics, border, compartment.getName());
+			FontFinder.drawText((int) fontSize, fontName, graphics, border, compartment.getName(), textCentered);
 		} catch (RectangleTooSmallException e) {
 			// if it's too small then don't draw
 			return;
@@ -175,7 +178,7 @@ public abstract class CompartmentConverter<T extends Compartment> extends Elemen
 	}
 
 	@Override
-	public void draw(T alias, Graphics2D graphics, ConverterParams params, List<ColorSchema> visualizedLayoutsColorSchemas) {
+	public void draw(T alias, Graphics2D graphics, ConverterParams params, List<ColorSchema> visualizedLayoutsColorSchemas) throws DrawingException {
 		draw(alias, graphics, params);
 
 		Color oldColor = graphics.getColor();
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/LeftSquareCompartmentConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/LeftSquareCompartmentConverter.java
index 513684d8ad9e028c08f8e0d7f84f2034f43caebf..5b8b989f13044bdbd7bbf99b95c03bd66c5d0f63 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/LeftSquareCompartmentConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/LeftSquareCompartmentConverter.java
@@ -11,6 +11,7 @@ import java.awt.geom.Rectangle2D;
 
 import lcsb.mapviewer.commands.ColorExtractor;
 import lcsb.mapviewer.converter.graphics.ConverterParams;
+import lcsb.mapviewer.converter.graphics.DrawingException;
 import lcsb.mapviewer.model.graphics.LineType;
 import lcsb.mapviewer.model.map.compartment.LeftSquareCompartment;
 import lcsb.mapviewer.model.map.layout.ColorSchema;
@@ -29,7 +30,7 @@ public class LeftSquareCompartmentConverter extends CompartmentConverter<LeftSqu
 	 * Default class logger.
 	 */
 	@SuppressWarnings("unused")
-	private static Logger	logger	= Logger.getLogger(LeftSquareCompartmentConverter.class.getName());
+	private static Logger logger = Logger.getLogger(LeftSquareCompartmentConverter.class.getName());
 
 	/**
 	 * Default constructor.
@@ -44,24 +45,26 @@ public class LeftSquareCompartmentConverter extends CompartmentConverter<LeftSqu
 	}
 
 	@Override
-	public void draw(final LeftSquareCompartment alias, final Graphics2D graphics, final ConverterParams params) {
+	public void draw(final LeftSquareCompartment compartment, final Graphics2D graphics, final ConverterParams params) throws DrawingException {
 		// keep the old values of color and line type
 		Color oldColor = graphics.getColor();
 		Stroke oldStroke = graphics.getStroke();
 
 		// create shape of the compartment
-		Shape s1 = new Line2D.Double(alias.getWidth(), alias.getHeight(), alias.getWidth(), 0);
-		Shape s3 = new Line2D.Double(alias.getWidth() - alias.getThickness(), 0, alias.getWidth() - alias.getThickness(), alias.getHeight());
-		Area a1 = new Area(new Rectangle2D.Double(0.0, 0.0, alias.getWidth(), alias.getHeight()));
+		Shape s1 = new Line2D.Double(compartment.getWidth(), compartment.getHeight(), compartment.getWidth(), 0);
+		Shape s3 = new Line2D.Double(
+				compartment.getWidth() - compartment.getThickness(), 0, compartment.getWidth() - compartment.getThickness(), compartment.getHeight());
+		Area a1 = new Area(new Rectangle2D.Double(0.0, 0.0, compartment.getWidth(), compartment.getHeight()));
 
-		Color c1 = alias.getColor();
+		Color c1 = compartment.getColor();
 		Color c2 = new Color(c1.getRed(), c1.getGreen(), c1.getBlue(), HIGH_ALPHA_LEVEL);
 		if (c1.equals(Color.WHITE)) {
 			c1 = Color.BLACK;
 		}
 
 		// fill the background
-		if (params.isFill()) {
+		boolean fill = !isTransparent(compartment, params);
+		if (fill) {
 			graphics.setColor(c1);
 		} else {
 			Color bgAlphaColor = new Color(c1.getRed(), c1.getGreen(), c1.getBlue(), getAlphaLevel());
@@ -76,7 +79,7 @@ public class LeftSquareCompartmentConverter extends CompartmentConverter<LeftSqu
 		graphics.setStroke(LineType.SOLID.getStroke());
 		graphics.draw(s3);
 		graphics.setColor(c2);
-		if (params.isFill()) {
+		if (fill) {
 			graphics.fill(a1);
 		}
 
@@ -85,11 +88,11 @@ public class LeftSquareCompartmentConverter extends CompartmentConverter<LeftSqu
 		graphics.setStroke(oldStroke);
 
 		// draw description
-		if (params.isFill()) {
-			Point2D tmpPoint = alias.getNamePoint();
-			alias.setNamePoint(alias.getCenter());
-			drawText(alias, graphics, params);
-			alias.setNamePoint(tmpPoint);
+		if (fill) {
+			Point2D tmpPoint = compartment.getNamePoint();
+			compartment.setNamePoint(compartment.getCenter());
+			drawText(compartment, graphics, params);
+			compartment.setNamePoint(tmpPoint);
 		}
 	}
 }
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/OvalCompartmentConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/OvalCompartmentConverter.java
index 611eb3deade2953f84cf4eaaf47b024479cb04c5..f570a7937d439535143be54b70251589ac45900b 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/OvalCompartmentConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/OvalCompartmentConverter.java
@@ -10,10 +10,11 @@ import java.awt.geom.Point2D;
 
 import lcsb.mapviewer.commands.ColorExtractor;
 import lcsb.mapviewer.converter.graphics.ConverterParams;
+import lcsb.mapviewer.converter.graphics.DrawingException;
 import lcsb.mapviewer.model.graphics.LineType;
+import lcsb.mapviewer.model.map.compartment.Compartment;
 import lcsb.mapviewer.model.map.compartment.OvalCompartment;
 import lcsb.mapviewer.model.map.layout.ColorSchema;
-import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.map.species.Species;
 
 /**
@@ -38,27 +39,27 @@ public class OvalCompartmentConverter extends CompartmentConverter<OvalCompartme
 	/**
 	 * Returns shape representing alias.
 	 * 
-	 * @param alias
+	 * @param compartment
 	 *          alias for which we are looking for a Shape
 	 * @return Shape object that represents alias
 	 */
-	private Shape getShape(final Element alias) {
-		return new Ellipse2D.Double(alias.getX(), alias.getY(), alias.getWidth(), alias.getHeight());
+	private Shape getShape(final Compartment compartment) {
+		return new Ellipse2D.Double(compartment.getX(), compartment.getY(), compartment.getWidth(), compartment.getHeight());
 	}
 
 	@Override
-	public void draw(final OvalCompartment alias, final Graphics2D graphics, final ConverterParams params) {
+	public void draw(final OvalCompartment compartment, final Graphics2D graphics, final ConverterParams params) throws DrawingException {
 		// keep the old values of color and line type
 		Color oldColor = graphics.getColor();
 		Stroke oldStroke = graphics.getStroke();
 
 		// create shape of the compartment
-		Shape s1 = getShape(alias);
-		alias.increaseBorder(-alias.getThickness());
-		Shape s3 = getShape(alias);
-		alias.increaseBorder(alias.getThickness());
+		Shape s1 = getShape(compartment);
+		compartment.increaseBorder(-compartment.getThickness());
+		Shape s3 = getShape(compartment);
+		compartment.increaseBorder(compartment.getThickness());
 
-		Color c1 = alias.getColor();
+		Color c1 = compartment.getColor();
 		Color c2 = new Color(c1.getRed(), c1.getGreen(), c1.getBlue(), HIGH_ALPHA_LEVEL);
 		if (c1.equals(Color.WHITE)) {
 			c1 = Color.BLACK;
@@ -68,7 +69,8 @@ public class OvalCompartmentConverter extends CompartmentConverter<OvalCompartme
 		a1.subtract(new Area(s3));
 
 		// fill the background
-		if (params.isFill()) {
+		boolean fill = !isTransparent(compartment, params);
+		if (fill) {
 			graphics.setColor(c1);
 		} else {
 			Color bgAlphaColor = new Color(c1.getRed(), c1.getGreen(), c1.getBlue(), getAlphaLevel());
@@ -90,14 +92,14 @@ public class OvalCompartmentConverter extends CompartmentConverter<OvalCompartme
 		graphics.setStroke(oldStroke);
 
 		// draw description
-		if (params.isFill()) {
-			Point2D tmpPoint = alias.getNamePoint();
-			alias.setNamePoint(alias.getCenter());
-			drawText(alias, graphics, params);
-			alias.setNamePoint(tmpPoint);
+		if (fill) {
+			Point2D tmpPoint = compartment.getNamePoint();
+			compartment.setNamePoint(compartment.getCenter());
+			drawText(compartment, graphics, params);
+			compartment.setNamePoint(tmpPoint);
 		} else {
-			if (!alias.containsIdenticalSpecies()) {
-				drawText(alias, graphics, params);
+			if (!compartment.containsIdenticalSpecies()) {
+				drawText(compartment, graphics, params);
 			}
 		}
 	}
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/PathwayCompartmentConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/PathwayCompartmentConverter.java
index 6d691cfab2def72d712c1f44930ae194b5f151e9..9440065afb029eeb5dac45d12ab563041b64ea4e 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/PathwayCompartmentConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/PathwayCompartmentConverter.java
@@ -9,6 +9,7 @@ import java.awt.geom.Rectangle2D;
 
 import lcsb.mapviewer.commands.ColorExtractor;
 import lcsb.mapviewer.converter.graphics.ConverterParams;
+import lcsb.mapviewer.converter.graphics.DrawingException;
 import lcsb.mapviewer.model.graphics.LineType;
 import lcsb.mapviewer.model.map.compartment.PathwayCompartment;
 import lcsb.mapviewer.model.map.layout.ColorSchema;
@@ -40,17 +41,18 @@ public class PathwayCompartmentConverter extends CompartmentConverter<PathwayCom
 	private Color backgroundColor = Color.LIGHT_GRAY;
 
 	@Override
-	public void draw(final PathwayCompartment alias, final Graphics2D graphics, final ConverterParams params) {
+	public void draw(final PathwayCompartment compartment, final Graphics2D graphics, final ConverterParams params) throws DrawingException {
 		// keep the old values of colors and line
 		Color oldColor = graphics.getColor();
 		Stroke oldStroke = graphics.getStroke();
 
-		Shape shape = new Rectangle2D.Double(alias.getX(), alias.getY(), alias.getWidth(), alias.getHeight());
+		Shape shape = new Rectangle2D.Double(compartment.getX(), compartment.getY(), compartment.getWidth(), compartment.getHeight());
 
-		Color color = alias.getColor();
+		Color color = compartment.getColor();
 
 		// fill the background
-		if (params.isFill()) {
+		boolean fill = !isTransparent(compartment, params);
+		if (fill) {
 			graphics.setColor(backgroundColor);
 		} else {
 			Color bgAlphaColor = new Color(0, 0, 0, getAlphaLevel());
@@ -68,14 +70,14 @@ public class PathwayCompartmentConverter extends CompartmentConverter<PathwayCom
 		graphics.setStroke(oldStroke);
 
 		// draw description of the compartment
-		if (params.isFill()) {
-			Point2D tmpPoint = alias.getNamePoint();
-			alias.setNamePoint(alias.getCenter());
-			drawText(alias, graphics, params);
-			alias.setNamePoint(tmpPoint);
+		if (fill) {
+			Point2D tmpPoint = compartment.getNamePoint();
+			compartment.setNamePoint(compartment.getCenter());
+			drawText(compartment, graphics, params);
+			compartment.setNamePoint(tmpPoint);
 		} else {
-			if (!alias.containsIdenticalSpecies()) {
-				drawText(alias, graphics, params);
+			if (!compartment.containsIdenticalSpecies()) {
+				drawText(compartment, graphics, params);
 			}
 		}
 	}
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/RightSquareCompartmentConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/RightSquareCompartmentConverter.java
index c1dbe6fa02feade3f0bdbb25f31a667a0442a376..0dde9a347eb5f22c52c779b49b8835d5b5e5668a 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/RightSquareCompartmentConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/RightSquareCompartmentConverter.java
@@ -11,6 +11,7 @@ import java.awt.geom.Rectangle2D;
 
 import lcsb.mapviewer.commands.ColorExtractor;
 import lcsb.mapviewer.converter.graphics.ConverterParams;
+import lcsb.mapviewer.converter.graphics.DrawingException;
 import lcsb.mapviewer.model.graphics.LineType;
 import lcsb.mapviewer.model.map.compartment.RightSquareCompartment;
 import lcsb.mapviewer.model.map.layout.ColorSchema;
@@ -30,7 +31,7 @@ public class RightSquareCompartmentConverter extends CompartmentConverter<RightS
 	 * Default class logger.
 	 */
 	@SuppressWarnings("unused")
-	private static Logger	logger	= Logger.getLogger(RightSquareCompartmentConverter.class.getName());
+	private static Logger logger = Logger.getLogger(RightSquareCompartmentConverter.class.getName());
 
 	/**
 	 * Default constructor.
@@ -44,24 +45,25 @@ public class RightSquareCompartmentConverter extends CompartmentConverter<RightS
 	}
 
 	@Override
-	public void draw(final RightSquareCompartment alias, final Graphics2D graphics, final ConverterParams params) {
+	public void draw(final RightSquareCompartment compartment, final Graphics2D graphics, final ConverterParams params) throws DrawingException {
 		// keep the old values of color and line type
 		Color oldColor = graphics.getColor();
 		Stroke oldStroke = graphics.getStroke();
 
 		// create shape of the compartment
-		Shape s1 = new Line2D.Double(alias.getX(), alias.getHeight(), alias.getX(), 0);
-		Shape s3 = new Line2D.Double(alias.getX() + alias.getThickness(), alias.getHeight(), alias.getX(), 0);
-		Area a1 = new Area(new Rectangle2D.Double(alias.getX(), 0.0, alias.getWidth(), alias.getHeight()));
+		Shape s1 = new Line2D.Double(compartment.getX(), compartment.getHeight(), compartment.getX(), 0);
+		Shape s3 = new Line2D.Double(compartment.getX() + compartment.getThickness(), compartment.getHeight(), compartment.getX(), 0);
+		Area a1 = new Area(new Rectangle2D.Double(compartment.getX(), 0.0, compartment.getWidth(), compartment.getHeight()));
 
-		Color c1 = alias.getColor();
+		Color c1 = compartment.getColor();
 		Color c2 = new Color(c1.getRed(), c1.getGreen(), c1.getBlue(), HIGH_ALPHA_LEVEL);
 		if (c1.equals(Color.WHITE)) {
 			c1 = Color.BLACK;
 		}
 
 		// fill the background
-		if (params.isFill()) {
+		boolean fill = !isTransparent(compartment, params);
+		if (fill) {
 			graphics.setColor(c1);
 		} else {
 			Color bgAlphaColor = new Color(c1.getRed(), c1.getGreen(), c1.getBlue(), getAlphaLevel());
@@ -76,7 +78,7 @@ public class RightSquareCompartmentConverter extends CompartmentConverter<RightS
 		graphics.setStroke(LineType.SOLID.getStroke());
 		graphics.draw(s3);
 		graphics.setColor(c2);
-		if (params.isFill()) {
+		if (fill) {
 			graphics.fill(a1);
 		}
 		// restore color and line type
@@ -84,18 +86,18 @@ public class RightSquareCompartmentConverter extends CompartmentConverter<RightS
 		graphics.setStroke(oldStroke);
 
 		// three lines below are only temporary fix...
-		double x = alias.getNamePoint().getX() - alias.getX();
-		double y = alias.getNamePoint().getY();
-		alias.getNamePoint().setLocation(x, y);
+		double x = compartment.getNamePoint().getX() - compartment.getX();
+		double y = compartment.getNamePoint().getY();
+		compartment.getNamePoint().setLocation(x, y);
 
 		// draw description
-		if (params.isFill()) {
-			Point2D tmpPoint = alias.getNamePoint();
-			alias.setNamePoint(alias.getCenter());
-			drawText(alias, graphics, params);
-			alias.setNamePoint(tmpPoint);
+		if (fill) {
+			Point2D tmpPoint = compartment.getNamePoint();
+			compartment.setNamePoint(compartment.getCenter());
+			drawText(compartment, graphics, params);
+			compartment.setNamePoint(tmpPoint);
 		}
-		x += alias.getX();
-		alias.getNamePoint().setLocation(x, y);
+		x += compartment.getX();
+		compartment.getNamePoint().setLocation(x, y);
 	}
 }
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/SquareCompartmentConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/SquareCompartmentConverter.java
index 169950485e06c1e1e55659969a56d0093a2cacf4..8f320bf9a3958527c194af918f3371d7bf9207f2 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/SquareCompartmentConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/SquareCompartmentConverter.java
@@ -12,14 +12,15 @@ import org.apache.log4j.Logger;
 
 import lcsb.mapviewer.commands.ColorExtractor;
 import lcsb.mapviewer.converter.graphics.ConverterParams;
+import lcsb.mapviewer.converter.graphics.DrawingException;
 import lcsb.mapviewer.model.graphics.LineType;
+import lcsb.mapviewer.model.map.compartment.Compartment;
 import lcsb.mapviewer.model.map.compartment.SquareCompartment;
 import lcsb.mapviewer.model.map.layout.ColorSchema;
-import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.map.species.Species;
 
 /**
- * Class responsible for drawing SquareCompartment on the Graphics2D.
+ * Class responsible for drawing SquareCompartment on the {@link Graphics2D}.
  * 
  * @author Piotr Gawron
  * 
@@ -48,29 +49,30 @@ public class SquareCompartmentConverter extends CompartmentConverter<SquareCompa
 	}
 
 	/**
-	 * Returns shape representing alias.
+	 * Returns shape representing compartment.
 	 * 
-	 * @param alias
-	 *          alias for which we are looking for a Shape
-	 * @return Shape object that represents alias
+	 * @param compartment
+	 *          compartment for which we are looking for a {@link Shape}
+	 * @return {@link Shape} object that represents compartment
 	 */
-	private Shape getShape(final Element alias) {
-		return new RoundRectangle2D.Double(alias.getX(), alias.getY(), alias.getWidth(), alias.getHeight(), RECTANGLE_CORNER_ARC_SIZE, RECTANGLE_CORNER_ARC_SIZE);
+	private Shape getShape(final Compartment compartment) {
+		return new RoundRectangle2D.Double(
+				compartment.getX(), compartment.getY(), compartment.getWidth(), compartment.getHeight(), RECTANGLE_CORNER_ARC_SIZE, RECTANGLE_CORNER_ARC_SIZE);
 	}
 
 	@Override
-	public void draw(final SquareCompartment alias, final Graphics2D graphics, final ConverterParams params) {
+	public void draw(final SquareCompartment compartment, final Graphics2D graphics, final ConverterParams params) throws DrawingException {
 		// keep the old values of color and line type
 		Color oldColor = graphics.getColor();
 		Stroke oldStroke = graphics.getStroke();
 
 		// create shape of the compartment
-		Shape s1 = getShape(alias);
-		alias.increaseBorder(-alias.getThickness());
-		Shape s3 = getShape(alias);
-		alias.increaseBorder(alias.getThickness());
+		Shape s1 = getShape(compartment);
+		compartment.increaseBorder(-compartment.getThickness());
+		Shape s3 = getShape(compartment);
+		compartment.increaseBorder(compartment.getThickness());
 
-		Color c1 = alias.getColor();
+		Color c1 = compartment.getColor();
 		Color c2 = new Color(c1.getRed(), c1.getGreen(), c1.getBlue(), HIGH_ALPHA_LEVEL);
 		if (c1.equals(Color.WHITE)) {
 			c1 = Color.BLACK;
@@ -80,7 +82,8 @@ public class SquareCompartmentConverter extends CompartmentConverter<SquareCompa
 		a1.subtract(new Area(s3));
 
 		// fill the background
-		if (params.isFill()) {
+		boolean fill = !isTransparent(compartment, params);
+		if (fill) {
 			graphics.setColor(c1);
 		} else {
 			Color bgAlphaColor = new Color(c1.getRed(), c1.getGreen(), c1.getBlue(), getAlphaLevel());
@@ -102,11 +105,11 @@ public class SquareCompartmentConverter extends CompartmentConverter<SquareCompa
 		graphics.setStroke(oldStroke);
 
 		// draw description
-		if (params.isFill()) {
-			Point2D tmpPoint = alias.getNamePoint();
-			alias.setNamePoint(alias.getCenter());
-			drawText(alias, graphics, params);
-			alias.setNamePoint(tmpPoint);
+		if (fill) {
+			Point2D tmpPoint = compartment.getNamePoint();
+			compartment.setNamePoint(compartment.getCenter());
+			drawText(compartment, graphics, params);
+			compartment.setNamePoint(tmpPoint);
 		}
 	}
 }
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/TopSquareCompartmentConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/TopSquareCompartmentConverter.java
index bdc72589df5e084cef1f4954297159415bf597af..2e1ef6dfcd8b922dc489f34e81d712a313a2c692 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/TopSquareCompartmentConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/compartment/TopSquareCompartmentConverter.java
@@ -11,6 +11,7 @@ import java.awt.geom.Rectangle2D;
 
 import lcsb.mapviewer.commands.ColorExtractor;
 import lcsb.mapviewer.converter.graphics.ConverterParams;
+import lcsb.mapviewer.converter.graphics.DrawingException;
 import lcsb.mapviewer.model.graphics.LineType;
 import lcsb.mapviewer.model.map.compartment.TopSquareCompartment;
 import lcsb.mapviewer.model.map.layout.ColorSchema;
@@ -19,7 +20,7 @@ import lcsb.mapviewer.model.map.species.Species;
 import org.apache.log4j.Logger;
 
 /**
- * Class responsible for drawing TopSquareCompartment on the Graphics2D.
+ * Class responsible for drawing TopSquareCompartment on the {@link Graphics2D}.
  * 
  * @author Piotr Gawron
  * 
@@ -30,7 +31,7 @@ public class TopSquareCompartmentConverter extends CompartmentConverter<TopSquar
 	 * Default class logger.
 	 */
 	@SuppressWarnings("unused")
-	private static Logger	logger	= Logger.getLogger(TopSquareCompartmentConverter.class.getName());
+	private static Logger logger = Logger.getLogger(TopSquareCompartmentConverter.class.getName());
 
 	/**
 	 * Default constructor.
@@ -44,21 +45,24 @@ public class TopSquareCompartmentConverter extends CompartmentConverter<TopSquar
 	}
 
 	@Override
-	public void draw(final TopSquareCompartment alias, final Graphics2D graphics, final ConverterParams params) {
+	public void draw(final TopSquareCompartment compartment, final Graphics2D graphics, final ConverterParams params) throws DrawingException {
 		Color oldColor = graphics.getColor();
 		Stroke oldStroke = graphics.getStroke();
 
-		Shape s1 = new Line2D.Double(0, alias.getHeight(), alias.getWidth(), alias.getHeight());
-		Shape s3 = new Line2D.Double(0, alias.getHeight() - alias.getThickness(), alias.getWidth(), alias.getHeight() - alias.getThickness());
-		Area a1 = new Area(new Rectangle2D.Double(0.0, 0.0, alias.getWidth(), alias.getHeight()));
+		Shape s1 = new Line2D.Double(0, compartment.getHeight(), compartment.getWidth(), compartment.getHeight());
+		Shape s3 = new Line2D.Double(
+				0, compartment.getHeight() - compartment.getThickness(), compartment.getWidth(), compartment.getHeight() - compartment.getThickness());
+		Area a1 = new Area(new Rectangle2D.Double(0.0, 0.0, compartment.getWidth(), compartment.getHeight()));
 
-		Color c1 = alias.getColor();
+		Color c1 = compartment.getColor();
 		Color c2 = new Color(c1.getRed(), c1.getGreen(), c1.getBlue(), HIGH_ALPHA_LEVEL);
 		if (c1.equals(Color.WHITE)) {
 			c1 = Color.BLACK;
 		}
 
-		if (params.isFill()) {
+		// fill the background
+		boolean fill = !isTransparent(compartment, params);
+		if (fill) {
 			graphics.setColor(c1);
 		} else {
 			Color bgAlphaColor = new Color(c1.getRed(), c1.getGreen(), c1.getBlue(), getAlphaLevel());
@@ -72,7 +76,7 @@ public class TopSquareCompartmentConverter extends CompartmentConverter<TopSquar
 		graphics.setStroke(LineType.SOLID.getStroke());
 		graphics.draw(s3);
 		graphics.setColor(c2);
-		if (params.isFill()) {
+		if (fill) {
 			graphics.fill(a1);
 		}
 
@@ -80,11 +84,11 @@ public class TopSquareCompartmentConverter extends CompartmentConverter<TopSquar
 		graphics.setColor(oldColor);
 		graphics.setStroke(oldStroke);
 		// draw description
-		if (params.isFill()) {
-			Point2D tmpPoint = alias.getNamePoint();
-			alias.setNamePoint(alias.getCenter());
-			drawText(alias, graphics, params);
-			alias.setNamePoint(tmpPoint);
+		if (fill) {
+			Point2D tmpPoint = compartment.getNamePoint();
+			compartment.setNamePoint(compartment.getCenter());
+			drawText(compartment, graphics, params);
+			compartment.setNamePoint(tmpPoint);
 		}
 	}
 }
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/AntisenseRnaConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/AntisenseRnaConverter.java
index 84d00dc02a8c969fcc03de52697d7d17a7f988cb..f8b7777cdc7a41ecf1397b49f59c5ff9c86d61e8 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/AntisenseRnaConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/AntisenseRnaConverter.java
@@ -15,16 +15,15 @@ import org.apache.log4j.Logger;
 
 import lcsb.mapviewer.commands.ColorExtractor;
 import lcsb.mapviewer.converter.graphics.ConverterParams;
-import lcsb.mapviewer.model.map.species.Element;
-import lcsb.mapviewer.model.map.species.Species;
 import lcsb.mapviewer.model.map.layout.ColorSchema;
 import lcsb.mapviewer.model.map.species.AntisenseRna;
+import lcsb.mapviewer.model.map.species.Species;
 import lcsb.mapviewer.model.map.species.field.AntisenseRnaRegion;
 import lcsb.mapviewer.model.map.species.field.ModificationState;
 
 /**
- * This class defines methods used for drawing Antisense Rna SpeciesAlias on the
- * graphics2d object.
+ * This class defines methods used for drawing {@link AntisenseRna} on the
+ * {@link Graphics2D} object.
  * 
  * @author Piotr Gawron
  * 
@@ -48,40 +47,39 @@ public class AntisenseRnaConverter extends SpeciesConverter<AntisenseRna> {
 		super(colorExtractor);
 	}
 
-
 	@Override
-	public void draw(final AntisenseRna alias, final Graphics2D graphics, final ConverterParams params) {
-		GeneralPath path = getAntisenseRnaPath(alias);
+	public void draw(final AntisenseRna antisenseRna, final Graphics2D graphics, final ConverterParams params) {
+		GeneralPath path = getAntisenseRnaPath(antisenseRna);
 		Color c = graphics.getColor();
-		graphics.setColor(alias.getColor());
+		graphics.setColor(antisenseRna.getColor());
 		graphics.fill(path);
 		graphics.setColor(c);
 		Stroke stroke = graphics.getStroke();
-		graphics.setStroke(getBorderLine(alias));
+		graphics.setStroke(getBorderLine(antisenseRna));
 		graphics.draw(path);
 		graphics.setStroke(stroke);
 
-		for (AntisenseRnaRegion mr : alias.getRegions()) {
-			drawRegion(alias, mr, graphics, false, false);
+		for (AntisenseRnaRegion mr : antisenseRna.getRegions()) {
+			drawRegion(antisenseRna, mr, graphics, false, false);
 		}
 
-		drawText(alias, graphics, params);
+		drawText(antisenseRna, graphics, params);
 	}
 
 	/**
-	 * Returns alias border as a GeneralPath object.
+	 * Returns {@link AntisenseRna} border as a {@link GeneralPath} object.
 	 * 
-	 * @param alias
-	 *          alias for which we want to get border
-	 * @return border of the alias
+	 * @param antisenseRna
+	 *          {@link AntisenseRna} for which we want to get border
+	 * @return border of the {@link AntisenseRna}
 	 */
-	private GeneralPath getAntisenseRnaPath(final Element alias) {
+	private GeneralPath getAntisenseRnaPath(final AntisenseRna antisenseRna) {
 		// CHECKSTYLE:OFF
 		GeneralPath path = new GeneralPath(Path2D.WIND_EVEN_ODD, 4);
-		path.moveTo(alias.getX(), alias.getY());
-		path.lineTo(alias.getX() + alias.getWidth() * 3 / 4, alias.getY());
-		path.lineTo(alias.getX() + alias.getWidth(), alias.getY() + alias.getHeight());
-		path.lineTo(alias.getX() + alias.getWidth() / 4, alias.getY() + alias.getHeight());
+		path.moveTo(antisenseRna.getX(), antisenseRna.getY());
+		path.lineTo(antisenseRna.getX() + antisenseRna.getWidth() * 3 / 4, antisenseRna.getY());
+		path.lineTo(antisenseRna.getX() + antisenseRna.getWidth(), antisenseRna.getY() + antisenseRna.getHeight());
+		path.lineTo(antisenseRna.getX() + antisenseRna.getWidth() / 4, antisenseRna.getY() + antisenseRna.getHeight());
 		// CHECKSTYLE:ON
 		path.closePath();
 		return path;
@@ -95,33 +93,33 @@ public class AntisenseRnaConverter extends SpeciesConverter<AntisenseRna> {
 	/**
 	 * This method draws antisense rna region for given alias.
 	 * 
-	 * @param alias
-	 *          alias on which region should be drawn
-	 * @param mr
-	 *          region to be drawn
+	 * @param antisenseRna
+	 *          {@link AntisenseRna} on which region should be drawn
+	 * @param region
+	 *          {@link AntisenseRnaRegion} to be drawn
 	 * @param graphics
-	 *          graphics where we draw region
+	 *          {@link Graphics2D} where we draw region
 	 * @param drawEmptyRegion
 	 *          flag determining if we shoudl draw empty regions
 	 * @param drawDescription
 	 *          flag determining if we want to draw description as well
 	 */
-	private void drawRegion(final AntisenseRna alias, final AntisenseRnaRegion mr, final Graphics2D graphics, final boolean drawEmptyRegion,
+	private void drawRegion(final AntisenseRna antisenseRna, final AntisenseRnaRegion region, final Graphics2D graphics, final boolean drawEmptyRegion,
 			final boolean drawDescription) {
-		if ((!drawEmptyRegion) && (mr.getState() == null)) {
+		if ((!drawEmptyRegion) && (region.getState() == null)) {
 			return;
 		}
 		double diameter = DEFAULT_MODIFICATION_DIAMETER;
 
-		double x = alias.getX();
-		double y = alias.getY();
+		double x = antisenseRna.getX();
+		double y = antisenseRna.getY();
 
-		double width = alias.getWidth();
+		double width = antisenseRna.getWidth();
 
 		// CHECKSTYLE:OFF
 		// we draw modifier on the upper border of antisense rna (which is only in
 		// 3/4 of the width of alias)
-		Point2D p = new Point2D.Double(x + width * 3.0 / 4.0 * mr.getPos(), y - diameter);
+		Point2D p = new Point2D.Double(x + width * 3.0 / 4.0 * region.getPos(), y - diameter);
 		// CHECKSTYLE:ON
 
 		Ellipse2D ellipse = new Ellipse2D.Double(p.getX() - diameter / 2, p.getY() - diameter / 2, diameter, diameter);
@@ -132,13 +130,13 @@ public class AntisenseRnaConverter extends SpeciesConverter<AntisenseRna> {
 		graphics.draw(ellipse);
 		graphics.drawLine((int) p.getX(), (int) (p.getY() + diameter / 2), (int) p.getX(), (int) y);
 
-		String text = mr.getName();
+		String text = region.getName();
 		if (!text.equals("") && drawDescription) {
 			double textWidth = graphics.getFontMetrics().stringWidth(text);
 			Point2D p2 = new Point2D.Double(p.getX() - textWidth / 2, p.getY() - DEFAULT_SPECIES_MODIFIER_FONT_SIZE);
 			graphics.drawString(text, (int) p2.getX(), (int) p2.getY());
 		}
-		ModificationState state = mr.getState();
+		ModificationState state = region.getState();
 		if (state != null) {
 			String str = state.getAbbreviation();
 			Font tmpFont = graphics.getFont();
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/ComplexConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/ComplexConverter.java
index 345fb9394478a769db5eb1ffeee759a457a08b7f..2fa74bcc721df4921075d13d89df47699f43c564 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/ComplexConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/ComplexConverter.java
@@ -16,10 +16,9 @@ import lcsb.mapviewer.converter.graphics.ConverterParams;
 import lcsb.mapviewer.converter.graphics.geometry.FontFinder;
 import lcsb.mapviewer.converter.graphics.geometry.RectangleTooSmallException;
 import lcsb.mapviewer.model.graphics.LineType;
-import lcsb.mapviewer.model.map.species.Element;
-import lcsb.mapviewer.model.map.species.Species;
 import lcsb.mapviewer.model.map.layout.ColorSchema;
 import lcsb.mapviewer.model.map.species.Complex;
+import lcsb.mapviewer.model.map.species.Species;
 
 /**
  * This class defines methods used for drawing ComplexAlias on the graphics2d
@@ -56,7 +55,6 @@ public class ComplexConverter extends SpeciesConverter<Complex> {
 		super(colorExtractor);
 	}
 
-
 	@Override
 	public void draw(final Complex alias, final Graphics2D graphics, final ConverterParams params) {
 		if (alias.getState().equalsIgnoreCase("complexnoborder")) {
@@ -143,50 +141,50 @@ public class ComplexConverter extends SpeciesConverter<Complex> {
 	}
 
 	@Override
-	public void drawText(final Complex alias, final Graphics2D graphics, final ConverterParams params) {
-		if (((Complex) alias).getElements().size() > 0) {
-			if (alias.getTransparencyLevel() <= params.getLevel()) {
-				super.drawText(alias, graphics, params);
+	public void drawText(final Complex complex, final Graphics2D graphics, final ConverterParams params) {
+		if (complex.getElements().size() > 0) {
+			if (isTransparent(complex, params)) {
+				super.drawText(complex, graphics, params);
 				return;
 			}
 		}
-		String text = getText(alias);
+		String text = getText(complex);
 		try {
 			double fontSize = DEFAULT_SPECIES_FONT_SIZE;
-			if (alias.getFontSize() != null) {
-				fontSize = alias.getFontSize();
+			if (complex.getFontSize() != null) {
+				fontSize = complex.getFontSize();
 			}
-			int size = (int) FontFinder.findMaxFontSize(params.getScale() * fontSize, Font.SANS_SERIF, graphics, alias.getBorder(), text);
-			FontFinder.drawText(size, Font.SANS_SERIF, graphics, alias.getBorder(), text);
+			int size = (int) FontFinder.findMaxFontSize(params.getScale() * fontSize, Font.SANS_SERIF, graphics, complex.getBorder(), text);
+			FontFinder.drawText(size, Font.SANS_SERIF, graphics, complex.getBorder(), text);
 		} catch (RectangleTooSmallException e) {
 			logger.warn("Problem with finding font size", e);
-			super.drawText(alias, graphics, params);
+			super.drawText(complex, graphics, params);
 		}
 	}
 
 	/**
-	 * Returns the border of complex alias.
+	 * Returns the border of {@link Complex}.
 	 * 
-	 * @param alias
+	 * @param complex
 	 *          exact object for which we want to get a border
-	 * @return border of the alias
+	 * @return border of the {@link Complex}
 	 */
-	private GeneralPath getAliasPath(final Element alias) {
+	private GeneralPath getAliasPath(final Complex complex) {
 		GeneralPath path = new GeneralPath(Path2D.WIND_EVEN_ODD);
-		path.moveTo(alias.getX() + TRIMMED_CORNER_SIZE, alias.getY());
-		path.lineTo(alias.getX() + alias.getWidth() - TRIMMED_CORNER_SIZE, alias.getY());
-		path.lineTo(alias.getX() + alias.getWidth(), alias.getY() + TRIMMED_CORNER_SIZE);
-		path.lineTo(alias.getX() + alias.getWidth(), alias.getY() + alias.getHeight() - TRIMMED_CORNER_SIZE);
-		path.lineTo(alias.getX() + alias.getWidth() - TRIMMED_CORNER_SIZE, alias.getY() + alias.getHeight());
-		path.lineTo(alias.getX() + TRIMMED_CORNER_SIZE, alias.getY() + alias.getHeight());
-		path.lineTo(alias.getX(), alias.getY() + alias.getHeight() - TRIMMED_CORNER_SIZE);
-		path.lineTo(alias.getX(), alias.getY() + TRIMMED_CORNER_SIZE);
+		path.moveTo(complex.getX() + TRIMMED_CORNER_SIZE, complex.getY());
+		path.lineTo(complex.getX() + complex.getWidth() - TRIMMED_CORNER_SIZE, complex.getY());
+		path.lineTo(complex.getX() + complex.getWidth(), complex.getY() + TRIMMED_CORNER_SIZE);
+		path.lineTo(complex.getX() + complex.getWidth(), complex.getY() + complex.getHeight() - TRIMMED_CORNER_SIZE);
+		path.lineTo(complex.getX() + complex.getWidth() - TRIMMED_CORNER_SIZE, complex.getY() + complex.getHeight());
+		path.lineTo(complex.getX() + TRIMMED_CORNER_SIZE, complex.getY() + complex.getHeight());
+		path.lineTo(complex.getX(), complex.getY() + complex.getHeight() - TRIMMED_CORNER_SIZE);
+		path.lineTo(complex.getX(), complex.getY() + TRIMMED_CORNER_SIZE);
 		path.closePath();
 		return path;
 	}
 
 	@Override
-	public PathIterator getBoundPathIterator(final Complex alias) {
-		return getAliasPath(alias).getPathIterator(new AffineTransform());
+	public PathIterator getBoundPathIterator(final Complex complex) {
+		return getAliasPath(complex).getPathIterator(new AffineTransform());
 	}
 }
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/DegradedConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/DegradedConverter.java
index 42152ef9f1c518e85485ab9c268049202831b667..2b8c6d163a165b366e4a93d36dd316f69263d822 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/DegradedConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/DegradedConverter.java
@@ -16,12 +16,11 @@ import lcsb.mapviewer.common.exception.InvalidStateException;
 import lcsb.mapviewer.converter.graphics.ConverterParams;
 import lcsb.mapviewer.model.map.layout.ColorSchema;
 import lcsb.mapviewer.model.map.species.Degraded;
-import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.map.species.Species;
 
 /**
- * This class defines methods used for drawing Degraded SpeciesAlias on the
- * graphics2d object.
+ * This class defines methods used for drawing {@link Degraded} on the
+ * {@link Graphics2D} object.
  * 
  * @author Piotr Gawron
  * 
@@ -50,17 +49,17 @@ public class DegradedConverter extends SpeciesConverter<Degraded> {
 	}
 
 	@Override
-	public void draw(final Degraded alias, final Graphics2D graphics, final ConverterParams params) {
-		double diameter = getDiameter(alias);
-		double x = getXCoord(alias, diameter);
-		double y = getYCoord(alias);
+	public void draw(final Degraded degraded, final Graphics2D graphics, final ConverterParams params) {
+		double diameter = getDiameter(degraded);
+		double x = getXCoord(degraded, diameter);
+		double y = getYCoord(degraded);
 		Area a1 = new Area(new Ellipse2D.Double(x, y, diameter, diameter));
 
-		double lineX1 = alias.getX() + alias.getWidth() / 2 + CROSS_LINE_EXTENDED_LENGTH;
-		double lineY1 = alias.getY();
+		double lineX1 = degraded.getX() + degraded.getWidth() / 2 + CROSS_LINE_EXTENDED_LENGTH;
+		double lineY1 = degraded.getY();
 
-		double lineX2 = alias.getX() + alias.getWidth() / 2 - CROSS_LINE_EXTENDED_LENGTH;
-		double lineY2 = alias.getY() + diameter + 2 * CROSS_LINE_EXTENDED_LENGTH;
+		double lineX2 = degraded.getX() + degraded.getWidth() / 2 - CROSS_LINE_EXTENDED_LENGTH;
+		double lineY2 = degraded.getY() + diameter + 2 * CROSS_LINE_EXTENDED_LENGTH;
 
 		GeneralPath path = new GeneralPath(Path2D.WIND_EVEN_ODD, 2);
 		path.moveTo(lineX1, lineY1);
@@ -71,51 +70,51 @@ public class DegradedConverter extends SpeciesConverter<Degraded> {
 
 		a1.exclusiveOr(new Area(path));
 		Color c = graphics.getColor();
-		graphics.setColor(alias.getColor());
+		graphics.setColor(degraded.getColor());
 		graphics.fill(a1);
 		graphics.setColor(c);
 		Stroke stroke = graphics.getStroke();
-		graphics.setStroke(getBorderLine(alias));
+		graphics.setStroke(getBorderLine(degraded));
 		graphics.draw(a1);
 		graphics.setStroke(stroke);
-		drawText(alias, graphics, params);
+		drawText(degraded, graphics, params);
 	}
 
 	/**
-	 * Returns transformed y coordinate for the degraded alias.
+	 * Returns transformed y coordinate for the {@link Degraded} bioentity.
 	 * 
-	 * @param alias
-	 *          object alias to to which we are looking for y coordinate
+	 * @param degraded
+	 *          {@link Degraded} to to which we are looking for y coordinate
 	 * @return y coordinate of the alias
 	 */
-	private double getYCoord(final Element alias) {
-		double y = alias.getY() + CROSS_LINE_EXTENDED_LENGTH;
+	private double getYCoord(final Degraded degraded) {
+		double y = degraded.getY() + CROSS_LINE_EXTENDED_LENGTH;
 		return y;
 	}
 
 	/**
 	 * Returns transformed x coordinate for the degraded alias.
 	 * 
-	 * @param alias
+	 * @param degraded
 	 *          object alias to to which we are looking for x coordinate
 	 * @param diameter
 	 *          diameter of cross line used in this alias
-	 * @return x coordinate of the alias
+	 * @return x coordinate of the {@link Degraded} bioentity.
 	 */
-	private double getXCoord(final Element alias, final double diameter) {
-		double x = alias.getX() + (alias.getWidth() - diameter) / 2;
+	private double getXCoord(final Degraded degraded, final double diameter) {
+		double x = degraded.getX() + (degraded.getWidth() - diameter) / 2;
 		return x;
 	}
 
 	/**
 	 * Computes diameter of cross line for the degraded alias.
 	 * 
-	 * @param alias
+	 * @param degraded
 	 *          object alias to to which we are looking for diameter.
 	 * @return diameter of the cross line
 	 */
-	private double getDiameter(final Element alias) {
-		double diameter = Math.min(alias.getWidth(), alias.getHeight()) - 2 * CROSS_LINE_EXTENDED_LENGTH;
+	private double getDiameter(final Degraded degraded) {
+		double diameter = Math.min(degraded.getWidth(), degraded.getHeight()) - 2 * CROSS_LINE_EXTENDED_LENGTH;
 		if (diameter < 0) {
 			logger.warn("Diameter cannot be negative...");
 			diameter = 0;
@@ -124,12 +123,12 @@ public class DegradedConverter extends SpeciesConverter<Degraded> {
 	}
 
 	@Override
-	public String getText(Degraded alias) {
+	public String getText(Degraded degraded) {
 		return "";
 	}
 
 	@Override
-	public PathIterator getBoundPathIterator(Degraded alias) {
+	public PathIterator getBoundPathIterator(Degraded degraded) {
 		throw new InvalidStateException("This class doesn't have bound");
 	}
 
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/DrugConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/DrugConverter.java
index 4c412634f46f78414c63f1a7426463cd1aaeb92d..8765dd6e30dc0e71b8bac1382537e92fa97d0a77 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/DrugConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/DrugConverter.java
@@ -10,15 +10,14 @@ import java.awt.geom.Point2D;
 import java.awt.geom.RoundRectangle2D;
 import java.util.ArrayList;
 
+import org.apache.log4j.Logger;
+
 import lcsb.mapviewer.commands.ColorExtractor;
 import lcsb.mapviewer.converter.graphics.ConverterParams;
 import lcsb.mapviewer.model.map.layout.ColorSchema;
 import lcsb.mapviewer.model.map.species.Drug;
-import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.map.species.Species;
 
-import org.apache.log4j.Logger;
-
 /**
  * This class defines methods used for drawing Drug SpeciesAlias on the
  * graphics2d object.
@@ -27,23 +26,23 @@ import org.apache.log4j.Logger;
  * 
  */
 public class DrugConverter extends SpeciesConverter<Drug> {
-	
+
 	/**
 	 * Distance between internal and external border of drug graphical
 	 * representation.
 	 */
-	private static final int	OFFSET_BETWEEN_BORDERS		= 4;
-	
+	private static final int OFFSET_BETWEEN_BORDERS		 = 4;
+
 	/**
 	 * How big should be the arc in rectangle for drug representation.
 	 */
-	private static final int	RECTANGLE_CORNER_ARC_SIZE	= 40;
-	
+	private static final int RECTANGLE_CORNER_ARC_SIZE = 40;
+
 	/**
 	 * Default class logger.
 	 */
 	@SuppressWarnings("unused")
-	private static Logger			logger										= Logger.getLogger(DrugConverter.class.getName());
+	private static Logger		 logger										 = Logger.getLogger(DrugConverter.class.getName());
 
 	/**
 	 * Default constructor.
@@ -59,47 +58,47 @@ public class DrugConverter extends SpeciesConverter<Drug> {
 	/**
 	 * Returns shape of the Drug .
 	 * 
-	 * @param alias
-	 *          alias for which we are looking for a border
+	 * @param drug
+	 *          {@link Drug} for which we are looking for a border
 	 * @return Shape object defining given alias
 	 */
-	private Shape getDrugShape(final Element alias) {
-		return new RoundRectangle2D.Double(alias.getX(), alias.getY(), alias.getWidth(), alias.getHeight(), RECTANGLE_CORNER_ARC_SIZE, RECTANGLE_CORNER_ARC_SIZE);
+	private Shape getDrugShape(final Drug drug) {
+		return new RoundRectangle2D.Double(drug.getX(), drug.getY(), drug.getWidth(), drug.getHeight(), RECTANGLE_CORNER_ARC_SIZE, RECTANGLE_CORNER_ARC_SIZE);
 	}
 
 	@Override
-	public void draw(Drug alias, final Graphics2D graphics, final ConverterParams params) {
-		Shape a1 = getDrugShape(alias);
+	public void draw(Drug drug, final Graphics2D graphics, final ConverterParams params) {
+		Shape a1 = getDrugShape(drug);
 		double offset = OFFSET_BETWEEN_BORDERS;
 		Shape a2 = new RoundRectangle2D.Double(
-				alias.getX() + offset, alias.getY() + offset, alias.getWidth() - 2 * offset, alias.getHeight() - 2 * offset, RECTANGLE_CORNER_ARC_SIZE,
+				drug.getX() + offset, drug.getY() + offset, drug.getWidth() - 2 * offset, drug.getHeight() - 2 * offset, RECTANGLE_CORNER_ARC_SIZE,
 				RECTANGLE_CORNER_ARC_SIZE);
 		Color c = graphics.getColor();
-		graphics.setColor(alias.getColor());
+		graphics.setColor(drug.getColor());
 		graphics.fill(a1);
 		graphics.setColor(c);
 		Stroke stroke = graphics.getStroke();
-		graphics.setStroke(getBorderLine(alias));
+		graphics.setStroke(getBorderLine(drug));
 		graphics.draw(a1);
 		graphics.draw(a2);
 		graphics.setStroke(stroke);
-		drawText(alias, graphics, params);
+		drawText(drug, graphics, params);
 	}
 
 	/**
-	 * Returns shape of the Drug as a list of points.
+	 * Returns shape of the {@link Drug} as a list of points.
 	 * 
-	 * @param alias
-	 *          alias for which we are looking for a border
-	 * @return list of points defining border of the given alias
+	 * @param drug
+	 *          {@link Drug} for which we are looking for a border
+	 * @return list of points defining border of the given {@link Drug}
 	 */
-	protected ArrayList<Point2D> getDrugPoints(final Species alias) {
+	protected ArrayList<Point2D> getDrugPoints(final Drug drug) {
 		ArrayList<Point2D> list = new ArrayList<Point2D>();
 
-		double x = alias.getX();
-		double y = alias.getY();
-		double width = alias.getWidth();
-		double height = alias.getHeight();
+		double x = drug.getX();
+		double y = drug.getY();
+		double width = drug.getWidth();
+		double height = drug.getHeight();
 
 		// CHECKSTYLE:OFF
 		list.add(new Point2D.Double(x, y + height / 2));
@@ -116,8 +115,8 @@ public class DrugConverter extends SpeciesConverter<Drug> {
 	}
 
 	@Override
-	public PathIterator getBoundPathIterator(Drug alias) {
-		return getDrugShape(alias).getPathIterator(new AffineTransform());
+	public PathIterator getBoundPathIterator(Drug drug) {
+		return getDrugShape(drug).getPathIterator(new AffineTransform());
 	}
 
 }
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/GeneConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/GeneConverter.java
index 514475cf86205411fc334f3dc88b411aecde5443..8528b749fca21bab36324abe8e66c7d5f29cb16e 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/GeneConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/GeneConverter.java
@@ -16,7 +16,6 @@ import org.apache.log4j.Logger;
 import lcsb.mapviewer.commands.ColorExtractor;
 import lcsb.mapviewer.converter.graphics.ConverterParams;
 import lcsb.mapviewer.model.map.layout.ColorSchema;
-import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.map.species.Gene;
 import lcsb.mapviewer.model.map.species.Species;
 import lcsb.mapviewer.model.map.species.field.ModificationResidue;
@@ -48,22 +47,22 @@ public class GeneConverter extends SpeciesConverter<Gene> {
 	}
 
 	@Override
-	public void draw(final Gene alias, final Graphics2D graphics, final ConverterParams params) {
-		Shape shape = getGeneShape(alias);
+	public void draw(final Gene gene, final Graphics2D graphics, final ConverterParams params) {
+		Shape shape = getGeneShape(gene);
 		Color c = graphics.getColor();
-		graphics.setColor(alias.getColor());
+		graphics.setColor(gene.getColor());
 		graphics.fill(shape);
 		graphics.setColor(c);
 		Stroke stroke = graphics.getStroke();
-		graphics.setStroke(getBorderLine(alias));
+		graphics.setStroke(getBorderLine(gene));
 		graphics.draw(shape);
 		graphics.setStroke(stroke);
 
-		for (ModificationResidue mr : alias.getModificationResidues()) {
-			drawModification(alias, mr, graphics, false, false);
+		for (ModificationResidue mr : gene.getModificationResidues()) {
+			drawModification(gene, mr, graphics, false, false);
 		}
 
-		drawText(alias, graphics, params);
+		drawText(gene, graphics, params);
 	}
 
 	/**
@@ -72,7 +71,7 @@ public class GeneConverter extends SpeciesConverter<Gene> {
 	 * set then also description (position) of the modification is drawn on the
 	 * canvas.
 	 * 
-	 * @param alias
+	 * @param gene
 	 *          object that is 'parent' of the residue
 	 * @param mr
 	 *          modification to be drawn
@@ -84,17 +83,17 @@ public class GeneConverter extends SpeciesConverter<Gene> {
 	 *          flag that indicates if we should draw description of the
 	 *          modification
 	 */
-	private void drawModification(final Gene alias, final ModificationResidue mr, final Graphics2D graphics, final boolean drawEmptyModification,
+	private void drawModification(final Gene gene, final ModificationResidue mr, final Graphics2D graphics, final boolean drawEmptyModification,
 			final boolean drawDescription) {
 		if ((!drawEmptyModification) && (mr.getState() == null)) {
 			return;
 		}
 		double diameter = DEFAULT_MODIFICATION_DIAMETER;
 
-		double x = alias.getX();
-		double y = alias.getY();
+		double x = gene.getX();
+		double y = gene.getY();
 
-		double width = alias.getWidth();
+		double width = gene.getWidth();
 
 		Point2D p = new Point2D.Double(x + width * mr.getAngle(), y - DEFAULT_MODIFICATION_DIAMETER);
 
@@ -126,21 +125,21 @@ public class GeneConverter extends SpeciesConverter<Gene> {
 	}
 
 	/**
-	 * Shape representation of the gene alias.
+	 * Shape representation of the {@link Gene}.
 	 * 
-	 * @param alias
-	 *          alias for which we are looking for a Shape
-	 * @return Shape object that represents alias
+	 * @param gene
+	 *          {@link Gene} for which we are looking for a {@link Shape}
+	 * @return {@link Shape} that represents {@link Gene}
 	 */
-	private Shape getGeneShape(final Element alias) {
+	private Shape getGeneShape(final Gene gene) {
 		Shape shape;
-		shape = new Rectangle(alias.getX().intValue(), alias.getY().intValue(), alias.getWidth().intValue(), alias.getHeight().intValue());
+		shape = new Rectangle(gene.getX().intValue(), gene.getY().intValue(), gene.getWidth().intValue(), gene.getHeight().intValue());
 		return shape;
 	}
 
 	@Override
-	public PathIterator getBoundPathIterator(final Gene alias) {
-		return getGeneShape(alias).getPathIterator(new AffineTransform());
+	public PathIterator getBoundPathIterator(final Gene gene) {
+		return getGeneShape(gene).getPathIterator(new AffineTransform());
 	}
 
 }
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/IonConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/IonConverter.java
index 733f3b7ddb0dcf1f165360352c9e603854b8db3f..6b0237b7498984c0ee2b5f301a2b725a9fcb8c18 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/IonConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/IonConverter.java
@@ -14,14 +14,12 @@ import lcsb.mapviewer.commands.ColorExtractor;
 import lcsb.mapviewer.common.exception.InvalidStateException;
 import lcsb.mapviewer.converter.graphics.ConverterParams;
 import lcsb.mapviewer.model.map.layout.ColorSchema;
-import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.map.species.Ion;
 import lcsb.mapviewer.model.map.species.Species;
 
 /**
- * This class defines methods used for drawing SpeciesAlias of
- * {@link lcsb.mapviewer.converter.model.celldesigner.structure.db.model.map.species.Ion
- * Ion} on the {@link Graphics2D} object.
+ * This class defines methods used for drawing SpeciesAlias of {@link Ion} on
+ * the {@link Graphics2D} object.
  * 
  * @author Piotr Gawron
  * 
@@ -45,57 +43,57 @@ public class IonConverter extends SpeciesConverter<Ion> {
 	}
 
 	@Override
-	public void draw(Ion alias, final Graphics2D graphics, final ConverterParams params) {
-		double diameter = getDiameter(alias);
-		double x = getXCoord(alias, diameter);
-		double y = getYCoord(alias);
+	public void draw(Ion ion, final Graphics2D graphics, final ConverterParams params) {
+		double diameter = getDiameter(ion);
+		double x = getXCoord(ion, diameter);
+		double y = getYCoord(ion);
 		Shape shape = new Ellipse2D.Double(x, y, diameter, diameter);
 		Color c = graphics.getColor();
-		graphics.setColor(alias.getColor());
+		graphics.setColor(ion.getColor());
 		graphics.fill(shape);
 		graphics.setColor(c);
 		Stroke stroke = graphics.getStroke();
-		graphics.setStroke(getBorderLine(alias));
+		graphics.setStroke(getBorderLine(ion));
 		graphics.draw(shape);
 		graphics.setStroke(stroke);
-		drawText(alias, graphics, params);
+		drawText(ion, graphics, params);
 	}
 
 	/**
-	 * Returns transformed y coordinate for the ion alias.
+	 * Returns transformed y coordinate for the {@link Ion}.
 	 * 
-	 * @param alias
-	 *          object alias to to which we are looking for y coordinate
-	 * @return y coordinate of the alias
+	 * @param ion
+	 *          {@link Ion} to to which we are looking for y coordinate
+	 * @return y coordinate of the {@link Ion}
 	 */
-	private double getYCoord(final Element alias) {
-		double y = alias.getY();
+	private double getYCoord(final Ion ion) {
+		double y = ion.getY();
 		return y;
 	}
 
 	/**
-	 * Returns transformed x coordinate for the ion alias.
+	 * Returns transformed x coordinate for the {@link Ion}.
 	 * 
-	 * @param alias
-	 *          object alias to to which we are looking for x coordinate
+	 * @param ion
+	 *          {@link Ion} to which we are looking for x coordinate
 	 * @param diameter
 	 *          diameter of circle representation of ion
-	 * @return x coordinate of the alias
+	 * @return x coordinate of the {@link Ion}
 	 */
-	private double getXCoord(final Element alias, final double diameter) {
-		double x = alias.getX() + (alias.getWidth() - diameter) / 2;
+	private double getXCoord(final Ion ion, final double diameter) {
+		double x = ion.getX() + (ion.getWidth() - diameter) / 2;
 		return x;
 	}
 
 	/**
-	 * Returns diameter of circle representation of ion.
+	 * Returns diameter of circle representation of an {@link Ion}.
 	 * 
-	 * @param alias
-	 *          object alias to to which we are looking for diameter.
-	 * @return diameter of ion circle representation
+	 * @param ion
+	 *          {@link Ion} to to which we are looking for diameter.
+	 * @return diameter of {@link Ion} circle representation
 	 */
-	private double getDiameter(final Element alias) {
-		double diameter = Math.min(alias.getWidth(), alias.getHeight());
+	private double getDiameter(final Ion ion) {
+		double diameter = Math.min(ion.getWidth(), ion.getHeight());
 		if (diameter < 0) {
 			logger.warn("Something is wrong. Size cannot be negative");
 			diameter = 0;
@@ -105,19 +103,19 @@ public class IonConverter extends SpeciesConverter<Ion> {
 	}
 
 	@Override
-	public PathIterator getBoundPathIterator(Ion alias) {
+	public PathIterator getBoundPathIterator(Ion ion) {
 		throw new InvalidStateException("This class doesn't have bound");
 	}
 
 	@Override
-	public Point2D getPointCoordinatesOnBorder(Ion alias, final double angle) {
-		if (alias.getWidth() == 0 && alias.getHeight() == 0) {
+	public Point2D getPointCoordinatesOnBorder(Ion ion, final double angle) {
+		if (ion.getWidth() == 0 && ion.getHeight() == 0) {
 			logger.warn("Looking for coordinates for the alias with 0 size");
-			return alias.getCenter();
+			return ion.getCenter();
 		}
-		double diameter = getDiameter(alias);
-		double x = getXCoord(alias, diameter);
-		double y = getYCoord(alias);
+		double diameter = getDiameter(ion);
+		double x = getXCoord(ion, diameter);
+		double y = getYCoord(ion);
 		Point2D result = getEllipseTransformation().getPointOnEllipseByRadian(x, y, diameter, diameter, angle);
 		return result;
 
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/PhenotypeConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/PhenotypeConverter.java
index 0a6a2a059b9bd3d4cf9024797bd17d88c112b949..b9674dc86420941f54ea81233b83f62ddafda7d5 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/PhenotypeConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/PhenotypeConverter.java
@@ -13,13 +13,11 @@ import org.apache.log4j.Logger;
 import lcsb.mapviewer.commands.ColorExtractor;
 import lcsb.mapviewer.converter.graphics.ConverterParams;
 import lcsb.mapviewer.model.map.layout.ColorSchema;
-import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.map.species.Phenotype;
 
 /**
- * This class defines methods used for drawing SpeciesAlias of
- * {@link lcsb.mapviewer.converter.model.celldesigner.structure.db.model.map.species.Phenotype
- * Phenotype} on the {@link Graphics2D} object.
+ * This class defines methods used for drawing SpeciesAlias of {@link Phenotype}
+ * on the {@link Graphics2D} object.
  * 
  * @author Piotr Gawron
  * 
@@ -44,44 +42,45 @@ public class PhenotypeConverter extends SpeciesConverter<Phenotype> {
 	}
 
 	@Override
-	public void draw(Phenotype alias, final Graphics2D graphics, final ConverterParams params) {
-		GeneralPath path = getPhenotypePath(alias);
+	public void draw(Phenotype phenotype, final Graphics2D graphics, final ConverterParams params) {
+		GeneralPath path = getPhenotypePath(phenotype);
 
 		Color c = graphics.getColor();
-		graphics.setColor(alias.getColor());
+		graphics.setColor(phenotype.getColor());
 		graphics.fill(path);
 		graphics.setColor(c);
 		Stroke stroke = graphics.getStroke();
-		graphics.setStroke(getBorderLine(alias));
+		graphics.setStroke(getBorderLine(phenotype));
 		graphics.draw(path);
 		graphics.setStroke(stroke);
-		drawText(alias, graphics, params);
+		drawText(phenotype, graphics, params);
 	}
 
 	/**
-	 * Returns shape of the Phenotype as a GeneralPath object.
+	 * Returns shape of the {@link Phenotype} as a {@link GeneralPath} object.
 	 * 
-	 * @param alias
-	 *          alias for which we are looking for a border
-	 * @return GeneralPath object defining border of the given alias
+	 * @param phenotype
+	 *          {@link Phenotype} for which we are looking for a border
+	 * @return {@link GeneralPath} object defining border of the given
+	 *         {@link Phenotype}
 	 */
-	private GeneralPath getPhenotypePath(final Element alias) {
+	private GeneralPath getPhenotypePath(final Phenotype phenotype) {
 		// CHECKSTYLE:OFF
 		GeneralPath path = new GeneralPath(Path2D.WIND_EVEN_ODD, 6);
-		path.moveTo(alias.getX() + alias.getWidth() / 6, alias.getY());
-		path.lineTo(alias.getX() + alias.getWidth() * 5 / 6, alias.getY());
-		path.lineTo(alias.getX() + alias.getWidth(), alias.getY() + alias.getHeight() / 2);
-		path.lineTo(alias.getX() + alias.getWidth() * 5 / 6, alias.getY() + alias.getHeight());
-		path.lineTo(alias.getX() + alias.getWidth() / 6, alias.getY() + alias.getHeight());
-		path.lineTo(alias.getX(), alias.getY() + alias.getHeight() / 2);
+		path.moveTo(phenotype.getX() + phenotype.getWidth() / 6, phenotype.getY());
+		path.lineTo(phenotype.getX() + phenotype.getWidth() * 5 / 6, phenotype.getY());
+		path.lineTo(phenotype.getX() + phenotype.getWidth(), phenotype.getY() + phenotype.getHeight() / 2);
+		path.lineTo(phenotype.getX() + phenotype.getWidth() * 5 / 6, phenotype.getY() + phenotype.getHeight());
+		path.lineTo(phenotype.getX() + phenotype.getWidth() / 6, phenotype.getY() + phenotype.getHeight());
+		path.lineTo(phenotype.getX(), phenotype.getY() + phenotype.getHeight() / 2);
 		// CHECKSTYLE:ON
 		path.closePath();
 		return path;
 	}
 
 	@Override
-	public PathIterator getBoundPathIterator(Phenotype alias) {
-		return getPhenotypePath(alias).getPathIterator(new AffineTransform());
+	public PathIterator getBoundPathIterator(Phenotype phenotype) {
+		return getPhenotypePath(phenotype).getPathIterator(new AffineTransform());
 	}
 
 }
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/ProteinConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/ProteinConverter.java
index 0e794ffa6e425ca2af04a2a9d87c185b3728ebb3..0f97b3998052c234e8602675ece715111de38352 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/ProteinConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/ProteinConverter.java
@@ -23,7 +23,6 @@ import lcsb.mapviewer.common.exception.InvalidStateException;
 import lcsb.mapviewer.converter.graphics.ConverterParams;
 import lcsb.mapviewer.model.graphics.LineType;
 import lcsb.mapviewer.model.map.layout.ColorSchema;
-import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.map.species.GenericProtein;
 import lcsb.mapviewer.model.map.species.IonChannelProtein;
 import lcsb.mapviewer.model.map.species.Protein;
@@ -47,6 +46,7 @@ public class ProteinConverter extends SpeciesConverter<Protein> {
 	 * Width of the ion part in the open channel representation.
 	 */
 	private static final int ION_CHANNEL_WIDTH				 = 20;
+
 	/**
 	 * Width of the gap in the open channel representation.
 	 */
@@ -56,6 +56,7 @@ public class ProteinConverter extends SpeciesConverter<Protein> {
 	 * How big should be the arc in rectangle for protein representation.
 	 */
 	private static final int RECTANGLE_CORNER_ARC_SIZE = 10;
+
 	/**
 	 * Default class logger.
 	 */
@@ -78,29 +79,30 @@ public class ProteinConverter extends SpeciesConverter<Protein> {
 	}
 
 	/**
-	 * Returns shape of generic protein.
+	 * Returns shape of {@link Protein}.
 	 * 
-	 * @param alias
-	 *          alias for which we are looking for a border
+	 * @param protein
+	 *          {@link Protein} for which we are looking for a border
 	 * @return Shape object defining given alias
 	 */
-	private Shape getGenericShape(final Element alias) {
-		return new RoundRectangle2D.Double(alias.getX(), alias.getY(), alias.getWidth(), alias.getHeight(), RECTANGLE_CORNER_ARC_SIZE, RECTANGLE_CORNER_ARC_SIZE);
+	private Shape getGenericShape(final Protein protein) {
+		return new RoundRectangle2D.Double(
+				protein.getX(), protein.getY(), protein.getWidth(), protein.getHeight(), RECTANGLE_CORNER_ARC_SIZE, RECTANGLE_CORNER_ARC_SIZE);
 	}
 
 	@Override
-	public void draw(final Protein alias, final Graphics2D graphics, final ConverterParams params) {
+	public void draw(final Protein protein, final Graphics2D graphics, final ConverterParams params) {
 		// Local variable setting the SBGN visualization
 		boolean sbgnFormat = params.isSbgnFormat();
 
 		// Unit of information text (multimer cardinality and/or ion channel's
 		// state)
 		String unitOfInformationText = "";
-		if (alias.getStatePrefix() != null && alias.getStateLabel() != null) {
-			if (alias.getStatePrefix().equals("free input")) {
-				unitOfInformationText = alias.getStateLabel();
+		if (protein.getStatePrefix() != null && protein.getStateLabel() != null) {
+			if (protein.getStatePrefix().equals("free input")) {
+				unitOfInformationText = protein.getStateLabel();
 			} else {
-				unitOfInformationText = alias.getStatePrefix() + ":" + alias.getStateLabel();
+				unitOfInformationText = protein.getStatePrefix() + ":" + protein.getStateLabel();
 			}
 		}
 
@@ -108,88 +110,88 @@ public class ProteinConverter extends SpeciesConverter<Protein> {
 		if (sbgnFormat) {
 			// If the SBGN display mode is set, multimer is shown as two stacked
 			// glyphs
-			if (alias.getHomodimer() > 1) {
+			if (protein.getHomodimer() > 1) {
 				homodir = 2;
 			} else {
 				homodir = 1;
 			}
 		} else {
-			homodir = alias.getHomodimer();
+			homodir = protein.getHomodimer();
 		}
 
-		alias.setWidth(alias.getWidth() - SpeciesConverter.HOMODIMER_OFFSET * (alias.getHomodimer() - 1));
-		alias.setHeight(alias.getHeight() - SpeciesConverter.HOMODIMER_OFFSET * (alias.getHomodimer() - 1));
+		protein.setWidth(protein.getWidth() - SpeciesConverter.HOMODIMER_OFFSET * (protein.getHomodimer() - 1));
+		protein.setHeight(protein.getHeight() - SpeciesConverter.HOMODIMER_OFFSET * (protein.getHomodimer() - 1));
 
-		alias.setX(alias.getX() + SpeciesConverter.HOMODIMER_OFFSET * (homodir));
-		alias.setY(alias.getY() + SpeciesConverter.HOMODIMER_OFFSET * (homodir));
+		protein.setX(protein.getX() + SpeciesConverter.HOMODIMER_OFFSET * (homodir));
+		protein.setY(protein.getY() + SpeciesConverter.HOMODIMER_OFFSET * (homodir));
 
 		for (int homodimerId = 0; homodimerId < homodir; homodimerId++) {
-			alias.setX(alias.getX() - SpeciesConverter.HOMODIMER_OFFSET);
-			alias.setY(alias.getY() - SpeciesConverter.HOMODIMER_OFFSET);
+			protein.setX(protein.getX() - SpeciesConverter.HOMODIMER_OFFSET);
+			protein.setY(protein.getY() - SpeciesConverter.HOMODIMER_OFFSET);
 
 			Shape shape = null;
-			if (alias instanceof GenericProtein || sbgnFormat) {
-				shape = getGenericShape(alias);
-				if (alias.getActivity() && !sbgnFormat) {
-					drawActivityGenericProtein(alias, graphics);
+			if (protein instanceof GenericProtein || sbgnFormat) {
+				shape = getGenericShape(protein);
+				if (protein.getActivity() && !sbgnFormat) {
+					drawActivityGenericProtein(protein, graphics);
 				}
-			} else if (alias instanceof IonChannelProtein) {
+			} else if (protein instanceof IonChannelProtein) {
 				Area a1;
-				if (!alias.getActivity()) {
+				if (!protein.getActivity()) {
 					a1 = new Area(
 							new RoundRectangle2D.Double(
-									alias.getX(), alias.getY(), alias.getWidth() - ION_CHANNEL_WIDTH - 1, alias.getHeight(), RECTANGLE_CORNER_ARC_SIZE,
+									protein.getX(), protein.getY(), protein.getWidth() - ION_CHANNEL_WIDTH - 1, protein.getHeight(), RECTANGLE_CORNER_ARC_SIZE,
 									RECTANGLE_CORNER_ARC_SIZE));
 				} else {
 					a1 = new Area(
 							new RoundRectangle2D.Double(
-									alias.getX(), alias.getY(), alias.getWidth() - ION_CHANNEL_WIDTH - OPEN_ION_CHANNEL_WIDTH - 1, alias.getHeight(), RECTANGLE_CORNER_ARC_SIZE,
-									RECTANGLE_CORNER_ARC_SIZE));
+									protein.getX(), protein.getY(), protein.getWidth() - ION_CHANNEL_WIDTH - OPEN_ION_CHANNEL_WIDTH - 1, protein.getHeight(),
+									RECTANGLE_CORNER_ARC_SIZE, RECTANGLE_CORNER_ARC_SIZE));
 				}
 				Area a2 = new Area(
 						new RoundRectangle2D.Double(
-								alias.getX() + alias.getWidth() - ION_CHANNEL_WIDTH, alias.getY(), ION_CHANNEL_WIDTH, alias.getHeight(), RECTANGLE_CORNER_ARC_SIZE,
+								protein.getX() + protein.getWidth() - ION_CHANNEL_WIDTH, protein.getY(), ION_CHANNEL_WIDTH, protein.getHeight(), RECTANGLE_CORNER_ARC_SIZE,
 								RECTANGLE_CORNER_ARC_SIZE));
 				a1.add(a2);
 				shape = a1;
-			} else if (alias instanceof TruncatedProtein) {
-				shape = getTruncatedShape(alias);
-				if (alias.getActivity()) {
-					drawActivityTruncatedShape(alias, graphics);
+			} else if (protein instanceof TruncatedProtein) {
+				shape = getTruncatedShape(protein);
+				if (protein.getActivity()) {
+					drawActivityTruncatedShape(protein, graphics);
 				}
-			} else if (alias instanceof ReceptorProtein) {
-				shape = getReceptorShape(alias);
-				if (alias.getActivity()) {
-					drawActivityReceptorProtein(alias, graphics);
+			} else if (protein instanceof ReceptorProtein) {
+				shape = getReceptorShape(protein);
+				if (protein.getActivity()) {
+					drawActivityReceptorProtein(protein, graphics);
 				}
 			} else {
-				logger.warn(eu.getElementTag(alias) + "Unknown shape for protein");
-				shape = getDefaultAliasShape(alias);
+				logger.warn(eu.getElementTag(protein) + "Unknown shape for protein");
+				shape = getDefaultAliasShape(protein);
 			}
 			Color c = graphics.getColor();
-			graphics.setColor(alias.getColor());
+			graphics.setColor(protein.getColor());
 			graphics.fill(shape);
 			graphics.setColor(c);
 			Stroke stroke = graphics.getStroke();
-			graphics.setStroke(getBorderLine(alias));
+			graphics.setStroke(getBorderLine(protein));
 			graphics.draw(shape);
 			graphics.setStroke(stroke);
 
 			// SBGN display mode - units of information and state variables are
 			// printed on the top element only
 			if (!sbgnFormat || (homodimerId == homodir - 1)) {
-				for (ModificationResidue mr : alias.getModificationResidues()) {
+				for (ModificationResidue mr : protein.getModificationResidues()) {
 					// SBGN display mode - print empty state variables
-					drawModification(alias, mr, graphics, sbgnFormat, false);
+					drawModification(protein, mr, graphics, sbgnFormat, false);
 				}
 				if (sbgnFormat) {
 					// SBGN display mode - ion channel's state is marked as a unit of
 					// information
-					if (alias instanceof IonChannelProtein) {
+					if (protein instanceof IonChannelProtein) {
 						if (!unitOfInformationText.equals("")) {
 							unitOfInformationText = unitOfInformationText.concat("; ");
 						}
-						if (alias.getActivity()) {
+						if (protein.getActivity()) {
 							unitOfInformationText = unitOfInformationText.concat("open");
 						} else {
 							unitOfInformationText = unitOfInformationText.concat("closed");
@@ -202,7 +204,7 @@ public class ProteinConverter extends SpeciesConverter<Protein> {
 						if (!unitOfInformationText.equals("")) {
 							unitOfInformationText = unitOfInformationText.concat("; ");
 						}
-						unitOfInformationText = unitOfInformationText.concat("N:").concat(Integer.toString(alias.getHomodimer()));
+						unitOfInformationText = unitOfInformationText.concat("N:").concat(Integer.toString(protein.getHomodimer()));
 					}
 				}
 			}
@@ -212,81 +214,81 @@ public class ProteinConverter extends SpeciesConverter<Protein> {
 			unitOfInformationText = null;
 		}
 
-		String text = alias.getStructuralState();
-		drawStructuralState(text, alias, graphics);
-		drawUnitOfInformation(unitOfInformationText, alias, graphics);
-		drawText(alias, graphics, params);
-		alias.setWidth(alias.getWidth() + SpeciesConverter.HOMODIMER_OFFSET * (alias.getHomodimer() - 1));
-		alias.setHeight(alias.getHeight() + SpeciesConverter.HOMODIMER_OFFSET * (alias.getHomodimer() - 1));
+		String text = protein.getStructuralState();
+		drawStructuralState(text, protein, graphics);
+		drawUnitOfInformation(unitOfInformationText, protein, graphics);
+		drawText(protein, graphics, params);
+		protein.setWidth(protein.getWidth() + SpeciesConverter.HOMODIMER_OFFSET * (protein.getHomodimer() - 1));
+		protein.setHeight(protein.getHeight() + SpeciesConverter.HOMODIMER_OFFSET * (protein.getHomodimer() - 1));
 	}
 
 	/**
 	 * Draws activity border of {@link GenericProtein}.
 	 * 
-	 * @param alias
-	 *          {@link Species} that will be drawn
+	 * @param protein
+	 *          {@link Protein} that will be drawn
 	 * @param graphics
 	 *          where we are drawing
 	 */
-	private void drawActivityGenericProtein(final Protein alias, final Graphics2D graphics) {
+	private void drawActivityGenericProtein(final Protein protein, final Graphics2D graphics) {
 		int border = ACTIVITY_BORDER_DISTANCE;
-		alias.increaseBorder(border);
-		Shape shape2 = getGenericShape(alias);
+		protein.increaseBorder(border);
+		Shape shape2 = getGenericShape(protein);
 		Stroke stroke = graphics.getStroke();
 		graphics.setStroke(LineType.DOTTED.getStroke());
 		graphics.draw(shape2);
 		graphics.setStroke(stroke);
-		alias.increaseBorder(-border);
+		protein.increaseBorder(-border);
 	}
 
 	/**
 	 * Draws activity border of {@link ReceptorProtein}.
 	 * 
-	 * @param alias
-	 *          {@link Species} that will be drawn
+	 * @param protein
+	 *          {@link Protein} that will be drawn
 	 * @param graphics
 	 *          where we are drawing
 	 */
-	public void drawActivityReceptorProtein(final Protein alias, final Graphics2D graphics) {
+	public void drawActivityReceptorProtein(final Protein protein, final Graphics2D graphics) {
 		int border = ACTIVITY_BORDER_DISTANCE;
-		alias.setX(alias.getX() - border);
-		alias.setY(alias.getY() - border);
-		alias.setWidth(alias.getWidth() + border * 2);
-		alias.setHeight(alias.getHeight() + border * 2);
-		Shape shape2 = getReceptorShape(alias);
+		protein.setX(protein.getX() - border);
+		protein.setY(protein.getY() - border);
+		protein.setWidth(protein.getWidth() + border * 2);
+		protein.setHeight(protein.getHeight() + border * 2);
+		Shape shape2 = getReceptorShape(protein);
 		Stroke stroke = graphics.getStroke();
 		graphics.setStroke(LineType.DOTTED.getStroke());
 		graphics.draw(shape2);
 		graphics.setStroke(stroke);
-		alias.setX(alias.getX() + border);
-		alias.setY(alias.getY() + border);
-		alias.setWidth(alias.getWidth() - border * 2);
-		alias.setHeight(alias.getHeight() - border * 2);
+		protein.setX(protein.getX() + border);
+		protein.setY(protein.getY() + border);
+		protein.setWidth(protein.getWidth() - border * 2);
+		protein.setHeight(protein.getHeight() - border * 2);
 	}
 
 	/**
 	 * Draws activity border of {@link TruncatedProtein}.
 	 * 
-	 * @param alias
-	 *          {@link Species} that will be drawn
+	 * @param protein
+	 *          {@link Protein} that will be drawn
 	 * @param graphics
 	 *          where we are drawing
 	 */
-	public void drawActivityTruncatedShape(final Protein alias, final Graphics2D graphics) {
+	public void drawActivityTruncatedShape(final Protein protein, final Graphics2D graphics) {
 		int border = ACTIVITY_BORDER_DISTANCE;
-		alias.setX(alias.getX() - border);
-		alias.setY(alias.getY() - border);
-		alias.setWidth(alias.getWidth() + border * 2);
-		alias.setHeight(alias.getHeight() + border * 2);
-		Shape shape2 = getTruncatedShape(alias);
+		protein.setX(protein.getX() - border);
+		protein.setY(protein.getY() - border);
+		protein.setWidth(protein.getWidth() + border * 2);
+		protein.setHeight(protein.getHeight() + border * 2);
+		Shape shape2 = getTruncatedShape(protein);
 		Stroke stroke = graphics.getStroke();
 		graphics.setStroke(LineType.DOTTED.getStroke());
 		graphics.draw(shape2);
 		graphics.setStroke(stroke);
-		alias.setX(alias.getX() + border);
-		alias.setY(alias.getY() + border);
-		alias.setWidth(alias.getWidth() - border * 2);
-		alias.setHeight(alias.getHeight() - border * 2);
+		protein.setX(protein.getX() + border);
+		protein.setY(protein.getY() + border);
+		protein.setWidth(protein.getWidth() - border * 2);
+		protein.setHeight(protein.getHeight() - border * 2);
 	}
 
 	/**
@@ -295,7 +297,7 @@ public class ProteinConverter extends SpeciesConverter<Protein> {
 	 * set then also description (position) of the modification is drawn on the
 	 * canvas.
 	 * 
-	 * @param alias
+	 * @param protein
 	 *          object that is 'parent' of the residue
 	 * @param mr
 	 *          modification to be drawn
@@ -307,7 +309,7 @@ public class ProteinConverter extends SpeciesConverter<Protein> {
 	 *          flag that indicates if we should draw description of the
 	 *          modification
 	 */
-	private void drawModification(final Protein alias, final ModificationResidue mr, final Graphics2D graphics, final boolean drawEmptyModification,
+	private void drawModification(final Protein protein, final ModificationResidue mr, final Graphics2D graphics, final boolean drawEmptyModification,
 			final boolean drawDescription) {
 		if ((!drawEmptyModification) && (mr.getState() == null)) {
 			return;
@@ -321,7 +323,7 @@ public class ProteinConverter extends SpeciesConverter<Protein> {
 			angle -= Math.PI * 2;
 		}
 
-		Point2D p = getResidueCoordinates(alias, mr.getAngle());
+		Point2D p = getResidueCoordinates(protein, mr.getAngle());
 		Ellipse2D ellipse = new Ellipse2D.Double(p.getX() - diameter / 2, p.getY() - diameter / 2, diameter, diameter);
 		Color c = graphics.getColor();
 		graphics.setColor(Color.WHITE);
@@ -332,9 +334,9 @@ public class ProteinConverter extends SpeciesConverter<Protein> {
 		String text = mr.getName();
 		if (!text.equals("") && drawDescription) {
 
-			alias.increaseBorder(-diameter / 2);
-			Point2D p2 = getResidueCoordinates(alias, mr.getAngle());
-			alias.increaseBorder(diameter / 2);
+			protein.increaseBorder(-diameter / 2);
+			Point2D p2 = getResidueCoordinates(protein, mr.getAngle());
+			protein.increaseBorder(diameter / 2);
 
 			double width = graphics.getFontMetrics().stringWidth(text);
 			double height = graphics.getFontMetrics().getHeight();
@@ -368,14 +370,14 @@ public class ProteinConverter extends SpeciesConverter<Protein> {
 	/**
 	 * Returns shape of receptor protein.
 	 * 
-	 * @param alias
+	 * @param protein
 	 *          alias for which we are looking for a border
 	 * @return Shape object defining given alias
 	 */
-	protected Shape getReceptorShape(final Element alias) {
+	protected Shape getReceptorShape(final Protein protein) {
 		Shape shape;
 		GeneralPath path = new GeneralPath(Path2D.WIND_EVEN_ODD);
-		ArrayList<Point2D> points = getReceptorPoints(alias);
+		ArrayList<Point2D> points = getReceptorPoints(protein);
 		path.moveTo(points.get(0).getX(), points.get(0).getY());
 		for (int i = 1; i < points.size(); i++) {
 			path.lineTo(points.get(i).getX(), points.get(i).getY());
@@ -388,25 +390,25 @@ public class ProteinConverter extends SpeciesConverter<Protein> {
 	/**
 	 * Returns shape of truncated protein.
 	 * 
-	 * @param alias
+	 * @param protein
 	 *          alias for which we are looking for a border
 	 * @return Shape object defining given alias
 	 */
-	protected Shape getTruncatedShape(final Element alias) {
+	protected Shape getTruncatedShape(final Protein protein) {
 		Shape shape;
 		GeneralPath path = new GeneralPath();
 		// CHECKSTYLE:OFF
-		path.moveTo(alias.getX() + 10, alias.getY());
-		path.lineTo(alias.getX() + alias.getWidth(), alias.getY());
-		path.lineTo(alias.getX() + alias.getWidth(), alias.getY() + alias.getHeight() * 3 / 5);
-		path.lineTo(alias.getX() + alias.getWidth() * 4 / 5, alias.getY() + alias.getHeight() * 2 / 5);
-		path.lineTo(alias.getX() + alias.getWidth() * 4 / 5, alias.getY() + alias.getHeight());
-		path.lineTo(alias.getX() + 10, alias.getY() + alias.getHeight());
+		path.moveTo(protein.getX() + 10, protein.getY());
+		path.lineTo(protein.getX() + protein.getWidth(), protein.getY());
+		path.lineTo(protein.getX() + protein.getWidth(), protein.getY() + protein.getHeight() * 3 / 5);
+		path.lineTo(protein.getX() + protein.getWidth() * 4 / 5, protein.getY() + protein.getHeight() * 2 / 5);
+		path.lineTo(protein.getX() + protein.getWidth() * 4 / 5, protein.getY() + protein.getHeight());
+		path.lineTo(protein.getX() + 10, protein.getY() + protein.getHeight());
 		path.curveTo(
-				alias.getX() + 5, alias.getY() + alias.getHeight() - 2, alias.getX() + 2, alias.getY() + alias.getHeight() - 5, alias.getX(),
-				alias.getY() + alias.getHeight() - 10);
-		path.lineTo(alias.getX(), alias.getY() + 10);
-		path.curveTo(alias.getX() + 2, alias.getY() + 5, alias.getX() + 5, alias.getY() + 2, alias.getX() + 10, alias.getY());
+				protein.getX() + 5, protein.getY() + protein.getHeight() - 2, protein.getX() + 2, protein.getY() + protein.getHeight() - 5, protein.getX(),
+				protein.getY() + protein.getHeight() - 10);
+		path.lineTo(protein.getX(), protein.getY() + 10);
+		path.curveTo(protein.getX() + 2, protein.getY() + 5, protein.getX() + 5, protein.getY() + 2, protein.getX() + 10, protein.getY());
 		// CHECKSTYLE:ON
 
 		path.closePath();
@@ -417,15 +419,15 @@ public class ProteinConverter extends SpeciesConverter<Protein> {
 	/**
 	 * Returns shape of receptor protein as a list of points.
 	 * 
-	 * @param alias
+	 * @param protein
 	 *          alias for which we are looking for a border
 	 * @return list of points defining border of the given alias
 	 */
-	private ArrayList<Point2D> getReceptorPoints(final Element alias) {
-		double x = alias.getX();
-		double y = alias.getY();
-		double width = alias.getWidth();
-		double height = alias.getHeight();
+	private ArrayList<Point2D> getReceptorPoints(final Protein protein) {
+		double x = protein.getX();
+		double y = protein.getY();
+		double width = protein.getWidth();
+		double height = protein.getHeight();
 		ArrayList<Point2D> points = new ArrayList<Point2D>();
 
 		// CHECKSTYLE:OFF
@@ -443,17 +445,17 @@ public class ProteinConverter extends SpeciesConverter<Protein> {
 	}
 
 	@Override
-	public PathIterator getBoundPathIterator(final Protein alias) {
-		if (alias instanceof GenericProtein) {
-			return getGenericShape(alias).getPathIterator(new AffineTransform());
-		} else if (alias instanceof ReceptorProtein) {
-			return getReceptorShape(alias).getPathIterator(new AffineTransform());
-		} else if (alias instanceof IonChannelProtein) {
-			return getGenericShape(alias).getPathIterator(new AffineTransform());
-		} else if (alias instanceof TruncatedProtein) {
-			return getTruncatedShape(alias).getPathIterator(new AffineTransform());
+	public PathIterator getBoundPathIterator(final Protein protein) {
+		if (protein instanceof GenericProtein) {
+			return getGenericShape(protein).getPathIterator(new AffineTransform());
+		} else if (protein instanceof ReceptorProtein) {
+			return getReceptorShape(protein).getPathIterator(new AffineTransform());
+		} else if (protein instanceof IonChannelProtein) {
+			return getGenericShape(protein).getPathIterator(new AffineTransform());
+		} else if (protein instanceof TruncatedProtein) {
+			return getTruncatedShape(protein).getPathIterator(new AffineTransform());
 		} else {
-			throw new InvalidArgumentException("Not implemented protein converter for type: " + alias.getClass());
+			throw new InvalidArgumentException("Not implemented protein converter for type: " + protein.getClass());
 		}
 	}
 
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/RnaConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/RnaConverter.java
index 277a8afc651d80665eaf652fd9d4dae4622926b4..bf0b0533f521cf4572b7b00fdcca619f978c9263 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/RnaConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/RnaConverter.java
@@ -1,10 +1,10 @@
-	/**
-	 * Default constructor.
-	 * 
-	 * @param colorExtractor
-	 *          Object that helps to convert {@link ColorSchema} values into
-	 *          colors when drawing {@link Species}
-	 */
+/**
+ * Default constructor.
+ * 
+ * @param colorExtractor
+ *          Object that helps to convert {@link ColorSchema} values into colors
+ *          when drawing {@link Species}
+ */
 package lcsb.mapviewer.converter.graphics.bioEntity.element.species;
 
 import java.awt.Color;
@@ -23,7 +23,6 @@ import org.apache.log4j.Logger;
 import lcsb.mapviewer.commands.ColorExtractor;
 import lcsb.mapviewer.converter.graphics.ConverterParams;
 import lcsb.mapviewer.model.map.layout.ColorSchema;
-import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.map.species.Rna;
 import lcsb.mapviewer.model.map.species.Species;
 import lcsb.mapviewer.model.map.species.field.ModificationState;
@@ -55,46 +54,46 @@ public class RnaConverter extends SpeciesConverter<Rna> {
 	}
 
 	@Override
-	public void draw(final Rna alias, final Graphics2D graphics, final ConverterParams params) {
-		GeneralPath path = getRnaPath(alias);
+	public void draw(final Rna rna, final Graphics2D graphics, final ConverterParams params) {
+		GeneralPath path = getRnaPath(rna);
 		Color c = graphics.getColor();
-		graphics.setColor(alias.getColor());
+		graphics.setColor(rna.getColor());
 		graphics.fill(path);
 		graphics.setColor(c);
 		Stroke stroke = graphics.getStroke();
-		graphics.setStroke(getBorderLine(alias));
+		graphics.setStroke(getBorderLine(rna));
 		graphics.draw(path);
 		graphics.setStroke(stroke);
 
-		for (RnaRegion mr : alias.getRegions()) {
-			drawModification(alias, mr, graphics, false, false);
+		for (RnaRegion mr : rna.getRegions()) {
+			drawModification(rna, mr, graphics, false, false);
 		}
 
-		drawText(alias, graphics, params);
+		drawText(rna, graphics, params);
 	}
 
 	/**
-	 * Returns shape of the Rna as a GeneralPath object.
+	 * Returns shape of the {@link Rna} as a {@link GeneralPath} object.
 	 * 
-	 * @param alias
-	 *          alias for which we are looking for a border
-	 * @return GeneralPath object defining border of the given alias
+	 * @param rna
+	 *          {@link Rna} for which we are looking for a border
+	 * @return {@link GeneralPath} object defining border of the given {@link Rna}
 	 */
-	private GeneralPath getRnaPath(final Element alias) {
+	private GeneralPath getRnaPath(final Rna rna) {
 		// CHECKSTYLE:OFF
 		GeneralPath path = new GeneralPath(Path2D.WIND_EVEN_ODD, 4);
-		path.moveTo(alias.getX() + alias.getWidth() / 4, alias.getY());
-		path.lineTo(alias.getX() + alias.getWidth(), alias.getY());
-		path.lineTo(alias.getX() + alias.getWidth() * 3 / 4, alias.getY() + alias.getHeight());
-		path.lineTo(alias.getX(), alias.getY() + alias.getHeight());
+		path.moveTo(rna.getX() + rna.getWidth() / 4, rna.getY());
+		path.lineTo(rna.getX() + rna.getWidth(), rna.getY());
+		path.lineTo(rna.getX() + rna.getWidth() * 3 / 4, rna.getY() + rna.getHeight());
+		path.lineTo(rna.getX(), rna.getY() + rna.getHeight());
 		// CHECKSTYLE:ON
 		path.closePath();
 		return path;
 	}
 
 	@Override
-	public PathIterator getBoundPathIterator(final Rna alias) {
-		return getRnaPath(alias).getPathIterator(new AffineTransform());
+	public PathIterator getBoundPathIterator(final Rna rna) {
+		return getRnaPath(rna).getPathIterator(new AffineTransform());
 	}
 
 	/**
@@ -103,10 +102,10 @@ public class RnaConverter extends SpeciesConverter<Rna> {
 	 * set then also description (position) of the modification is drawn on the
 	 * canvas.
 	 * 
-	 * @param alias
+	 * @param rna
 	 *          object that is 'parent' of the residue
-	 * @param mr
-	 *          modification to be drawn
+	 * @param region
+	 *          {@link RnaRegion modification} to be drawn
 	 * @param graphics
 	 *          - where the modification should be drawn
 	 * @param drawEmptyModification
@@ -115,22 +114,22 @@ public class RnaConverter extends SpeciesConverter<Rna> {
 	 *          flag that indicates if we should draw description of the
 	 *          modification
 	 */
-	private void drawModification(final Rna alias, final RnaRegion mr, final Graphics2D graphics, final boolean drawEmptyModification,
+	private void drawModification(final Rna rna, final RnaRegion region, final Graphics2D graphics, final boolean drawEmptyModification,
 			final boolean drawDescription) {
-		if ((!drawEmptyModification) && (mr.getState() == null)) {
+		if ((!drawEmptyModification) && (region.getState() == null)) {
 			return;
 		}
 		double diameter = DEFAULT_MODIFICATION_DIAMETER;
 
-		double x = alias.getX();
-		double y = alias.getY();
+		double x = rna.getX();
+		double y = rna.getY();
 
-		double width = alias.getWidth();
+		double width = rna.getWidth();
 
 		// CHECKSTYLE:OFF
 		// we draw modifier on the upper border of rna (which is only in
 		// 3/4 of the width of alias, but starts in 1/4 of the width)
-		Point2D p = new Point2D.Double(x + width / 4.0 + width * 3.0 / 4.0 * mr.getPos(), y - DEFAULT_MODIFICATION_DIAMETER);
+		Point2D p = new Point2D.Double(x + width / 4.0 + width * 3.0 / 4.0 * region.getPos(), y - DEFAULT_MODIFICATION_DIAMETER);
 		// CHECKSTYLE:ON
 
 		Ellipse2D ellipse = new Ellipse2D.Double(p.getX() - diameter / 2, p.getY() - diameter / 2, diameter, diameter);
@@ -141,13 +140,13 @@ public class RnaConverter extends SpeciesConverter<Rna> {
 		graphics.draw(ellipse);
 		graphics.drawLine((int) p.getX(), (int) (p.getY() + diameter / 2), (int) p.getX(), (int) y);
 
-		String text = mr.getName();
+		String text = region.getName();
 		if (!text.equals("") && drawDescription) {
 			double textWidth = graphics.getFontMetrics().stringWidth(text);
 			Point2D p2 = new Point2D.Double(p.getX() - textWidth / 2, p.getY() - DEFAULT_SPECIES_MODIFIER_FONT_SIZE);
 			graphics.drawString(text, (int) p2.getX(), (int) p2.getY());
 		}
-		ModificationState state = mr.getState();
+		ModificationState state = region.getState();
 		if (state != null) {
 			String str = state.getAbbreviation();
 			Font tmpFont = graphics.getFont();
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/SBGNNucleicAcidFeatureConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/SBGNNucleicAcidFeatureConverter.java
index 5412c1b961a4f388bf754aea9e8452528312722c..cd82b37bc9e91e2e3aba4f947c688f2de3ec4d73 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/SBGNNucleicAcidFeatureConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/SBGNNucleicAcidFeatureConverter.java
@@ -11,11 +11,10 @@ import java.awt.geom.PathIterator;
 import lcsb.mapviewer.commands.ColorExtractor;
 import lcsb.mapviewer.converter.graphics.ConverterParams;
 import lcsb.mapviewer.model.map.layout.ColorSchema;
-import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.map.species.Species;
 
 /**
- * This class defines methods used for drawing SpeciesAlias of nucleic acid
+ * This class defines methods used for drawing {@link Species} of nucleic acid
  * feature in the SBGN way on the {@link Graphics2D} object.
  * 
  * @author Michał Kuźma
@@ -44,13 +43,13 @@ public class SBGNNucleicAcidFeatureConverter extends SpeciesConverter<Species> {
 	/**
 	 * Returns shape of SBGN Nucleic acid feature.
 	 * 
-	 * @param alias
-	 *          alias for which the shape should be returned
+	 * @param species
+	 *          {@link Species} for which the shape should be returned
 	 * @return shape of the SBGN Nucleic acid feature for given alias
 	 */
-	private Shape getShape(final Element alias) {
+	private Shape getShape(final Species species) {
 		GeneralPath bottomRoundedRectangle = new GeneralPath(GeneralPath.WIND_EVEN_ODD);
-		double x = alias.getX(), y = alias.getY(), width = alias.getWidth(), height = alias.getHeight();
+		double x = species.getX(), y = species.getY(), width = species.getWidth(), height = species.getHeight();
 
 		bottomRoundedRectangle.moveTo(x, y);
 		bottomRoundedRectangle.lineTo(x, y + height - RECTANGLE_CORNER_ARC_SIZE);
@@ -64,24 +63,24 @@ public class SBGNNucleicAcidFeatureConverter extends SpeciesConverter<Species> {
 	}
 
 	@Override
-	public void draw(Species alias, Graphics2D graphics, ConverterParams params) {
+	public void draw(Species species, Graphics2D graphics, ConverterParams params) {
 		// Unit of information text - multimer cardinality
 		String unitOfInformationText = null;
-		if (alias.getStatePrefix() != null && alias.getStateLabel() != null) {
-			if (alias.getStatePrefix().equals("free input")) {
-				unitOfInformationText = alias.getStateLabel();
+		if (species.getStatePrefix() != null && species.getStateLabel() != null) {
+			if (species.getStatePrefix().equals("free input")) {
+				unitOfInformationText = species.getStateLabel();
 			} else {
-				unitOfInformationText = alias.getStatePrefix() + ":" + alias.getStateLabel();
+				unitOfInformationText = species.getStatePrefix() + ":" + species.getStateLabel();
 			}
 		}
 
-		int homodir = alias.getHomodimer();
+		int homodir = species.getHomodimer();
 
-		alias.setWidth(alias.getWidth() - SpeciesConverter.HOMODIMER_OFFSET * (alias.getHomodimer() - 1));
-		alias.setHeight(alias.getHeight() - SpeciesConverter.HOMODIMER_OFFSET * (alias.getHomodimer() - 1));
+		species.setWidth(species.getWidth() - SpeciesConverter.HOMODIMER_OFFSET * (species.getHomodimer() - 1));
+		species.setHeight(species.getHeight() - SpeciesConverter.HOMODIMER_OFFSET * (species.getHomodimer() - 1));
 
-		alias.setX(alias.getX() + SpeciesConverter.HOMODIMER_OFFSET * homodir);
-		alias.setY(alias.getY() + SpeciesConverter.HOMODIMER_OFFSET * homodir);
+		species.setX(species.getX() + SpeciesConverter.HOMODIMER_OFFSET * homodir);
+		species.setY(species.getY() + SpeciesConverter.HOMODIMER_OFFSET * homodir);
 
 		int glyphCount;
 		if (homodir > 1) {
@@ -90,18 +89,18 @@ public class SBGNNucleicAcidFeatureConverter extends SpeciesConverter<Species> {
 			glyphCount = 1;
 		}
 		for (int i = 0; i < glyphCount; i++) {
-			alias.setX(alias.getX() - SpeciesConverter.HOMODIMER_OFFSET);
-			alias.setY(alias.getY() - SpeciesConverter.HOMODIMER_OFFSET);
+			species.setX(species.getX() - SpeciesConverter.HOMODIMER_OFFSET);
+			species.setY(species.getY() - SpeciesConverter.HOMODIMER_OFFSET);
 
-			Shape shape = getShape(alias);
+			Shape shape = getShape(species);
 
 			Color c = graphics.getColor();
-			graphics.setColor(alias.getColor());
+			graphics.setColor(species.getColor());
 			graphics.fill(shape);
 			graphics.setColor(c);
 
 			Stroke stroke = graphics.getStroke();
-			graphics.setStroke(getBorderLine(alias));
+			graphics.setStroke(getBorderLine(species));
 			graphics.draw(shape);
 			graphics.setStroke(stroke);
 
@@ -118,16 +117,16 @@ public class SBGNNucleicAcidFeatureConverter extends SpeciesConverter<Species> {
 
 		}
 
-		drawUnitOfInformation(unitOfInformationText, alias, graphics);
-		drawText(alias, graphics, params);
+		drawUnitOfInformation(unitOfInformationText, species, graphics);
+		drawText(species, graphics, params);
 
-		alias.setWidth(alias.getWidth() + SpeciesConverter.HOMODIMER_OFFSET * (homodir - 1));
-		alias.setHeight(alias.getHeight() + SpeciesConverter.HOMODIMER_OFFSET * (homodir - 1));
+		species.setWidth(species.getWidth() + SpeciesConverter.HOMODIMER_OFFSET * (homodir - 1));
+		species.setHeight(species.getHeight() + SpeciesConverter.HOMODIMER_OFFSET * (homodir - 1));
 	}
 
 	@Override
-	protected PathIterator getBoundPathIterator(Species alias) {
-		return getShape(alias).getPathIterator(new AffineTransform());
+	protected PathIterator getBoundPathIterator(Species species) {
+		return getShape(species).getPathIterator(new AffineTransform());
 	}
 
 }
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/SimpleMoleculeConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/SimpleMoleculeConverter.java
index 8abca141bd11232bed19933a0737079b56a8c016..8ce04bcc3d88e37d14e34c3f439c3cf2f9bd26c0 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/SimpleMoleculeConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/SimpleMoleculeConverter.java
@@ -18,8 +18,8 @@ import lcsb.mapviewer.model.map.species.SimpleMolecule;
 import lcsb.mapviewer.model.map.species.Species;
 
 /**
- * This class defines methods used for drawing {@link SimpleMolecule} on
- * the {@link Graphics2D} object.
+ * This class defines methods used for drawing {@link SimpleMolecule} on the
+ * {@link Graphics2D} object.
  * 
  * @author Piotr Gawron
  * 
@@ -42,42 +42,42 @@ public class SimpleMoleculeConverter extends SpeciesConverter<SimpleMolecule> {
 	}
 
 	@Override
-	public void draw(final SimpleMolecule alias, final Graphics2D graphics, final ConverterParams params) {
+	public void draw(final SimpleMolecule simpleMolecule, final Graphics2D graphics, final ConverterParams params) {
 		int homodir;
 		if (params.isSbgnFormat()) {
 			// If the SBGN display mode is set, multimer is shown as two stacked
 			// glyphs
-			if (alias.getHomodimer() > 1) {
+			if (simpleMolecule.getHomodimer() > 1) {
 				homodir = 2;
 			} else {
 				homodir = 1;
 			}
 		} else {
-			homodir = alias.getHomodimer();
+			homodir = simpleMolecule.getHomodimer();
 		}
 
-		alias.setWidth(alias.getWidth() - SpeciesConverter.HOMODIMER_OFFSET * (homodir - 1));
-		alias.setHeight(alias.getHeight() - SpeciesConverter.HOMODIMER_OFFSET * (homodir - 1));
+		simpleMolecule.setWidth(simpleMolecule.getWidth() - SpeciesConverter.HOMODIMER_OFFSET * (homodir - 1));
+		simpleMolecule.setHeight(simpleMolecule.getHeight() - SpeciesConverter.HOMODIMER_OFFSET * (homodir - 1));
 
 		// SBGN view - simple molecules are represented as circles
 		if (params.isSbgnFormat()) {
-			alias.setX(alias.getX() + (alias.getWidth() - alias.getHeight()) / 2);
-			alias.setWidth(alias.getHeight());
+			simpleMolecule.setX(simpleMolecule.getX() + (simpleMolecule.getWidth() - simpleMolecule.getHeight()) / 2);
+			simpleMolecule.setWidth(simpleMolecule.getHeight());
 		}
 
-		alias.setX(alias.getX() + SpeciesConverter.HOMODIMER_OFFSET * (homodir));
-		alias.setY(alias.getY() + SpeciesConverter.HOMODIMER_OFFSET * (homodir));
+		simpleMolecule.setX(simpleMolecule.getX() + SpeciesConverter.HOMODIMER_OFFSET * (homodir));
+		simpleMolecule.setY(simpleMolecule.getY() + SpeciesConverter.HOMODIMER_OFFSET * (homodir));
 
 		for (int i = 0; i < homodir; i++) {
-			alias.setX(alias.getX() - SpeciesConverter.HOMODIMER_OFFSET);
-			alias.setY(alias.getY() - SpeciesConverter.HOMODIMER_OFFSET);
-			Shape shape = new Ellipse2D.Double(alias.getX(), alias.getY(), alias.getWidth(), alias.getHeight());
+			simpleMolecule.setX(simpleMolecule.getX() - SpeciesConverter.HOMODIMER_OFFSET);
+			simpleMolecule.setY(simpleMolecule.getY() - SpeciesConverter.HOMODIMER_OFFSET);
+			Shape shape = new Ellipse2D.Double(simpleMolecule.getX(), simpleMolecule.getY(), simpleMolecule.getWidth(), simpleMolecule.getHeight());
 			Color c = graphics.getColor();
-			graphics.setColor(alias.getColor());
+			graphics.setColor(simpleMolecule.getColor());
 			graphics.fill(shape);
 			graphics.setColor(c);
 			Stroke stroke = graphics.getStroke();
-			graphics.setStroke(getBorderLine(alias));
+			graphics.setStroke(getBorderLine(simpleMolecule));
 			graphics.draw(shape);
 			graphics.setStroke(stroke);
 
@@ -85,8 +85,8 @@ public class SimpleMoleculeConverter extends SpeciesConverter<SimpleMolecule> {
 			// containing cardinality
 			if (params.isSbgnFormat() && (i == homodir - 1)) {
 				String unitOfInformationText = null;
-				if (alias.getStatePrefix() != null && alias.getStateLabel() != null) {
-					unitOfInformationText = alias.getStatePrefix() + ":" + alias.getStateLabel();
+				if (simpleMolecule.getStatePrefix() != null && simpleMolecule.getStateLabel() != null) {
+					unitOfInformationText = simpleMolecule.getStatePrefix() + ":" + simpleMolecule.getStateLabel();
 				}
 				if (homodir == 2 && (unitOfInformationText == null || !unitOfInformationText.contains("N:"))) {
 					if (unitOfInformationText != null) {
@@ -94,30 +94,31 @@ public class SimpleMoleculeConverter extends SpeciesConverter<SimpleMolecule> {
 					} else {
 						unitOfInformationText = "";
 					}
-					unitOfInformationText += "N:" + alias.getHomodimer();
+					unitOfInformationText += "N:" + simpleMolecule.getHomodimer();
 				}
 
-				drawUnitOfInformation(unitOfInformationText, alias, graphics);
+				drawUnitOfInformation(unitOfInformationText, simpleMolecule, graphics);
 			}
 		}
-		alias.setWidth(alias.getWidth() + SpeciesConverter.HOMODIMER_OFFSET * (homodir - 1));
-		alias.setHeight(alias.getHeight() + SpeciesConverter.HOMODIMER_OFFSET * (homodir - 1));
-		drawText(alias, graphics, params);
+		simpleMolecule.setWidth(simpleMolecule.getWidth() + SpeciesConverter.HOMODIMER_OFFSET * (homodir - 1));
+		simpleMolecule.setHeight(simpleMolecule.getHeight() + SpeciesConverter.HOMODIMER_OFFSET * (homodir - 1));
+		drawText(simpleMolecule, graphics, params);
 	}
 
 	@Override
-	public PathIterator getBoundPathIterator(final SimpleMolecule alias) {
+	public PathIterator getBoundPathIterator(final SimpleMolecule simpleMolecule) {
 		throw new InvalidStateException("This class doesn't provide boundPath");
 	}
 
 	@Override
-	public Point2D getPointCoordinatesOnBorder(final SimpleMolecule alias, final double angle) {
-		if (alias.getWidth() == 0 && alias.getHeight() == 0) {
+	public Point2D getPointCoordinatesOnBorder(final SimpleMolecule simpleMolecule, final double angle) {
+		if (simpleMolecule.getWidth() == 0 && simpleMolecule.getHeight() == 0) {
 			logger.warn("Looking for coordinates on border of alias of size 0");
-			return alias.getCenter();
+			return simpleMolecule.getCenter();
 		}
 		Point2D result;
-		result = getEllipseTransformation().getPointOnEllipseByRadian(alias.getX(), alias.getY(), alias.getWidth(), alias.getHeight(), angle);
+		result = getEllipseTransformation()
+				.getPointOnEllipseByRadian(simpleMolecule.getX(), simpleMolecule.getY(), simpleMolecule.getWidth(), simpleMolecule.getHeight(), angle);
 		return result;
 
 	}
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/SpeciesConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/SpeciesConverter.java
index 73cb492d1e5dbf4873b41fb636622ca5add02b16..2bf368852c188ceceb829c2009a4541d6007d2df 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/SpeciesConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/SpeciesConverter.java
@@ -21,19 +21,19 @@ import lcsb.mapviewer.common.exception.InvalidStateException;
 import lcsb.mapviewer.common.geometry.EllipseTransformation;
 import lcsb.mapviewer.common.geometry.LineTransformation;
 import lcsb.mapviewer.converter.graphics.ConverterParams;
+import lcsb.mapviewer.converter.graphics.DrawingException;
 import lcsb.mapviewer.converter.graphics.bioEntity.element.ElementConverter;
 import lcsb.mapviewer.model.graphics.LineType;
 import lcsb.mapviewer.model.map.layout.ColorSchema;
 import lcsb.mapviewer.model.map.species.Complex;
-import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.map.species.Species;
 
 /**
- * This class defines basics used for drawing aliases of {@link Species} (node
- * in the graph representation) on the graphics2d object.
+ * This class defines basics used for drawing {@link Species} (node in the graph
+ * representation) on the {@link Graphics2D} object.
  * 
  * @param <T>
- *          alias class that can be drawn with this converter
+ *          type of {@link Species} class that can be drawn with this converter
  * @author Piotr Gawron
  * 
  */
@@ -163,45 +163,47 @@ public abstract class SpeciesConverter<T extends Species> extends ElementConvert
 	};
 
 	/**
-	 * Returns coordinates on the alias border for given angle.
+	 * Returns coordinates on the {@link Species} border for given angle.
 	 * 
-	 * @param alias
-	 *          object on border which the point is looked for
+	 * @param species
+	 *          {@link Species} on border which the point is looked for
 	 * @param angle
-	 *          angle between X axis center point of alias and point that we are
-	 *          looking for
-	 * @return coordinates on the alias border that correspond to the angle
+	 *          angle between X axis center point of {@link Species} and point
+	 *          that we are looking for
+	 * @return coordinates on the {@link Species} border that correspond to the
+	 *         angle
 	 */
-	protected Point2D getPointCoordinatesOnBorder(final T alias, final double angle) {
+	protected Point2D getPointCoordinatesOnBorder(final T species, final double angle) {
 		Point2D result = null;
-		if (alias.getWidth() == 0 && alias.getHeight() == 0) {
-			result = alias.getCenter();
+		if (species.getWidth() == 0 && species.getHeight() == 0) {
+			result = species.getCenter();
 		} else {
-			double dist = Math.max(alias.getWidth(), alias.getHeight()) * 2;
-			Point2D startPoint = alias.getCenter();
+			double dist = Math.max(species.getWidth(), species.getHeight()) * 2;
+			Point2D startPoint = species.getCenter();
 			double x = startPoint.getX() + Math.cos(angle) * dist;
 			double y = startPoint.getY() - Math.sin(angle) * dist;
 			Point2D endPoint = new Point2D.Double(x, y);
 			Line2D line = new Line2D.Double(startPoint, endPoint);
-			result = lineTransformation.getIntersectionWithPathIterator(line, getBoundPathIterator(alias));
+			result = lineTransformation.getIntersectionWithPathIterator(line, getBoundPathIterator(species));
 		}
 		return result;
 
 	}
 
 	/**
-	 * Returns coordinates on the alias border for given angle for residues.
+	 * Returns coordinates on the {@link Species} border for given angle for
+	 * residues.
 	 * 
-	 * @param alias
+	 * @param species
 	 *          object on border which the point is looked for
 	 * @param angle
 	 *          CellDEsigner specific angle defining coordinates (;/)
 	 * @return coordinates on the alias border that correspond to the angle
 	 */
-	protected Point2D getResidueCoordinates(final T alias, double angle) {
+	protected Point2D getResidueCoordinates(final T species, double angle) {
 		Point2D result = null;
-		if (alias.getWidth() == 0 && alias.getHeight() == 0) {
-			result = alias.getCenter();
+		if (species.getWidth() == 0 && species.getHeight() == 0) {
+			result = species.getCenter();
 		} else {
 			double x = 0;
 			double y = 0;
@@ -215,74 +217,76 @@ public abstract class SpeciesConverter<T extends Species> extends ElementConvert
 				// CHECKSTYLE:OFF 0.5 is much readable than any other suggestion
 				double ratio = 0.5 + angle / (PI / 2);
 				// CHECKSTYLE:ON
-				x = alias.getX() + alias.getWidth();
-				y = alias.getY() + alias.getHeight() * (1 - ratio);
+				x = species.getX() + species.getWidth();
+				y = species.getY() + species.getHeight() * (1 - ratio);
 			} else if (angle < TOP_RESIDUE_MAX_ANGLE) {
 				double ratio = (angle - RIGHT_TOP_RESIDUE_MAX_ANGLE) / (PI / 2);
-				y = alias.getY();
-				x = alias.getX() + alias.getWidth() * (1 - ratio);
+				y = species.getY();
+				x = species.getX() + species.getWidth() * (1 - ratio);
 			} else if (angle < LEFT_RESIDUE_MAX_ANGLE) {
 				double ratio = (angle - TOP_RESIDUE_MAX_ANGLE) / (PI / 2);
-				y = alias.getY() + alias.getHeight() * (ratio);
-				x = alias.getX();
+				y = species.getY() + species.getHeight() * (ratio);
+				x = species.getX();
 			} else if (angle < BOTTOM_RESIDUE_MAX_ANGLE) {
 				double ratio = (angle - LEFT_RESIDUE_MAX_ANGLE) / (PI / 2);
-				y = alias.getY() + alias.getHeight();
-				x = alias.getX() + alias.getWidth() * ratio;
+				y = species.getY() + species.getHeight();
+				x = species.getX() + species.getWidth() * ratio;
 			} else if (angle <= 2 * PI + Configuration.EPSILON) {
 				double ratio = (angle - BOTTOM_RESIDUE_MAX_ANGLE) / (PI / 2);
-				y = alias.getY() + alias.getHeight() * (1 - ratio);
-				x = alias.getX() + alias.getWidth();
+				y = species.getY() + species.getHeight() * (1 - ratio);
+				x = species.getX() + species.getWidth();
 			} else {
 				throw new InvalidStateException();
 			}
-			Point2D center = alias.getCenter();
+			Point2D center = species.getCenter();
 			double correctedAngle = -Math.atan2((y - center.getY()), (x - center.getX()));
-			result = getPointCoordinatesOnBorder(alias, correctedAngle);
+			result = getPointCoordinatesOnBorder(species, correctedAngle);
 		}
 		return result;
 
 	}
 
 	/**
-	 * Returns default shape of the alias.
+	 * Returns default shape of the {@link Species}.
 	 * 
-	 * @param alias
-	 *          alias for which we are looking for a border
-	 * @return Shape object defining given alias
+	 * @param species
+	 *          {@link Species} for which we are looking for a border
+	 * @return {@link Shape} object defining given {@link Species}
 	 */
-	protected Shape getDefaultAliasShape(final Element alias) {
+	protected Shape getDefaultAliasShape(final Species species) {
 		Shape shape;
-		shape = new Rectangle(alias.getX().intValue(), alias.getY().intValue(), alias.getWidth().intValue(), alias.getHeight().intValue());
+		shape = new Rectangle(species.getX().intValue(), species.getY().intValue(), species.getWidth().intValue(), species.getHeight().intValue());
 		return shape;
 	}
 
 	/**
-	 * Returns font that should be used for drawing description of the alias.
+	 * Returns font that should be used for drawing description of the
+	 * {@link Species}.
 	 * 
-	 * @param alias
-	 *          alias for which we are looking for a font
+	 * @param species
+	 *          {@link Species} for which we are looking for a font
 	 * @param params
 	 *          specific drawing parameters (like scale)
-	 * @return Font that should be used for drawing alias description
+	 * @return {@link Font} that should be used for drawing {@link Species}
+	 *         description
 	 */
-	protected Font getFont(final Element alias, ConverterParams params) {
+	protected Font getFont(final Species species, ConverterParams params) {
 		double fontSize = DEFAULT_SPECIES_FONT_SIZE;
-		if (alias.getFontSize() != null) {
-			fontSize = alias.getFontSize();
+		if (species.getFontSize() != null) {
+			fontSize = species.getFontSize();
 		}
 		return new Font(Font.SANS_SERIF, 0, (int) (fontSize * params.getScale()));
 	}
 
 	/**
-	 * Returns text describing alias.
+	 * Returns text describing {@link Species}.
 	 * 
-	 * @param alias
+	 * @param species
 	 *          object under investigation
-	 * @return description of the alias
+	 * @return description of the {@link Species}
 	 */
-	protected String getText(final T alias) {
-		String name = alias.getName();
+	protected String getText(final T species) {
+		String name = species.getName();
 		if (name.equals("")) {
 			name = " ";
 		}
@@ -291,18 +295,18 @@ public abstract class SpeciesConverter<T extends Species> extends ElementConvert
 	}
 
 	@Override
-	public void drawText(final T alias, final Graphics2D graphics, final ConverterParams params) {
-		String text = getText(alias);
+	public void drawText(final T species, final Graphics2D graphics, final ConverterParams params) {
+		String text = getText(species);
 		Font oldFont = graphics.getFont();
-		Font font = getFont(alias, params);
+		Font font = getFont(species, params);
 		graphics.setColor(Color.BLACK);
 		graphics.setFont(font);
 
-		Point2D point = alias.getCenter();
-		if (alias instanceof Complex) {
-			if (((Complex) alias).getElements().size() > 0) {
-				if (alias.getTransparencyLevel() <= params.getLevel()) {
-					point.setLocation(point.getX(), alias.getY() + alias.getHeight() - graphics.getFontMetrics().getAscent());
+		Point2D point = species.getCenter();
+		if (species instanceof Complex) {
+			if (((Complex) species).getElements().size() > 0) {
+				if (isTransparent(species, params)) {
+					point.setLocation(point.getX(), species.getY() + species.getHeight() - graphics.getFontMetrics().getAscent());
 				}
 			}
 		}
@@ -399,19 +403,19 @@ public abstract class SpeciesConverter<T extends Species> extends ElementConvert
 	/**
 	 * Returns line style used for drawing alias border.
 	 * 
-	 * @param alias
-	 *          alias to be drawn
-	 * @return style of the line used to draw alias
+	 * @param species
+	 *          {@link Species} to be drawn
+	 * @return style of the line used to draw {@link Species}
 	 */
-	protected Stroke getBorderLine(final Species alias) {
-		if (!alias.isHypothetical()) {
-			if (alias instanceof Complex) {
+	protected Stroke getBorderLine(final Species species) {
+		if (!species.isHypothetical()) {
+			if (species instanceof Complex) {
 				return LineType.SOLID_BOLD.getStroke();
 			} else {
 				return LineType.SOLID.getStroke();
 			}
 		} else {
-			if (alias instanceof Complex) {
+			if (species instanceof Complex) {
 				return LineType.DASHED_BOLD.getStroke();
 			} else {
 				return LineType.DASHED.getStroke();
@@ -420,13 +424,13 @@ public abstract class SpeciesConverter<T extends Species> extends ElementConvert
 	}
 
 	/**
-	 * Returns border of the alias as PathIterator.
+	 * Returns border of the {@link Species} as {@link PathIterator}.
 	 * 
-	 * @param alias
-	 *          alias for which we are looking for a border
-	 * @return PathIterator object defining given alias
+	 * @param species
+	 *          {@link Species} for which we are looking for a border
+	 * @return {@link PathIterator} object defining given {@link Species}
 	 */
-	protected abstract PathIterator getBoundPathIterator(T alias);
+	protected abstract PathIterator getBoundPathIterator(T species);
 
 	/**
 	 * @return the lineTransformation
@@ -494,23 +498,23 @@ public abstract class SpeciesConverter<T extends Species> extends ElementConvert
 	 * 
 	 * @param text
 	 *          state description text
-	 * @param alias
-	 *          state description should be drawn on this alias
+	 * @param species
+	 *          state description should be drawn on this {@link Species}
 	 * @param graphics
 	 *          where the drawing should be performed
 	 */
-	protected void drawStructuralState(String text, T alias, final Graphics2D graphics) {
+	protected void drawStructuralState(String text, T species, final Graphics2D graphics) {
 		if (text == null) {
 			return;
 		}
 
-		Point2D p = getPointCoordinatesOnBorder(alias, Math.PI / 2);
+		Point2D p = getPointCoordinatesOnBorder(species, Math.PI / 2);
 
 		double width = MIN_STRUCTURAL_STATE_WIDTH;
 		if (!text.trim().equals("")) {
 			width = Math.max(MIN_STRUCTURAL_STATE_WIDTH, graphics.getFontMetrics().stringWidth(text) + TEXT_MARGIN_FOR_STRUCTURAL_STATE_DESC);
 		}
-		width = Math.min(width, alias.getWidth());
+		width = Math.min(width, species.getWidth());
 		double height = STRUCTURAL_STATE_HEIGHT;
 
 		Ellipse2D ellipse = new Ellipse2D.Double(p.getX() - width / 2, p.getY() - height / 2, width, height);
@@ -533,28 +537,28 @@ public abstract class SpeciesConverter<T extends Species> extends ElementConvert
 	}
 
 	/**
-	 * Draws unit of information for the alias (rectangle in the top part of the
-	 * alias).
+	 * Draws unit of information for the {@link Species} (rectangle in the top
+	 * part of the alias).
 	 * 
 	 * @param text
 	 *          unit of information text
-	 * @param alias
-	 *          unit of information should be drawn on this alias
+	 * @param species
+	 *          unit of information should be drawn on this {@link Species}
 	 * @param graphics
 	 *          where the drawing should be performed
 	 */
-	protected void drawUnitOfInformation(String text, T alias, final Graphics2D graphics) {
+	protected void drawUnitOfInformation(String text, T species, final Graphics2D graphics) {
 		if (text == null) {
 			return;
 		}
 
-		Point2D p = getPointCoordinatesOnBorder(alias, Math.PI / 2);
+		Point2D p = getPointCoordinatesOnBorder(species, Math.PI / 2);
 
 		double width = MIN_UNIT_OF_INFORMATION_WIDTH;
 		if (!text.trim().equals("")) {
 			width = Math.max(MIN_UNIT_OF_INFORMATION_WIDTH, graphics.getFontMetrics().stringWidth(text) + TEXT_MARGIN_FOR_UNIT_OF_INFORMATION_DESC);
 		}
-		width = Math.min(width, alias.getWidth());
+		width = Math.min(width, species.getWidth());
 		double height = UNIT_OF_INFORMATION_HEIGHT;
 
 		Rectangle2D rectangle = new Rectangle2D.Double(p.getX() - width / 2, p.getY() - height / 2, width, height);
@@ -576,24 +580,24 @@ public abstract class SpeciesConverter<T extends Species> extends ElementConvert
 	}
 
 	@Override
-	public void draw(T alias, Graphics2D graphics, ConverterParams params, List<ColorSchema> visualizedLayoutsColorSchemas) {
-		draw(alias, graphics, params);
+	public void draw(T species, Graphics2D graphics, ConverterParams params, List<ColorSchema> visualizedLayoutsColorSchemas) throws DrawingException {
+		draw(species, graphics, params);
 
 		Color oldColor = graphics.getColor();
 		int count = 0;
-		double width = alias.getWidth() / visualizedLayoutsColorSchemas.size();
+		double width = species.getWidth() / visualizedLayoutsColorSchemas.size();
 		for (ColorSchema schema : visualizedLayoutsColorSchemas) {
 			if (schema != null) {
 				double startX = (double) count / (double) visualizedLayoutsColorSchemas.size();
 				graphics.setColor(Color.BLACK);
 
-				int x = (int) (startX * alias.getWidth() + alias.getX());
-				graphics.drawRect(x, alias.getY().intValue(), (int) width, alias.getHeight().intValue());
+				int x = (int) (startX * species.getWidth() + species.getX());
+				graphics.drawRect(x, species.getY().intValue(), (int) width, species.getHeight().intValue());
 
 				Color color = colorExtractor.getNormalizedColor(schema);
 				Color bgAlphaColor = new Color(color.getRed(), color.getGreen(), color.getBlue(), LAYOUT_ALPHA);
 				graphics.setColor(bgAlphaColor);
-				graphics.fillRect(x, alias.getY().intValue(), (int) width, alias.getHeight().intValue());
+				graphics.fillRect(x, species.getY().intValue(), (int) width, species.getHeight().intValue());
 			}
 			count++;
 		}
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/UnknownConverter.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/UnknownConverter.java
index e304953c08b75d94805cb84ae052e4c912611228..8103b5141e06e83004616ac0ccd9e8941fdd2e97 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/UnknownConverter.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/bioEntity/element/species/UnknownConverter.java
@@ -19,9 +19,8 @@ import lcsb.mapviewer.model.map.species.Species;
 import lcsb.mapviewer.model.map.species.Unknown;
 
 /**
- * This class defines methods used for drawing SpeciesAlias of
- * {@link lcsb.mapviewer.converter.model.celldesigner.structure.db.model.map.species.Unknown
- * Unknown} on the {@link Graphics2D} object.
+ * This class defines methods used for drawing {@link Unknown} on the
+ * {@link Graphics2D} object.
  * 
  * @author Piotr Gawron
  * 
@@ -45,41 +44,39 @@ public class UnknownConverter extends SpeciesConverter<Unknown> {
 	}
 
 	@Override
-	public void draw(Unknown alias, final Graphics2D graphics, final ConverterParams params) {
-		if (alias.getActivity()) {
+	public void draw(Unknown unknown, final Graphics2D graphics, final ConverterParams params) {
+		if (unknown.getActivity()) {
 			int border = ACTIVITY_BORDER_DISTANCE;
-			alias.increaseBorder(border);
-			Shape shape2 = new Ellipse2D.Double(alias.getX(), alias.getY(), alias.getWidth(), alias.getHeight());
+			unknown.increaseBorder(border);
+			Shape shape2 = new Ellipse2D.Double(unknown.getX(), unknown.getY(), unknown.getWidth(), unknown.getHeight());
 			Stroke stroke = graphics.getStroke();
 			graphics.setStroke(LineType.DOTTED.getStroke());
 			graphics.draw(shape2);
 			graphics.setStroke(stroke);
-			alias.increaseBorder(-border);
+			unknown.increaseBorder(-border);
 		}
 
-		Shape shape = new Ellipse2D.Double(alias.getX(), alias.getY(), alias.getWidth(), alias.getHeight());
+		Shape shape = new Ellipse2D.Double(unknown.getX(), unknown.getY(), unknown.getWidth(), unknown.getHeight());
 		Color c = graphics.getColor();
-		graphics.setColor(alias.getColor());
+		graphics.setColor(unknown.getColor());
 		graphics.fill(shape);
 		graphics.setColor(c);
-		drawText(alias, graphics, params);
+		drawText(unknown, graphics, params);
 	}
 
 	@Override
-	public PathIterator getBoundPathIterator(Unknown alias) {
+	public PathIterator getBoundPathIterator(Unknown unknown) {
 		throw new InvalidStateException("This class doesn't provide boundPath");
 	}
 
 	@Override
-	public Point2D getPointCoordinatesOnBorder(Unknown alias, final double angle) {
-		if (alias.getWidth() == 0 && alias.getHeight() == 0) {
+	public Point2D getPointCoordinatesOnBorder(Unknown unknown, final double angle) {
+		if (unknown.getWidth() == 0 && unknown.getHeight() == 0) {
 			logger.warn("Looking for coordinates for unknown of 0 size");
-			return alias.getCenter();
+			return unknown.getCenter();
 		}
 		Point2D result;
-		result = getEllipseTransformation().getPointOnEllipseByRadian(alias.getX(), alias.getY(), alias.getWidth(), alias.getHeight(), angle);
+		result = getEllipseTransformation().getPointOnEllipseByRadian(unknown.getX(), unknown.getY(), unknown.getWidth(), unknown.getHeight(), angle);
 		return result;
-
 	}
-
 }
diff --git a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/placefinder/PlaceFinder.java b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/placefinder/PlaceFinder.java
index 36d9e96928be9e69edc2c0fbf23ed1a5b1a556c8..48de38bd017c4be0b12050ec89d03c1a3dfae26f 100644
--- a/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/placefinder/PlaceFinder.java
+++ b/converter-graphics/src/main/java/lcsb/mapviewer/converter/graphics/placefinder/PlaceFinder.java
@@ -8,12 +8,13 @@ import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
 
+import org.apache.log4j.Logger;
+
+import lcsb.mapviewer.commands.SemanticZoomLevelMatcher;
 import lcsb.mapviewer.model.map.compartment.Compartment;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.species.Element;
 
-import org.apache.log4j.Logger;
-
 /**
  * This class allows to find free space where description should appear for the
  * alias in hierarchical view.
@@ -23,6 +24,13 @@ import org.apache.log4j.Logger;
  */
 public class PlaceFinder {
 
+	/**
+	 * Class that allows to check if element is visible (or transparent) when
+	 * drawing. It's used to filter out invisible elements when drawing
+	 * semantic/hierarchy view.
+	 */
+	private SemanticZoomLevelMatcher zoomLevelMatcher = new SemanticZoomLevelMatcher();
+
 	/**
 	 * Represents small part of the map (enclosed by cuting lines) where something
 	 * can be put. Contains borders (height, weight, location etc). Informatin if
@@ -103,52 +111,52 @@ public class PlaceFinder {
 	 * Default class logger.
 	 */
 	@SuppressWarnings("unused")
-	private static Logger												logger				= Logger.getLogger(PlaceFinder.class.getName());
+	private static Logger																	logger			 = Logger.getLogger(PlaceFinder.class.getName());
 	/**
 	 * Whole surface is split into rectangular regions. The lines that cut the
 	 * surface correspond to borders of aliases that overlap current alias. This
 	 * matrix defines which of these regions can be used for description.
 	 */
-	private Field[][]														matrix;
+	private Field[][]																			matrix;
 
 	/**
-	 * List of {@link Compartment compartment aliases} that split surface
-	 * into regions.
+	 * List of {@link Compartment compartment aliases} that split surface into
+	 * regions.
 	 */
-	private List<Compartment>							aliases;
+	private List<Compartment>															aliases;
 
 	/**
 	 * Alias for which computation is done.
 	 */
-	private Element																mainAlias;
+	private Element																				mainAlias;
 
 	/**
 	 * Left boundary of the rectangle in which we want to fit our description.
 	 */
-	private double															leftBound;
+	private double																				leftBound;
 	/**
 	 * Right boundary of the rectangle in which we want to fit our description.
 	 */
-	private double															rightBound;
+	private double																				rightBound;
 	/**
 	 * Top boundary of the rectangle in which we want to fit our description.
 	 */
-	private double															upBound;
+	private double																				upBound;
 	/**
 	 * Bottom boundary of the rectangle in which we want to fit our description.
 	 */
-	private double															bottomBound;
+	private double																				bottomBound;
 
 	/**
 	 * Model for which this {@link PlaceFinder} was created.
 	 */
-	private Model																model;
+	private Model																					model;
 
 	/**
 	 * Map with aliases that should be considered when looking for a place to put
 	 * text.
 	 */
-	private Map<Element, List<Compartment>>	otherAliases	= new HashMap<Element, List<Compartment>>();
+	private Map<Element, Map<Integer, List<Compartment>>>	otherAliases = new HashMap<>();
 
 	/**
 	 * Default constructor for place finder in a model.
@@ -336,33 +344,41 @@ public class PlaceFinder {
 	}
 
 	/**
-	 * This method looks for a place to put description of the alias on the map.
+	 * This method looks for a place to put description of the {@link Compartment}
+	 * on the map.
 	 * 
-	 * @param alias
-	 *          alias for which we try to determine text position
+	 * @param compartment
+	 *          {@link Compartment} for which we try to determine text position
+	 * @param level
+	 *          level at which we will visualize element
 	 * @return bounds where text could be put
 	 */
-	public Rectangle2D getRetangle(Compartment alias) {
-		List<Compartment> list = otherAliases.get(alias);
+	public Rectangle2D getRetangle(Compartment compartment, int level) {
+		Map<Integer, List<Compartment>> lists = otherAliases.get(compartment);
+		if (lists == null) {
+			lists = new HashMap<>();
+			otherAliases.put(compartment, lists);
+		}
+		List<Compartment> list = lists.get(level);
 		if (list == null) {
 			list = new ArrayList<Compartment>();
 			for (Compartment compAlias : model.getCompartments()) {
-				if (compAlias.getVisibilityLevel() <= alias.getVisibilityLevel() && compAlias.getTransparencyLevel() > alias.getVisibilityLevel()) {
-					if (compAlias.cross(alias) && compAlias.getSize() <= alias.getSize()) {
+				if (zoomLevelMatcher.isVisible(level, compAlias.getVisibilityLevel()) && !zoomLevelMatcher.isTransparent(level, compAlias.getTransparencyLevel())) {
+					if (compAlias.cross(compartment) && compAlias.getSize() <= compartment.getSize()) {
 						list.add(compAlias);
 					}
 				}
 			}
-			otherAliases.put(alias, list);
+			lists.put(level, list);
 		}
 
-		this.mainAlias = alias;
+		this.mainAlias = compartment;
 		this.aliases = list;
 
-		leftBound = alias.getX();
-		rightBound = (alias.getX() + alias.getWidth());
-		upBound = alias.getY();
-		bottomBound = (alias.getY() + alias.getHeight());
+		leftBound = compartment.getX();
+		rightBound = (compartment.getX() + compartment.getWidth());
+		upBound = compartment.getY();
+		bottomBound = (compartment.getY() + compartment.getHeight());
 
 		createMatrix();
 
diff --git a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/AbstractImageGeneratorTest.java b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/AbstractImageGeneratorTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..93381deaa9787e5c87ea07b6f23dfe0b9e078b72
--- /dev/null
+++ b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/AbstractImageGeneratorTest.java
@@ -0,0 +1,151 @@
+package lcsb.mapviewer.converter.graphics;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import java.awt.Graphics2D;
+import java.awt.geom.Point2D;
+
+import org.apache.log4j.Logger;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+import lcsb.mapviewer.model.graphics.PolylineData;
+import lcsb.mapviewer.model.map.model.Model;
+import lcsb.mapviewer.model.map.model.ModelFullIndexed;
+import lcsb.mapviewer.model.map.modifier.Catalysis;
+import lcsb.mapviewer.model.map.reaction.Modifier;
+import lcsb.mapviewer.model.map.reaction.Product;
+import lcsb.mapviewer.model.map.reaction.Reactant;
+import lcsb.mapviewer.model.map.reaction.Reaction;
+import lcsb.mapviewer.model.map.species.GenericProtein;
+
+public class AbstractImageGeneratorTest extends GraphicsTestFunctions {
+	Logger logger = Logger.getLogger(AbstractImageGeneratorTest.class);
+
+	@AfterClass
+	public static void tearDownAfterClass() throws Exception {
+	}
+
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	@Test
+	public void testDrawSimpleMap() throws Exception {
+		try {
+			Graphics2D graphics = createGraphicsMock();
+
+			Model model = createSimpleModel();
+
+			AbstractImageGenerator gen = createAbstractImageGeneratorMock(graphics, model);
+			gen.draw();
+
+			//3 times for proteins and 4 times for reaction
+			verify(graphics, times(7)).draw(any());
+		} catch (Exception e) {
+			throw e;
+		}
+	}
+
+	@Test
+	public void testDrawSimpleMapWithNesting() throws Exception {
+		try {
+			Graphics2D graphics = createGraphicsMock();
+
+			Model model = createSimpleModel();
+
+			AbstractImageGenerator gen = createAbstractImageGeneratorMock(graphics, model);
+			gen.setParams(new AbstractImageGenerator.Params().model(model).nested(true));
+			gen.draw();
+
+			//3 times for proteins and 4 times for reaction
+			verify(graphics, times(7)).draw(any());
+		} catch (Exception e) {
+			throw e;
+		}
+	}
+
+	@Test
+	public void testDrawSimpleMapWithWhenNestingHidesElement() throws Exception {
+		try {
+			Graphics2D graphics = createGraphicsMock();
+
+			Model model = createSimpleModel();
+			model.getElementByElementId("s1").setVisibilityLevel(2);
+
+			AbstractImageGenerator gen = createAbstractImageGeneratorMock(graphics, model);
+			gen.setParams(new AbstractImageGenerator.Params().model(model).nested(true).level(0));
+			gen.draw();
+
+			//2 times for proteins and 3 times for reaction
+			verify(graphics, times(5)).draw(any());
+		} catch (Exception e) {
+			throw e;
+		}
+	}
+
+	private Model createSimpleModel() {
+		Model model = new ModelFullIndexed(null);
+		model.setWidth(100);
+		model.setHeight(100);
+
+		GenericProtein protein1 = new GenericProtein("s1");
+		protein1.setX(10);
+		protein1.setY(10);
+		protein1.setWidth(10);
+		protein1.setHeight(10);
+		model.addElement(protein1);
+
+		GenericProtein protein2 = new GenericProtein("s2");
+		protein2.setX(30);
+		protein2.setY(10);
+		protein2.setWidth(10);
+		protein2.setHeight(10);
+		model.addElement(protein2);
+
+		GenericProtein protein3 = new GenericProtein("s3");
+		protein3.setX(40);
+		protein3.setY(10);
+		protein3.setWidth(10);
+		protein3.setHeight(10);
+		model.addElement(protein3);
+
+		Reaction reaction = new Reaction();
+
+		Modifier modifier = new Catalysis(protein1);
+		modifier.setLine(new PolylineData(new Point2D.Double(100, 20), new Point2D.Double(100, 80)));
+		modifier.getLine().setWidth(1.0);
+
+		Reactant reactant = new Reactant(protein2);
+		reactant.setLine(new PolylineData(new Point2D.Double(90, 90), new Point2D.Double(10, 90)));
+		reactant.getLine().setWidth(1.0);
+		Product product = new Product(protein3);
+		product.setLine(new PolylineData(new Point2D.Double(200, 90), new Point2D.Double(110, 90)));
+		product.getLine().setWidth(1.0);
+		reaction.addModifier(modifier);
+		reaction.addProduct(product);
+		reaction.addReactant(reactant);
+
+		model.addReaction(reaction);
+
+		return model;
+	}
+
+	private AbstractImageGenerator createAbstractImageGeneratorMock(Graphics2D graphics, Model model) throws Exception {
+		AbstractImageGenerator result = Mockito.mock(AbstractImageGenerator.class, Mockito.CALLS_REAL_METHODS);
+		result.setGraphics(graphics);
+		result.setParams(new AbstractImageGenerator.Params().model(model).level(0));
+		return result;
+
+	}
+
+}
diff --git a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/AllGraphicsTests.java b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/AllGraphicsTests.java
index 712c9d780cc68a7801c4536f6d38d703ec5d54e6..582a1ddc3925a75f8eed2bb51f74d82a571f8156 100644
--- a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/AllGraphicsTests.java
+++ b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/AllGraphicsTests.java
@@ -10,6 +10,7 @@ import lcsb.mapviewer.converter.graphics.placefinder.AllPlaceFinderTest;
 
 @RunWith(Suite.class)
 @SuiteClasses({ //
+		AbstractImageGeneratorTest.class, //
 		AllBioEntityTests.class, //
 		AllGeometryTests.class, //
 		AllPlaceFinderTest.class, //
diff --git a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/GraphicsTestFunctions.java b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/GraphicsTestFunctions.java
new file mode 100644
index 0000000000000000000000000000000000000000..4cea69b99bf72038251af115595abf4cbd6ef8cb
--- /dev/null
+++ b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/GraphicsTestFunctions.java
@@ -0,0 +1,21 @@
+package lcsb.mapviewer.converter.graphics;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.when;
+
+import java.awt.FontMetrics;
+import java.awt.Graphics2D;
+import java.awt.geom.Rectangle2D;
+
+import org.mockito.Mockito;
+
+public abstract class GraphicsTestFunctions {
+	protected Graphics2D createGraphicsMock() {
+		Graphics2D graphics = Mockito.mock(Graphics2D.class);
+		FontMetrics fontMetrics = Mockito.mock(FontMetrics.class);
+		when(fontMetrics.getStringBounds(any(), any())).thenReturn(new Rectangle2D.Double());
+		when(graphics.getFontMetrics()).thenReturn(fontMetrics);
+		return graphics;
+	}
+
+}
diff --git a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/NormalImageGeneratorTest.java b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/NormalImageGeneratorTest.java
index 36d84707d1901ea6c5e5a23e32f1f975708fcbef..fbb7a6f4c728ddaab9646ba18553ca9565ff7b06 100644
--- a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/NormalImageGeneratorTest.java
+++ b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/NormalImageGeneratorTest.java
@@ -35,17 +35,12 @@ public class NormalImageGeneratorTest {
 	}
 
 	Double					scale;
-	Boolean					centered;
 	private Boolean	artifitialCalled;
 
 	public void setScale(Double sc) {
 		scale = sc;
 	}
 
-	public void setCentered(Boolean ce) {
-		centered = ce;
-	}
-
 	class TmpComplexConverter extends ComplexConverter {
 		public TmpComplexConverter(ColorExtractor colorExtractor) {
 			super(colorExtractor);
@@ -54,7 +49,6 @@ public class NormalImageGeneratorTest {
 		@Override
 		public void drawText(Complex compAlias, Graphics2D graphics, ConverterParams params) {
 			setScale(params.getScale());
-			setCentered(params.isTextCentered());
 			super.drawText(compAlias, graphics, params);
 		}
 
@@ -139,9 +133,9 @@ public class NormalImageGeneratorTest {
 			layer.addLayerText(new LayerText(new Rectangle2D.Double(100, 100, 199, 220), "Z dgf fsd aaewq ret"));
 
 			new CreateHierarchyCommand(model, 1, 8).execute();
-			model.getCompartments().get(1).setTransparencyLevel(2);
-			model.getCompartments().get(0).setTransparencyLevel(2);
-			model.getCompartments().get(3).setTransparencyLevel(2);
+			model.getCompartments().get(1).setTransparencyLevel("2");
+			model.getCompartments().get(0).setTransparencyLevel("2");
+			model.getCompartments().get(3).setTransparencyLevel("2");
 			new PngImageGenerator(new Params().level(2).scale(4).width(600).height(600).model(model).nested(true));
 
 		} catch (Exception e) {
diff --git a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/PdfImageGeneratorTest.java b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/PdfImageGeneratorTest.java
index 3d191ad894e7a0dce5a02e59bb60ddef4ce733a7..6109ab544df255ee427c35ee6617615b2e3edb40 100644
--- a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/PdfImageGeneratorTest.java
+++ b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/PdfImageGeneratorTest.java
@@ -51,9 +51,9 @@ public class PdfImageGeneratorTest {
 			layer.addLayerText(new LayerText(new Rectangle2D.Double(100, 100, 199, 220), "Z dgf fsd aaewq ret"));
 
 			new CreateHierarchyCommand(model, 1, 8).execute();
-			model.getCompartments().get(1).setTransparencyLevel(2);
-			model.getCompartments().get(0).setTransparencyLevel(2);
-			model.getCompartments().get(3).setTransparencyLevel(2);
+			model.getCompartments().get(1).setTransparencyLevel("2");
+			model.getCompartments().get(0).setTransparencyLevel("2");
+			model.getCompartments().get(3).setTransparencyLevel("2");
 
 			PdfImageGenerator pig = new PdfImageGenerator(new Params().level(2).scale(4).width(600).height(600).model(model).nested(true));
 
diff --git a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/bioEntity/BioEntityConverterImplTest.java b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/bioEntity/BioEntityConverterImplTest.java
index 8ba25ceb5b694c44954955c85a691d880e1aa439..206b3f332fb0d63ef640fdf71e63047a057b906b 100644
--- a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/bioEntity/BioEntityConverterImplTest.java
+++ b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/bioEntity/BioEntityConverterImplTest.java
@@ -46,10 +46,10 @@ public class BioEntityConverterImplTest {
 		try {
 			Graphics2D graphics = Mockito.mock(Graphics2D.class);
 			Reaction reaction = createReaction(1.0);
-			reaction.getReactants().get(0).getElement().setSemanticZoomLevelVisibility("11");
+			reaction.getReactants().get(0).getElement().setVisibilityLevel("11");
 
 			BioEntityConverterImpl rc = new BioEntityConverterImpl(reaction, false, colorExtractor);
-			rc.draw(reaction, graphics, new ConverterParams().semanticZoomingOn(true).level(10));
+			rc.draw(reaction, graphics, new ConverterParams().nested(true).level(10));
 
 			verify(graphics, times(0)).draw(any(GeneralPath.class));
 
@@ -64,10 +64,10 @@ public class BioEntityConverterImplTest {
 			Graphics2D graphics = Mockito.mock(Graphics2D.class);
 
 			Reaction reaction = createReaction(1.0);
-			reaction.getProducts().get(0).getElement().setSemanticZoomLevelVisibility("11");
+			reaction.getProducts().get(0).getElement().setVisibilityLevel("11");
 
 			BioEntityConverterImpl rc = new BioEntityConverterImpl(reaction, false, colorExtractor);
-			rc.draw(reaction, graphics, new ConverterParams().semanticZoomingOn(true).level(10));
+			rc.draw(reaction, graphics, new ConverterParams().nested(true).level(10));
 
 			verify(graphics, times(0)).draw(any(GeneralPath.class));
 
diff --git a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/bioEntity/reaction/ReactionConverterTest.java b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/bioEntity/reaction/ReactionConverterTest.java
index 4623a640195498ae168413bdec83498a2e4ebc6b..f5f24088412eedb983923420f2cb1cac7a9f5ea6 100644
--- a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/bioEntity/reaction/ReactionConverterTest.java
+++ b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/bioEntity/reaction/ReactionConverterTest.java
@@ -4,14 +4,11 @@ import static org.junit.Assert.assertTrue;
 import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
 
 import java.awt.Color;
-import java.awt.FontMetrics;
 import java.awt.Graphics2D;
 import java.awt.geom.GeneralPath;
 import java.awt.geom.Point2D;
-import java.awt.geom.Rectangle2D;
 import java.awt.image.BufferedImage;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -27,6 +24,7 @@ import org.mockito.Mockito;
 
 import lcsb.mapviewer.commands.ColorExtractor;
 import lcsb.mapviewer.converter.graphics.ConverterParams;
+import lcsb.mapviewer.converter.graphics.GraphicsTestFunctions;
 import lcsb.mapviewer.model.graphics.PolylineData;
 import lcsb.mapviewer.model.map.layout.ColorSchema;
 import lcsb.mapviewer.model.map.layout.GenericColorSchema;
@@ -40,7 +38,7 @@ import lcsb.mapviewer.model.map.reaction.Reaction;
 import lcsb.mapviewer.model.map.reaction.SplitOperator;
 import lcsb.mapviewer.model.map.species.GenericProtein;
 
-public class ReactionConverterTest {
+public class ReactionConverterTest extends GraphicsTestFunctions {
 
 	ColorExtractor colorExtractor = new ColorExtractor(Color.RED, Color.GREEN);
 
@@ -264,7 +262,7 @@ public class ReactionConverterTest {
 			ReactionConverter rc = new ReactionConverter(colorExtractor);
 
 			Reaction reaction = createReaction(1.0);
-			rc.draw(reaction, graphics, new ConverterParams().semanticZoomingOn(true).level(10));
+			rc.draw(reaction, graphics, new ConverterParams().nested(true).level(10));
 
 			verify(graphics, times(4)).draw(any(GeneralPath.class));
 
@@ -280,8 +278,8 @@ public class ReactionConverterTest {
 			ReactionConverter rc = new ReactionConverter(colorExtractor);
 
 			Reaction reaction = createReaction(1.0);
-			reaction.getModifiers().get(0).getElement().setSemanticZoomLevelVisibility("11");
-			rc.draw(reaction, graphics, new ConverterParams().semanticZoomingOn(true).level(10));
+			reaction.getModifiers().get(0).getElement().setVisibilityLevel("11");
+			rc.draw(reaction, graphics, new ConverterParams().nested(true).level(10));
 
 			verify(graphics, times(3)).draw(any(GeneralPath.class));
 
@@ -297,8 +295,8 @@ public class ReactionConverterTest {
 			ReactionConverter rc = new ReactionConverter(colorExtractor);
 
 			Reaction reaction = createReaction(1.0);
-			reaction.getReactants().get(0).getElement().setSemanticZoomLevelVisibility("11");
-			rc.draw(reaction, graphics, new ConverterParams().semanticZoomingOn(true).level(10));
+			reaction.getReactants().get(0).getElement().setVisibilityLevel("11");
+			rc.draw(reaction, graphics, new ConverterParams().nested(true).level(10));
 
 			verify(graphics, times(3)).draw(any(GeneralPath.class));
 
@@ -314,8 +312,8 @@ public class ReactionConverterTest {
 			ReactionConverter rc = new ReactionConverter(colorExtractor);
 
 			Reaction reaction = createReaction(1.0);
-			reaction.getProducts().get(0).getElement().setSemanticZoomLevelVisibility("11");
-			rc.draw(reaction, graphics, new ConverterParams().semanticZoomingOn(true).level(10));
+			reaction.getProducts().get(0).getElement().setVisibilityLevel("11");
+			rc.draw(reaction, graphics, new ConverterParams().nested(true).level(10));
 
 			verify(graphics, times(3)).draw(any(GeneralPath.class));
 
@@ -331,8 +329,8 @@ public class ReactionConverterTest {
 			ReactionConverter rc = new ReactionConverter(colorExtractor);
 
 			Reaction reaction = createComplexReaction(1.0);
-			reaction.getModifiers().get(0).getElement().setSemanticZoomLevelVisibility("11");
-			rc.draw(reaction, graphics, new ConverterParams().semanticZoomingOn(true).level(10));
+			reaction.getModifiers().get(0).getElement().setVisibilityLevel("11");
+			rc.draw(reaction, graphics, new ConverterParams().nested(true).level(10));
 
 			verify(graphics, times(12)).draw(any(GeneralPath.class));
 
@@ -348,9 +346,9 @@ public class ReactionConverterTest {
 			ReactionConverter rc = new ReactionConverter(colorExtractor);
 
 			Reaction reaction = createComplexReaction(1.0);
-			reaction.getModifiers().get(0).getElement().setSemanticZoomLevelVisibility("11");
-			reaction.getModifiers().get(1).getElement().setSemanticZoomLevelVisibility("11");
-			rc.draw(reaction, graphics, new ConverterParams().semanticZoomingOn(true).level(10));
+			reaction.getModifiers().get(0).getElement().setVisibilityLevel("11");
+			reaction.getModifiers().get(1).getElement().setVisibilityLevel("11");
+			rc.draw(reaction, graphics, new ConverterParams().nested(true).level(10));
 
 			verify(graphics, times(9)).draw(any(GeneralPath.class));
 
@@ -359,14 +357,6 @@ public class ReactionConverterTest {
 		}
 	}
 
-	private Graphics2D createGraphicsMock() {
-		Graphics2D graphics = Mockito.mock(Graphics2D.class);
-		FontMetrics fontMetrics = Mockito.mock(FontMetrics.class);
-		when(fontMetrics.getStringBounds(any(), any())).thenReturn(new Rectangle2D.Double());
-		when(graphics.getFontMetrics()).thenReturn(fontMetrics);
-		return graphics;
-	}
-
 	@Test
 	public void testDrawComplexReactionWithSemanticZoomingAndReactantOff() throws Exception {
 		try {
@@ -374,8 +364,8 @@ public class ReactionConverterTest {
 			ReactionConverter rc = new ReactionConverter(colorExtractor);
 
 			Reaction reaction = createComplexReaction(1.0);
-			reaction.getReactants().get(0).getElement().setSemanticZoomLevelVisibility("11");
-			rc.draw(reaction, graphics, new ConverterParams().semanticZoomingOn(true).level(10));
+			reaction.getReactants().get(0).getElement().setVisibilityLevel("11");
+			rc.draw(reaction, graphics, new ConverterParams().nested(true).level(10));
 
 			verify(graphics, times(12)).draw(any(GeneralPath.class));
 
@@ -391,8 +381,8 @@ public class ReactionConverterTest {
 			ReactionConverter rc = new ReactionConverter(colorExtractor);
 
 			Reaction reaction = createComplexReaction(1.0);
-			reaction.getProducts().get(0).getElement().setSemanticZoomLevelVisibility("11");
-			rc.draw(reaction, graphics, new ConverterParams().semanticZoomingOn(true).level(10));
+			reaction.getProducts().get(0).getElement().setVisibilityLevel("11");
+			rc.draw(reaction, graphics, new ConverterParams().nested(true).level(10));
 
 			verify(graphics, times(12)).draw(any(GeneralPath.class));
 
diff --git a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/placefinder/AllPlaceFinderTest.java b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/placefinder/AllPlaceFinderTest.java
index 2ddcd62d38d4e161878bfb94e9a1adb9356f5e18..de5f85db2360c05e79b0353be6b4ff59d9642744 100644
--- a/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/placefinder/AllPlaceFinderTest.java
+++ b/converter-graphics/src/test/java/lcsb/mapviewer/converter/graphics/placefinder/AllPlaceFinderTest.java
@@ -31,7 +31,7 @@ public class AllPlaceFinderTest {
 
 		for (Compartment alias : model.getCompartments()) {
 			PlaceFinder pf = new PlaceFinder(model);
-			actual = pf.getRetangle(alias).toString();
+			actual = pf.getRetangle(alias, Integer.valueOf(alias.getVisibilityLevel())).toString();
 		}
 		String expected = "";
 		Rectangle2D result = model.getCompartments().get(0).getBorder();
@@ -49,7 +49,7 @@ public class AllPlaceFinderTest {
 		String expected = "";
 		for (Compartment alias : model.getCompartments()) {
 			PlaceFinder pf = new PlaceFinder(model);
-			actual = pf.getRetangle(alias).toString();
+			actual = pf.getRetangle(alias, Integer.valueOf(alias.getVisibilityLevel())).toString();
 			Rectangle2D result = alias.getBorder();
 			expected = result.toString();
 			assertEquals(expected, actual);
@@ -65,7 +65,7 @@ public class AllPlaceFinderTest {
 		model.addElement(alias2);
 
 		PlaceFinder pf = new PlaceFinder(model);
-		Rectangle2D rect = pf.getRetangle(alias2);
+		Rectangle2D rect = pf.getRetangle(alias2, Integer.valueOf(alias.getVisibilityLevel()));
 		double actual = rect.getWidth() * rect.getHeight();
 		double expected = alias2.getWidth() * alias2.getHeight();
 		assertTrue(actual < expected);
@@ -79,7 +79,7 @@ public class AllPlaceFinderTest {
 		double actual = 0.0;
 		for (Compartment alias : model.getCompartments()) {
 			PlaceFinder pf = new PlaceFinder(model);
-			Rectangle2D rect = pf.getRetangle(alias);
+			Rectangle2D rect = pf.getRetangle(alias, Integer.valueOf(alias.getVisibilityLevel()));
 			actual = rect.getWidth() * rect.getHeight();
 			assertTrue(actual > 0);
 		}
@@ -95,7 +95,7 @@ public class AllPlaceFinderTest {
 		Rectangle2D result = null;
 		for (Compartment alias : model.getCompartments()) {
 			PlaceFinder pf = new PlaceFinder(model);
-			Rectangle2D rect = pf.getRetangle(alias);
+			Rectangle2D rect = pf.getRetangle(alias, Integer.valueOf(alias.getVisibilityLevel()));
 			actual += rect.getWidth() * rect.getHeight();
 		}
 		result = model.getCompartments().get(0).getBorder();
@@ -124,8 +124,8 @@ public class AllPlaceFinderTest {
 		result.setY(y);
 		result.setWidth(width);
 		result.setHeight(height);
-		result.setTransparencyLevel(10);
-		result.setVisibilityLevel(9);
+		result.setTransparencyLevel("10");
+		result.setVisibilityLevel("9");
 
 		return result;
 	}
@@ -138,7 +138,7 @@ public class AllPlaceFinderTest {
 		double actual = 0.0;
 		for (Compartment alias : model.getCompartments()) {
 			PlaceFinder pf = new PlaceFinder(model);
-			Rectangle2D rect = pf.getRetangle(alias);
+			Rectangle2D rect = pf.getRetangle(alias, Integer.valueOf(alias.getVisibilityLevel()));
 			actual = rect.getWidth() * rect.getHeight();
 			assertTrue(actual > 0);
 		}
diff --git a/converter/src/test/java/lcsb/mapviewer/converter/ComplexZipConverterTest.java b/converter/src/test/java/lcsb/mapviewer/converter/ComplexZipConverterTest.java
index e17ac596abfc01b292edf3e731403967135a2972..d80cfce64501edbf5388c8501bdab8a80910eb2f 100644
--- a/converter/src/test/java/lcsb/mapviewer/converter/ComplexZipConverterTest.java
+++ b/converter/src/test/java/lcsb/mapviewer/converter/ComplexZipConverterTest.java
@@ -548,7 +548,7 @@ public class ComplexZipConverterTest {
 			assertEquals((Integer) 10, mLink.getxCoord());
 			assertEquals((Integer) 10, mLink.getyCoord());
 			assertEquals((Integer) 3, mLink.getZoomLevel());
-			assertEquals(model, mLink.getLinkedModel());
+			assertEquals(model.getModelData(), mLink.getLinkedModel());
 
 		} catch (Exception e) {
 			e.printStackTrace();
diff --git a/converter/src/test/java/lcsb/mapviewer/converter/OverviewParserTest.java b/converter/src/test/java/lcsb/mapviewer/converter/OverviewParserTest.java
index 2ada45ccaa675607497f5d7f61f5d69b0e0f278c..dc8a7187a3ec6bf8f050ebbf94f4e85bbbe463c3 100644
--- a/converter/src/test/java/lcsb/mapviewer/converter/OverviewParserTest.java
+++ b/converter/src/test/java/lcsb/mapviewer/converter/OverviewParserTest.java
@@ -62,7 +62,7 @@ public class OverviewParserTest {
 			assertTrue(link instanceof OverviewModelLink);
 
 			OverviewModelLink mLink = (OverviewModelLink) link;
-			assertEquals(models.get("main.xml"), mLink.getLinkedModel());
+			assertEquals(models.get("main.xml").getModelData(), mLink.getLinkedModel());
 			assertEquals((Integer) 10, mLink.getxCoord());
 			assertEquals((Integer) 10, mLink.getyCoord());
 			assertEquals((Integer) 3, mLink.getZoomLevel());
diff --git a/editor/src/main/java/lcsb/mapviewer/editor/gui/canvas/MinervaCanvas.java b/editor/src/main/java/lcsb/mapviewer/editor/gui/canvas/MinervaCanvas.java
index 75ffc1b422cdbb005941d8a5252395e13c2c9836..7190343e89fedb9dde647437d9ba316d9fd2f0c0 100644
--- a/editor/src/main/java/lcsb/mapviewer/editor/gui/canvas/MinervaCanvas.java
+++ b/editor/src/main/java/lcsb/mapviewer/editor/gui/canvas/MinervaCanvas.java
@@ -375,22 +375,22 @@ public class MinervaCanvas extends JComponent {
 				}
 
 				@Override
-				public void saveToFile(String fileName) throws IOException {
+				public void saveToFileImplementation(String fileName) throws IOException {
 					throw new NotImplementedException();
 				}
 
 				@Override
-				public void saveToOutputStream(OutputStream os) throws IOException {
+				public void saveToOutputStreamImplementation(OutputStream os) throws IOException {
 					throw new NotImplementedException();
 				}
 
 				@Override
-				public void savePartToFile(int x, int y, int width, int height, String fileName) throws IOException {
+				public void savePartToFileImplementation(int x, int y, int width, int height, String fileName) throws IOException {
 					throw new NotImplementedException();
 				}
 
 				@Override
-				public void savePartToOutputStream(int x, int y, int width, int height, OutputStream os) throws IOException {
+				public void savePartToOutputStreamImplementation(int x, int y, int width, int height, OutputStream os) throws IOException {
 					throw new NotImplementedException();
 				}
 
@@ -409,6 +409,10 @@ public class MinervaCanvas extends JComponent {
 					throw new NotImplementedException();
 				}
 
+				@Override
+				protected void closeImageObject() {
+				}
+
 			}
 			try {
 				if (lastBufferedData == null || Math.abs(lastBufferedData.getZoom() - zoom) > Configuration.EPSILON) {
diff --git a/model-command/src/main/java/lcsb/mapviewer/commands/CreateHierarchyCommand.java b/model-command/src/main/java/lcsb/mapviewer/commands/CreateHierarchyCommand.java
index 23a0107febab2705e9c1c62dfce16dc2cf1327b5..e89bcdf5a497fb29075b6f33ff5eafd3d3173c0c 100644
--- a/model-command/src/main/java/lcsb/mapviewer/commands/CreateHierarchyCommand.java
+++ b/model-command/src/main/java/lcsb/mapviewer/commands/CreateHierarchyCommand.java
@@ -11,6 +11,7 @@ import org.apache.log4j.Logger;
 import lcsb.mapviewer.common.Configuration;
 import lcsb.mapviewer.common.exception.InvalidStateException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.model.map.BioEntity;
 import lcsb.mapviewer.model.map.compartment.Compartment;
 import lcsb.mapviewer.model.map.compartment.PathwayCompartment;
 import lcsb.mapviewer.model.map.layout.graphics.Layer;
@@ -120,14 +121,18 @@ public class CreateHierarchyCommand extends ModelCommand {
 	protected void clean() {
 		for (Element alias : getModel().getElements()) {
 			alias.setCompartment(null);
+			alias.setTransparencyLevel("");
 		}
-		Set<PathwayCompartment> toRemove = new HashSet<>();
+		for (BioEntity bioEntity : getModel().getBioEntities()) {
+			bioEntity.setVisibilityLevel("0");
+		}
+		Set<Compartment> toRemove = new HashSet<>();
 		for (Compartment alias : getModel().getCompartments()) {
 			if (alias instanceof PathwayCompartment) {
-				toRemove.add((PathwayCompartment) alias);
+				toRemove.add(alias);
 			}
 		}
-		for (PathwayCompartment alias : toRemove) {
+		for (Compartment alias : toRemove) {
 			getModel().removeElement(alias);
 		}
 	}
@@ -203,7 +208,7 @@ public class CreateHierarchyCommand extends ModelCommand {
 					logValue = zoomLevels;
 				}
 			}
-			alias.setVisibilityLevel(logValue);
+			alias.setVisibilityLevel(logValue + "");
 		}
 	}
 
@@ -218,7 +223,7 @@ public class CreateHierarchyCommand extends ModelCommand {
 		double rate = computeRate(compartment, Configuration.MAX_VISIBLE_OBJECT_SIZE);
 		maxVisibilityLevel = (int) ((int) Math.ceil(Math.log(rate)) / LOG_4);
 		for (Element child : compartment.getElements()) {
-			maxVisibilityLevel = Math.min(maxVisibilityLevel, child.getVisibilityLevel());
+			maxVisibilityLevel = Math.min(maxVisibilityLevel, Integer.valueOf(child.getVisibilityLevel()));
 		}
 		if (maxVisibilityLevel >= zoomLevels) {
 			maxVisibilityLevel = zoomLevels;
@@ -226,7 +231,7 @@ public class CreateHierarchyCommand extends ModelCommand {
 		if (maxVisibilityLevel <= 0) {
 			maxVisibilityLevel = 1;
 		}
-		compartment.setTransparencyLevel(maxVisibilityLevel);
+		compartment.setTransparencyLevel(maxVisibilityLevel + "");
 		for (Element child : compartment.getElements()) {
 			child.setVisibilityLevel(compartment.getTransparencyLevel());
 		}
@@ -243,7 +248,7 @@ public class CreateHierarchyCommand extends ModelCommand {
 		double rate = computeRate(complex, Configuration.MAX_VISIBLE_OBJECT_SIZE);
 		maxVisibilityLevel = (int) ((int) Math.ceil(Math.log(rate)) / LOG_4);
 		for (Element child : complex.getElements()) {
-			maxVisibilityLevel = Math.min(maxVisibilityLevel, child.getVisibilityLevel());
+			maxVisibilityLevel = Math.min(maxVisibilityLevel, Integer.valueOf(child.getVisibilityLevel()));
 		}
 		if (maxVisibilityLevel >= zoomLevels) {
 			maxVisibilityLevel = zoomLevels;
@@ -251,7 +256,7 @@ public class CreateHierarchyCommand extends ModelCommand {
 		if (maxVisibilityLevel <= 0) {
 			maxVisibilityLevel = 1;
 		}
-		complex.setTransparencyLevel(maxVisibilityLevel);
+		complex.setTransparencyLevel(maxVisibilityLevel + "");
 		for (Element child : complex.getElements()) {
 			child.setVisibilityLevel(complex.getTransparencyLevel());
 		}
@@ -270,7 +275,7 @@ public class CreateHierarchyCommand extends ModelCommand {
 			} else if (alias instanceof Complex) {
 				settingTransparencyLevelForComplex((Complex) alias);
 			} else {
-				alias.setTransparencyLevel(0);
+				alias.setTransparencyLevel("0");
 			}
 		}
 	}
diff --git a/model-command/src/main/java/lcsb/mapviewer/commands/SemanticZoomLevelMatcher.java b/model-command/src/main/java/lcsb/mapviewer/commands/SemanticZoomLevelMatcher.java
new file mode 100644
index 0000000000000000000000000000000000000000..38920e1caed5f00fc4017059749400b3a141f9e0
--- /dev/null
+++ b/model-command/src/main/java/lcsb/mapviewer/commands/SemanticZoomLevelMatcher.java
@@ -0,0 +1,45 @@
+package lcsb.mapviewer.commands;
+
+import org.apache.log4j.Logger;
+
+public class SemanticZoomLevelMatcher {
+	Logger logger = Logger.getLogger(SemanticZoomLevelMatcher.class);
+
+	/**
+	 * Checks if level belongs to the range defined in
+	 * semanticZoomLevelVisibility.
+	 * 
+	 * @param level
+	 *          level to ve checked
+	 * @param semanticZoomLevelVisibility
+	 *          range of levels to be checked
+	 * @return true if level is in the range
+	 */
+	public boolean isVisible(int level, String semanticZoomLevelVisibility) {
+		return matchLevel(level, semanticZoomLevelVisibility);
+	}
+
+	public boolean isTransparent(int level, String semanticZoomLevelVisibility) {
+		return matchLevel(level, semanticZoomLevelVisibility);
+	}
+
+	private boolean matchLevel(int level, String semanticZoomLevelVisibility) {
+		if (semanticZoomLevelVisibility == null || semanticZoomLevelVisibility.isEmpty()) {
+			return true;
+		}
+		if (semanticZoomLevelVisibility.contains("{")) {
+			String strLevels = semanticZoomLevelVisibility.replace("{", "").replace("}", "");
+			String[] ranges = strLevels.split(",");
+			for (String string : ranges) {
+				if (Integer.valueOf(string).equals(level)) {
+					return true;
+				}
+			}
+		}
+		if (Integer.valueOf(semanticZoomLevelVisibility) <= level) {
+			return true;
+		}
+		return false;
+	}
+
+}
diff --git a/model-command/src/main/java/lcsb/mapviewer/commands/SetFixedHierarchyLevelCommand.java b/model-command/src/main/java/lcsb/mapviewer/commands/SetFixedHierarchyLevelCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..b6c341cbaf5842d3f5a453551273f1ca584149e9
--- /dev/null
+++ b/model-command/src/main/java/lcsb/mapviewer/commands/SetFixedHierarchyLevelCommand.java
@@ -0,0 +1,61 @@
+package lcsb.mapviewer.commands;
+
+import org.apache.log4j.Logger;
+
+import lcsb.mapviewer.common.exception.InvalidStateException;
+import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.model.map.BioEntity;
+import lcsb.mapviewer.model.map.model.Model;
+
+/**
+ * This {@link ModelCommand command} class allows to transform model into
+ * multilevel (nested) component structure. Some artificial compartments will
+ * appear. All compartments have information about children compartments. All
+ * objects have information about parents.
+ * 
+ * 
+ */
+public class SetFixedHierarchyLevelCommand extends ModelCommand {
+	/**
+	 * Default class logger.
+	 */
+	@SuppressWarnings("unused")
+	private static Logger	logger = Logger.getLogger(SetFixedHierarchyLevelCommand.class);
+	private Integer				level;
+
+	public SetFixedHierarchyLevelCommand(Model model, Integer level) {
+		super(model);
+		this.level = level;
+	}
+
+	@Override
+	protected void undoImplementation() {
+		throw new NotImplementedException();
+	}
+
+	@Override
+	protected void executeImplementation() {
+		if (!ModelCommandStatus.CREATED.equals(getStatus()) && !ModelCommandStatus.UNDONE.equals(getStatus())) {
+			throw new InvalidStateException("To execute command, the command must be in CREATED or UNDONE state. " + getStatus() + " found.");
+		}
+		if (level != null) {
+			SemanticZoomLevelMatcher matcher = new SemanticZoomLevelMatcher();
+			Model output = getModel();
+			for (BioEntity bioEntity : output.getBioEntities()) {
+				if (matcher.isVisible(level, bioEntity.getVisibilityLevel())) {
+					bioEntity.setVisibilityLevel("0");
+				} else {
+					bioEntity.setVisibilityLevel(Integer.MAX_VALUE + "");
+				}
+			}
+		}
+
+		setStatus(ModelCommandStatus.EXECUTED);
+	}
+
+	@Override
+	protected void redoImplementation() {
+		throw new NotImplementedException();
+	}
+
+}
diff --git a/model-command/src/test/java/lcsb/mapviewer/commands/CopyCommandTest.java b/model-command/src/test/java/lcsb/mapviewer/commands/CopyCommandTest.java
index cc78f07b6e85b9845474a31b1d1373231e774cb7..6ff5608d3cc46fafcfa79118f2217a9c9badac07 100644
--- a/model-command/src/test/java/lcsb/mapviewer/commands/CopyCommandTest.java
+++ b/model-command/src/test/java/lcsb/mapviewer/commands/CopyCommandTest.java
@@ -328,8 +328,8 @@ public class CopyCommandTest extends CommandTestFunctions {
 
 			Compartment c1 = new SquareCompartment("c1");
 			Compartment c2 = new SquareCompartment("c2");
-			c1.setSemanticZoomLevelVisibility("2");
-			c2.setSemanticZoomLevelVisibility("3");
+			c1.setVisibilityLevel("2");
+			c2.setVisibilityLevel("3");
 
 			model.addElement(c1);
 			model.addElement(c2);
@@ -349,7 +349,7 @@ public class CopyCommandTest extends CommandTestFunctions {
 			Product product = new Product(s2);
 			product.setLine(new PolylineData(new Point2D.Double(10, 0), new Point2D.Double(120, 10)));
 			reaction.addProduct(product);
-			reaction.setSemanticZoomLevelVisibility("4");
+			reaction.setVisibilityLevel("4");
 
 			model.addReaction(reaction);
 
diff --git a/model-command/src/test/java/lcsb/mapviewer/commands/CreateHierarchyCommandTest.java b/model-command/src/test/java/lcsb/mapviewer/commands/CreateHierarchyCommandTest.java
index 4d733b555e86dd03627f2cc685471b0855d642aa..97eb95a6f99283ae3bffc29295bf0cdd4f7837f6 100644
--- a/model-command/src/test/java/lcsb/mapviewer/commands/CreateHierarchyCommandTest.java
+++ b/model-command/src/test/java/lcsb/mapviewer/commands/CreateHierarchyCommandTest.java
@@ -53,7 +53,7 @@ public class CreateHierarchyCommandTest extends CommandTestFunctions {
 				parents.add(alias);
 			}
 
-			Set<Integer> levels = new HashSet<Integer>();
+			Set<String> levels = new HashSet<>();
 			for (Element a : model.getElements()) {
 				levels.add(a.getVisibilityLevel());
 			}
@@ -150,16 +150,16 @@ public class CreateHierarchyCommandTest extends CommandTestFunctions {
 
 			for (Compartment compartment : model.getCompartments()) {
 				if (compartment.getCompartment() == null) {
+					int visibilityLevel = Integer.valueOf(compartment.getVisibilityLevel());
 					assertTrue(
-							"Alias " + compartment.getElementId() + " is not visible at levels highers than " + compartment.getVisibilityLevel(),
-							compartment.getVisibilityLevel() <= 1);
+							"Alias " + compartment.getElementId() + " is not visible at levels highers than " + compartment.getVisibilityLevel(), visibilityLevel <= 1);
 				}
 			}
 
 			for (Species species : model.getSpeciesList()) {
 				if (species.getCompartment() == null) {
-					assertTrue(
-							"Alias " + species.getElementId() + " is not visible at levels highers than " + species.getVisibilityLevel(), species.getVisibilityLevel() <= 1);
+					int visibilityLevel = Integer.valueOf(species.getVisibilityLevel());
+					assertTrue("Alias " + species.getElementId() + " is not visible at levels highers than " + species.getVisibilityLevel(), visibilityLevel <= 1);
 				}
 			}
 
@@ -179,10 +179,11 @@ public class CreateHierarchyCommandTest extends CommandTestFunctions {
 
 			new CreateHierarchyCommand(model, levels, zoomFactor).execute();
 
-			for (Element alias : model.getElements()) {
+			for (Element element : model.getElements()) {
+				int visibilityLevel = Integer.valueOf(element.getVisibilityLevel());
 				assertTrue(
-						"Alias " + alias.getElementId() + " is not visible even at the bottom level (visibility: " + alias.getVisibilityLevel() + ") ",
-						alias.getVisibilityLevel() <= levels);
+						"Alias " + element.getElementId() + " is not visible even at the bottom level (visibility: " + element.getVisibilityLevel() + ") ",
+						visibilityLevel <= levels);
 			}
 
 		} catch (Exception e) {
@@ -262,12 +263,16 @@ public class CreateHierarchyCommandTest extends CommandTestFunctions {
 			for (Element alias : model.getElements()) {
 				Element parentAlias = alias.getCompartment();
 				if (parentAlias != null) {
-					assertTrue(alias.getVisibilityLevel() >= parentAlias.getVisibilityLevel());
+					int parentVisibilityLevel = Integer.valueOf(parentAlias.getVisibilityLevel());
+					int aliasVisibilityLevel = Integer.valueOf(alias.getVisibilityLevel());
+					assertTrue(aliasVisibilityLevel >= parentVisibilityLevel);
 				}
 				if (alias instanceof Species) {
 					parentAlias = ((Species) alias).getComplex();
 					if (parentAlias != null) {
-						assertTrue(alias.getVisibilityLevel() >= parentAlias.getVisibilityLevel());
+						int parentVisibilityLevel = Integer.valueOf(parentAlias.getVisibilityLevel());
+						int aliasVisibilityLevel = Integer.valueOf(alias.getVisibilityLevel());
+						assertTrue(aliasVisibilityLevel >= parentVisibilityLevel);
 					}
 				}
 			}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/BioEntity.java b/model/src/main/java/lcsb/mapviewer/model/map/BioEntity.java
index eb2f82d237feca3a737cbd430daa07b20f32b919..b5aa17cc9bceed8fafc97fb1cf4b85203dc308f2 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/BioEntity.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/BioEntity.java
@@ -145,12 +145,20 @@ public interface BioEntity extends Serializable {
 	 * @param zoomLevelVisibility
 	 *          semantic zoom level visibility
 	 */
-	void setSemanticZoomLevelVisibility(String zoomLevelVisibility);
+	void setVisibilityLevel(String zoomLevelVisibility);
+	
+	/**
+	 * Sets semantic zoom level visibility.
+	 * 
+	 * @param zoomLevelVisibility
+	 *          semantic zoom level visibility
+	 */
+	void setVisibilityLevel(Integer zoomLevelVisibility);
 
 	/**
 	 * Returns semantic zoom level visibility.
 	 * 
 	 * @return semantic zoom level visibility
 	 */
-	String getSemanticZoomLevelVisibility();
+	String getVisibilityLevel();
 }
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/Layout.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/Layout.java
index d333ce8ea556ba185a1657f8d28b7532323c6b85..f919988d80f043daca52c96347389006256e4063 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/layout/Layout.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/Layout.java
@@ -72,6 +72,13 @@ public class Layout implements Serializable {
 	 */
 	private boolean						hierarchicalView = false;
 
+	/**
+	 * If overlay contain hierarchical view then it might be fixed on some
+	 * specific level. This parameter defines the level at which it's fixed or
+	 * contains null if it's general hierarchical view.
+	 */
+	private Integer						hierarchyViewLevel;
+
 	/**
 	 * ModelData to which layout is assigend.
 	 */
@@ -107,7 +114,7 @@ public class Layout implements Serializable {
 	 */
 	@ManyToOne(fetch = FetchType.LAZY)
 	private Layout						parentLayout		 = null;
-	
+
 	/**
 	 * Short description used for this layout.
 	 */
@@ -163,6 +170,8 @@ public class Layout implements Serializable {
 		if (layout.inputData != null) {
 			this.inputData = new UploadedFileEntry(layout.getInputData());
 		}
+		this.hierarchyViewLevel = layout.hierarchyViewLevel;
+
 	}
 
 	/**
@@ -421,4 +430,21 @@ public class Layout implements Serializable {
 		this.inputData = inputData;
 	}
 
+	/**
+	 * @return the hierarchyViewLevel
+	 * @see #hierarchyViewLevel
+	 */
+	public Integer getHierarchyViewLevel() {
+		return hierarchyViewLevel;
+	}
+
+	/**
+	 * @param hierarchyViewLevel
+	 *          the hierarchyViewLevel to set
+	 * @see #hierarchyViewLevel
+	 */
+	public void setHierarchyViewLevel(Integer hierarchyViewLevel) {
+		this.hierarchyViewLevel = hierarchyViewLevel;
+	}
+
 }
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/model/Model.java b/model/src/main/java/lcsb/mapviewer/model/map/model/Model.java
index aaf297002e8a2e1a9384d7197db32e0da71c02d0..5df367d06fe0e9da343d11e186252eaea20c8f03 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/model/Model.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/model/Model.java
@@ -627,5 +627,5 @@ public interface Model {
 	 * 
 	 * @return list od all {@link BioEntity} in the map
 	 */
-	List<BioEntity> getAnnotatedObjects();
+	List<BioEntity> getBioEntities();
 }
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/model/ModelFullIndexed.java b/model/src/main/java/lcsb/mapviewer/model/map/model/ModelFullIndexed.java
index 0877d492b83416bb75085572d566e7fea65123a4..d1294bc7733a6fb5f1d3e99d017fef19d957ccaa 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/model/ModelFullIndexed.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/model/ModelFullIndexed.java
@@ -660,7 +660,7 @@ public class ModelFullIndexed implements Model {
 	}
 
 	@Override
-	public List<BioEntity> getAnnotatedObjects() {
+	public List<BioEntity> getBioEntities() {
 		List<BioEntity> result = new ArrayList<>();
 		result.addAll(getElements());
 		result.addAll(getReactions());
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/reaction/Reaction.java b/model/src/main/java/lcsb/mapviewer/model/map/reaction/Reaction.java
index 6a2fafcf6bb5a2aca158bbbe0b628a33c065461a..13cd8e3dc2d6d0a98985e01f9b3463d61d0227b4 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/reaction/Reaction.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/reaction/Reaction.java
@@ -183,7 +183,7 @@ public class Reaction implements BioEntity {
 	/**
 	 * Zoom level visibility for semantic zooming.
 	 */
-	private String													 zoomLevelVisibility;
+	private String													 visibilityLevel					 = "";
 
 	/**
 	 * Lists of all synonyms used for describing this element.
@@ -253,7 +253,7 @@ public class Reaction implements BioEntity {
 		for (String synonym : original.getSynonyms()) {
 			synonyms.add(synonym);
 		}
-		setSemanticZoomLevelVisibility(original.getSemanticZoomLevelVisibility());
+		setVisibilityLevel(original.getVisibilityLevel());
 
 	}
 
@@ -411,20 +411,14 @@ public class Reaction implements BioEntity {
 		return "Generic Reaction";
 	}
 
-	/**
-	 * Returns visibility level of the reaction in hierarchical view. More
-	 * information about hierarchical view can be found in
-	 * {@link lcsb.mapviewer.converter.graphics.AbstractImageGenerator
-	 * AbstractImageGenerator}.
-	 * 
-	 * @return visibility level of the reaction
-	 */
-	public int getVisibilityLevel() {
-		int level = 0;
-		for (ReactionNode node : getReactionNodes()) {
-			level = Math.max(level, node.getElement().getVisibilityLevel());
-		}
-		return level;
+	@Override
+	public String getVisibilityLevel() {
+		return visibilityLevel;
+	}
+
+	@Override
+	public void setVisibilityLevel(String visibilityLevel) {
+		this.visibilityLevel = visibilityLevel;
 	}
 
 	/**
@@ -874,13 +868,13 @@ public class Reaction implements BioEntity {
 	}
 
 	@Override
-	public String getSemanticZoomLevelVisibility() {
-		return zoomLevelVisibility;
-	}
+	public void setVisibilityLevel(Integer zoomLevelVisibility) {
+		if (zoomLevelVisibility == null) {
+			this.visibilityLevel = null;
+		} else {
+			this.visibilityLevel = zoomLevelVisibility + "";
+		}
 
-	@Override
-	public void setSemanticZoomLevelVisibility(String zoomLevelVisibility) {
-		this.zoomLevelVisibility = zoomLevelVisibility;
 	}
 
 }
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/reaction/ReactionComparator.java b/model/src/main/java/lcsb/mapviewer/model/map/reaction/ReactionComparator.java
index 1feda50e2c6575eb81fc83ab3f6554a4b0ba5adb..a4061e784ece8bd4de2a74faca9af258e41dad3c 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/reaction/ReactionComparator.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/reaction/ReactionComparator.java
@@ -130,10 +130,9 @@ public class ReactionComparator implements Comparator<Reaction> {
 			logger.debug("GeneProteinReaction different: " + arg0.getGeneProteinReaction() + ", " + arg1.getGeneProteinReaction());
 			return stringComparator.compare(arg0.getGeneProteinReaction(), arg1.getGeneProteinReaction());
 		}
-		if (stringComparator.compare(arg0.getSemanticZoomLevelVisibility(), arg1.getSemanticZoomLevelVisibility()) != 0) {
-			logger.debug(
-					"SemanticZoomLevelVisibility different: \"" + arg0.getSemanticZoomLevelVisibility() + "\", \"" + arg1.getSemanticZoomLevelVisibility() + "\"");
-			return stringComparator.compare(arg0.getSemanticZoomLevelVisibility(), arg1.getSemanticZoomLevelVisibility());
+		if (stringComparator.compare(arg0.getVisibilityLevel(), arg1.getVisibilityLevel()) != 0) {
+			logger.debug("SemanticZoomLevelVisibility different: \"" + arg0.getVisibilityLevel() + "\", \"" + arg1.getVisibilityLevel() + "\"");
+			return stringComparator.compare(arg0.getVisibilityLevel(), arg1.getVisibilityLevel());
 		}
 
 		IntegerComparator integerComparator = new IntegerComparator();
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 01688104f11e53210eee5b9d377ef7f33ae4e006..0d419f263fe5b3cb618b46707f5e4738bcdf3b13 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
@@ -174,7 +174,7 @@ public abstract class Element implements BioEntity, Serializable {
 	 * @see lcsb.mapviewer.converter.graphics.AbstractImageGenerator.Params#level
 	 *      AbstractImageGenerator.Params#level
 	 */
-	private int															visibilityLevel;
+	private String													visibilityLevel		 = "";
 
 	/**
 	 * From which level element should be transparent.
@@ -182,7 +182,7 @@ public abstract class Element implements BioEntity, Serializable {
 	 * @see #visibilityLevel
 	 * @see AbstractImageGenerator.Params#level
 	 */
-	private int															transparencyLevel;
+	private String													transparencyLevel	 = "";
 
 	/**
 	 * List of search indexes that describe this element.
@@ -214,11 +214,6 @@ public abstract class Element implements BioEntity, Serializable {
 	 */
 	private String													fullName;
 
-	/**
-	 * Zoom level visibility for semantic zooming.
-	 */
-	private String													zoomLevelVisibility;
-
 	/**
 	 * Abbreviation associated with the element.
 	 */
@@ -282,7 +277,6 @@ public abstract class Element implements BioEntity, Serializable {
 		width = original.getWidth();
 		height = original.getHeight();
 		fontSize = original.getFontSize();
-		visibilityLevel = original.getVisibilityLevel();
 		color = original.getColor();
 		for (SearchIndex searchIndex : original.getSearchIndexes()) {
 			searchIndexes.add(searchIndex.copy());
@@ -301,7 +295,8 @@ public abstract class Element implements BioEntity, Serializable {
 		addMiriamData(original.getMiriamData());
 		this.abbreviation = original.getAbbreviation();
 		this.formula = original.getFormula();
-		setSemanticZoomLevelVisibility(original.getSemanticZoomLevelVisibility());
+		setVisibilityLevel(original.getVisibilityLevel());
+		setTransparencyLevel(original.getTransparencyLevel());
 	}
 
 	/**
@@ -325,7 +320,6 @@ public abstract class Element implements BioEntity, Serializable {
 		width = 0.0;
 		height = 0.0;
 		fontSize = DEFAULT_FONT_SIZE;
-		visibilityLevel = 0;
 		color = Color.white;
 	}
 
@@ -661,23 +655,25 @@ public abstract class Element implements BioEntity, Serializable {
 		this.elementId = elementId;
 	}
 
-	/**
-	 * @return the visibilityLevel
-	 * @see #visibilityLevel
-	 */
-	public int getVisibilityLevel() {
+	@Override
+	public String getVisibilityLevel() {
 		return visibilityLevel;
 	}
 
-	/**
-	 * @param visibilityLevel
-	 *          the visibilityLevel to set
-	 * @see #visibilityLevel
-	 */
-	public void setVisibilityLevel(int visibilityLevel) {
+	@Override
+	public void setVisibilityLevel(String visibilityLevel) {
 		this.visibilityLevel = visibilityLevel;
 	}
 
+	@Override
+	public void setVisibilityLevel(Integer visibilityLevel) {
+		if (visibilityLevel == null) {
+			this.visibilityLevel = null;
+		} else {
+			this.visibilityLevel = visibilityLevel + "";
+		}
+	}
+
 	/**
 	 * @return the model
 	 * @see #model
@@ -755,7 +751,7 @@ public abstract class Element implements BioEntity, Serializable {
 	 * @return the transparencyLevel
 	 * @see #transparencyLevel
 	 */
-	public int getTransparencyLevel() {
+	public String getTransparencyLevel() {
 		return transparencyLevel;
 	}
 
@@ -764,7 +760,7 @@ public abstract class Element implements BioEntity, Serializable {
 	 *          the transparencyLevel to set
 	 * @see #transparencyLevel
 	 */
-	public void setTransparencyLevel(int transparencyLevel) {
+	public void setTransparencyLevel(String transparencyLevel) {
 		this.transparencyLevel = transparencyLevel;
 	}
 
@@ -1092,14 +1088,4 @@ public abstract class Element implements BioEntity, Serializable {
 		dataMining.setElement(this);
 	}
 
-	@Override
-	public void setSemanticZoomLevelVisibility(String zoomLevelVisibility) {
-		this.zoomLevelVisibility = zoomLevelVisibility;
-	}
-
-	@Override
-	public String getSemanticZoomLevelVisibility() {
-		return this.zoomLevelVisibility;
-	}
-
 }
\ No newline at end of file
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/ElementComparator.java b/model/src/main/java/lcsb/mapviewer/model/map/species/ElementComparator.java
index 4d6d35a87a27c1d514e467737f9eafa1d3ecd7ae..a462b0538a649343670dab32c89c2862997da132 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/species/ElementComparator.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/species/ElementComparator.java
@@ -140,9 +140,9 @@ public class ElementComparator implements Comparator<Element> {
 			return doubleComparator.compare(arg0.getFontSize(), arg1.getFontSize());
 		}
 
-		if (integerComparator.compare(arg0.getVisibilityLevel(), arg1.getVisibilityLevel()) != 0) {
+		if (stringComparator.compare(arg0.getVisibilityLevel(), arg1.getVisibilityLevel()) != 0) {
 			logger.debug("Visibility level different: " + arg0.getVisibilityLevel() + ", " + arg1.getVisibilityLevel());
-			return integerComparator.compare(arg0.getVisibilityLevel(), arg1.getVisibilityLevel());
+			return stringComparator.compare(arg0.getVisibilityLevel(), arg1.getVisibilityLevel());
 		}
 
 		if (integerComparator.compare(arg0.getColor().getRGB(), arg1.getColor().getRGB()) != 0) {
@@ -189,12 +189,6 @@ public class ElementComparator implements Comparator<Element> {
 			return stringComparator.compare(arg0.getFormula(), arg1.getFormula());
 		}
 
-		if (stringComparator.compare(arg0.getSemanticZoomLevelVisibility(), arg1.getSemanticZoomLevelVisibility()) != 0) {
-			logger.debug(
-					"SemanticZoomLevelVisibility different: \"" + arg0.getSemanticZoomLevelVisibility() + "\", \"" + arg1.getSemanticZoomLevelVisibility() + "\"");
-			return stringComparator.compare(arg0.getSemanticZoomLevelVisibility(), arg1.getSemanticZoomLevelVisibility());
-		}
-
 		StringSetComparator stringSetComparator = new StringSetComparator();
 		StringListComparator stringListComparator = new StringListComparator();
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/compartment/CompartmentComparatorTest.java b/model/src/test/java/lcsb/mapviewer/model/map/compartment/CompartmentComparatorTest.java
index 7f4a97b6ba7aa1d77b9c8449063b86c101c1ca20..3df3ef0c801f092b454fb9b6c0f2ccf5a1067403 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/compartment/CompartmentComparatorTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/compartment/CompartmentComparatorTest.java
@@ -117,7 +117,7 @@ public class CompartmentComparatorTest {
 		result.setHeight(5);
 		result.setFontSize(9.0);
 		result.setColor(Color.BLUE);
-		result.setVisibilityLevel(14);
+		result.setVisibilityLevel("14");
 		result.setThickness(998);
 		result.setOuterWidth(45);
 		result.setInnerWidth(65);
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/model/ModelFullIndexedTest.java b/model/src/test/java/lcsb/mapviewer/model/map/model/ModelFullIndexedTest.java
index 869ff766de94364416a4059f520014eb71347199..988a4ac32d78aee82bbaa8eb4f059ab1f8ff9424 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/model/ModelFullIndexedTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/model/ModelFullIndexedTest.java
@@ -850,7 +850,7 @@ public class ModelFullIndexedTest {
 			Species protein = new GenericProtein("2");
 			model.addElement(protein);
 
-			Collection<BioEntity> obj = model.getAnnotatedObjects();
+			Collection<BioEntity> obj = model.getBioEntities();
 			assertEquals(2, obj.size());
 
 		} catch (Exception e) {
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/reaction/ReactionTest.java b/model/src/test/java/lcsb/mapviewer/model/map/reaction/ReactionTest.java
index a7d39db9e7bcbecef1e5d9226d0d35b3c53118c1..ba848cd6e67581dbfadf02446e4909293ef6c887 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/reaction/ReactionTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/reaction/ReactionTest.java
@@ -31,7 +31,6 @@ import lcsb.mapviewer.model.map.model.ModelFullIndexed;
 import lcsb.mapviewer.model.map.modifier.Catalysis;
 import lcsb.mapviewer.model.map.reaction.type.DissociationReaction;
 import lcsb.mapviewer.model.map.reaction.type.HeterodimerAssociationReaction;
-import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.map.species.GenericProtein;
 import lcsb.mapviewer.model.map.species.Species;
 
@@ -229,15 +228,10 @@ public class ReactionTest extends ModelTestFunctions {
 	public void testVisibilityLevel() {
 		try {
 			Reaction reaction1 = new Reaction();
-			assertEquals(0, reaction1.getVisibilityLevel());
+			assertEquals("", reaction1.getVisibilityLevel());
 
-			Reactant reactant = new Reactant();
-			Element protein = new GenericProtein("id_xyz");
-			protein.setVisibilityLevel(2);
-			reactant.setElement(protein);
-			reaction1.addReactant(reactant);
-
-			assertEquals(2, reaction1.getVisibilityLevel());
+			reaction1.setVisibilityLevel(1);
+			assertEquals("1", reaction1.getVisibilityLevel());
 		} catch (Exception e) {
 			e.printStackTrace();
 			throw e;
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/ComplexComparatorTest.java b/model/src/test/java/lcsb/mapviewer/model/map/species/ComplexComparatorTest.java
index 651379e21f9f04acf89d8eaaeec58922d52add9f..907dfeeef5ca93a46aa8d67aea5dd8934cdda857 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/ComplexComparatorTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/species/ComplexComparatorTest.java
@@ -56,7 +56,7 @@ public class ComplexComparatorTest {
 		result.setHeight(5);
 		result.setFontSize(9.0);
 		result.setColor(Color.BLUE);
-		result.setVisibilityLevel(14);
+		result.setVisibilityLevel("14");
 
 		Species protein = new GenericProtein("S");
 		protein.setName("a");
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/ElementTest.java b/model/src/test/java/lcsb/mapviewer/model/map/species/ElementTest.java
index 78ee89782a7464f5f967829c38667379c3e628e7..540521afd217b44962885bf4db98f4d3226cd586 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/species/ElementTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/species/ElementTest.java
@@ -145,7 +145,7 @@ public class ElementTest extends ModelTestFunctions {
 			Set<MiriamData> miriamData = new HashSet<>();
 			Compartment compartment = new Compartment("idd");
 			int id = 72;
-			int transparencyLevel = 2;
+			String transparencyLevel = "2";
 			Model model = new ModelFullIndexed(modelData);
 			List<SearchIndex> indexes = new ArrayList<>();
 			indexes.add(new SearchIndex());
diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ModelContructor.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ModelContructor.java
index f92368014dc99b0b050e7ff08e52e385915ddf91..232691585884e8247f1d5410b85fcb7943d1e4aa 100644
--- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ModelContructor.java
+++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ModelContructor.java
@@ -1107,10 +1107,6 @@ public class ModelContructor {
 					continue;
 				}
 			}
-			// skip compartments
-			if (alias instanceof Compartment) {
-				continue;
-			}
 			Compartment parentAlias = null;
 			for (Compartment compartmentAlias : aliases) {
 				if (compartmentAlias.contains(alias)) {
diff --git a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ModelToGPML.java b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ModelToGPML.java
index 577b87b38f60aed91f21f62a5277ce5d0e854c65..5e2c2025253143a039f45df407bd11f28229a8b7 100644
--- a/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ModelToGPML.java
+++ b/pathvisio/src/main/java/lcsb/mapviewer/wikipathway/XML/ModelToGPML.java
@@ -591,7 +591,7 @@ public class ModelToGPML {
 		gpml.append(getComparments(model));
 		gpml.append(groups);
 		Set<MiriamData> set = new HashSet<>();
-		for (BioEntity element : model.getAnnotatedObjects()) {
+		for (BioEntity element : model.getBioEntities()) {
 			set.addAll(element.getMiriamData());
 		}
 
diff --git a/persist/src/db/11/fix_db_20170628.sql b/persist/src/db/11/fix_db_20170628.sql
new file mode 100644
index 0000000000000000000000000000000000000000..6f033cadda30017e2c61c7140b918ae90da80c29
--- /dev/null
+++ b/persist/src/db/11/fix_db_20170628.sql
@@ -0,0 +1,8 @@
+-- semantic zooming
+alter table element_table drop column zoomlevelvisibility ;
+alter table reaction_table drop column zoomlevelvisibility ;
+
+ALTER TABLE element_table ALTER COLUMN visibilitylevel TYPE character varying;
+ALTER TABLE element_table ALTER COLUMN transparencylevel TYPE character varying;
+
+alter table reaction_table add column visibilitylevel character varying default null;
\ No newline at end of file
diff --git a/persist/src/db/11/fix_db_20170629.sql b/persist/src/db/11/fix_db_20170629.sql
new file mode 100644
index 0000000000000000000000000000000000000000..4ddf369a6d38c5903b4082fc4c39f5626fa2598d
--- /dev/null
+++ b/persist/src/db/11/fix_db_20170629.sql
@@ -0,0 +1,2 @@
+-- semantic zooming
+alter table layout add column hierarchyviewlevel integer;
\ No newline at end of file
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/model/ReactomeNegativeGeneExpressionRegulation.java b/reactome/src/main/java/lcsb/mapviewer/reactome/model/ReactomeNegativeGeneExpressionRegulation.java
new file mode 100644
index 0000000000000000000000000000000000000000..90ed5d3e0e990792b2bbdf600068b6fdc83a7f75
--- /dev/null
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/model/ReactomeNegativeGeneExpressionRegulation.java
@@ -0,0 +1,12 @@
+package lcsb.mapviewer.reactome.model;
+
+/**
+ * Object representing Reactome <a href=
+ * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=NegativeGeneExpressionRegulation"
+ * >NegativeGeneExpressionRegulation</a> object.
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+public class ReactomeNegativeGeneExpressionRegulation extends ReactomeNegativeRegulation {
+}
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/model/ReactomeRegulation.java b/reactome/src/main/java/lcsb/mapviewer/reactome/model/ReactomeRegulation.java
index ca1e444af259bc29127d71d8503a45c20bcbfcf1..220e738700f697574e8d73de3d2dab60af377d31 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/model/ReactomeRegulation.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/model/ReactomeRegulation.java
@@ -9,16 +9,27 @@ package lcsb.mapviewer.reactome.model;
  * 
  */
 public class ReactomeRegulation extends ReactomeDatabaseObject {
+	
 	/**
-	 * Event param in reactome model. More information can be found <a
-	 * href="http://wiki.reactome.org/index.php/Glossary_Data_Model">here</a>.
+	 * Event param in reactome model. More information can be found
+	 * <a href="http://wiki.reactome.org/index.php/Glossary_Data_Model">here</a>.
 	 */
-	private ReactomeEvent						regulatedEntity;
+	private ReactomeEvent					 regulatedEntity;
+	
 	/**
-	 * DatabaseObject param in reactome model. More information can be found <a
-	 * href="http://wiki.reactome.org/index.php/Glossary_Data_Model">here</a>.
+	 * DatabaseObject param in reactome model. More information can be found
+	 * <a href="http://wiki.reactome.org/index.php/Glossary_Data_Model">here</a>.
 	 */
-	private ReactomeDatabaseObject	regulator;
+	private ReactomeDatabaseObject regulator;
+
+	/**
+	 * If a reaction is regulated in different ways in different pathway contexts,
+	 * the containedInPathway allows curator to specify this. More information can
+	 * be found <a href=
+	 * "http://wiki.reactome.org/index.php/Glossary_Data_Model#Regulation">here
+	 * </a>.
+	 */
+	private ReactomePathway				 containedInPathway;
 
 	/**
 	 * @return the regulatedEntity
@@ -54,4 +65,21 @@ public class ReactomeRegulation extends ReactomeDatabaseObject {
 		this.regulator = regulator;
 	}
 
+	/**
+	 * @return the containedInPathway
+	 * @see #containedInPathway
+	 */
+	public ReactomePathway getContainedInPathway() {
+		return containedInPathway;
+	}
+
+	/**
+	 * @param containedInPathway
+	 *          the containedInPathway to set
+	 * @see #containedInPathway
+	 */
+	public void setContainedInPathway(ReactomePathway containedInPathway) {
+		this.containedInPathway = containedInPathway;
+	}
+
 }
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/model/ReactomeRegulationType.java b/reactome/src/main/java/lcsb/mapviewer/reactome/model/ReactomeRegulationType.java
deleted file mode 100644
index a7588d2284a89380375025faeeddc21d48b2b3af..0000000000000000000000000000000000000000
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/model/ReactomeRegulationType.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package lcsb.mapviewer.reactome.model;
-
-/**
- * Object representing Reactome <a href=
- * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=RegulationType"
- * >RegulationType</a> object.
- * 
- * @author Piotr Gawron
- * 
- */
-public class ReactomeRegulationType extends ReactomeDatabaseObject {
-}
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/model/ReactomeStableIdentifier.java b/reactome/src/main/java/lcsb/mapviewer/reactome/model/ReactomeStableIdentifier.java
index aca56837f9c49d4346aa7261a61f4fa347c01b15..99ac1b80b67f95f08bee8d629e8479c80df6b4d6 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/model/ReactomeStableIdentifier.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/model/ReactomeStableIdentifier.java
@@ -9,17 +9,37 @@ package lcsb.mapviewer.reactome.model;
  * 
  */
 public class ReactomeStableIdentifier extends ReactomeDatabaseObject {
+
 	/**
-	 * Identifier in reactome model. More information can be found <a
-	 * href="http://wiki.reactome.org/index.php/Glossary_Data_Model">here</a>.
+	 * Identifier in reactome model. More information can be found
+	 * <a href="http://wiki.reactome.org/index.php/Glossary_Data_Model">here</a>.
 	 */
 	private String	identifier;
+
 	/**
-	 * Identifier version in reactome model. More information can be found <a
-	 * href="http://wiki.reactome.org/index.php/Glossary_Data_Model">here</a>.
+	 * Identifier version in reactome model. More information can be found
+	 * <a href="http://wiki.reactome.org/index.php/Glossary_Data_Model">here</a>.
 	 */
 	private String	identifierVersion;
 
+	/**
+	 * Old identifier used in reactome model. More information can be found
+	 * <a href="http://wiki.reactome.org/index.php/Glossary_Data_Model">here</a>.
+	 */
+	private String	oldIdentifier;
+
+	/**
+	 * Old identifier version used in reactome model. More information can be
+	 * found
+	 * <a href="http://wiki.reactome.org/index.php/Glossary_Data_Model">here</a>.
+	 */
+	private String	oldIdentifierVersion;
+
+	/**
+	 * Undocumented by reactome...
+	 */
+	private boolean	released;
+
 	/**
 	 * @return the identifier
 	 * @see #identifier
@@ -54,4 +74,55 @@ public class ReactomeStableIdentifier extends ReactomeDatabaseObject {
 		this.identifierVersion = identifierVersion;
 	}
 
+	/**
+	 * @return the oldIdentifier
+	 * @see #oldIdentifier
+	 */
+	public String getOldIdentifier() {
+		return oldIdentifier;
+	}
+
+	/**
+	 * @param oldIdentifier
+	 *          the oldIdentifier to set
+	 * @see #oldIdentifier
+	 */
+	public void setOldIdentifier(String oldIdentifier) {
+		this.oldIdentifier = oldIdentifier;
+	}
+
+	/**
+	 * @return the oldIdentifierVersion
+	 * @see #oldIdentifierVersion
+	 */
+	public String getOldIdentifierVersion() {
+		return oldIdentifierVersion;
+	}
+
+	/**
+	 * @param oldIdentifierVersion
+	 *          the oldIdentifierVersion to set
+	 * @see #oldIdentifierVersion
+	 */
+	public void setOldIdentifierVersion(String oldIdentifierVersion) {
+		this.oldIdentifierVersion = oldIdentifierVersion;
+	}
+
+	/**
+	 * @return the released
+	 * @see #released
+	 */
+	public boolean isReleased() {
+		return released;
+	}
+
+	/**
+	 * @param released
+	 *          the released to set
+	 * @see #released
+	 */
+	public void setReleased(boolean released) {
+		this.released = released;
+	}
+
 }
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/package-info.java b/reactome/src/main/java/lcsb/mapviewer/reactome/package-info.java
index 55b7a2fe06f2f0564d6f2b59e9bd6271165ecb58..98ccb86955ed0537fee9539fa979b9396d30af8e 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/package-info.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/package-info.java
@@ -2,7 +2,7 @@
  * This package provides interface to access data in <a
  * href="http://www.reactome.org/">Reactome</a> database. Information from this
  * database are retrieved using <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * > Reactome RESTful API</a>. Reactome model was implemented in
  * {@link lcsb.mapviewer.reactome.model model} subpackage. By design all
  * reactome objects inherit from
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/ReactomeConnector.java b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/ReactomeConnector.java
index 6f01e9d5a6d5ea1ed82c6ba4c681306731a7d0d6..3c0984bea4cf813955154b4c4f59fd1bb4e54f01 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/utils/ReactomeConnector.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/utils/ReactomeConnector.java
@@ -136,7 +136,7 @@ public class ReactomeConnector extends CachableInterface implements DataSourceUp
 	/**
 	 * Url used for accessing Reactome RestFULL API.
 	 */
-	private static final String									 REACTOME_URL			= "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/RESTfulWS/";
+	private static final String									 REACTOME_URL			= "http://reactome.org/ReactomeRESTfulAPI/RESTfulWS/";
 
 	@Override
 	public List<ReactomePhysicalEntity> getEntitiesForName(String name) throws IOException {
@@ -752,7 +752,7 @@ public class ReactomeConnector extends CachableInterface implements DataSourceUp
 	@Override
 	public ExternalServiceStatus getServiceStatus() {
 		ExternalServiceStatus status = new ExternalServiceStatus(
-				"Reactome RESTful API", "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html");
+				"Reactome RESTful API", "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html");
 
 		GeneralCacheInterface cacheCopy = getCache();
 		this.setCache(null);
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeAbstractModifiedResidueParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeAbstractModifiedResidueParser.java
index 04bc387dcfc20d0eac749d979785291c1347bdff..11cc1de3dfcaa05956477f898f8d9803541658c2 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeAbstractModifiedResidueParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeAbstractModifiedResidueParser.java
@@ -4,9 +4,9 @@ import lcsb.mapviewer.reactome.model.ReactomeAbstractModifiedResidue;
 import lcsb.mapviewer.reactome.xml.columnParser.AbstractModifiedResidueColumnParser;
 
 /**
- * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
- * >Reactome API</a> for <a href=
+ * Parser for reactome xml retrieved from
+ * <a href= "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html" >
+ * Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=AbstractModifiedResidue"
  * >AbstractModifiedResidue</a> object.
  * 
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeAffiliationParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeAffiliationParser.java
index 51b689991c9563687c21d21bfb20f4cbc695d6c9..12568ee661428d8c22965b30b210b34a8f306a7d 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeAffiliationParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeAffiliationParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.AffiliationColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=Affiliation"
  * >Affiliation</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeBlackBoxEventParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeBlackBoxEventParser.java
index 150cbb219c65a56848c4d46807896a965c795824..4bef2d69d5f534c1b357cfd66142c0b4f0a1fc03 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeBlackBoxEventParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeBlackBoxEventParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.BlackBoxEventColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=BlackBoxEvent"
  * >BlackBoxEvent</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeBookParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeBookParser.java
index 6b41e126183a049dd7eb57a43489bd3b8f04516d..55f97847d229e943f9259893af84e892a16f51a9 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeBookParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeBookParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.BookColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=Book"
  * >Book</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeCandidateSetParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeCandidateSetParser.java
index a1a5f5f09fe4d47207decd10fd0f820eea0c72a1..6502ddac4859d9cc2c247e98e1dd406a212652ae 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeCandidateSetParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeCandidateSetParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.CandidateSetColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=CandidateSet"
  * >CandidateSet</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeCatalystActivityParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeCatalystActivityParser.java
index 42c5be11f7c15ce7d4ef6a0b5fdb721d65126fc6..c61305def042ad94b6e98342bb576047ab8a9b13 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeCatalystActivityParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeCatalystActivityParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.CatalystActivityColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=CatalystActivity"
  * >CatalystActivity</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeCellTypeParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeCellTypeParser.java
index d6f94a33e01e1db95302b7eddddeb19859b7b912..80e2b07fdf614eefe1310ed845800bcdc40656b8 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeCellTypeParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeCellTypeParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.CellTypeColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=CellType"
  * >CellType</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeCompartmentParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeCompartmentParser.java
index 6ce2f7f5c52fcb700fde248eb877269890eb8bee..4e404f94a2cf1a7203742a9e4ddc81b2f64e4139 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeCompartmentParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeCompartmentParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.CompartmentColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=Compartment"
  * >Compartment</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeComplexParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeComplexParser.java
index f266625a0c69421f5bc3aaf7ac3112564a542e16..686ff0b2636c9362b99023f3f94684b5928e648c 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeComplexParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeComplexParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.ComplexColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=Complex"
  * >Complex</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeConcurrentEventSetParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeConcurrentEventSetParser.java
index 0334bc396a4d96c21cac5eea88fc79fa843e206f..3999fe8fb4fad4ab53293cf90353168600c627c6 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeConcurrentEventSetParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeConcurrentEventSetParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.ConcurrentEventSetColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=ConcurrentEventSet"
  * >ConcurrentEventSet</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeDatabaseIdentifierParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeDatabaseIdentifierParser.java
index 8ca36d620d1eafbe421c5ba52e0b88fb5ce64430..267aa457f48d7cabd8ed14a930beffa547b6e953 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeDatabaseIdentifierParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeDatabaseIdentifierParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.DatabaseIdentifierColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=DatabaseIdentifier"
  * >DatabaseIdentifier</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeDatabaseObjectParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeDatabaseObjectParser.java
index 01040414ad5b64f466d8d548c7c98423a63d548f..b9aee00586c70f48b318c38c1f62591b2ad9951d 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeDatabaseObjectParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeDatabaseObjectParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.DatabaseObjectColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=DatabaseObject"
  * >DatabaseObject</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeDefinedSetParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeDefinedSetParser.java
index d757bfd846b65ebacd6165fbb875657f3e62f6aa..845e85453b058dad116931cf1691edbf7373bbcf 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeDefinedSetParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeDefinedSetParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.DefinedSetColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=DefinedSet"
  * >DefinedSet</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeDepolymerisationParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeDepolymerisationParser.java
index a7696cfcf33280808ad73d55c8f7e1a647764640..62ce3555b2156fcbfeaad6e27ccd167ff08d3144 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeDepolymerisationParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeDepolymerisationParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.DepolymerisationColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=Depolymerisation"
  * >Depolymerisation</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeDiseaseParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeDiseaseParser.java
index 9ce0a5a0a5504fee1ac96f58f147760d58af09ca..aa5fcbbb2ef5bd4564dbb2c54fc603c32ef4d17f 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeDiseaseParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeDiseaseParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.DiseaseColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=Disease"
  * >Disease</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeEntityCompartmentParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeEntityCompartmentParser.java
index 8196e34b931032f41943b8d705fec4ad31214d0c..ddb0c348f38dc74e1e019594ec1eecde5fcce15e 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeEntityCompartmentParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeEntityCompartmentParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.EntityCompartmentColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=EntityCompartment"
  * >EntityCompartment</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeEntityFunctionalStatusParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeEntityFunctionalStatusParser.java
index 31f6c6ab1263c9e16cce38a3eac1351724f0aa0e..bb7e5b12e189f97e6a7acdce723d31f0819b889e 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeEntityFunctionalStatusParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeEntityFunctionalStatusParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.EntityFunctionalStatusColumnPars
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=EntityFunctionalStatus"
  * >EntityFunctionalStatus</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeEntitySetParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeEntitySetParser.java
index d1bd3026be81a36ae8ece809859b0e4cc0d7102f..f64466ea7de54ae0df68a2d51e78dd73b8eac121 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeEntitySetParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeEntitySetParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.EntitySetColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=EntitySet"
  * >EntitySet</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeEntityWithAccessionedSequenceParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeEntityWithAccessionedSequenceParser.java
index 8f263a65beedcd3b0e6d7cdf9866962ef118fd65..5bde95aff46b5ecb062c6c2d1a8026b34a6e4c88 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeEntityWithAccessionedSequenceParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeEntityWithAccessionedSequenceParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.EntityWithAccessionedSequenceCol
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=EntityWithAccessionedSequence"
  * >EntityWithAccessionedSequence</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeEventParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeEventParser.java
index 980f663d03b19a51a0fcfe959a301ed746f0d9c3..0f35448ec000e9060343cd52dbcdd6d89d21ab53 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeEventParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeEventParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.EventColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=Event"
  * >Event</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeEvidenceTypeParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeEvidenceTypeParser.java
index bbb9389656af1c4cecb9cd06c76c35fcd3f60d52..005faa81b1090b5423c61581935a4c370774151d 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeEvidenceTypeParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeEvidenceTypeParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.EvidenceTypeColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=EvidenceType"
  * >EvidenceType</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeFigureParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeFigureParser.java
index 08bf87d4eccddb202a6224ea4c1b7a870114324d..193aae734d5d879f857085d0d74625199e61b2d8 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeFigureParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeFigureParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.FigureColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=Figure"
  * >Figure</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeFragmentDeletionModificationParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeFragmentDeletionModificationParser.java
index 1de4d5e074f064d314a57014a818d7541ed63716..f80f2803cce169184b178ef715a09fa6da56447d 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeFragmentDeletionModificationParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeFragmentDeletionModificationParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.FragmentDeletionModificationColu
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=FragmentDeletionModification"
  * >FragmentDeletionModification</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeFragmentInsertionModificationParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeFragmentInsertionModificationParser.java
index b2ad033943c108fe8891979ce1379d86a26a0116..8df7feda7a42b0ee888711125749a5331ccabba1 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeFragmentInsertionModificationParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeFragmentInsertionModificationParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.FragmentInsertionModificationCol
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=FragmentInsertionModification"
  * >FragmentInsertionModification</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeFragmentReplacedModificationParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeFragmentReplacedModificationParser.java
index c7bbc93b57f87a36db79d9594a31f3cb8dc51ef8..831bcc67196d9e5cae59765d15880b06db2b1ab4 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeFragmentReplacedModificationParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeFragmentReplacedModificationParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.FragmentReplacedModificationColu
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=FragmentReplacedModification"
  * >FragmentReplacedModification</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeFrontPageParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeFrontPageParser.java
index 3c4e4b2723d77a49f0d1911fb52b9b53cc708253..0e5b363a766447ae3869a24a56dd3cbdc8fc5f35 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeFrontPageParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeFrontPageParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.FrontPageColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=FrontPage"
  * >FrontPage</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeFunctionalStatusParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeFunctionalStatusParser.java
index 42fb376632aeff7172ec48f22fd8335de1130e1d..8c880c31986ef0d98d7e7d7cc17ad3032f302d8a 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeFunctionalStatusParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeFunctionalStatusParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.FunctionalStatusColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=FunctionalStatus"
  * >FunctionalStatus</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeFunctionalStatusTypeParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeFunctionalStatusTypeParser.java
index dbbdc371511ee408d155d614dd6bb0bfc6fd7149..e99e063e83f78d809d5e3af171b185d3c5f1017b 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeFunctionalStatusTypeParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeFunctionalStatusTypeParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.FunctionalStatusTypeColumnParser
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=FunctionalStatusType"
  * >FunctionalStatusType</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeGenericDomainParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeGenericDomainParser.java
index f7d70c1090da9f1beecb359f162446f6aeb08250..32464b1f41de8b0b36bbd69ef1669994a32bea7f 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeGenericDomainParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeGenericDomainParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.GenericDomainColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=GenericDomain"
  * >GenericDomain</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeGenomeEncodedEntityParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeGenomeEncodedEntityParser.java
index 8a2677c7b0c97ef6cdcaae35d287f2bbe40f5eca..ef9c4c87dad188d14ca314edf7eeebcca39eff7f 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeGenomeEncodedEntityParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeGenomeEncodedEntityParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.GenomeEncodedEntityColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=GenomeEncodedEntity"
  * >GenomeEncodedEntity</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeGoBiologicalProcessParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeGoBiologicalProcessParser.java
index e1949ca49ca537a922cb7c6289bb00ffb8b770a4..df4bcc641f74395968bd4d9291f0821ba007c699 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeGoBiologicalProcessParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeGoBiologicalProcessParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.GoBiologicalProcessColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=GO_BiologicalProcess"
  * >GoBiologicalProcess</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeGoCellularComponentParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeGoCellularComponentParser.java
index e3d6fe8599ecce7ce7a2f1bf5e835e1cc5d02562..b25db047e4006097ff465f89aecdd6a15f83efac 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeGoCellularComponentParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeGoCellularComponentParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.GoCellularComponentColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=GO_CellularComponent"
  * >GoCellularComponent</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeGoMolecularFunctionParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeGoMolecularFunctionParser.java
index 044de56f2c6ec95eeaea7956082381f27d38e401..c7bc06099c269eed8966993d5bf701554e782799 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeGoMolecularFunctionParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeGoMolecularFunctionParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.GoMolecularFunctionColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=GO_MolecularFunction"
  * >GoMolecularFunction</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeGroupModifiedResidueParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeGroupModifiedResidueParser.java
index 8caa9c4de83cddb02bbcb0e21db635a00302614f..21346fbe01d3d09e244eeaa790837b6f6b32c79b 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeGroupModifiedResidueParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeGroupModifiedResidueParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.GroupModifiedResidueColumnParser
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=GroupModifiedResidue"
  * >GroupModifiedResidue</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeInstanceEditParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeInstanceEditParser.java
index 54ba2cc9797264821047459a4ea9be24c635787b..d44400f7607af68936efbbe594694cd06ad79cd0 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeInstanceEditParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeInstanceEditParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.InstanceEditColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=InstanceEdit"
  * >InstanceEdit</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeInterChainCrosslinkedResidueParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeInterChainCrosslinkedResidueParser.java
index 8119ba657431cad6841c7d559fe09afff9017ba9..f409361c4623fb8afce61ff7e13305e1e81e8e97 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeInterChainCrosslinkedResidueParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeInterChainCrosslinkedResidueParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.InterChainCrosslinkedResidueColu
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=InterChainCrosslinkedResidue"
  * >InterChainCrosslinkedResidue</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeIntraChainCrosslinkedResidueParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeIntraChainCrosslinkedResidueParser.java
index f4a12a706941346ab85c3def1b31ea478e29e87c..7917c35a89565f2f77d94101e754d100aa25b6ce 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeIntraChainCrosslinkedResidueParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeIntraChainCrosslinkedResidueParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.IntraChainCrosslinkedResidueColu
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=IntraChainCrosslinkedResidue"
  * >IntraChainCrosslinkedResidue</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeLiteratureReferenceParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeLiteratureReferenceParser.java
index 8664b210c0a62b9907e6f01cc2456f49f7ea8df5..7eb163140d466b2edb5856220ca4f07429313a58 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeLiteratureReferenceParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeLiteratureReferenceParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.LiteratureReferenceColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=LiteratureReference"
  * >LiteratureReference</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeModifiedResidueParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeModifiedResidueParser.java
index 4f0cc9235764d8a60c792a9ce2f75b17ab454c82..14e4e06949f0d8c31bece7de0a9294f30461bcd7 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeModifiedResidueParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeModifiedResidueParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.ModifiedResidueColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=NegativeRegulation"
  * >NegativeRegulation</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeNegativeGeneExpressionRegulationParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeNegativeGeneExpressionRegulationParser.java
new file mode 100644
index 0000000000000000000000000000000000000000..0bd5be9e3b2316fe7af02678b2b736908b77f0c5
--- /dev/null
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeNegativeGeneExpressionRegulationParser.java
@@ -0,0 +1,24 @@
+package lcsb.mapviewer.reactome.xml;
+
+import lcsb.mapviewer.reactome.model.ReactomeNegativeGeneExpressionRegulation;
+import lcsb.mapviewer.reactome.xml.columnParser.NegativeGeneExpressionRegulationColumnParser;
+
+/**
+ * Parser for reactome xml retrieved from <a href=
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * >Reactome API</a> for <a href=
+ * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=NegativeGeneExpressionRegulation"
+ * >NegativeGeneExpressionRegulation</a> object.
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+public class ReactomeNegativeGeneExpressionRegulationParser extends ReactomeNodeParser<ReactomeNegativeGeneExpressionRegulation> {
+
+	/**
+	 * Default constructor.
+	 */
+	public ReactomeNegativeGeneExpressionRegulationParser()   {
+		super(ReactomeNegativeGeneExpressionRegulation.class, NegativeGeneExpressionRegulationColumnParser.class);
+	}
+}
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeNegativeRegulationParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeNegativeRegulationParser.java
index 3b20ca7ec2cd78bb0f29536ff4f26f3b90359dd4..2fb0b89165d29e09de72ec94b8fbe059ca8f8e3b 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeNegativeRegulationParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeNegativeRegulationParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.NegativeRegulationColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=NegativeRegulation"
  * >NegativeRegulation</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeOpenSetParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeOpenSetParser.java
index 558be583112c4aaa00b1674cc63e30ce88718477..c026b34eb3599121513da8ee2fb30d5a8744c3da 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeOpenSetParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeOpenSetParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.OpenSetColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=OpenSet"
  * >OpenSet</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeOtherEntityParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeOtherEntityParser.java
index d5b971e0fe21f17e6c28af3f4d3cb55eb9a3dc0e..85546fd9dd67255ff6dc1433a78850bde0e8ef4c 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeOtherEntityParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeOtherEntityParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.OtherEntityColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=OtherEntity"
  * >OtherEntity</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePathwayCoordinatesParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePathwayCoordinatesParser.java
index 5db28f0c5273f13506c5ebab43e7ea71e369a63e..f00c4344d5544cf34fec2bc9046e490d19ca77dc 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePathwayCoordinatesParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePathwayCoordinatesParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.PathwayCoordinatesColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=PathwayCoordinates"
  * >PathwayCoordinates</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePathwayDiagramParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePathwayDiagramParser.java
index 92d40a137fa57f390b7821841fe0c0c1c1840e04..b569cbacf2719d312ff7b36ca4bcb512b33ec096 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePathwayDiagramParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePathwayDiagramParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.PathwayDiagramColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=PathwayDiagram"
  * >PathwayDiagram</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePathwayParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePathwayParser.java
index 225f5ffff8dbd75f0465198f72c897da68e871e6..9c25d551a31ac78b4d4688111dc064f63d2f7165 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePathwayParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePathwayParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.PathwayColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=Pathway"
  * >Pathway</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePathwayVertexParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePathwayVertexParser.java
index 15406f18f1257b34b00240d18a1c53bcf3a4ec48..d44c862ecd8739a3e7bf3b6ec5a13cf4ee94c07e 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePathwayVertexParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePathwayVertexParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.PathwayVertexColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=PathwayVertex"
  * >PathwayVertex</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePersonParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePersonParser.java
index a96e6d7f1792bbdf8b5d1193c8473f28817f795e..8d047fd29eb35993c168404e87c1d7f058951e4b 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePersonParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePersonParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.PersonColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=Person"
  * >Person</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePhysicalEntityParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePhysicalEntityParser.java
index de892b7ed065145d84fa1a0e9430854295232d7e..e209e99f049bdd37137800f149d08f7b5792b5b7 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePhysicalEntityParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePhysicalEntityParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.PhysicalEntityColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=PhysicalEntity"
  * >PhysicalEntity</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePolymerParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePolymerParser.java
index daa573fde1c7f628a5fca8adabd42c2d6bf686e3..9684ddfc3432712e16ac05580f8c05587a5cef34 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePolymerParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePolymerParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.PolymerColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=Polymer"
  * >Polymer</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePolymerisationParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePolymerisationParser.java
index 10dec3ee76c5f48f966042eba84f62a43f6b61ac..7cad3eec462b6319d55eff85423ce9553358c153 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePolymerisationParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePolymerisationParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.PolymerisationColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=Polymerisation"
  * >Polymerisation</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePositiveRegulationParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePositiveRegulationParser.java
index fa740e6e49f1f19f186e7a41d6ed2008fa8ee8d5..e9af8e8d93e10ebfed6b6656da0f54008e172022 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePositiveRegulationParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePositiveRegulationParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.PositiveRegulationColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=PositiveRegulation"
  * >PositiveRegulation</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePsiModParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePsiModParser.java
index 80532b55f990dd1decb2ee24b451286ebd3bb090..42774459de2013eff325eefd240bed2ea979db9a 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePsiModParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePsiModParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.PsiModColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=PsiMod"
  * >PsiMod</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePublicationParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePublicationParser.java
index a8b47f1222e88660882b6530e765f7f8b95a662d..23765fd91c2fd9e995ebffc9340e6f2e43eb79ce 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePublicationParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomePublicationParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.PublicationColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=Publication"
  * >Publication</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReactionCoordinatesParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReactionCoordinatesParser.java
index d8b968036c6eb0b7f197368ff067505482741423..c6082bbd1df4ab8969be746151b1f8b82d34ed4c 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReactionCoordinatesParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReactionCoordinatesParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.ReactionCoordinatesColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=ReactionCoordinates"
  * >ReactionCoordinates</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReactionParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReactionParser.java
index 6413b0d04779d925e683ab494b9acd58bb9cae92..85e790b7e7cf19c7d64eecaefdebffeaf276fed0 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReactionParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReactionParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.ReactionColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=Reaction"
  * >Reaction</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReactionVertexParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReactionVertexParser.java
index 6a7dfa9badfff718e1be41d76030e8455410fd5a..d3d9f54dcb69625d8d50416bbbb9c34a69369ad8 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReactionVertexParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReactionVertexParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.ReactionVertexColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=ReactionVertex"
  * >ReactionVertex</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReactionlikeEventParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReactionlikeEventParser.java
index 59ffd855deb75f8f00688fcaa96addb7b33fbd40..387d4e0be258f4f3454833e130140d357c8bdfa2 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReactionlikeEventParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReactionlikeEventParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.ReactionlikeEventColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=ReactionlikeEvent"
  * >ReactionlikeEvent</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceDNASequenceParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceDNASequenceParser.java
index 8fcbf4b96d5eeff8517b2a6c03f89e7d60670b1f..d71831964ff243793f2f42b915b2cc4b1093ce0c 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceDNASequenceParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceDNASequenceParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.ReferenceDNASequenceColumnParser
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=ReferenceDNASequence"
  * >ReferenceDNASequence</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceDatabaseParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceDatabaseParser.java
index a5bef64b09ff159f9fd334e9fd258d56cc92c31f..2bcd564af537202d5fbbed28518131ad502600fd 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceDatabaseParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceDatabaseParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.ReferenceDatabaseColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=ReferenceDatabase"
  * >ReferenceDatabase</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceEntityParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceEntityParser.java
index 20acd6bd8d22fedc3157e7736a4b45be309face7..1367865111a2008fba40cc945c873eea5fad6de6 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceEntityParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceEntityParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.ReferenceEntityColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=ReferenceEntity"
  * >ReferenceEntity</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceGeneProductParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceGeneProductParser.java
index b60a6611c3b5817a50f3bbd2b3a6137ae6034038..7ef303753f328db5dc69a2aeb6f4423b8650fc8f 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceGeneProductParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceGeneProductParser.java
@@ -6,7 +6,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.ReferenceGeneProductColumnParser
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=ReferenceGeneProduct"
  * >ReferenceGeneProduct</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceGroupParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceGroupParser.java
index ee2676171c32bc0ba015b306f426c9d261d274ed..fa5f8a91a838187b82f65f3048f02b94b55cff22 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceGroupParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceGroupParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.ReferenceGroupColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=ReferenceGroup"
  * >ReferenceGroup</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceIsoformParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceIsoformParser.java
index b3d5f78175f45c0c6a8de82a3efc51e4f939b166..598a9dd548e9a6a1d50a2ecff5059b2446dd6c13 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceIsoformParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceIsoformParser.java
@@ -6,7 +6,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.ReferenceIsoproductColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=ReferenceIsoform"
  * >ReferenceIsoform</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceMoleculeParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceMoleculeParser.java
index 5ab67784b313da4871047a8b042a5fa569dcaabb..99f6fb05cdd4ca4b42546a7f354e802ccc061de7 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceMoleculeParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceMoleculeParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.ReferenceMoleculeColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=ReferenceMolecule"
  * >ReferenceMolecule</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceRNASequenceParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceRNASequenceParser.java
index 0f4e29ecf8d6b5ba27ad2799e3167b950d0349fd..cc014ab2edc7a613d84fd27b935b6fdd5670dd55 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceRNASequenceParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceRNASequenceParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.ReferenceRNASequenceColumnParser
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=ReferenceRNASequence"
  * >ReferenceRNASequence</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceSequenceParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceSequenceParser.java
index 0e9d3281e7da2a37b3a52688df46fd9a9c3127f1..e555d8c7ece03d68928ebf12601ec6a8e99eb568 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceSequenceParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceSequenceParser.java
@@ -6,7 +6,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.ReferenceSequenceColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=ReferenceSequence"
  * >ReferenceSequence</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeRegulationTypeParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeRegulationTypeParser.java
deleted file mode 100644
index 6e36073ca90fb59f3f09f80603c7f463a88d1f99..0000000000000000000000000000000000000000
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeRegulationTypeParser.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package lcsb.mapviewer.reactome.xml;
-
-import lcsb.mapviewer.reactome.model.ReactomeRegulationType;
-import lcsb.mapviewer.reactome.xml.columnParser.RegulationTypeColumnParser;
-
-/**
- * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
- * >Reactome API</a> for <a href=
- * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=RegulationType"
- * >RegulationType</a> object.
- * 
- * @author Piotr Gawron
- * 
- */
-public class ReactomeRegulationTypeParser extends ReactomeNodeParser<ReactomeRegulationType> {
-
-	/**
-	 * Default constructor.
-	 */
-	public ReactomeRegulationTypeParser()   {
-		super(ReactomeRegulationType.class, RegulationTypeColumnParser.class);
-	}
-}
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReplacedResidueParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReplacedResidueParser.java
index e8b118a27230b2992f811f5743ff9c5924115474..4d7cfb7f469031ceffa7bd7577d49a43983a4d24 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReplacedResidueParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeReplacedResidueParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.ReplacedResidueColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=ReplacedResidue"
  * >ReplacedResidue</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeRequirementParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeRequirementParser.java
index 3ecd3bbf2b6ddfc4f43412d1aa70f18f0ec25a8a..a1f9bc17c6279bdbcc3d60019dfbe70aa06017a9 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeRequirementParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeRequirementParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.RequirementColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=Requirement"
  * >Requirement</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeSequenceDomainParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeSequenceDomainParser.java
index 75494b542e4812573a6ae6165391480054e08e55..34deb0f2a9a541f94ec44893543be985928cbd46 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeSequenceDomainParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeSequenceDomainParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.SequenceDomainColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=SequenceDomain">
  * SequenceDomain</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeSequenceOntologyParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeSequenceOntologyParser.java
index 2d3661cc7b7b0e102eb9cb46d5783e474e3d8e25..06f2f7d02af5c798f5f5d7e15d7fbbeb7c3c7302 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeSequenceOntologyParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeSequenceOntologyParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.SequenceOntologyColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=SequenceOntology"
  * >SequenceOntology</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeSimpleEntityParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeSimpleEntityParser.java
index b33c1547117e8dc6ea89ec8a92619daa33754be6..8e1e0094ee2ca64f23c624b487ed96f3db36c5d4 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeSimpleEntityParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeSimpleEntityParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.SimpleEntityColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=SimpleEntity"
  * >SimpleEntity</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeSpeciesParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeSpeciesParser.java
index 03463613784e2765a758b54a881e7a8986e52906..f936a8d3d9165f804313d1568ddd87d11b5d4c4a 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeSpeciesParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeSpeciesParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.SpeciesColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=Species"
  * >Species</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeStableIdentifierParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeStableIdentifierParser.java
index ae43a4e509afe54255aacdc6949dddc49228885f..9fee035680731a11b110c7cdd3e09036bebd041d 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeStableIdentifierParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeStableIdentifierParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.StableIdentifierColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=StableIdentifier"
  * >StableIdentifier</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeSummationParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeSummationParser.java
index 48d94528b11a3eb380905beff202a49c863295db..b1926e2b6a55fbd95c8e2f18601dbfc8c483e9d6 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeSummationParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeSummationParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.SummationColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=Summation"
  * >Summation</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeTaxonParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeTaxonParser.java
index 9bcd3ed85aba70b76dcdcc745ceaea8fd4bb343f..3f4fca0c5e3ef93027bd14e4ae66145ffda6f883 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeTaxonParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeTaxonParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.TaxonColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=Taxon"
  * >Taxon</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeURLParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeURLParser.java
index b9cbae25ef628c35be3c52ca7f645f4d9843fd06..9aafded9645b004d7f573b6d16cda4e9cf8a1d40 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeURLParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/ReactomeURLParser.java
@@ -5,7 +5,7 @@ import lcsb.mapviewer.reactome.xml.columnParser.URLColumnParser;
 
 /**
  * Parser for reactome xml retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a> for <a href=
  * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=URL"
  * >URL</a> object.
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/columnParser/DatabaseObjectColumnParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/columnParser/DatabaseObjectColumnParser.java
index 448733a71f31f5dbd0ef7f10d311e4f3b4e06e94..b4f6aa1d20ff9d4f3c60ff4102e3b5acc66a0525 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/columnParser/DatabaseObjectColumnParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/columnParser/DatabaseObjectColumnParser.java
@@ -47,8 +47,8 @@ public class DatabaseObjectColumnParser extends ColumnParser<ReactomeDatabaseObj
 		} else if (node.getNodeName().equalsIgnoreCase("stableIdentifier")) {
 			object.setStableIdentifier(getSiParser().parseSimplifiedObject(node));
 		} else {
-			throw new InvalidArgumentException("Unknown node type for ReactomeDatabaseObject: " + node.getNodeName() + ". Object: " + object.getClass() + " ["
-					+ object.getDbId() + "]");
+			throw new InvalidArgumentException(
+					"Unknown node type for ReactomeDatabaseObject: " + node.getNodeName() + ". Object: " + object.getClass() + " [" + object.getDbId() + "]");
 		}
 	}
 }
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/columnParser/NegativeGeneExpressionRegulationColumnParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/columnParser/NegativeGeneExpressionRegulationColumnParser.java
new file mode 100644
index 0000000000000000000000000000000000000000..a6664657d45e0d7decd4049b796c5b1de29238a2
--- /dev/null
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/columnParser/NegativeGeneExpressionRegulationColumnParser.java
@@ -0,0 +1,28 @@
+package lcsb.mapviewer.reactome.xml.columnParser;
+
+import org.w3c.dom.Node;
+
+import lcsb.mapviewer.reactome.model.ReactomeNegativeGeneExpressionRegulation;
+
+/**
+ * Parser for properties of Reactome <a href=
+ * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=NegativeGeneExpressionRegulation"
+ * >NegativeGeneExpressionRegulation</a> object.
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+public class NegativeGeneExpressionRegulationColumnParser extends ColumnParser<ReactomeNegativeGeneExpressionRegulation> {
+	/**
+	 * Default constructor. Defines parser for super class of NegativeRegulation.
+	 */
+	protected NegativeGeneExpressionRegulationColumnParser() {
+		super(NegativeRegulationColumnParser.class);
+	}
+
+	@Override
+	public void updateColumnFromNode(ReactomeNegativeGeneExpressionRegulation object, Node node) {
+		getParentParser().updateColumnFromNode(object, node);
+	}
+
+}
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/columnParser/RegulationColumnParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/columnParser/RegulationColumnParser.java
index 39f16dfb7c555c3f1277105d43f43ecff0cdce3b..08beeb87dd59efc88ffc5e97a89a8a8eec4416bd 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/columnParser/RegulationColumnParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/columnParser/RegulationColumnParser.java
@@ -26,6 +26,8 @@ public class RegulationColumnParser extends ColumnParser<ReactomeRegulation> {
 			object.setRegulatedEntity(geteParser().parseObject(node));
 		} else if (node.getNodeName().equalsIgnoreCase("regulator")) {
 			object.setRegulator(getDoParser().parseObject(node));
+		} else if (node.getNodeName().equalsIgnoreCase("containedInPathway")) {
+			object.setRegulator(getpParser().parseObject(node));
 		} else {
 			getParentParser().updateColumnFromNode(object, node);
 		}
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/columnParser/RegulationTypeColumnParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/columnParser/RegulationTypeColumnParser.java
deleted file mode 100644
index 5e21b8a7c411207505c97f300d7d22634fb522e8..0000000000000000000000000000000000000000
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/columnParser/RegulationTypeColumnParser.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package lcsb.mapviewer.reactome.xml.columnParser;
-
-import lcsb.mapviewer.reactome.model.ReactomeRegulationType;
-
-import org.w3c.dom.Node;
-
-/**
- * Parser for properties of Reactome <a href=
- * "http://www.reactome.org/cgi-bin/classbrowser?DB=gk_current&CLASS=RegulationType"
- * >RegulationType</a> object.
- * 
- * @author Piotr Gawron
- * 
- */
-public class RegulationTypeColumnParser extends ColumnParser<ReactomeRegulationType> {
-	/**
-	 * Default constructor. Defines parser for super class of RegulationType.
-	 */
-	protected RegulationTypeColumnParser() {
-		super(DatabaseObjectColumnParser.class);
-	}
-
-	@Override
-	public void updateColumnFromNode(ReactomeRegulationType object, Node node) {
-		getParentParser().updateColumnFromNode(object, node);
-	}
-
-}
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/columnParser/StableIdentifierColumnParser.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/columnParser/StableIdentifierColumnParser.java
index 1beb753c1dd81626f61c0d231bb11f3384ffcbc3..90947ae36f8a7d761be2ab70c924fc75035570f1 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/columnParser/StableIdentifierColumnParser.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/columnParser/StableIdentifierColumnParser.java
@@ -27,6 +27,12 @@ public class StableIdentifierColumnParser extends ColumnParser<ReactomeStableIde
 			object.setIdentifier(node.getTextContent());
 		} else if (node.getNodeName().equalsIgnoreCase("identifierVersion")) {
 			object.setIdentifierVersion(node.getTextContent());
+		} else if (node.getNodeName().equalsIgnoreCase("oldIdentifier")) {
+			object.setOldIdentifier(node.getTextContent());
+		} else if (node.getNodeName().equalsIgnoreCase("oldIdentifierVersion")) {
+			object.setOldIdentifierVersion(node.getTextContent());
+		} else if (node.getNodeName().equalsIgnoreCase("released")) {
+			object.setReleased("true".equalsIgnoreCase(node.getTextContent()));
 		} else {
 			getParentParser().updateColumnFromNode(object, node);
 		}
diff --git a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/package-info.java b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/package-info.java
index f370b3576ceab7c93fe45783a73c943b15f6ee1f..9f8103390ac2ab12f66392fbb717ac96cc4c9e3b 100644
--- a/reactome/src/main/java/lcsb/mapviewer/reactome/xml/package-info.java
+++ b/reactome/src/main/java/lcsb/mapviewer/reactome/xml/package-info.java
@@ -1,6 +1,6 @@
 /**
  * Provides parsers for xml data retrieved from <a href=
- * "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
+ * "http://reactome.org/ReactomeRESTfulAPI/ReactomeRESTFulAPI.html"
  * >Reactome API</a>.
  */
 package lcsb.mapviewer.reactome.xml;
diff --git a/reactome/src/main/resources/applicationContext-reactome.xml b/reactome/src/main/resources/applicationContext-reactome.xml
index f76a01cb6491dedace5e4679bb82d1a675369502..a1fa4c3cc819b628bde2c33140b79462d139fc4d 100644
--- a/reactome/src/main/resources/applicationContext-reactome.xml
+++ b/reactome/src/main/resources/applicationContext-reactome.xml
@@ -93,6 +93,7 @@
 	<bean id="ReactomeLiteratureReferenceParser" class="lcsb.mapviewer.reactome.xml.ReactomeLiteratureReferenceParser"/>
 	<bean id="ReactomeModifiedResidueParser" class="lcsb.mapviewer.reactome.xml.ReactomeModifiedResidueParser"/>
 	<bean id="ReactomeNegativeRegulationParser" class="lcsb.mapviewer.reactome.xml.ReactomeNegativeRegulationParser"/>
+	<bean id="ReactomeNegativeGeneExpressionRegulationParser" class="lcsb.mapviewer.reactome.xml.ReactomeNegativeGeneExpressionRegulationParser"/>
 	<bean id="ReactomeOpenSetParser" class="lcsb.mapviewer.reactome.xml.ReactomeOpenSetParser"/>
 	<bean id="ReactomeOtherEntityParser" class="lcsb.mapviewer.reactome.xml.ReactomeOtherEntityParser"/>
 	<bean id="ReactomeParserFactory" class="lcsb.mapviewer.reactome.xml.ReactomeParserFactory"/>
@@ -120,7 +121,6 @@
 	<bean id="ReactomeReferenceMoleculeParser" class="lcsb.mapviewer.reactome.xml.ReactomeReferenceMoleculeParser"/>
 	<bean id="ReactomeReferenceRNASequenceParser" class="lcsb.mapviewer.reactome.xml.ReactomeReferenceRNASequenceParser"/>
 	<bean id="ReactomeReferenceSequenceParser" class="lcsb.mapviewer.reactome.xml.ReactomeReferenceSequenceParser"/>
-	<bean id="ReactomeRegulationTypeParser" class="lcsb.mapviewer.reactome.xml.ReactomeRegulationTypeParser"/>
 	<bean id="ReactomeReplacedResidueParser" class="lcsb.mapviewer.reactome.xml.ReactomeReplacedResidueParser"/>
 	<bean id="ReactomeRequirementParser" class="lcsb.mapviewer.reactome.xml.ReactomeRequirementParser"/>
 	<bean id="ReactomeSequenceDomainParser" class="lcsb.mapviewer.reactome.xml.ReactomeSequenceDomainParser"/>
diff --git a/reactome/src/test/java/lcsb/mapviewer/reactome/utils/ReactomeConnectorTest.java b/reactome/src/test/java/lcsb/mapviewer/reactome/utils/ReactomeConnectorTest.java
index 1c8e5b6bfa7865b711c9456db1112283cd29c96a..65aed9ba0998833b2d56e8b96f926dc0ccf244f6 100644
--- a/reactome/src/test/java/lcsb/mapviewer/reactome/utils/ReactomeConnectorTest.java
+++ b/reactome/src/test/java/lcsb/mapviewer/reactome/utils/ReactomeConnectorTest.java
@@ -169,7 +169,7 @@ public class ReactomeConnectorTest extends ReactomeTestFunctions {
 
 	@Test(timeout = 15000)
 	public void testCachableInterfaceByParams() throws Exception {
-		String url = "http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/RESTfulWS/listByQuery/DatabaseObjects";
+		String url = "http://reactome.org/ReactomeRESTfulAPI/RESTfulWS/listByQuery/DatabaseObjects";
 		String query = "identifier=2562550\n" + url;
 		String newRes = "hello";
 		try {
diff --git a/reactome/src/test/java/lcsb/mapviewer/reactome/utils/comparators/NodeComparatorTest.java b/reactome/src/test/java/lcsb/mapviewer/reactome/utils/comparators/NodeComparatorTest.java
index 791b7bb32ab0452a8ce14b5c7fba4c9392476250..6d5798314ef6eb1f43ad83b8a91fe2ecf3ab6333 100644
--- a/reactome/src/test/java/lcsb/mapviewer/reactome/utils/comparators/NodeComparatorTest.java
+++ b/reactome/src/test/java/lcsb/mapviewer/reactome/utils/comparators/NodeComparatorTest.java
@@ -508,7 +508,7 @@ public class NodeComparatorTest extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testCatalystMatchInReaction1172() {
+	public void testCatalystMatchInReaction1172() throws Exception {
 		try {
 			Model model = getModelForFile("testFiles/small/gpd1.xml", true);
 
@@ -520,12 +520,12 @@ public class NodeComparatorTest extends ReactomeTestFunctions {
 
 		} catch (Exception e) {
 			e.printStackTrace();
-			fail("Unknown exception");
+			throw e;
 		}
 	}
 
 	@Test
-	public void testModifierMatchInReaction931() {
+	public void testModifierMatchInReaction931() throws Exception {
 		try {
 			Model model = getModelForFile("testFiles/small/prkacb.xml", true);
 
@@ -537,7 +537,7 @@ public class NodeComparatorTest extends ReactomeTestFunctions {
 
 		} catch (Exception e) {
 			e.printStackTrace();
-			fail("Unknown exception");
+			throw e;
 		}
 	}
 
diff --git a/reactome/src/test/java/lcsb/mapviewer/reactome/xml/GeneralTests.java b/reactome/src/test/java/lcsb/mapviewer/reactome/xml/GeneralTests.java
index 8c20d2527e9b584f84176bac771e05967018c0a3..24b750d1f2d6b33ef0fc448be23e2191b81d5b36 100644
--- a/reactome/src/test/java/lcsb/mapviewer/reactome/xml/GeneralTests.java
+++ b/reactome/src/test/java/lcsb/mapviewer/reactome/xml/GeneralTests.java
@@ -22,7 +22,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testFragmentInsertionModification() throws Exception{
+	public void testFragmentInsertionModification() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(2318717);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -33,7 +33,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testFragmentDeletionModification() throws Exception{
+	public void testFragmentDeletionModification() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(2063905);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -44,7 +44,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testInterChainCrosslinkedResidue() throws Exception{
+	public void testInterChainCrosslinkedResidue() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(4419898);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -55,7 +55,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testIntraChainCrosslinkedResidue() throws Exception{
+	public void testIntraChainCrosslinkedResidue() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(3777079);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -66,7 +66,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testGroupModifiedResidue() throws Exception{
+	public void testGroupModifiedResidue() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(2396027);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -77,7 +77,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testModifiedResidue() throws Exception{
+	public void testModifiedResidue() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(140630);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -100,7 +100,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testEntityFunctionalStatus() throws Exception{
+	public void testEntityFunctionalStatus() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(3080617);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -111,7 +111,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testPathway() throws Exception{
+	public void testPathway() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(168276);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -122,7 +122,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testBlackBoxEvent() throws Exception{
+	public void testBlackBoxEvent() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(2454113);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -133,7 +133,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testDepolymerisation() throws Exception{
+	public void testDepolymerisation() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(173642);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -144,7 +144,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testPolymerisation() throws Exception{
+	public void testPolymerisation() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(936986);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -155,7 +155,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testReaction() throws Exception{
+	public void testReaction() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(71593);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -166,7 +166,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testEvidenceType() throws Exception{
+	public void testEvidenceType() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(4546411);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -177,7 +177,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testCellType() throws Exception{
+	public void testCellType() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(2473605);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -188,7 +188,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testDisease() throws Exception{
+	public void testDisease() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(1625206);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -199,7 +199,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testPsiMod() throws Exception{
+	public void testPsiMod() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(448185);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -210,7 +210,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testSequenceOntology() throws Exception{
+	public void testSequenceOntology() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(2318494);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -221,7 +221,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testEntityCompartment() throws Exception{
+	public void testEntityCompartment() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(1470028);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -244,7 +244,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 
 	@Test
 	@Ignore("In reactome there is no object of this type")
-	public void testPathwayCoordinates() throws Exception{
+	public void testPathwayCoordinates() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(5477003);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -255,9 +255,9 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testFigure() throws Exception{
+	public void testFigure() throws Exception {
 		try {
-			ReactomeDatabaseObject object = rc.getFullObjectForDbId(157815 );
+			ReactomeDatabaseObject object = rc.getFullObjectForDbId(157815);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
 		} catch (Exception e) {
 			e.printStackTrace();
@@ -266,7 +266,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testFrontPage() throws Exception{
+	public void testFrontPage() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(4545014);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -277,7 +277,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testFunctionalStatusType() throws Exception{
+	public void testFunctionalStatusType() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(2426108);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -288,7 +288,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testInstanceEdit() throws Exception{
+	public void testInstanceEdit() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(1598217);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -299,7 +299,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testPathwayDiagram() throws Exception{
+	public void testPathwayDiagram() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(2162173);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -310,9 +310,9 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testPathwayVertex() throws Exception{
+	public void testPathwayVertex() throws Exception {
 		try {
-			ReactomeDatabaseObject object = rc.getFullObjectForDbId(8188920);
+			ReactomeDatabaseObject object = rc.getFullObjectForDbId(10834395);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
 		} catch (Exception e) {
 			e.printStackTrace();
@@ -321,9 +321,9 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testReactionVertex() throws Exception{
+	public void testReactionVertex() throws Exception {
 		try {
-			ReactomeDatabaseObject object = rc.getFullObjectForDbId(8188943);
+			ReactomeDatabaseObject object = rc.getFullObjectForDbId(10834441);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
 		} catch (Exception e) {
 			e.printStackTrace();
@@ -332,7 +332,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testCandidateSet() throws Exception{
+	public void testCandidateSet() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(198809);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -343,7 +343,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testOpenSet() throws Exception{
+	public void testOpenSet() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(162704);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -354,7 +354,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testDefinedSet() throws Exception{
+	public void testDefinedSet() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(453350);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -365,9 +365,9 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testOtherEntity() throws Exception{
+	public void testOtherEntity() throws Exception {
 		try {
-			ReactomeDatabaseObject object = rc.getFullObjectForDbId(162843);
+			ReactomeDatabaseObject object = rc.getFullObjectForDbId(162704);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
 		} catch (Exception e) {
 			e.printStackTrace();
@@ -376,7 +376,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testPolymer() throws Exception{
+	public void testPolymer() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(2160866);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -387,7 +387,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testSimpleEntity() throws Exception{
+	public void testSimpleEntity() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(868632);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -398,7 +398,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testLiteratureReference() throws Exception{
+	public void testLiteratureReference() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(182836);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -409,7 +409,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testURL() throws Exception{
+	public void testURL() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(1170534);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -420,7 +420,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testReferenceDatabase() throws Exception{
+	public void testReferenceDatabase() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(1385634);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -431,7 +431,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testReactionCoordinates() throws Exception{
+	public void testReactionCoordinates() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(142110);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -441,9 +441,8 @@ public class GeneralTests extends ReactomeTestFunctions {
 		}
 	}
 
-
 	@Test
-	public void testReferenceGroup() throws Exception{
+	public void testReferenceGroup() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(164405);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -454,7 +453,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testReferenceMolecule() throws Exception{
+	public void testReferenceMolecule() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(142110);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -465,7 +464,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testReferenceIsoform() throws Exception{
+	public void testReferenceIsoform() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(59007);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -476,7 +475,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testReferenceRNASequence() throws Exception{
+	public void testReferenceRNASequence() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(188854);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -489,7 +488,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	@Test
 	public void testNegativeRegulation() throws Exception {
 		try {
-			ReactomeDatabaseObject object = rc.getFullObjectForDbId(6860411);
+			ReactomeDatabaseObject object = rc.getFullObjectForDbId(5229351);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
 		} catch (Exception e) {
 			e.printStackTrace();
@@ -509,7 +508,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testPositiveRegulation() throws Exception{
+	public void testPositiveRegulation() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(5623897);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -520,18 +519,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testRegulationType() throws Exception{
-		try {
-			ReactomeDatabaseObject object = rc.getFullObjectForDbId(75342);
-			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	@Test
-	public void testSummation() throws Exception{
+	public void testSummation() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(143360);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -542,7 +530,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testTaxon() throws Exception{
+	public void testTaxon() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(72968);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
@@ -555,7 +543,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	@Test
 	public void testReferenceDNASequence() throws Exception {
 		try {
-			ReactomeDatabaseObject object = rc.getFullObjectForDbId(6855923);
+			ReactomeDatabaseObject object = rc.getFullObjectForDbId(10030875);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
 		} catch (Exception e) {
 			e.printStackTrace();
@@ -564,7 +552,7 @@ public class GeneralTests extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testSpecies() throws Exception{
+	public void testSpecies() throws Exception {
 		try {
 			ReactomeDatabaseObject object = rc.getFullObjectForDbId(181384);
 			assertFalse(object.getClass().getName().contains(ReactomeDatabaseObject.class.getName()));
diff --git a/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeBlackBoxEventParserTest.java b/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeBlackBoxEventParserTest.java
index dee4b6235dda4be05d54866c2819fef256440109..7302ad9740603b0dabfc13a14aae94172e70a0c3 100644
--- a/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeBlackBoxEventParserTest.java
+++ b/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeBlackBoxEventParserTest.java
@@ -2,10 +2,6 @@ package lcsb.mapviewer.reactome.xml;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
-import lcsb.mapviewer.reactome.ReactomeTestFunctions;
-import lcsb.mapviewer.reactome.model.ReactomeBlackBoxEvent;
-import lcsb.mapviewer.reactome.model.ReactomeStatus;
 
 import org.apache.log4j.Logger;
 import org.junit.After;
@@ -14,8 +10,12 @@ import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.w3c.dom.Document;
 
+import lcsb.mapviewer.reactome.ReactomeTestFunctions;
+import lcsb.mapviewer.reactome.model.ReactomeBlackBoxEvent;
+import lcsb.mapviewer.reactome.model.ReactomeStatus;
+
 public class ReactomeBlackBoxEventParserTest extends ReactomeTestFunctions {
-	Logger											logger	= Logger.getLogger(ReactomeBlackBoxEventParserTest.class);
+	Logger											logger = Logger.getLogger(ReactomeBlackBoxEventParserTest.class);
 
 	@Autowired
 	ReactomeBlackBoxEventParser	parser;
@@ -29,7 +29,7 @@ public class ReactomeBlackBoxEventParserTest extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testParseObject() {
+	public void testParseObject() throws Exception {
 		try {
 			Document document = getXmlDocumentFromFile("testFiles/reactome/blackBoxEvent.xml");
 			ReactomeBlackBoxEvent res = parser.parseObject(document.getChildNodes().item(0));
@@ -58,12 +58,12 @@ public class ReactomeBlackBoxEventParserTest extends ReactomeTestFunctions {
 			assertEquals("Caspase-8 processing ", res.getNames().get(0));
 		} catch (Exception e) {
 			e.printStackTrace();
-			fail("Unknown exception");
+			throw e;
 		}
 	}
 
 	@Test
-	public void testUpdateObjectFromDb() {
+	public void testUpdateObjectFromDb() throws Exception {
 		try {
 			Document document = getXmlDocumentFromFile("testFiles/reactome/blackBoxEvent.xml");
 			ReactomeBlackBoxEvent res = parser.parseObject(document.getChildNodes().item(0));
@@ -87,7 +87,7 @@ public class ReactomeBlackBoxEventParserTest extends ReactomeTestFunctions {
 
 		} catch (Exception e) {
 			e.printStackTrace();
-			fail("Unknown exception");
+			throw e;
 		}
 	}
 
diff --git a/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeCandidateSetParserTest.java b/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeCandidateSetParserTest.java
index 9e19d67273ec0eda25173da93d2b2cb1429b9348..c882c0cdabf43ee16bfb01643a952c75612a20af 100644
--- a/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeCandidateSetParserTest.java
+++ b/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeCandidateSetParserTest.java
@@ -2,10 +2,6 @@ package lcsb.mapviewer.reactome.xml;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
-import lcsb.mapviewer.reactome.ReactomeTestFunctions;
-import lcsb.mapviewer.reactome.model.ReactomeCandidateSet;
-import lcsb.mapviewer.reactome.model.ReactomeStatus;
 
 import org.apache.log4j.Logger;
 import org.junit.After;
@@ -14,11 +10,16 @@ import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.w3c.dom.Document;
 
-public class ReactomeCandidateSetParserTest extends ReactomeTestFunctions{
-	Logger logger = Logger.getLogger(ReactomeCandidateSetParserTest.class);
+import lcsb.mapviewer.reactome.ReactomeTestFunctions;
+import lcsb.mapviewer.reactome.model.ReactomeCandidateSet;
+import lcsb.mapviewer.reactome.model.ReactomeStatus;
+
+public class ReactomeCandidateSetParserTest extends ReactomeTestFunctions {
+	Logger										 logger	= Logger.getLogger(ReactomeCandidateSetParserTest.class);
 
 	@Autowired
-	ReactomeCandidateSetParser parser ;
+	ReactomeCandidateSetParser parser;
+
 	@Before
 	public void setUp() throws Exception {
 	}
@@ -28,37 +29,37 @@ public class ReactomeCandidateSetParserTest extends ReactomeTestFunctions{
 	}
 
 	@Test
-	public void testParseObject() {
+	public void testParseObject() throws Exception {
 		try {
 			Document document = getXmlDocumentFromFile("testFiles/reactome/candidateSet.xml");
 			ReactomeCandidateSet res = parser.parseObject(document.getChildNodes().item(0));
 			assertNotNull(res);
-			assertEquals((Integer)549096,res.getCreated().getDbId());
-			assertEquals((Integer)549113,res.getDbId());
-			assertEquals((Integer)549119,res.getModified().get(0).getDbId());
-			assertEquals((Integer)1106869,res.getStableIdentifier().getDbId());
-			assertEquals((Integer)17906,res.getCompartments().get(0).getDbId());
-			assertEquals((Integer)162843,res.getInferredTos().get(0).getDbId());
-			assertEquals((Integer)61855,res.getHasMembers().get(0).getDbId());
-			assertEquals((Integer)549076,res.getHasCandidates().get(0).getDbId());
-			assertEquals((Integer)48887,res.getSpecies().get(0).getDbId());
-			assertEquals((Integer)3508822,res.getEdited().get(0).getDbId());
-			
-			assertEquals("GPAM or GPAT2",res.getNames().get(0));
-			assertEquals("GPAM or GPAT2 [mitochondrial outer membrane]",res.getDisplayName());
-			
+			assertEquals((Integer) 549096, res.getCreated().getDbId());
+			assertEquals((Integer) 549113, res.getDbId());
+			assertEquals((Integer) 549119, res.getModified().get(0).getDbId());
+			assertEquals((Integer) 1106869, res.getStableIdentifier().getDbId());
+			assertEquals((Integer) 17906, res.getCompartments().get(0).getDbId());
+			assertEquals((Integer) 198809, res.getInferredTos().get(0).getDbId());
+			assertEquals((Integer) 61855, res.getHasMembers().get(0).getDbId());
+			assertEquals((Integer) 549076, res.getHasCandidates().get(0).getDbId());
+			assertEquals((Integer) 48887, res.getSpecies().get(0).getDbId());
+			assertEquals((Integer) 3508822, res.getEdited().get(0).getDbId());
+
+			assertEquals("GPAM or GPAT2", res.getNames().get(0));
+			assertEquals("GPAM or GPAT2 [mitochondrial outer membrane]", res.getDisplayName());
+
 		} catch (Exception e) {
 			e.printStackTrace();
-			fail("Unknown exception");
+			throw e;
 		}
 	}
 
 	@Test
-	public void testUpdateObjectFromDb() {
+	public void testUpdateObjectFromDb() throws Exception {
 		try {
 			Document document = getXmlDocumentFromFile("testFiles/reactome/candidateSet.xml");
 			ReactomeCandidateSet res = parser.parseObject(document.getChildNodes().item(0));
-			
+
 			rc.updateOnlyIdFields(res);
 			assertEquals(ReactomeStatus.FULL, res.getCreated().getStatus());
 			assertEquals(ReactomeStatus.FULL, res.getStableIdentifier().getStatus());
@@ -69,10 +70,10 @@ public class ReactomeCandidateSetParserTest extends ReactomeTestFunctions{
 			assertEquals(ReactomeStatus.FULL, res.getHasCandidates().get(0).getStatus());
 			assertEquals(ReactomeStatus.FULL, res.getEdited().get(0).getStatus());
 			assertEquals(ReactomeStatus.FULL, res.getSpecies().get(0).getStatus());
-			
+
 		} catch (Exception e) {
 			e.printStackTrace();
-			fail("Unknown exception");
+			throw e;
 		}
 	}
 
diff --git a/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeCatalystActivityParserTest.java b/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeCatalystActivityParserTest.java
index 03913bc314088cf745deb121c011ccdab403b79c..e3bb92a7f24d62c1bcc5cfbd0564a1a06a7c7c67 100644
--- a/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeCatalystActivityParserTest.java
+++ b/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeCatalystActivityParserTest.java
@@ -2,10 +2,6 @@ package lcsb.mapviewer.reactome.xml;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
-import lcsb.mapviewer.reactome.ReactomeTestFunctions;
-import lcsb.mapviewer.reactome.model.ReactomeCatalystActivity;
-import lcsb.mapviewer.reactome.model.ReactomeStatus;
 
 import org.apache.log4j.Logger;
 import org.junit.After;
@@ -14,11 +10,16 @@ import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.w3c.dom.Document;
 
-public class ReactomeCatalystActivityParserTest extends ReactomeTestFunctions{
-	Logger logger = Logger.getLogger(ReactomeCatalystActivityParserTest.class);
+import lcsb.mapviewer.reactome.ReactomeTestFunctions;
+import lcsb.mapviewer.reactome.model.ReactomeCatalystActivity;
+import lcsb.mapviewer.reactome.model.ReactomeStatus;
+
+public class ReactomeCatalystActivityParserTest extends ReactomeTestFunctions {
+	Logger												 logger	= Logger.getLogger(ReactomeCatalystActivityParserTest.class);
 
 	@Autowired
-	ReactomeCatalystActivityParser parser ;
+	ReactomeCatalystActivityParser parser;
+
 	@Before
 	public void setUp() throws Exception {
 	}
@@ -28,33 +29,33 @@ public class ReactomeCatalystActivityParserTest extends ReactomeTestFunctions{
 	}
 
 	@Test
-	public void testParseObject() {
+	public void testParseObject() throws Exception {
 		try {
 			Document document = getXmlDocumentFromFile("testFiles/reactome/catalystActivity.xml");
 			ReactomeCatalystActivity res = parser.parseObject(document.getChildNodes().item(0));
 			assertNotNull(res);
-			assertEquals((Integer)8347,res.getActivity().getDbId());
-			assertEquals((Integer)162843,res.getPhysicalEntity().getDbId());
+			assertEquals((Integer) 8347, res.getActivity().getDbId());
+			assertEquals((Integer) 2160866, res.getPhysicalEntity().getDbId());
 		} catch (Exception e) {
 			e.printStackTrace();
-			fail("Unknown exception");
+			throw e;
 		}
 	}
 
 	@Test
-	public void testUpdateObjectFromDb() {
+	public void testUpdateObjectFromDb() throws Exception {
 		try {
 			Document document = getXmlDocumentFromFile("testFiles/reactome/catalystActivity.xml");
 			ReactomeCatalystActivity res = parser.parseObject(document.getChildNodes().item(0));
-			
+
 			rc.updateOnlyIdFields(res);
 			assertEquals(ReactomeStatus.FULL, res.getActivity().getStatus());
 			assertEquals(ReactomeStatus.FULL, res.getPhysicalEntity().getStatus());
 			assertEquals(ReactomeStatus.FULL, res.getCreated().getStatus());
-			
+
 		} catch (Exception e) {
 			e.printStackTrace();
-			fail("Unknown exception");
+			throw e;
 		}
 	}
 
diff --git a/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeDefinedSetParserTest.java b/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeDefinedSetParserTest.java
index a0c0087478b1e582846e950402f506bac36d4e77..08ea34aa2ba5e634a0a55e6c482c2be6c98ef3e9 100644
--- a/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeDefinedSetParserTest.java
+++ b/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeDefinedSetParserTest.java
@@ -2,10 +2,6 @@ package lcsb.mapviewer.reactome.xml;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
-import lcsb.mapviewer.reactome.ReactomeTestFunctions;
-import lcsb.mapviewer.reactome.model.ReactomeDefinedSet;
-import lcsb.mapviewer.reactome.model.ReactomeStatus;
 
 import org.apache.log4j.Logger;
 import org.junit.After;
@@ -14,11 +10,15 @@ import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.w3c.dom.Document;
 
+import lcsb.mapviewer.reactome.ReactomeTestFunctions;
+import lcsb.mapviewer.reactome.model.ReactomeDefinedSet;
+import lcsb.mapviewer.reactome.model.ReactomeStatus;
+
 public class ReactomeDefinedSetParserTest extends ReactomeTestFunctions {
-	Logger										logger	= Logger.getLogger(ReactomeDefinedSetParserTest.class);
+	Logger									 logger	= Logger.getLogger(ReactomeDefinedSetParserTest.class);
 
 	@Autowired
-	ReactomeDefinedSetParser	parser;
+	ReactomeDefinedSetParser parser;
 
 	@Before
 	public void setUp() throws Exception {
@@ -29,7 +29,7 @@ public class ReactomeDefinedSetParserTest extends ReactomeTestFunctions {
 	}
 
 	@Test
-	public void testParseObject() {
+	public void testParseObject() throws Exception {
 		try {
 			Document document = getXmlDocumentFromFile("testFiles/reactome/definedSet.xml");
 			ReactomeDefinedSet res = parser.parseObject(document.getChildNodes().item(0));
@@ -39,7 +39,7 @@ public class ReactomeDefinedSetParserTest extends ReactomeTestFunctions {
 			assertEquals((Integer) 453376, res.getModified().get(0).getDbId());
 			assertEquals((Integer) 1107637, res.getStableIdentifier().getDbId());
 			assertEquals((Integer) 70101, res.getCompartments().get(0).getDbId());
-			assertEquals((Integer) 162843, res.getInferredTos().get(0).getDbId());
+			assertEquals((Integer) 9178869, res.getInferredTos().get(0).getDbId());
 			assertEquals((Integer) 453360, res.getHasMembers().get(0).getDbId());
 			assertEquals((Integer) 48887, res.getSpecies().get(0).getDbId());
 			assertEquals((Integer) 445353, res.getAuthored().getDbId());
@@ -49,12 +49,12 @@ public class ReactomeDefinedSetParserTest extends ReactomeTestFunctions {
 
 		} catch (Exception e) {
 			e.printStackTrace();
-			fail("Unknown exception");
+			throw e;
 		}
 	}
 
 	@Test
-	public void testUpdateObjectFromDb() {
+	public void testUpdateObjectFromDb() throws Exception {
 		try {
 			Document document = getXmlDocumentFromFile("testFiles/reactome/definedSet.xml");
 			ReactomeDefinedSet res = parser.parseObject(document.getChildNodes().item(0));
@@ -71,7 +71,7 @@ public class ReactomeDefinedSetParserTest extends ReactomeTestFunctions {
 
 		} catch (Exception e) {
 			e.printStackTrace();
-			fail("Unknown exception");
+			throw e;
 		}
 	}
 
diff --git a/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeGenomeEncodedEntityParserTest.java b/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeGenomeEncodedEntityParserTest.java
index 5c914801dec205efc94031161938ea28a1d4aae2..5207b1d2903f382baf66e2ea6ce87392e6fb335a 100644
--- a/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeGenomeEncodedEntityParserTest.java
+++ b/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeGenomeEncodedEntityParserTest.java
@@ -2,10 +2,6 @@ package lcsb.mapviewer.reactome.xml;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
-import lcsb.mapviewer.reactome.ReactomeTestFunctions;
-import lcsb.mapviewer.reactome.model.ReactomeGenomeEncodedEntity;
-import lcsb.mapviewer.reactome.model.ReactomeStatus;
 
 import org.apache.log4j.Logger;
 import org.junit.After;
@@ -14,11 +10,15 @@ import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.w3c.dom.Document;
 
-public class ReactomeGenomeEncodedEntityParserTest extends ReactomeTestFunctions{
-	Logger logger = Logger.getLogger(ReactomeGenomeEncodedEntityParserTest.class);
+import lcsb.mapviewer.reactome.ReactomeTestFunctions;
+import lcsb.mapviewer.reactome.model.ReactomeGenomeEncodedEntity;
+import lcsb.mapviewer.reactome.model.ReactomeStatus;
+
+public class ReactomeGenomeEncodedEntityParserTest extends ReactomeTestFunctions {
+	Logger														logger = Logger.getLogger(ReactomeGenomeEncodedEntityParserTest.class);
 
 	@Autowired
-	ReactomeGenomeEncodedEntityParser parser = new ReactomeGenomeEncodedEntityParser();
+	ReactomeGenomeEncodedEntityParser	parser = new ReactomeGenomeEncodedEntityParser();
 
 	@Before
 	public void setUp() throws Exception {
@@ -29,40 +29,40 @@ public class ReactomeGenomeEncodedEntityParserTest extends ReactomeTestFunctions
 	}
 
 	@Test
-	public void testParseObject() {
+	public void testParseObject() throws Exception {
 		try {
 			Document document = getXmlDocumentFromFile("testFiles/reactome/genomeEncodedEntity.xml");
 			ReactomeGenomeEncodedEntity res = parser.parseObject(document.getChildNodes().item(0));
 			assertNotNull(res);
-			assertEquals((Integer)500674,res.getDbId());
-			assertEquals((Integer)500675,res.getCreated().getDbId());
-			assertEquals((Integer)500696,res.getModified().get(0).getDbId());
-			assertEquals((Integer)1106207,res.getStableIdentifier().getDbId());
-			assertEquals((Integer)876,res.getCompartments().get(0).getDbId());
-			assertEquals((Integer)48887,res.getSpecies().getDbId());
-			assertEquals("unidentified caspase acting on ZO-2",res.getNames().get(0));
+			assertEquals((Integer) 500674, res.getDbId());
+			assertEquals((Integer) 500675, res.getCreated().getDbId());
+			assertEquals((Integer) 500696, res.getModified().get(0).getDbId());
+			assertEquals((Integer) 1106207, res.getStableIdentifier().getDbId());
+			assertEquals((Integer) 876, res.getCompartments().get(0).getDbId());
+			assertEquals((Integer) 48887, res.getSpecies().getDbId());
+			assertEquals("unidentified caspase acting on ZO-2", res.getNames().get(0));
 		} catch (Exception e) {
 			e.printStackTrace();
-			fail("Unknown exception");
+			throw e;
 		}
 	}
 
 	@Test
-	public void testUpdateObjectFromDb() {
+	public void testUpdateObjectFromDb() throws Exception {
 		try {
 			Document document = getXmlDocumentFromFile("testFiles/reactome/genomeEncodedEntity.xml");
 			ReactomeGenomeEncodedEntity res = parser.parseObject(document.getChildNodes().item(0));
-			
+
 			rc.updateOnlyIdFields(res);
 			assertEquals(ReactomeStatus.FULL, res.getCreated().getStatus());
 			assertEquals(ReactomeStatus.FULL, res.getModified().get(0).getStatus());
 			assertEquals(ReactomeStatus.FULL, res.getStableIdentifier().getStatus());
 			assertEquals(ReactomeStatus.FULL, res.getCompartments().get(0).getStatus());
 			assertEquals(ReactomeStatus.FULL, res.getSpecies().getStatus());
-			
+
 		} catch (Exception e) {
 			e.printStackTrace();
-			fail("Unknown exception");
+			throw e;
 		}
 	}
 
diff --git a/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeOtherEntityParserTest.java b/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeOtherEntityParserTest.java
index 04731d17e018e6bb1c48594e9f91f929aef6be6a..ebffa145ef3a45c62cd70bd8ff1af363cd36e5fe 100644
--- a/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeOtherEntityParserTest.java
+++ b/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeOtherEntityParserTest.java
@@ -2,10 +2,6 @@ package lcsb.mapviewer.reactome.xml;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
-import lcsb.mapviewer.reactome.ReactomeTestFunctions;
-import lcsb.mapviewer.reactome.model.ReactomeOtherEntity;
-import lcsb.mapviewer.reactome.model.ReactomeStatus;
 
 import org.apache.log4j.Logger;
 import org.junit.After;
@@ -14,11 +10,15 @@ import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.w3c.dom.Document;
 
-public class ReactomeOtherEntityParserTest extends ReactomeTestFunctions{
-	Logger logger = Logger.getLogger(ReactomeOtherEntityParserTest.class);
+import lcsb.mapviewer.reactome.ReactomeTestFunctions;
+import lcsb.mapviewer.reactome.model.ReactomeOtherEntity;
+import lcsb.mapviewer.reactome.model.ReactomeStatus;
+
+public class ReactomeOtherEntityParserTest extends ReactomeTestFunctions {
+	Logger										logger = Logger.getLogger(ReactomeOtherEntityParserTest.class);
 
 	@Autowired
-	ReactomeOtherEntityParser parser ;
+	ReactomeOtherEntityParser	parser;
 
 	@Before
 	public void setUp() throws Exception {
@@ -29,42 +29,42 @@ public class ReactomeOtherEntityParserTest extends ReactomeTestFunctions{
 	}
 
 	@Test
-	public void testParseObject() {
+	public void testParseObject() throws Exception {
 		try {
 			Document document = getXmlDocumentFromFile("testFiles/reactome/otherEntity.xml");
 			ReactomeOtherEntity res = parser.parseObject(document.getChildNodes().item(0));
 			assertNotNull(res);
-			
-			assertEquals((Integer)29428, res.getDbId());
+
+			assertEquals((Integer) 29428, res.getDbId());
 			assertEquals("DNA [nucleoplasm]", res.getDisplayName());
-			assertEquals((Integer)77027, res.getCreated().getDbId());
-			assertEquals((Integer)368619, res.getStableIdentifier().getDbId());
-			assertEquals((Integer)7660, res.getCompartments().get(0).getDbId());
-			assertEquals((Integer)212290, res.getCrossReferences().get(0).getDbId());
+			assertEquals((Integer) 77027, res.getCreated().getDbId());
+			assertEquals((Integer) 368619, res.getStableIdentifier().getDbId());
+			assertEquals((Integer) 7660, res.getCompartments().get(0).getDbId());
+			assertEquals((Integer) 212290, res.getCrossReferences().get(0).getDbId());
 			assertEquals(2, res.getNames().size());
-			
+
 		} catch (Exception e) {
 			e.printStackTrace();
-			fail("Unknown exception");
+			throw e;
 		}
 	}
 
 	@Test
-	public void testUpdateObjectFromDb() {
+	public void testUpdateObjectFromDb() throws Exception {
 		try {
 			Document document = getXmlDocumentFromFile("testFiles/reactome/otherEntity.xml");
 			ReactomeOtherEntity res = parser.parseObject(document.getChildNodes().item(0));
-			
+
 			rc.updateOnlyIdFields(res);
 			assertEquals(ReactomeStatus.FULL, res.getStableIdentifier().getStatus());
 			assertEquals(ReactomeStatus.FULL, res.getCompartments().get(0).getStatus());
 			assertEquals(ReactomeStatus.FULL, res.getCrossReferences().get(0).getStatus());
 			assertEquals(ReactomeStatus.FULL, res.getModified().get(0).getStatus());
 			assertEquals(ReactomeStatus.FULL, res.getCreated().getStatus());
-			
+
 		} catch (Exception e) {
 			e.printStackTrace();
-			fail("Unknown exception");
+			throw e;
 		}
 	}
 
diff --git a/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomePathwayParserTest.java b/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomePathwayParserTest.java
index 4a2ba2564a742990635296963e0731898c7f93b1..3342858e30ffc049a5420347ba819931fa2d7ef3 100644
--- a/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomePathwayParserTest.java
+++ b/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomePathwayParserTest.java
@@ -28,7 +28,7 @@ public class ReactomePathwayParserTest extends ReactomeTestFunctions{
 	}
 
 	@Test
-	public void testParseObject() {
+	public void testParseObject() throws Exception {
 		try {
 			Document document = getXmlDocumentFromFile("testFiles/reactome/pathway.xml");
 			ReactomePathway res = parser.parseObject(document.getChildNodes().item(0));
@@ -50,7 +50,7 @@ public class ReactomePathwayParserTest extends ReactomeTestFunctions{
 			
 		} catch (Exception e) {
 			e.printStackTrace();
-			fail("Unknown exception");
+			throw e;
 		}
 	}
 	
@@ -65,7 +65,7 @@ public class ReactomePathwayParserTest extends ReactomeTestFunctions{
 	}
 
 	@Test
-	public void testUpdateObjectFromDb() {
+	public void testUpdateObjectFromDb() throws Exception {
 		try {
 			Document document = getXmlDocumentFromFile("testFiles/reactome/pathway.xml");
 			ReactomePathway res = parser.parseObject(document.getChildNodes().item(0));
@@ -83,7 +83,7 @@ public class ReactomePathwayParserTest extends ReactomeTestFunctions{
 			
 		} catch (Exception e) {
 			e.printStackTrace();
-			fail("Unknown exception");
+			throw e;
 		}
 	}
 
diff --git a/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceGeneProductParserTest.java b/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceGeneProductParserTest.java
index 968b26e27da333b23670d013a26311691ef453a7..826e059e5dca3b44653c9e9a17d216c10d821f40 100644
--- a/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceGeneProductParserTest.java
+++ b/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceGeneProductParserTest.java
@@ -51,7 +51,7 @@ public class ReactomeReferenceGeneProductParserTest extends ReactomeTestFunction
 
 			assertEquals((Integer) 2, res.getReferenceDatabase().getDbId());
 			assertEquals((Integer) 48895, res.getSpecies().getDbId());
-			assertEquals((Integer) 7493873, res.getReferenceGenes().get(0).getDbId());
+			assertEquals((Integer) 10030875, res.getReferenceGenes().get(0).getDbId());
 
 		} catch (Exception e) {
 			e.printStackTrace();
diff --git a/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceIsoformParserTest.java b/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceIsoformParserTest.java
index 036abdd22a66fa3f2913a7927de3ee7093d75d2c..2f3fba1e98c17bd5a83847a17f5348147729e955 100644
--- a/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceIsoformParserTest.java
+++ b/reactome/src/test/java/lcsb/mapviewer/reactome/xml/ReactomeReferenceIsoformParserTest.java
@@ -39,7 +39,7 @@ public class ReactomeReferenceIsoformParserTest extends ReactomeTestFunctions {
 			assertEquals((Integer) 2, res.getReferenceDatabase().getDbId());
 			assertEquals("false", res.getIsSequenceChanged());
 			assertEquals((Integer) 48887, res.getSpecies().getDbId());
-			assertEquals((Integer) 7493873, res.getReferenceGenes().get(0).getDbId());
+			assertEquals((Integer) 10030875, res.getReferenceGenes().get(0).getDbId());
 			assertEquals((Integer) 192971, res.getReferenceTranscripts().get(0).getDbId());
 			assertEquals((Integer) 402286, res.getIsoformParents().get(0).getDbId());
 			assertEquals("UniProt:P02545-1 LMNA", res.getDisplayName());
diff --git a/reactome/testFiles/reactome/candidateSet.out.xml b/reactome/testFiles/reactome/candidateSet.out.xml
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/reactome/testFiles/reactome/candidateSet.xml b/reactome/testFiles/reactome/candidateSet.xml
index 5189f9ef86e0b4d4e6183b2a4cfb158073e04de4..c19156e7e90caae2f6640c0b402c08bc7a038f48 100644
--- a/reactome/testFiles/reactome/candidateSet.xml
+++ b/reactome/testFiles/reactome/candidateSet.xml
@@ -24,7 +24,7 @@
 		<schemaClass>EntityCompartment</schemaClass>
 	</compartment>
 	<inferredTo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="candidateSet">
-		<dbId>162843</dbId>
+		<dbId>198809</dbId>
 		<displayName>GPAM or GPAT2 [intracellular]</displayName>
 		<schemaClass>CandidateSet</schemaClass>
 	</inferredTo>
diff --git a/reactome/testFiles/reactome/catalystActivity.xml b/reactome/testFiles/reactome/catalystActivity.xml
index 958153c07f83a171b538285e772ed9628eb26b24..32897e931c91804c5d8bad3fe2b376fc3f60d771 100644
--- a/reactome/testFiles/reactome/catalystActivity.xml
+++ b/reactome/testFiles/reactome/catalystActivity.xml
@@ -14,7 +14,7 @@
 		<schemaClass>GO_MolecularFunction</schemaClass>
 	</activity>
 	<physicalEntity xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="genomeEncodedEntity">
-		<dbId>162843</dbId>
+		<dbId>2160866</dbId>
 		<displayName>AGL [cytosol]</displayName>
 		<schemaClass>EntityWithAccessionedSequence</schemaClass>
 	</physicalEntity>
diff --git a/reactome/testFiles/reactome/cell_designer_references/reactomeInput1.xml b/reactome/testFiles/reactome/cell_designer_references/reactomeInput1.xml
index bc36311f62c2fd01333691c7d6b4a54ebd054c0b..644e56209892a23d2f9f6d621345d509303912c1 100644
--- a/reactome/testFiles/reactome/cell_designer_references/reactomeInput1.xml
+++ b/reactome/testFiles/reactome/cell_designer_references/reactomeInput1.xml
@@ -40,7 +40,7 @@
 	<name>L-Glutamic acid</name>
 	<name>L-Glutaminic acid</name>
 	<referenceEntity>
-		<dbId>114743</dbId>
+		<dbId>8943605</dbId>
 		<displayName>L-Glutamate [ChEBI:16015]</displayName>
 		<schemaClass>ReferenceMolecule</schemaClass>
 	</referenceEntity>
diff --git a/reactome/testFiles/reactome/definedSet.xml b/reactome/testFiles/reactome/definedSet.xml
index e447c5775a04eac3616629ad03a697c3e47b4268..10a7f419c2597a332e897aadcab1248b8bd1a1a3 100644
--- a/reactome/testFiles/reactome/definedSet.xml
+++ b/reactome/testFiles/reactome/definedSet.xml
@@ -24,57 +24,7 @@
 		<schemaClass>EntityCompartment</schemaClass>
 	</compartment>
 	<inferredTo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="definedSet">
-		<dbId>162843</dbId>
-		<displayName>((1,6)-alpha-glucosyl)poly((1,4)-alpha-glucosyl)glycogenin dimer [cytosol]</displayName>
-		<schemaClass>DefinedSet</schemaClass>
-	</inferredTo>
-	<inferredTo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="definedSet">
-		<dbId>3675056</dbId>
-		<displayName>((1,6)-alpha-glucosyl)poly((1,4)-alpha-glucosyl)glycogenin dimer [cytosol]</displayName>
-		<schemaClass>DefinedSet</schemaClass>
-	</inferredTo>
-	<inferredTo>
-		<dbId>3698315</dbId>
-		<displayName>((1,6)-alpha-glucosyl)poly((1,4)-alpha-glucosyl)glycogenin-1 dimer (name copied from entity in Homo sapiens) [cytosol]</displayName>
-		<schemaClass>Complex</schemaClass>
-	</inferredTo>
-	<inferredTo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="definedSet">
-		<dbId>3745417</dbId>
-		<displayName>((1,6)-alpha-glucosyl)poly((1,4)-alpha-glucosyl)glycogenin dimer [cytosol]</displayName>
-		<schemaClass>DefinedSet</schemaClass>
-	</inferredTo>
-	<inferredTo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="definedSet">
-		<dbId>3794661</dbId>
-		<displayName>((1,6)-alpha-glucosyl)poly((1,4)-alpha-glucosyl)glycogenin dimer [cytosol]</displayName>
-		<schemaClass>DefinedSet</schemaClass>
-	</inferredTo>
-	<inferredTo>
-		<dbId>3841962</dbId>
-		<displayName>((1,6)-alpha-glucosyl)poly((1,4)-alpha-glucosyl)glycogenin-1 dimer (name copied from entity in Homo sapiens) [cytosol]</displayName>
-		<schemaClass>Complex</schemaClass>
-	</inferredTo>
-	<inferredTo>
-		<dbId>3896793</dbId>
-		<displayName>((1,6)-alpha-glucosyl)poly((1,4)-alpha-glucosyl)glycogenin-1 dimer (name copied from entity in Homo sapiens) [cytosol]</displayName>
-		<schemaClass>Complex</schemaClass>
-	</inferredTo>
-	<inferredTo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="definedSet">
-		<dbId>3946296</dbId>
-		<displayName>((1,6)-alpha-glucosyl)poly((1,4)-alpha-glucosyl)glycogenin dimer [cytosol]</displayName>
-		<schemaClass>DefinedSet</schemaClass>
-	</inferredTo>
-	<inferredTo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="definedSet">
-		<dbId>3992073</dbId>
-		<displayName>((1,6)-alpha-glucosyl)poly((1,4)-alpha-glucosyl)glycogenin dimer [cytosol]</displayName>
-		<schemaClass>DefinedSet</schemaClass>
-	</inferredTo>
-	<inferredTo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="definedSet">
-		<dbId>4028294</dbId>
-		<displayName>((1,6)-alpha-glucosyl)poly((1,4)-alpha-glucosyl)glycogenin dimer [cytosol]</displayName>
-		<schemaClass>DefinedSet</schemaClass>
-	</inferredTo>
-	<inferredTo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="definedSet">
-		<dbId>4076351</dbId>
+		<dbId>9178869</dbId>
 		<displayName>((1,6)-alpha-glucosyl)poly((1,4)-alpha-glucosyl)glycogenin dimer [cytosol]</displayName>
 		<schemaClass>DefinedSet</schemaClass>
 	</inferredTo>
diff --git a/reactome/testFiles/reactome/reaction.xml b/reactome/testFiles/reactome/reaction.xml
index 1f3cc150a2c04a05d3ef73a99cb61ded80b467b8..0566cadb34ed147e2329f81555ac93a3410eea0f 100644
--- a/reactome/testFiles/reactome/reaction.xml
+++ b/reactome/testFiles/reactome/reaction.xml
@@ -73,7 +73,7 @@
 		<schemaClass>CatalystActivity</schemaClass>
 	</catalystActivity>
 	<input xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="complex">
-		<dbId>162843</dbId>
+		<dbId>434005</dbId>
 		<displayName>((1,6)-alpha-glucosyl)poly((1,4)-alpha-glucosyl)glycogenin-1 dimer (name copied from entity in Homo sapiens) [cytosol]</displayName>
 		<schemaClass>Complex</schemaClass>
 	</input>
diff --git a/reactome/testFiles/reactome/referenceGeneProduct.xml b/reactome/testFiles/reactome/referenceGeneProduct.xml
index c025d910f363e6ef96f41258cbb9114a26ddf029..e60c7b6e11dab210f8bd69b9a2e53357d6790b7f 100644
--- a/reactome/testFiles/reactome/referenceGeneProduct.xml
+++ b/reactome/testFiles/reactome/referenceGeneProduct.xml
@@ -20,7 +20,7 @@
 		<schemaClass>Species</schemaClass>
 	</species>
 	<referenceGene>
-		<dbId>7493873</dbId>
+		<dbId>10030875</dbId>
 		<displayName>ENSEMBL:DDB_G0292748</displayName>
 		<schemaClass>ReferenceDNASequence</schemaClass>
 	</referenceGene>
diff --git a/reactome/testFiles/reactome/referenceIsoform.xml b/reactome/testFiles/reactome/referenceIsoform.xml
index 213c168a9d3f78f0f6eab4b0871e349e2d7df2ea..f5286c171ff1445989e840c9fd6c8c5387e29825 100644
--- a/reactome/testFiles/reactome/referenceIsoform.xml
+++ b/reactome/testFiles/reactome/referenceIsoform.xml
@@ -382,7 +382,7 @@
 		<schemaClass>Species</schemaClass>
 	</species>
 	<referenceGene>
-		<dbId>7493873</dbId>
+		<dbId>10030875</dbId>
 		<displayName>ENSEMBL:ENSG00000160789</displayName>
 		<schemaClass>ReferenceDNASequence</schemaClass>
 	</referenceGene>
diff --git a/reactome/testFiles/small/bcl2l11_2.xml b/reactome/testFiles/small/bcl2l11_2.xml
index 0b6f089508fbe62bc3488d63f47537c8ceb29c0f..966edf62e0c8296da10eecc4967660147d1b927c 100644
--- a/reactome/testFiles/small/bcl2l11_2.xml
+++ b/reactome/testFiles/small/bcl2l11_2.xml
@@ -89,135 +89,6 @@ Also known as BAM; BIM; BOD; BimL; BimEL; BIM-beta6; BIM-beta7; BIM-alpha6
 <title/>
 </head>
 <body>
-<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#">
-<rdf:Description rdf:about="#s1586">
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_001191041.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_001191042.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_001191040.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_001191036.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:reactome:REACT_4625"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_619533.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_996885.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_619527.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:kegg.genes:hsa%3A10018"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_619528.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_619531.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_996886.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_001191039.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:hgnc:994"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pharmgkb.pathways:PA25305"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_006529.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_619532.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_619529.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_001191037.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:ncbigene:10018"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_001191038.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_619530.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:reactome:REACT_4162.2"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_001191035.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:kegg.genes:hsa:10018"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-</rdf:Description>
-</rdf:RDF>
 </body>
 </html>
 </notes>
diff --git a/reactome/testFiles/small/bid.xml b/reactome/testFiles/small/bid.xml
index 5a6f38689e24dae165e9cebb07c96f4e055e91f7..b1394ca4ace69d4bcbd49f746422b274a0308dc6 100644
--- a/reactome/testFiles/small/bid.xml
+++ b/reactome/testFiles/small/bid.xml
@@ -81,95 +81,6 @@
 <title/>
 </head>
 <body>
-<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#">
-<rdf:Description rdf:about="#s2119">
-<bqbiol:isDescribedBy>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pubmed:8918887"/>
-</rdf:Bag>
-</bqbiol:isDescribedBy>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_001231496.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:ncbigene:637"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:isVersionOf>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pubmed:9721221"/>
-</rdf:Bag>
-</bqbiol:isVersionOf>
-<bqbiol:isVersionOf>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pubmed:8918887"/>
-</rdf:Bag>
-</bqbiol:isVersionOf>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_932070.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:reactome:REACT_3925"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:reactome:REACT_3859.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_001231499.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_001231498.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_932071.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_001187.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:kegg.genes:hsa:637"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:hgnc:1050"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_001231501.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:kegg.genes:hsa%3A637"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:isDescribedBy>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pubmed:9721221"/>
-</rdf:Bag>
-</bqbiol:isDescribedBy>
-</rdf:Description>
-</rdf:RDF>
 </body>
 </html>
 </notes>
diff --git a/reactome/testFiles/small/dffb.xml b/reactome/testFiles/small/dffb.xml
index 2b255e9f08045469f1fe640e50e2285f2c70a7a1..ca629cb158c68c2be58475db6324d1dd5462f2ed 100644
--- a/reactome/testFiles/small/dffb.xml
+++ b/reactome/testFiles/small/dffb.xml
@@ -77,70 +77,6 @@
 <title/>
 </head>
 <body>
-<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#">
-<rdf:Description rdf:about="#s2367">
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pharmgkb.pathways:PA27255"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:reactome:REACT_14011"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:kegg.genes:hsa%3A1677"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:isDescribedBy>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pubmed:9108473"/>
-</rdf:Bag>
-</bqbiol:isDescribedBy>
-<bqbiol:isVersionOf>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pubmed:9108473"/>
-</rdf:Bag>
-</bqbiol:isVersionOf>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:reactome:REACT_13308.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:isVersionOf>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pubmed:9560346"/>
-</rdf:Bag>
-</bqbiol:isVersionOf>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_004393.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:hgnc:2773"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:isDescribedBy>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pubmed:9560346"/>
-</rdf:Bag>
-</bqbiol:isDescribedBy>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:kegg.genes:hsa:1677"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:ncbigene:1677"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-</rdf:Description>
-</rdf:RDF>
 </body>
 </html>
 </notes>
diff --git a/reactome/testFiles/small/diablo_xiap_casp9.xml b/reactome/testFiles/small/diablo_xiap_casp9.xml
index 168bbb630e51e7936224b7017789a255076e1485..29d0f0767382e477c45a749ac5f6993866bd9431 100644
--- a/reactome/testFiles/small/diablo_xiap_casp9.xml
+++ b/reactome/testFiles/small/diablo_xiap_casp9.xml
@@ -443,225 +443,6 @@ X-linked inhibitor of apoptosis
 <title/>
 </head>
 <body>
-<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#">
-<rdf:Description rdf:about="#s316">
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:hgnc:592"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:isVersionOf>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pubmed:21722859"/>
-</rdf:Bag>
-</bqbiol:isVersionOf>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:kegg.genes:hsa:842"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:isVersionOf>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pubmed:8663294"/>
-</rdf:Bag>
-</bqbiol:isVersionOf>
-<bqbiol:isVersionOf>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pubmed:17237824"/>
-</rdf:Bag>
-</bqbiol:isVersionOf>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:hgnc:1511"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:ncbigene:842"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_001220.2"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:panther.family:PTHR10454"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:isDescribedBy>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pubmed:9390557"/>
-</rdf:Bag>
-</bqbiol:isDescribedBy>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:ncbigene:56616"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pharmgkb.pathways:PA26094"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_127463.2"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:hgnc:21528"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:panther.family%3APept_C14_p45"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_001158.2"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:reactome:REACT_4472.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:kegg.genes:hsa%3A331"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:isDescribedBy>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pubmed:21722859"/>
-</rdf:Bag>
-</bqbiol:isDescribedBy>
-<bqbiol:isDescribedBy>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pubmed:8663294"/>
-</rdf:Bag>
-</bqbiol:isDescribedBy>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pharmgkb.pathways:PA162409317"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:isDescribedBy>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pubmed:8552191"/>
-</rdf:Bag>
-</bqbiol:isDescribedBy>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:kegg.genes:hsa%3A842"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:reactome:REACT_5327"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:isDescribedBy>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pubmed:8654366"/>
-</rdf:Bag>
-</bqbiol:isDescribedBy>
-<bqbiol:isVersionOf>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pubmed:9390557"/>
-</rdf:Bag>
-</bqbiol:isVersionOf>
-<bqbiol:isVersionOf>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pubmed:12749848"/>
-</rdf:Bag>
-</bqbiol:isVersionOf>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_620307.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:kegg.genes:hsa:56616"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:isDescribedBy>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pubmed:17237824"/>
-</rdf:Bag>
-</bqbiol:isDescribedBy>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:reactome:REACT_5246"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:panther.family:Pept_C14_p45"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:ncbigene:331"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:kegg.genes:hsa%3A56616"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:isVersionOf>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pubmed:8654366"/>
-</rdf:Bag>
-</bqbiol:isVersionOf>
-<bqbiol:isDescribedBy>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pubmed:12749848"/>
-</rdf:Bag>
-</bqbiol:isDescribedBy>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:panther.family%3APTHR10454"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:kegg.genes:hsa:331"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:reactome:REACT_5499"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_063940.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:isVersionOf>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pubmed:8552191"/>
-</rdf:Bag>
-</bqbiol:isVersionOf>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_001191330.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pharmgkb.pathways:PA25361"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-</rdf:Description>
-</rdf:RDF>
 </body>
 </html>
 </notes>
diff --git a/reactome/testFiles/small/pcca_pccb_complex.xml b/reactome/testFiles/small/pcca_pccb_complex.xml
index 47a40d0e68282ae4e1af26f492365802cc685b00..627441cc7a1fe044288797bab35251d625aefdbd 100644
--- a/reactome/testFiles/small/pcca_pccb_complex.xml
+++ b/reactome/testFiles/small/pcca_pccb_complex.xml
@@ -302,105 +302,6 @@ Synonyms:
 <title/>
 </head>
 <body>
-<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#">
-<rdf:Description rdf:about="#s697">
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:reactome:REACT_3494"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:reactome:REACT_5676.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:reactome:REACT_3001.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:kegg.genes:hsa:5096"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:reactome:REACT_3612.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:kegg.genes:hsa:5095"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqmodel:is>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:entrez.gene:5096"/>
-</rdf:Bag>
-</bqmodel:is>
-<bqmodel:is>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:entrez.gene:5095"/>
-</rdf:Bag>
-</bqmodel:is>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_000273.2"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:reactome:REACT_3520.3"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_000523.2"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:hgnc:8653"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:reactome:REACT_5849"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_001121164.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:hgnc:8654"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:reactome:REACT_3494.2"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:ncbigene:5095"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:reactome:REACT_5849.2"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:ncbigene:5096"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-</rdf:Description>
-</rdf:RDF>
 </body>
 </html>
 </notes>
diff --git a/reactome/testFiles/small/pdp1_complex.xml b/reactome/testFiles/small/pdp1_complex.xml
index 7d496e395469ab2ec9bf5928a800abc5f4a33478..532f2dbeb8f2af37aa08143283635c001b233b16 100644
--- a/reactome/testFiles/small/pdp1_complex.xml
+++ b/reactome/testFiles/small/pdp1_complex.xml
@@ -364,95 +364,6 @@ pyruvate dehydrogenase phosphatase regulatory subunit
 <title/>
 </head>
 <body>
-<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#">
-<rdf:Description rdf:about="#s191">
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_001155251.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:panther.family%3APTHR13832"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pharmgkb.pathways:PA33607"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_060914.2"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_001155252.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:isDescribedBy>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pubmed:16464866"/>
-</rdf:Bag>
-</bqbiol:isDescribedBy>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:kegg.genes:hsa:54704"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_001155253.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:hgnc:23682"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_001155250.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:isVersionOf>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:pubmed:16464866"/>
-</rdf:Bag>
-</bqbiol:isVersionOf>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:panther.family:PP2C"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:kegg.genes:hsa%3A54704"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:ncbigene:54704"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:panther.family:PTHR13832"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:reactome:REACT_13253"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:panther.family%3APP2C"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-</rdf:Description>
-</rdf:RDF>
 </body>
 </html>
 </notes>
diff --git a/reactome/testFiles/small/prkacb.xml b/reactome/testFiles/small/prkacb.xml
index 10728c61d5b83c87bee230bd0d8e727a616e4aa9..94a285e5c5f1bc06c658db7d72db4009049ca617 100644
--- a/reactome/testFiles/small/prkacb.xml
+++ b/reactome/testFiles/small/prkacb.xml
@@ -89,90 +89,6 @@ also known as PKACB; MGC9320; MGC41879; DKFZp781I2452; PKA
 <title/>
 </head>
 <body>
-<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#">
-<rdf:Description rdf:about="#s1908">
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_001229791.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:ncbigene:5567"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_002722.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:reactome:REACT_4811.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:reactome:REACT_4811"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:hgnc:9381"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_001229790.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:kegg.genes:hsa%3A5567"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_891993.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_997461.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_001229787.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqmodel:is>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:entrez.gene:5567"/>
-</rdf:Bag>
-</bqmodel:is>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_001229788.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:kegg.genes:hsa:5567"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_001229789.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-<bqbiol:hasVersion>
-<rdf:Bag>
-<rdf:li rdf:resource="urn:miriam:refseq:NP_001229786.1"/>
-</rdf:Bag>
-</bqbiol:hasVersion>
-</rdf:Description>
-</rdf:RDF>
 </body>
 </html>
 </notes>
diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/ObjectNotFoundException.java b/rest-api/src/main/java/lcsb/mapviewer/api/ObjectNotFoundException.java
index 907d839df8494dcb46b12c4bba327ee996c79d84..01f2b9e676246c25761df7cbf3d5409d320cba96 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/ObjectNotFoundException.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/ObjectNotFoundException.java
@@ -2,6 +2,11 @@ package lcsb.mapviewer.api;
 
 public class ObjectNotFoundException extends QueryException {
 
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
 	public ObjectNotFoundException(String message) {
 		super(message);
 	}
diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/QueryException.java b/rest-api/src/main/java/lcsb/mapviewer/api/QueryException.java
index 6e5ea787241dc773cad190cc4bb4875a2b31c01a..c048dfbdabff1b447b88ae1f7161c813791fc43f 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/QueryException.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/QueryException.java
@@ -2,6 +2,11 @@ package lcsb.mapviewer.api;
 
 public class QueryException extends Exception {
 
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
 	public QueryException(String message) {
 		super(message);
 	}
diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/configuration/ConfigurationRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/configuration/ConfigurationRestImpl.java
index 7d5a66c649974cef99f0cad3037a7f4be34cd375..8ce9ac5c13a0b268c57ec0f0b1a6c004aec3a075 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/configuration/ConfigurationRestImpl.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/configuration/ConfigurationRestImpl.java
@@ -34,6 +34,10 @@ import lcsb.mapviewer.services.view.ConfigurationView;
 
 @Transactional(value = "txManager")
 public class ConfigurationRestImpl {
+	/**
+	 * Default class logger.
+	 */
+	@SuppressWarnings("unused")
 	private Logger								logger = Logger.getLogger(ConfigurationRestImpl.class);
 
 	@Autowired
diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/genomics/ReferenceGenomeRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/genomics/ReferenceGenomeRestImpl.java
index 9f8555638b7916d51c90453d4ae3f2718e3428e7..fc7c4f7ab211e029e9a3573021b9e39976fd238d 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/genomics/ReferenceGenomeRestImpl.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/genomics/ReferenceGenomeRestImpl.java
@@ -17,6 +17,10 @@ import lcsb.mapviewer.services.view.ReferenceGenomeView;
 @Transactional(value = "txManager")
 public class ReferenceGenomeRestImpl {
 
+	/**
+	 * Default class logger.
+	 */
+	@SuppressWarnings("unused")
 	private Logger									logger = Logger.getLogger(ReferenceGenomeRestImpl.class);
 
 	@Autowired
diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectController.java b/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectController.java
index c96698f1cffafc53ec942c1f3c30f38691c55159..210965c35403a58b0c55de6db4b4514918cfc079 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectController.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectController.java
@@ -17,6 +17,7 @@ import lcsb.mapviewer.api.QueryException;
 import lcsb.mapviewer.commands.CommandExecutionException;
 import lcsb.mapviewer.common.Configuration;
 import lcsb.mapviewer.converter.ConverterException;
+import lcsb.mapviewer.converter.graphics.DrawingException;
 import lcsb.mapviewer.model.cache.FileEntry;
 import lcsb.mapviewer.model.map.InconsistentModelException;
 import lcsb.mapviewer.model.map.layout.InvalidColorSchemaException;
@@ -64,7 +65,7 @@ public class ProjectController extends BaseController {
 			@RequestParam(value = "overlayIds", defaultValue = "") String overlayIds, //
 			@RequestParam(value = "zoomLevel", defaultValue = "") String zoomLevel, //
 			@RequestParam(value = "polygonString", defaultValue = "") String polygonString//
-	) throws SecurityException, QueryException, IOException, InvalidColorSchemaException, CommandExecutionException {
+	) throws SecurityException, QueryException, IOException, InvalidColorSchemaException, CommandExecutionException, DrawingException {
 
 		FileEntry file = projectController.getModelAsImage(token, projectId, modelId, handlerClass, backgroundOverlayId, overlayIds, zoomLevel, polygonString);
 		MediaType type = MediaType.APPLICATION_OCTET_STREAM;
diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectMetaData.java b/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectMetaData.java
index 1be0b0250fb4044c9e0b6be62bab0959e70f8a97..888841e373e35431f3df2065839d00ce63c5563b 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectMetaData.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectMetaData.java
@@ -10,6 +10,10 @@ import lcsb.mapviewer.services.view.OverviewImageView;
 
 public class ProjectMetaData implements Serializable {
 
+	/**
+	 * Default class logger.
+	 */
+	@SuppressWarnings("unused")
 	private static Logger						logger					 = Logger.getLogger(ProjectMetaData.class);
 
 	/**
diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java
index 1f5526d0370ff3831445b04e5a2d1af8f2437ee5..e3af0cc8b1d664d089df5057ccacfcecc541cdfb 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java
@@ -19,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
 import lcsb.mapviewer.api.BaseRestImpl;
+import lcsb.mapviewer.api.ObjectNotFoundException;
 import lcsb.mapviewer.api.QueryException;
 import lcsb.mapviewer.api.projects.models.publications.PublicationsRestImpl;
 import lcsb.mapviewer.commands.ClearColorModelCommand;
@@ -26,11 +27,13 @@ import lcsb.mapviewer.commands.ColorExtractor;
 import lcsb.mapviewer.commands.ColorModelCommand;
 import lcsb.mapviewer.commands.CommandExecutionException;
 import lcsb.mapviewer.commands.CopyCommand;
+import lcsb.mapviewer.commands.SetFixedHierarchyLevelCommand;
 import lcsb.mapviewer.commands.SubModelCommand;
 import lcsb.mapviewer.common.Configuration;
 import lcsb.mapviewer.converter.ConverterException;
 import lcsb.mapviewer.converter.IConverter;
 import lcsb.mapviewer.converter.graphics.AbstractImageGenerator.Params;
+import lcsb.mapviewer.converter.graphics.DrawingException;
 import lcsb.mapviewer.converter.graphics.ImageGenerators;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
 import lcsb.mapviewer.converter.model.sbgnml.SbgnmlXmlConverter;
@@ -45,7 +48,6 @@ import lcsb.mapviewer.model.map.layout.ColorSchema;
 import lcsb.mapviewer.model.map.layout.InvalidColorSchemaException;
 import lcsb.mapviewer.model.map.layout.Layout;
 import lcsb.mapviewer.model.map.model.Model;
-import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.user.User;
 import lcsb.mapviewer.services.SecurityException;
 import lcsb.mapviewer.services.interfaces.ILayoutService;
@@ -71,7 +73,10 @@ public class ProjectRestImpl extends BaseRestImpl {
 	 */
 	private static final int				 PATH_ITERATOR_SEGMENT_SIZE	= 6;
 
-	Logger													 logger											= Logger.getLogger(ProjectRestImpl.class);
+	/**
+	 * Default class logger.
+	 */
+	private Logger									 logger											= Logger.getLogger(ProjectRestImpl.class);
 
 	@Autowired
 	private IUserService						 userService;
@@ -211,47 +216,51 @@ public class ProjectRestImpl extends BaseRestImpl {
 	}
 
 	public FileEntry getModelAsImage(String token, String projectId, String modelId, String handlerClass, String backgroundOverlayId, String overlayIds,
-			String zoomLevel, String polygonString) throws SecurityException, QueryException, IOException, InvalidColorSchemaException, CommandExecutionException {
+			String zoomLevel, String polygonString)
+			throws SecurityException, QueryException, IOException, InvalidColorSchemaException, CommandExecutionException, DrawingException {
 		AuthenticationToken authenticationToken = userService.getToken(token);
 		User user = userService.getUserByToken(authenticationToken);
 
 		Model topModel = modelService.getLastModelByProjectId(projectId, authenticationToken);
 		if (topModel == null) {
-			throw new QueryException("Project with given id doesn't exist");
+			throw new ObjectNotFoundException("Project with given id doesn't exist");
 		}
 
 		Model originalModel = topModel.getSubmodelById(modelId);
 
 		if (originalModel == null) {
-			throw new QueryException("Model with given id doesn't exist");
+			throw new ObjectNotFoundException("Model with given id doesn't exist");
 		}
 
-		Layout layout = null;
+		Layout overlay = null;
 		if (!backgroundOverlayId.equals("")) {
-			layout = topModel.getLayoutByIdentifier(Integer.valueOf(backgroundOverlayId));
+			overlay = topModel.getLayoutByIdentifier(Integer.valueOf(backgroundOverlayId));
 
-			if (layout == null) {
-				throw new QueryException("Unknown layout in model. Layout.id=" + backgroundOverlayId);
+			if (overlay == null) {
+				throw new ObjectNotFoundException("Unknown overlay in model. Layout.id=" + backgroundOverlayId);
+			}
+		} else {
+			if (topModel.getLayouts().size() > 0) {
+				overlay = topModel.getLayouts().get(0);
 			}
 		}
 
 		Model colorModel = new CopyCommand(originalModel).execute();
-		if (layout != null) {
-			if (layout.getInputData() != null) {
+		if (overlay != null) {
+			if (overlay.getInputData() != null) {
 				ColorSchemaReader reader = new ColorSchemaReader();
-				Collection<ColorSchema> schemas = reader.readColorSchema(layout.getInputData().getFileContent());
+				Collection<ColorSchema> schemas = reader.readColorSchema(overlay.getInputData().getFileContent());
 
 				new ColorModelCommand(colorModel, schemas, userService.getColorExtractorForUser(user)).execute();
-			} else if (layout.getTitle().equals(BuildInLayout.CLEAN.getTitle())) {
+			} else if (overlay.getTitle().equals(BuildInLayout.CLEAN.getTitle())) {
 				// this might not return true if we change CLEAN.title in future...
 
 				// if it's clean then remove coloring
 				new ClearColorModelCommand(colorModel).execute();
+			} else if (overlay.isHierarchicalView()) {
+				new SetFixedHierarchyLevelCommand(colorModel, overlay.getHierarchyViewLevel()).execute();
 			}
 		}
-		for (Element alias : colorModel.getElements()) {
-			alias.setVisibilityLevel(0);
-		}
 
 		Integer level = Configuration.MIN_ZOOM_LEVEL;
 		if (!zoomLevel.equals("")) {
@@ -296,13 +305,16 @@ public class ProjectRestImpl extends BaseRestImpl {
 				y(minY).//
 				height((maxY - minY) / scale).//
 				width((maxX - minX) / scale).//
-				level(level).//
+				level(level - Configuration.MIN_ZOOM_LEVEL).//
 				nested(false).// automatically set nested view as invalid
 				scale(scale).//
 				minColor(colorExtractor.getMinColor()).//
 				maxColor(colorExtractor.getMaxColor()).//
 				sbgn(topModel.getProject().isSbgnFormat()).//
 				model(colorModel);
+		if (overlay != null) {
+			params.nested(overlay.isHierarchicalView());
+		}
 		List<Integer> visibleLayoutIds = deserializeIdList(overlayIds);
 		for (Integer integer : visibleLayoutIds) {
 			Map<Object, ColorSchema> map = layoutService.getElementsForLayout(colorModel, integer, authenticationToken);
diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/projects/chemicals/ChemicalRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/projects/chemicals/ChemicalRestImpl.java
index 44ae84835382be992117fef7e7045b8c42972988..2bcaad3cc753560475def709009d4dccb2d2a771 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/projects/chemicals/ChemicalRestImpl.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/projects/chemicals/ChemicalRestImpl.java
@@ -37,7 +37,11 @@ import lcsb.mapviewer.services.view.AuthenticationToken;
 @Transactional(value = "txManager")
 public class ChemicalRestImpl {
 
-	Logger									 logger	= Logger.getLogger(ChemicalRestImpl.class);
+	/**
+	 * Default class logger.
+	 */
+	@SuppressWarnings("unused")
+	private Logger									 logger	= Logger.getLogger(ChemicalRestImpl.class);
 
 	@Autowired
 	private IChemicalService chemicalService;
@@ -70,7 +74,8 @@ public class ChemicalRestImpl {
 		if (organism == null) {
 			organism = TaxonomyBackend.HUMAN_TAXONOMY;
 		}
-		ChemicalView chemical = chemicalService.getByName(query, new DbSearchCriteria().model(model).organisms(organism).colorSet(0).disease(project.getDisease()));
+		ChemicalView chemical = chemicalService
+				.getByName(query, new DbSearchCriteria().model(model).organisms(organism).colorSet(0).disease(project.getDisease()));
 		if (chemical != null) {
 			List<Model> models = getModels(model);
 			result.add(prepareChemical(chemical, columnSet, models));
@@ -172,7 +177,7 @@ public class ChemicalRestImpl {
 
 		List<Map<String, Object>> targetedObjects = new ArrayList<>();
 		for (Model model : models) {
-			for (BioEntity object : model.getAnnotatedObjects()) {
+			for (BioEntity object : model.getBioEntities()) {
 				if (elementMatcher.elementMatch(target, object)) {
 					Map<String, Object> elementMapping = new HashMap<>();
 
@@ -271,7 +276,8 @@ public class ChemicalRestImpl {
 
 		Set<String> columnSet = createChemicalColumnSet(columns);
 
-		List<ChemicalView> chemicals = chemicalService.getForTargets(targets, new DbSearchCriteria().model(model).organisms(organism).disease(project.getDisease()));
+		List<ChemicalView> chemicals = chemicalService
+				.getForTargets(targets, new DbSearchCriteria().model(model).organisms(organism).disease(project.getDisease()));
 
 		List<Map<String, Object>> result = new ArrayList<>();
 
diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/projects/comments/CommentRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/projects/comments/CommentRestImpl.java
index f4fbd153e16d2ee6ca68e184c015db93ffde0348..c6b2b110437783400053257b91abc2c48894ca2c 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/projects/comments/CommentRestImpl.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/projects/comments/CommentRestImpl.java
@@ -34,7 +34,10 @@ import lcsb.mapviewer.services.view.AuthenticationToken;
 @Transactional(value = "txManager")
 public class CommentRestImpl extends BaseRestImpl {
 
-	Logger									logger = Logger.getLogger(CommentRestImpl.class);
+	/**
+	 * Default class logger.
+	 */
+	private Logger									logger = Logger.getLogger(CommentRestImpl.class);
 
 	@Autowired
 	private IUserService		userService;
diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/projects/drugs/DrugRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/projects/drugs/DrugRestImpl.java
index 2e779e826199aba1ba677284b1277ef132789c8e..fd2457e4f9fbcdd3c023c1862da824043f16dff3 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/projects/drugs/DrugRestImpl.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/projects/drugs/DrugRestImpl.java
@@ -37,7 +37,11 @@ import lcsb.mapviewer.services.view.AuthenticationToken;
 @Transactional(value = "txManager")
 public class DrugRestImpl {
 
-	Logger								 logger	= Logger.getLogger(DrugRestImpl.class);
+	/**
+	 * Default class logger.
+	 */
+	@SuppressWarnings("unused")
+	private Logger								 logger	= Logger.getLogger(DrugRestImpl.class);
 
 	@Autowired
 	private IDrugService	 drugService;
@@ -166,7 +170,7 @@ public class DrugRestImpl {
 
 		List<Map<String, Object>> targetedObjects = new ArrayList<>();
 		for (Model model : models) {
-			for (BioEntity object : model.getAnnotatedObjects()) {
+			for (BioEntity object : model.getBioEntities()) {
 				if (elementMatcher.elementMatch(target, object)) {
 					Map<String, Object> elementMapping = new HashMap<>();
 
diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/projects/mirnas/MiRnaRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/projects/mirnas/MiRnaRestImpl.java
index 8ef791e3adbc2e1f57977edf1ab946276804db74..6054b7bc204fccbf70396800a958abd671779c5a 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/projects/mirnas/MiRnaRestImpl.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/projects/mirnas/MiRnaRestImpl.java
@@ -37,19 +37,23 @@ import lcsb.mapviewer.services.view.AuthenticationToken;
 @Transactional(value = "txManager")
 public class MiRnaRestImpl {
 
-	Logger									 logger	= Logger.getLogger(MiRnaRestImpl.class);
+	/**
+	 * Default class logger.
+	 */
+	@SuppressWarnings("unused")
+	private Logger				 logger	= Logger.getLogger(MiRnaRestImpl.class);
 
 	@Autowired
-	private IMiRNAService miRnaService;
+	private IMiRNAService	 miRnaService;
 
 	@Autowired
-	private IModelService		 modelService;
+	private IModelService	 modelService;
 
 	@Autowired
-	private IUserService		 userService;
+	private IUserService	 userService;
 
 	@Autowired
-	private ElementMatcher	 elementMatcher;
+	private ElementMatcher elementMatcher;
 
 	public List<Map<String, Object>> getMiRnasByQuery(String token, String projectId, String columns, String query) throws SecurityException, QueryException {
 		AuthenticationToken authenticationToken = userService.getToken(token);
@@ -159,7 +163,7 @@ public class MiRnaRestImpl {
 
 		List<Map<String, Object>> targetedObjects = new ArrayList<>();
 		for (Model model : models) {
-			for (BioEntity object : model.getAnnotatedObjects()) {
+			for (BioEntity object : model.getBioEntities()) {
 				if (elementMatcher.elementMatch(target, object)) {
 					Map<String, Object> elementMapping = new HashMap<>();
 
diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/projects/models/bioEntities/elements/ElementsRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/projects/models/bioEntities/elements/ElementsRestImpl.java
index f56a18d60165502baa922eceaf7582174e827c41..bf3a78dd78cf028390517c5a86ea342d423ad51f 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/projects/models/bioEntities/elements/ElementsRestImpl.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/projects/models/bioEntities/elements/ElementsRestImpl.java
@@ -24,13 +24,17 @@ import lcsb.mapviewer.services.view.OverviewImageViewFactory;
 @Transactional(value = "txManager")
 public class ElementsRestImpl extends BaseRestImpl {
 
-	Logger													 logger	= Logger.getLogger(ElementsRestImpl.class);
+	/**
+	 * Default class logger.
+	 */
+	@SuppressWarnings("unused")
+	private Logger									 logger	= Logger.getLogger(ElementsRestImpl.class);
 
 	@Autowired
 	private IModelService						 modelService;
 
 	@Autowired
-	AnnotationViewFactory						 annotationViewFactory;
+	private AnnotationViewFactory		 annotationViewFactory;
 
 	@Autowired
 	private OverviewImageViewFactory factory;
diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/projects/models/bioEntities/reactions/ReactionsRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/projects/models/bioEntities/reactions/ReactionsRestImpl.java
index 316ee7a163264fd60c65d44e467276de920666d3..5b42bc01c7bda32b3d8e26289c448b688c2f49db 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/projects/models/bioEntities/reactions/ReactionsRestImpl.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/projects/models/bioEntities/reactions/ReactionsRestImpl.java
@@ -24,12 +24,15 @@ import lcsb.mapviewer.services.UserAccessException;
 import lcsb.mapviewer.services.interfaces.IModelService;
 import lcsb.mapviewer.services.interfaces.IUserService;
 import lcsb.mapviewer.services.search.data.LightReactionView;
-import lcsb.mapviewer.services.view.AnnotationViewFactory;
 
 @Transactional(value = "txManager")
 public class ReactionsRestImpl extends BaseRestImpl {
 
-	Logger								logger = Logger.getLogger(ReactionsRestImpl.class);
+	/**
+	 * Default class logger.
+	 */
+	@SuppressWarnings("unused")
+	private Logger				logger = Logger.getLogger(ReactionsRestImpl.class);
 
 	@Autowired
 	private IUserService	userService;
@@ -37,9 +40,6 @@ public class ReactionsRestImpl extends BaseRestImpl {
 	@Autowired
 	private IModelService	modelService;
 
-	@Autowired
-	AnnotationViewFactory	annotationViewFactory;
-
 	/**
 	 * @return the userService
 	 * @see #userService
diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/projects/models/publications/PublicationsRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/projects/models/publications/PublicationsRestImpl.java
index 23184a3296e13b26ce6e4b3f4407006d9eb1a6e3..978409168d1f5d1bded12e0d7ccec98c7a4c2ef9 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/projects/models/publications/PublicationsRestImpl.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/projects/models/publications/PublicationsRestImpl.java
@@ -32,7 +32,10 @@ import lcsb.mapviewer.services.view.OverviewImageViewFactory;
 @Transactional(value = "txManager")
 public class PublicationsRestImpl extends BaseRestImpl {
 
-	Logger													 logger	= Logger.getLogger(PublicationsRestImpl.class);
+	/**
+	 * Default class logger.
+	 */
+	private Logger									 logger	= Logger.getLogger(PublicationsRestImpl.class);
 
 	@Autowired
 	private IUserService						 userService;
@@ -44,7 +47,7 @@ public class PublicationsRestImpl extends BaseRestImpl {
 	private ISearchService					 searchService;
 
 	@Autowired
-	AnnotationViewFactory						 annotationViewFactory;
+	private AnnotationViewFactory		 annotationViewFactory;
 
 	@Autowired
 	private PubmedParser						 pubmedParser;
diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/projects/overlays/OverlayController.java b/rest-api/src/main/java/lcsb/mapviewer/api/projects/overlays/OverlayController.java
index 815d1b9aff25e37ad4bc32f9c02f300313ac4f16..c2ac91b71fa855a848b67eec50bea82bed307d85 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/projects/overlays/OverlayController.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/projects/overlays/OverlayController.java
@@ -29,6 +29,10 @@ import lcsb.mapviewer.services.view.LayoutView;
 @RestController
 public class OverlayController extends BaseController {
 
+	/**
+	 * Default class logger.
+	 */
+	@SuppressWarnings("unused")
 	private Logger					logger = Logger.getLogger(OverlayController.class);
 
 	@Autowired
diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/projects/overlays/OverlayRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/projects/overlays/OverlayRestImpl.java
index 37e9665cee9eaad2ef5c390ddcf29eae87626da9..0c2c7a6ea47a6108c58a00903ded58abedae174d 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/projects/overlays/OverlayRestImpl.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/projects/overlays/OverlayRestImpl.java
@@ -42,7 +42,10 @@ import lcsb.mapviewer.services.view.LayoutView;
 @Transactional(value = "txManager")
 public class OverlayRestImpl extends BaseRestImpl {
 
-	Logger								 logger	= Logger.getLogger(OverlayRestImpl.class);
+	/**
+	 * Default class logger.
+	 */
+	private Logger								 logger	= Logger.getLogger(OverlayRestImpl.class);
 
 	@Autowired
 	private IUserService	 userService;
diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/users/UserController.java b/rest-api/src/main/java/lcsb/mapviewer/api/users/UserController.java
index 175fd6325c0e97e11da201c05cb5d1c9acb2b4be..72d883eccc4b2eec5f07f9461f4e61258504f91f 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/users/UserController.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/users/UserController.java
@@ -27,7 +27,11 @@ import lcsb.mapviewer.services.view.AuthenticationToken;
 
 @RestController
 public class UserController extends BaseController {
-	Logger							 logger	= Logger.getLogger(UserController.class);
+	/**
+	 * Default class logger.
+	 */
+	@SuppressWarnings("unused")
+	private Logger			 logger	= Logger.getLogger(UserController.class);
 
 	@Autowired
 	private IUserService userService;
@@ -66,7 +70,7 @@ public class UserController extends BaseController {
 		}
 	}
 
-	@RequestMapping(value = "/users/{login}", method = { RequestMethod.GET}, produces = { MediaType.APPLICATION_JSON_VALUE })
+	@RequestMapping(value = "/users/{login}", method = { RequestMethod.GET }, produces = { MediaType.APPLICATION_JSON_VALUE })
 	public Map<String, Object> getUser(//
 			@CookieValue(value = Configuration.AUTH_TOKEN) String token, //
 			@PathVariable(value = "login") String login, //
diff --git a/rest-api/src/test/java/lcsb/mapviewer/api/configuration/ConfigurationRestImplTest.java b/rest-api/src/test/java/lcsb/mapviewer/api/configuration/ConfigurationRestImplTest.java
index b88b846b4173e862f3acc5b9616a1ca867e0aba0..c424749d187a2e9cf32f69cf86694aae3645580e 100644
--- a/rest-api/src/test/java/lcsb/mapviewer/api/configuration/ConfigurationRestImplTest.java
+++ b/rest-api/src/test/java/lcsb/mapviewer/api/configuration/ConfigurationRestImplTest.java
@@ -20,6 +20,7 @@ import lcsb.mapviewer.services.view.ConfigurationView;
 
 public class ConfigurationRestImplTest extends RestTestFunctions {
 
+	@SuppressWarnings("unused")
 	private Logger							 logger	= Logger.getLogger(ConfigurationRestImplTest.class);
 
 	@Autowired
diff --git a/rest-api/src/test/java/lcsb/mapviewer/api/genomics/ReferenceGenomeControllerTest.java b/rest-api/src/test/java/lcsb/mapviewer/api/genomics/ReferenceGenomeControllerTest.java
index b529a284f1837e0e875fa1b6bd94e7a9e7b2a84a..b1a2c84e9b467b750f25e6bcb8390f72e4d38d41 100644
--- a/rest-api/src/test/java/lcsb/mapviewer/api/genomics/ReferenceGenomeControllerTest.java
+++ b/rest-api/src/test/java/lcsb/mapviewer/api/genomics/ReferenceGenomeControllerTest.java
@@ -1,6 +1,5 @@
 package lcsb.mapviewer.api.genomics;
 
-import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
@@ -13,7 +12,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 
 import lcsb.mapviewer.api.QueryException;
 import lcsb.mapviewer.api.RestTestFunctions;
-import lcsb.mapviewer.services.view.ReferenceGenomeView;
 
 public class ReferenceGenomeControllerTest extends RestTestFunctions {
 	Logger												 logger	= Logger.getLogger(ReferenceGenomeControllerTest.class);
diff --git a/rest-api/src/test/java/lcsb/mapviewer/api/projects/ProjectRestImplTest.java b/rest-api/src/test/java/lcsb/mapviewer/api/projects/ProjectRestImplTest.java
index 4c04050f6e09b4517a9aa9422143177076cd78d9..a40c46f9d34177d79d4a07cc123477cb584f47b5 100644
--- a/rest-api/src/test/java/lcsb/mapviewer/api/projects/ProjectRestImplTest.java
+++ b/rest-api/src/test/java/lcsb/mapviewer/api/projects/ProjectRestImplTest.java
@@ -74,7 +74,7 @@ public class ProjectRestImplTest extends RestTestFunctions {
 			ProjectRestImpl projectRest = createMockProjectRest("testFiles/model/sample.xml");
 			projectRest.getModelAsModelFile(token.getId(), "sample", "0", "", "", "", "", "");
 			fail("Exception expected");
-		} catch (InvalidArgumentException e) {
+		} catch (QueryException e) {
 		} catch (Exception e) {
 			e.printStackTrace();
 			throw e;
diff --git a/rest-api/src/test/java/lcsb/mapviewer/api/projects/models/AllModelsTests.java b/rest-api/src/test/java/lcsb/mapviewer/api/projects/models/AllModelsTests.java
index f89ba7fa4d53d265c8f1b116b26d7832ed327c2c..58bce555cf36a931dfc0b2cc6857edcb846f6004 100644
--- a/rest-api/src/test/java/lcsb/mapviewer/api/projects/models/AllModelsTests.java
+++ b/rest-api/src/test/java/lcsb/mapviewer/api/projects/models/AllModelsTests.java
@@ -5,7 +5,6 @@ import org.junit.runners.Suite;
 import org.junit.runners.Suite.SuiteClasses;
 
 import lcsb.mapviewer.api.projects.models.bioEntities.AllBioeEntitiesTests;
-import lcsb.mapviewer.api.projects.models.bioEntities.elements.AllElementsTests;
 import lcsb.mapviewer.api.projects.models.publications.AllPublicationsTests;
 
 @RunWith(Suite.class)
diff --git a/rest-api/src/test/java/lcsb/mapviewer/api/users/UserRestImplTest.java b/rest-api/src/test/java/lcsb/mapviewer/api/users/UserRestImplTest.java
index bf0a293174ca78f4fe43c3908c5a341f3d88d530..7fe01ae6bb5c568e29ca6543e4d9ff18791c94a9 100644
--- a/rest-api/src/test/java/lcsb/mapviewer/api/users/UserRestImplTest.java
+++ b/rest-api/src/test/java/lcsb/mapviewer/api/users/UserRestImplTest.java
@@ -11,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 
 import lcsb.mapviewer.api.RestTestFunctions;
 import lcsb.mapviewer.api.users.UserRestImpl;
+import lcsb.mapviewer.common.Configuration;
 
 public class UserRestImplTest extends RestTestFunctions {
 	Logger logger = Logger.getLogger(UserRestImplTest.class);
@@ -33,7 +34,7 @@ public class UserRestImplTest extends RestTestFunctions {
 	@Test
 	public void test() throws Exception {
 		try {
-			Object response = userRestImpl.getUser(token.getId(), "", "");
+			Object response = userRestImpl.getUser(token.getId(), Configuration.ANONYMOUS_LOGIN, "");
 			assertNotNull(response);
 		} catch (Exception e) {
 			e.printStackTrace();
diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java b/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java
index 272848fa2a2ec240be53102dc03b3324ae30c15b..3b89d7beb930badc503eaea4f6f57a01ff28e13f 100644
--- a/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java
@@ -40,6 +40,7 @@ import lcsb.mapviewer.commands.ClearColorModelCommand;
 import lcsb.mapviewer.commands.CommandExecutionException;
 import lcsb.mapviewer.commands.CopyCommand;
 import lcsb.mapviewer.commands.CreateHierarchyCommand;
+import lcsb.mapviewer.commands.SetFixedHierarchyLevelCommand;
 import lcsb.mapviewer.common.EventStorageLoggerAppender;
 import lcsb.mapviewer.common.IProgressUpdater;
 import lcsb.mapviewer.common.Pair;
@@ -612,40 +613,45 @@ public class ProjectService implements IProjectService {
 		int counter = 0;
 		for (final Model model : models) {
 			for (int i = 0; i < model.getLayouts().size(); i++) {
-				String directory = model.getLayouts().get(i).getDirectory();
 				Layout layout = model.getLayouts().get(i);
 				if (layout.getInputData() == null) {
-
-					Model output = model;
-					if (layout.isHierarchicalView()) {
-						output = new CopyCommand(model).execute();
-					}
-					if (layout.getTitle().equals(BuildInLayout.CLEAN.getTitle())) {
-						output = new CopyCommand(model).execute();
-						new ClearColorModelCommand(output).execute();
-					}
-
 					final double imgCounter = counter;
 					final double finalSize = size;
-					MapGeneratorParams imgParams = generator.new MapGeneratorParams()
-							.model(output).directory(directory).sbgn(params.isSbgnFormat()).nested(layout.isHierarchicalView()).updater(new IProgressUpdater() {
-								@Override
-								public void setProgress(double progress) {
-									updateProjectStatus(
-											originalModel.getProject(), ProjectStatus.GENERATING_IMAGES,
-											IProgressUpdater.MAX_PROGRESS * imgCounter / finalSize + progress / finalSize, params);
-								}
-							});
-					if (layout.getTitle().contains(BuildInLayout.SEMANTIC.getTitle())) {
-						imgParams.semanticZoom(params.isSemanticZoom());
-					}
-					generator.generateMapImages(imgParams);
+					IProgressUpdater updater = new IProgressUpdater() {
+						@Override
+						public void setProgress(double progress) {
+							updateProjectStatus(
+									originalModel.getProject(), ProjectStatus.GENERATING_IMAGES, IProgressUpdater.MAX_PROGRESS * imgCounter / finalSize + progress / finalSize,
+									params);
+						}
+					};
+
+					generateImagesForBuiltInOverlay(params, model, layout, updater);
 				}
 				counter++;
 			}
 		}
 	}
 
+	private void generateImagesForBuiltInOverlay(final CreateProjectParams params, final Model model, Layout layout, IProgressUpdater updater)
+			throws CommandExecutionException, IOException, DrawingException {
+		String directory = layout.getDirectory();
+		Model output = model;
+		if (layout.isHierarchicalView()) {
+			output = new CopyCommand(model).execute();
+			new SetFixedHierarchyLevelCommand(output, layout.getHierarchyViewLevel()).execute();
+		}
+		if (layout.getTitle().equals(BuildInLayout.CLEAN.getTitle())) {
+			output = new CopyCommand(model).execute();
+			new ClearColorModelCommand(output).execute();
+		}
+
+		MapGeneratorParams imgParams = generator.new MapGeneratorParams()
+				.directory(directory).sbgn(params.isSbgnFormat()).nested(layout.isHierarchicalView()).updater(updater);
+		imgParams.model(output);
+		generator.generateMapImages(imgParams);
+	}
+
 	/**
 	 * Creates project. Loads model from the input and run PostLoadModification.
 	 * 
@@ -702,55 +708,72 @@ public class ProjectService implements IProjectService {
 		model.setZoomLevels(generator.computeZoomLevels(model));
 		model.setTileSize(MapGenerator.TILE_SIZE);
 
-		Map<BuildInLayout, Layout> topLayoutsByType = new HashMap<>();
 		List<BuildInLayout> buildInLayouts = new ArrayList<>();
+		BuildInLayout nested = null;
+		if (params.isSemanticZoom()) {
+			nested = BuildInLayout.SEMANTIC;
+		} else {
+			nested = BuildInLayout.NESTED;
+		}
 		if (params.isNetworkLayoutAsDefault()) {
 			buildInLayouts.add(BuildInLayout.NORMAL);
-			for (BuildInLayout buildInLayout : BuildInLayout.values()) {
-				if (!buildInLayout.equals(BuildInLayout.NORMAL) && !buildInLayout.equals(BuildInLayout.SEMANTIC)) {
-					buildInLayouts.add(buildInLayout);
-				}
-			}
+			buildInLayouts.add(nested);
 		} else {
-			buildInLayouts.add(BuildInLayout.NESTED);
-			for (BuildInLayout buildInLayout : BuildInLayout.values()) {
-				if (!buildInLayout.equals(BuildInLayout.NESTED) && !buildInLayout.equals(BuildInLayout.SEMANTIC)) {
-					buildInLayouts.add(buildInLayout);
-				}
-			}
-		}
-		if (params.isSemanticZoom()) {
-			buildInLayouts.add(BuildInLayout.SEMANTIC);
+			buildInLayouts.add(nested);
+			buildInLayouts.add(BuildInLayout.NORMAL);
 		}
+		buildInLayouts.add(BuildInLayout.CLEAN);
 
 		// reverse the order of build in layouts, so we can insert them at the
 		// beginning of list of layouts (the order will be the same)
 		Collections.reverse(buildInLayouts);
 
 		for (BuildInLayout buildInLayout : buildInLayouts) {
-			Layout layout = new Layout(buildInLayout.getTitle(), params.getProjectDir() + "/" + buildInLayout.getDirectorySuffix() + model.getId() + "/", true);
-			layout.setStatus(LayoutStatus.NA);
-			layout.setProgress(0.0);
-			layout.setHierarchicalView(buildInLayout.isNested());
-			model.addLayout(0, layout);
-			topLayoutsByType.put(buildInLayout, layout);
-		}
-
-		int submodelId = 1;
-		for (ModelSubmodelConnection connection : model.getSubmodelConnections()) {
-			for (BuildInLayout buildInLayout : buildInLayouts) {
+			Layout topLayout = new Layout(buildInLayout.getTitle(), params.getProjectDir() + "/" + buildInLayout.getDirectorySuffix() + model.getId() + "/", true);
+			topLayout.setStatus(LayoutStatus.NA);
+			topLayout.setProgress(0.0);
+			topLayout.setHierarchicalView(buildInLayout.isNested());
+			model.addLayout(0, topLayout);
+			int submodelId = 1;
+			List<Layout> semanticLevelOverlays = new ArrayList<>();
+			if (buildInLayout.equals(BuildInLayout.SEMANTIC)) {
+				for (int i = 0; i <= model.getZoomLevels(); i++) {
+					String directory = params.getProjectDir() + "/" + buildInLayout.getDirectorySuffix() + "-" + i + "-" + model.getId() + "/";
+					Layout semanticOverlay = new Layout(buildInLayout.getTitle() + "-" + i, directory, true);
+					semanticOverlay.setStatus(LayoutStatus.NA);
+					semanticOverlay.setProgress(0.0);
+					semanticOverlay.setHierarchicalView(buildInLayout.isNested());
+					semanticOverlay.setHierarchyViewLevel(i);
+					semanticLevelOverlays.add(semanticOverlay);
+					model.addLayout(1, semanticOverlay);
+				}
+			}
+			for (ModelSubmodelConnection connection : model.getSubmodelConnections()) {
 				Layout layout = new Layout(buildInLayout.getTitle(), params.getProjectDir() + "/" + buildInLayout.getDirectorySuffix() + submodelId + "/", true);
 				layout.setStatus(LayoutStatus.NA);
 				layout.setProgress(0.0);
 				layout.setHierarchicalView(buildInLayout.isNested());
-				layout.setParentLayout(topLayoutsByType.get(buildInLayout));
+				layout.setParentLayout(topLayout);
 				connection.getSubmodel().addLayout(0, layout);
-			}
-			submodelId++;
 
-			connection.getSubmodel().setZoomLevels(generator.computeZoomLevels(connection.getSubmodel().getModel()));
-			connection.getSubmodel().setTileSize(MapGenerator.TILE_SIZE);
+				connection.getSubmodel().setZoomLevels(generator.computeZoomLevels(connection.getSubmodel().getModel()));
+				connection.getSubmodel().setTileSize(MapGenerator.TILE_SIZE);
+				if (buildInLayout.equals(BuildInLayout.SEMANTIC)) {
+					for (int i = 0; i <= model.getZoomLevels(); i++) {
+						String directory = params.getProjectDir() + "/" + buildInLayout.getDirectorySuffix() + "-" + i + "-" + submodelId + "/";
+						Layout semanticOverlay = new Layout(buildInLayout.getTitle() + "-" + i, directory, true);
+						semanticOverlay.setStatus(LayoutStatus.NA);
+						semanticOverlay.setProgress(0.0);
+						semanticOverlay.setHierarchicalView(buildInLayout.isNested());
+						semanticOverlay.setParentLayout(semanticLevelOverlays.get(i));
+						semanticOverlay.setHierarchyViewLevel(i);
+						connection.getSubmodel().addLayout(1, semanticOverlay);
+					}
+				}
+				submodelId++;
+			}
 		}
+
 		if (params.isUpdateAnnotations()) {
 			Map<Class<?>, List<ElementAnnotator>> annotators = null;
 			if (params.getAnnotatorsMap() != null) {
@@ -928,7 +951,9 @@ public class ProjectService implements IProjectService {
 					}
 
 					Model originalModel = createModel(params, project);
-					new CreateHierarchyCommand(originalModel, generator.computeZoomLevels(originalModel), generator.computeZoomFactor(originalModel)).execute();
+					if (!params.isSemanticZoom()) {
+						new CreateHierarchyCommand(originalModel, generator.computeZoomLevels(originalModel), generator.computeZoomFactor(originalModel)).execute();
+					}
 
 					addUsers(project, params);
 					createImages(originalModel, params);
diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/ReferenceGenomeService.java b/service/src/main/java/lcsb/mapviewer/services/impl/ReferenceGenomeService.java
index 666eda198cad493fb2e11b7be74d37d8aea4409d..13fd8dc9e217d4ae68f0955a58cec0e3700af48b 100644
--- a/service/src/main/java/lcsb/mapviewer/services/impl/ReferenceGenomeService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/impl/ReferenceGenomeService.java
@@ -34,8 +34,12 @@ import lcsb.mapviewer.services.view.ReferenceGenomeViewFactory;
 @Transactional(value = "txManager")
 public class ReferenceGenomeService implements IReferenceGenomeService {
 
-	Logger logger = Logger.getLogger(ReferenceGenomeService.class);
-	
+	/**
+	 * Default class logger.
+	 */
+	@SuppressWarnings("unused")
+	private Logger											 logger	= Logger.getLogger(ReferenceGenomeService.class);
+
 	/**
 	 * Class responsible for connection to {@link ReferenceGenomeType#UCSC}
 	 * database.
@@ -57,7 +61,7 @@ public class ReferenceGenomeService implements IReferenceGenomeService {
 
 	@Override
 	public void addReferenceGenome(ReferenceGenomeType type, MiriamData organism, String version, String customUrl)
-			throws IOException, URISyntaxException,  ReferenceGenomeConnectorException {
+			throws IOException, URISyntaxException, ReferenceGenomeConnectorException {
 		for (ReferenceGenome genome : getDownloadedGenomes()) {
 			if (genome.getType().equals(type) && genome.getOrganism().equals(organism) && genome.getVersion().equals(version)) {
 				throw new ReferenceGenomeExistsException("Selected reference genome already downloaded");
diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/SearchService.java b/service/src/main/java/lcsb/mapviewer/services/impl/SearchService.java
index 35f74ed3cc4ac6d82f9f43deed678eb75a5468d3..d7755071ab1c7d771f9aab2d8b28b7d5610425dc 100644
--- a/service/src/main/java/lcsb/mapviewer/services/impl/SearchService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/impl/SearchService.java
@@ -14,6 +14,7 @@ import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
+import lcsb.mapviewer.commands.SemanticZoomLevelMatcher;
 import lcsb.mapviewer.common.Configuration;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.InvalidClassException;
@@ -64,6 +65,8 @@ import lcsb.mapviewer.services.utils.SearchIndexer;
 @Transactional(value = "txManager")
 public class SearchService implements ISearchService {
 
+	private SemanticZoomLevelMatcher							zoomLevelMatcher					 = new SemanticZoomLevelMatcher();
+
 	/**
 	 * Prefix used in search by name interface to limit results only to species.
 	 */
@@ -447,7 +450,7 @@ public class SearchService implements ISearchService {
 		if (params.getLevel() == null || params.getLayoutIdentfier() == null) {
 			return true;
 		}
-		return (!params.isNested()) || alias.getVisibilityLevel() <= params.getLevel();
+		return (!params.isNested()) || zoomLevelMatcher.isVisible(params.getLevel(), alias.getVisibilityLevel());
 	}
 
 	@Override
diff --git a/service/src/main/java/lcsb/mapviewer/services/interfaces/ISearchService.java b/service/src/main/java/lcsb/mapviewer/services/interfaces/ISearchService.java
index c32dee9143c6f6679fa01f3d4db39b377d09b23f..1229bba669f7c0ff77bcaeda5157200b0a63c60f 100644
--- a/service/src/main/java/lcsb/mapviewer/services/interfaces/ISearchService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/interfaces/ISearchService.java
@@ -320,6 +320,6 @@ public interface ISearchService {
 	 */
 	void assignIcons(SearchElementResult results, int iconSet);
 
-	public String[] getSuggestedQueryList(Model model);
+	String[] getSuggestedQueryList(Model model);
 
 }
diff --git a/service/src/main/java/lcsb/mapviewer/services/search/data/FullAliasView.java b/service/src/main/java/lcsb/mapviewer/services/search/data/FullAliasView.java
index 10edf3b3656fcfa9f6055bef5af272e0310727b4..3fdec74966cd3d723b2b40340ada9cd3328cb9d2 100644
--- a/service/src/main/java/lcsb/mapviewer/services/search/data/FullAliasView.java
+++ b/service/src/main/java/lcsb/mapviewer/services/search/data/FullAliasView.java
@@ -147,7 +147,7 @@ public class FullAliasView extends LightAliasView implements IHeavyView {
 	 */
 	private Integer							 initialAmount				= null;
 
-	private Integer							 visibilityLevel			= null;
+	private String							 visibilityLevel			= null;
 
 	/**
 	 * Initial concentration of species.
@@ -617,15 +617,16 @@ public class FullAliasView extends LightAliasView implements IHeavyView {
 	 * @return the visibilityLevel
 	 * @see #visibilityLevel
 	 */
-	public Integer getVisibilityLevel() {
+	public String getVisibilityLevel() {
 		return visibilityLevel;
 	}
 
 	/**
-	 * @param visibilityLevel the visibilityLevel to set
+	 * @param visibilityLevel
+	 *          the visibilityLevel to set
 	 * @see #visibilityLevel
 	 */
-	public void setVisibilityLevel(Integer visibilityLevel) {
+	public void setVisibilityLevel(String visibilityLevel) {
 		this.visibilityLevel = visibilityLevel;
 	}
 }
diff --git a/service/src/main/java/lcsb/mapviewer/services/search/data/FullReactionView.java b/service/src/main/java/lcsb/mapviewer/services/search/data/FullReactionView.java
index 31dbe84374e1c1d63d20da2f1329f567b461e519..94ed82542ee2bb43daf8b65f6903adcd8f39b7fa 100644
--- a/service/src/main/java/lcsb/mapviewer/services/search/data/FullReactionView.java
+++ b/service/src/main/java/lcsb/mapviewer/services/search/data/FullReactionView.java
@@ -126,7 +126,7 @@ public class FullReactionView extends LightReactionView implements IHeavyView {
 	 */
 	private Map<String, Object>	 other										 = new HashMap<>();
 
-	private Integer							 visibilityLevel					 = null;
+	private String							 visibilityLevel					 = null;
 
 	/**
 	 * Default constructor with localization passed in the argument.
@@ -426,7 +426,7 @@ public class FullReactionView extends LightReactionView implements IHeavyView {
 	 * @return the visibilityLevel
 	 * @see #visibilityLevel
 	 */
-	public Integer getVisibilityLevel() {
+	public String getVisibilityLevel() {
 		return visibilityLevel;
 	}
 
@@ -434,7 +434,7 @@ public class FullReactionView extends LightReactionView implements IHeavyView {
 	 * @param visibilityLevel the visibilityLevel to set
 	 * @see #visibilityLevel
 	 */
-	public void setVisibilityLevel(Integer visibilityLevel) {
+	public void setVisibilityLevel(String visibilityLevel) {
 		this.visibilityLevel = visibilityLevel;
 	}
 
diff --git a/service/src/main/java/lcsb/mapviewer/services/search/db/chemical/ChemicalService.java b/service/src/main/java/lcsb/mapviewer/services/search/db/chemical/ChemicalService.java
index aae39c5c6b7e4d48593404b40418877713d16378..42e8db8be250c6589bdfcc97ff4ad7cdb2de8803 100644
--- a/service/src/main/java/lcsb/mapviewer/services/search/db/chemical/ChemicalService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/search/db/chemical/ChemicalService.java
@@ -302,7 +302,7 @@ public class ChemicalService implements IChemicalService {
 			models.add(originalModel);
 			models.addAll(originalModel.getSubmodels());
 			for (Model model : models) {
-				for (BioEntity element : model.getAnnotatedObjects()) {
+				for (BioEntity element : model.getBioEntities()) {
 					for (MiriamData md : element.getMiriamData()) {
 						if (MiriamType.HGNC_SYMBOL.equals(md.getDataType())) {
 							targetMiriams.add(md);
diff --git a/service/src/main/java/lcsb/mapviewer/services/search/db/drug/DrugService.java b/service/src/main/java/lcsb/mapviewer/services/search/db/drug/DrugService.java
index 5de463996711e732d30fbbbfde34609654e0ac2e..7a57016ea291d648c2aa8f91af82d2c051831c98 100644
--- a/service/src/main/java/lcsb/mapviewer/services/search/db/drug/DrugService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/search/db/drug/DrugService.java
@@ -384,7 +384,7 @@ public class DrugService implements IDrugService {
 			models.add(originalModel);
 			models.addAll(originalModel.getSubmodels());
 			for (Model model : models) {
-				for (BioEntity element : model.getAnnotatedObjects()) {
+				for (BioEntity element : model.getBioEntities()) {
 					for (MiriamData md : element.getMiriamData()) {
 						if (MiriamType.HGNC_SYMBOL.equals(md.getDataType())) {
 							targetMiriams.add(md);
diff --git a/service/src/main/java/lcsb/mapviewer/services/search/db/mirna/MiRNAService.java b/service/src/main/java/lcsb/mapviewer/services/search/db/mirna/MiRNAService.java
index 525e4d1529a7353a7a2fe7a74fb15e55a84bb21a..f8c9cecb4400b7cdcf4e3df31d0e79ec93e7c363 100644
--- a/service/src/main/java/lcsb/mapviewer/services/search/db/mirna/MiRNAService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/search/db/mirna/MiRNAService.java
@@ -218,7 +218,7 @@ public class MiRNAService implements IMiRNAService {
 		models.add(originalModel);
 		models.addAll(originalModel.getSubmodels());
 		for (Model model : models) {
-			for (BioEntity element : model.getAnnotatedObjects()) {
+			for (BioEntity element : model.getBioEntities()) {
 				for (MiriamData md : element.getMiriamData()) {
 					if (MiriamType.HGNC_SYMBOL.equals(md.getDataType())) {
 						targetMiriams.add(md);
diff --git a/service/src/main/java/lcsb/mapviewer/services/utils/data/BuildInLayout.java b/service/src/main/java/lcsb/mapviewer/services/utils/data/BuildInLayout.java
index 3bdf5704f793378735a463ae359cb91e99cd36fe..c0edc377be45ee6dde24b5cde0d02c779a6b9175 100644
--- a/service/src/main/java/lcsb/mapviewer/services/utils/data/BuildInLayout.java
+++ b/service/src/main/java/lcsb/mapviewer/services/utils/data/BuildInLayout.java
@@ -31,8 +31,8 @@ public enum BuildInLayout { //
 	/**
 	 * Standard visualization with hierarchical view.
 	 */
-	NESTED("Pathways and compartments", "_nested", null, true),
-	SEMANTIC("Semantic zoom", "_semantic", null, false),
+	NESTED("Pathways and compartments", "_nested", null, true), //
+	SEMANTIC("Semantic zoom", "_semantic", null, true),
 	/**
 	 * Clean visualization (with colors reset to black and white).
 	 */
diff --git a/service/src/test/java/lcsb/mapviewer/services/impl/ProjectServiceTest.java b/service/src/test/java/lcsb/mapviewer/services/impl/ProjectServiceTest.java
index 5778dcca491246fe353c33e652f7d7faddc13e95..ea47b42d45c8e4b1fd84a0ea16876ddf0edea198 100644
--- a/service/src/test/java/lcsb/mapviewer/services/impl/ProjectServiceTest.java
+++ b/service/src/test/java/lcsb/mapviewer/services/impl/ProjectServiceTest.java
@@ -315,10 +315,14 @@ public class ProjectServiceTest extends ServiceTestFunctions {
 			// and now check layouts (check if every submodel have them, and point
 			// into different directory)
 
-			assertEquals(BuildInLayout.values().length, model.getLayouts().size());
-			assertEquals(BuildInLayout.values().length, s1Model.getLayouts().size());
-			assertEquals(BuildInLayout.values().length, s2Model.getLayouts().size());
-			assertEquals(BuildInLayout.values().length, s3Model.getLayouts().size());
+			//there are 2 levels
+			int semanticOverlays = 2;
+			//-1 is due to pathways and compartments that is not there
+			int overlays = BuildInLayout.values().length + semanticOverlays - 1;
+			assertEquals(overlays, model.getLayouts().size());
+			assertEquals(overlays, s1Model.getLayouts().size());
+			assertEquals(overlays, s2Model.getLayouts().size());
+			assertEquals(overlays, s3Model.getLayouts().size());
 			Set<String> directories = new HashSet<String>();
 			directories.add(model.getLayouts().get(0).getDirectory());
 			directories.add(s1Model.getLayouts().get(0).getDirectory());
diff --git a/web/src/test/java/lcsb/mapviewer/bean/ChemicalBeanTest.java b/web/src/test/java/lcsb/mapviewer/bean/ChemicalBeanTest.java
index ab2b1954324152a76d9611f043449f8fe1a70a2c..17b67300d35a1166b46d2bc8b9f402ceed517776 100644
--- a/web/src/test/java/lcsb/mapviewer/bean/ChemicalBeanTest.java
+++ b/web/src/test/java/lcsb/mapviewer/bean/ChemicalBeanTest.java
@@ -7,21 +7,16 @@ import org.apache.log4j.Logger;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
 
-import lcsb.mapviewer.common.Configuration;
 import lcsb.mapviewer.model.Project;
-import lcsb.mapviewer.services.interfaces.IUserService;
-import lcsb.mapviewer.services.view.AuthenticationToken;
 
 public class ChemicalBeanTest extends WebTestFunctions {
 
-	Logger							logger		= Logger.getLogger(ChemicalBeanTest.class);
+	Logger			 logger		 = Logger.getLogger(ChemicalBeanTest.class);
 
+	ChemicalBean chemicalBean;
 
-	ChemicalBean				chemicalBean;
-
-	String							projectId	= "Some_id";
+	String			 projectId = "Some_id";
 
 	@Before
 	public void setUp() throws Exception {