From f55f1294a043cda97ce43b6e83f9f74220a5ec12 Mon Sep 17 00:00:00 2001
From: "piotr.gawron" <piotr.gawron@uni-new>
Date: Thu, 6 Oct 2016 16:49:28 +0200
Subject: [PATCH] test coverage for cell designer parser

---
 .../alias/AliasCollectionXmlParser.java       | 31 +++++++++--
 .../alias/CompartmentAliasXmlParser.java      |  2 +-
 .../alias/ComplexAliasXmlParser.java          |  3 +-
 .../alias/SpeciesAliasXmlParser.java          |  3 +-
 .../annotation/RestAnnotationParser.java      |  7 +--
 .../ProteinCellDesignerAliasConverter.java    |  2 +-
 .../celldesigner/reaction/ReactionToXml.java  |  8 +--
 .../celldesigner/species/ProteinMapping.java  |  8 ---
 .../celldesigner/species/SpeciesMapping.java  | 15 ++----
 .../species/SpeciesSbmlParser.java            | 14 ++---
 .../structure/CellDesignerAntisenseRna.java   |  7 +--
 .../structure/CellDesignerCompartment.java    |  7 +--
 .../structure/CellDesignerComplexSpecies.java |  7 +--
 .../structure/CellDesignerDegraded.java       |  7 +--
 .../structure/CellDesignerDrug.java           |  7 +--
 .../structure/CellDesignerElement.java        | 47 ++--------------
 .../structure/CellDesignerGene.java           |  7 +--
 .../structure/CellDesignerGenericProtein.java |  2 +-
 .../structure/CellDesignerIon.java            |  7 +--
 .../CellDesignerIonChannelProtein.java        |  2 +-
 .../structure/CellDesignerPhenotype.java      |  7 +--
 .../structure/CellDesignerProtein.java        | 10 ----
 .../CellDesignerReceptorProtein.java          |  2 +-
 .../structure/CellDesignerRna.java            |  7 +--
 .../structure/CellDesignerSimpleMolecule.java |  7 +--
 .../structure/CellDesignerSpecies.java        | 11 +---
 .../CellDesignerTruncatedProtein.java         |  2 +-
 .../structure/CellDesignerUnknown.java        |  7 +--
 .../fields/CellDesignerRnaRegion.java         |  2 +-
 .../celldesigner/types/ModifierTypeUtils.java |  5 +-
 .../celldesigner/AllCellDesignerTests.java    |  1 +
 .../CellDesignerElementCollectionTest.java    | 43 +++++++++++++++
 .../CellDesignerXmlParserTest.java            | 26 ++++++++-
 .../annotation/RestAnnotationParserTest.java  | 20 +++++++
 .../CompartmentCollectionXmlParserTest.java   |  2 +-
 .../compartment/CompartmentXmlParserTest.java |  2 +-
 ...ProteinCellDesignerAliasConverterTest.java | 18 +++++++
 .../reaction/ReactionToXmlTest.java           | 29 ++++++++++
 .../species/AntisenseRnaXmlParserTest.java    |  2 +-
 .../species/GeneXmlParserTest.java            |  4 +-
 .../species/ProteinXmlParserTest.java         |  4 +-
 .../species/RnaXmlParserTest.java             |  4 +-
 .../SpeciesCollectionXmlParserTest.java       | 11 ++--
 .../species/SpeciesSbmlParserTest.java        | 54 +++++++++----------
 .../structure/AllStructureTests.java          |  6 ++-
 .../structure/AntisenseRnaRegionTest.java     |  1 -
 .../structure/AntisenseRnaTest.java           | 11 ++--
 .../structure/CellDesignerChemicalTest.java   | 40 ++++++++++++++
 .../structure/CompartmentTest.java            | 43 ++++++++++++---
 .../structure/ComplexSpeciesTest.java         | 26 +++++----
 .../celldesigner/structure/DegradedTest.java  | 23 ++------
 .../celldesigner/structure/DrugTest.java      | 25 ++-------
 .../celldesigner/structure/ElementTest.java   |  6 +--
 .../celldesigner/structure/GeneTest.java      | 11 ++--
 .../structure/GenericProteinTest.java         | 12 ++---
 .../structure/IonChannelProteinTest.java      | 12 ++---
 .../model/celldesigner/structure/IonTest.java | 25 ++-------
 .../celldesigner/structure/PhenotypeTest.java | 10 ++--
 .../celldesigner/structure/ProteinTest.java   | 14 +----
 .../structure/ReceptorProteinTest.java        | 12 ++---
 .../model/celldesigner/structure/RnaTest.java | 11 ++--
 .../structure/SimpleMoleculeTest.java         | 23 ++------
 .../celldesigner/structure/SpeciesTest.java   | 29 +++++++---
 .../structure/TruncatedProteinTest.java       | 12 ++---
 .../celldesigner/structure/UnknownTest.java   | 23 ++------
 .../structure/fields/AllFieldsTests.java      | 13 +++++
 .../CellDesignerModificationResidueTest.java  | 30 +++++++++++
 .../fields/CellDesignerRnaRegionTest.java     | 30 +++++++++++
 .../types/ModifierTypeUtilsTest.java          | 10 ++++
 69 files changed, 491 insertions(+), 440 deletions(-)
 create mode 100644 converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerElementCollectionTest.java
 create mode 100644 converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerChemicalTest.java
 create mode 100644 converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/fields/AllFieldsTests.java
 create mode 100644 converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/fields/CellDesignerModificationResidueTest.java
 create mode 100644 converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/fields/CellDesignerRnaRegionTest.java

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 f1ffccc93d..31644487b6 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
@@ -48,8 +48,8 @@ public class AliasCollectionXmlParser extends XmlParser {
 	 * Single CompartmentAlias parser for CellDesigner node.
 	 */
 	private CompartmentAliasXmlParser	compartmentAliasParser = null;
-	
-	private RestAnnotationParser rap = new RestAnnotationParser();
+
+	private RestAnnotationParser			rap										 = new RestAnnotationParser();
 
 	/**
 	 * Default parser. As an parameter model object for which parsing is done is
@@ -167,23 +167,46 @@ public class AliasCollectionXmlParser extends XmlParser {
 	 *           thrown when xmlString is invalid
 	 */
 	public List<Compartment> parseXmlCompartmentAliasCollection(Node aliasListNode) throws InvalidXmlSchemaException {
-		List<Compartment> result = new ArrayList<Compartment>();
+		List<Compartment> result = new ArrayList<>();
 		NodeList nodes = aliasListNode.getChildNodes();
 		for (int x = 0; x < nodes.getLength(); x++) {
 			Node node = nodes.item(x);
 			if (node.getNodeType() == Node.ELEMENT_NODE) {
 				if (node.getNodeName().equalsIgnoreCase("celldesigner:compartmentAlias")) {
 					Compartment alias = compartmentAliasParser.parseXmlAlias(node);
-					
 					result.add(alias);
 				} else {
 					throw new InvalidXmlSchemaException("Unknown element of celldesigner:listOfCompartmentAliases: " + node.getNodeName());
 				}
 			}
 		}
+		assignParents(result);
+
 		return result;
 	}
 
+	private void assignParents(List<Compartment> compartments) {
+		Compartment nullParent = new Compartment("null");
+		nullParent.setWidth(Double.MAX_VALUE);
+		nullParent.setHeight(Double.MAX_VALUE);
+		nullParent.setX(0.0);
+		nullParent.setY(0.0);
+		for (Compartment child : compartments) {
+			Compartment parent = nullParent;
+			for (Compartment potentialParent : compartments) {
+				if (potentialParent.contains(child)) {
+					if (parent.getSize() > potentialParent.getSize()) {
+						parent = potentialParent;
+					}
+				}
+			}
+			if (parent != nullParent) {
+				child.setParent(parent);
+				child.setCompartment(parent);
+			}
+		}
+	}
+
 	/**
 	 * Creates xml string representing collection of CompartmentAlias.
 	 * 
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 e75dc56ef7..54198db2f0 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
@@ -58,7 +58,7 @@ public class CompartmentAliasXmlParser extends AbstractAliasXmlParser<Compartmen
 			throw new InvalidXmlSchemaException("Compartment does not exist in a model: " + compartmentId);
 		}
 		String aliasId = getNodeAttr("id", aliasNode);
-		Compartment result = compartment.createAlias(aliasId);
+		Compartment result = compartment.createModelElement(aliasId);
 
 		NodeList nodes = aliasNode.getChildNodes();
 		for (int i = 0; i < nodes.getLength(); i++) {
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/ComplexAliasXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/ComplexAliasXmlParser.java
index 3cc2aeaeac..609ea97238 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/ComplexAliasXmlParser.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/ComplexAliasXmlParser.java
@@ -79,7 +79,7 @@ public class ComplexAliasXmlParser extends AbstractAliasXmlParser<Complex> {
 		if (species == null) {
 			throw new InvalidXmlSchemaException("No species with id=\"" + speciesId + "\" for complex alias \"" + aliasId + "\"");
 		}
-		Complex result = species.createAlias(aliasId);
+		Complex result = species.createModelElement(aliasId);
 
 		String state = "usual";
 		NodeList nodes = aliasNode.getChildNodes();
@@ -145,6 +145,7 @@ public class ComplexAliasXmlParser extends AbstractAliasXmlParser<Complex> {
 				throw new InvalidXmlSchemaException("CompartmentAlias does not exist: " + compartmentAliasId);
 			} else {
 				result.setParent(ca);
+				result.setCompartment(ca);
 				ca.addElement(result);
 			}
 		}
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/SpeciesAliasXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/SpeciesAliasXmlParser.java
index 9e37254363..5ec7d9a7b6 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/SpeciesAliasXmlParser.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/alias/SpeciesAliasXmlParser.java
@@ -58,7 +58,7 @@ public class SpeciesAliasXmlParser extends AbstractAliasXmlParser<Species> {
 			logger.warn("[" + speciesId + "," + aliasId + "]\tSpecies is defined as a complex, but alias is not a complex. Changing alias to complex.");
 		}
 
-		Species result = species.createAlias(aliasId);
+		Species result = species.createModelElement(aliasId);
 
 		String state = "usual";
 		NodeList nodes = aliasNode.getChildNodes();
@@ -116,6 +116,7 @@ public class SpeciesAliasXmlParser extends AbstractAliasXmlParser<Species> {
 				throw new InvalidXmlSchemaException("CompartmentAlias does not exist: " + compartmentAliasId);
 			} else {
 				result.setParent(ca);
+				result.setCompartment(ca);
 				ca.addElement(result);
 			}
 		}
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 b938e0ed8d..b488c39c4a 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
@@ -582,13 +582,8 @@ public class RestAnnotationParser extends XmlParser {
 			element.setNotes(description);
 		} else if (element.getNotes().contains(description)) {
 			return;
-		} else if (getParamByPrefix(element.getNotes(), NoteField.SYMBOL.getCommonName() + ":") == null) {
-			element.setNotes(element.getNotes().trim() + "\n" + description + "\n");
 		} else {
-			String description2 = getParamByPrefix(element.getNotes(), NoteField.DESCRIPTION.getCommonName() + ":");
-			if (!description.equals(description2)) {
-				logger.warn(elementUtils.getElementTag(element) + " Descriptions different. Cannot override:\n" + description + "\n" + description2);
-			}
+			element.setNotes(element.getNotes().trim() + "\n" + description + "\n");
 		}
 	}
 
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/geometry/ProteinCellDesignerAliasConverter.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/geometry/ProteinCellDesignerAliasConverter.java
index 9a9b3794a0..5c76ba89b6 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/geometry/ProteinCellDesignerAliasConverter.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/geometry/ProteinCellDesignerAliasConverter.java
@@ -64,7 +64,7 @@ public class ProteinCellDesignerAliasConverter extends AbstractCellDesignerAlias
 				ArrayList<Point2D> points = getTruncatedPoints(alias);
 				result = getPolygonTransformation().getPointOnPolygonByAnchor(points, anchor);
 			} else {
-				throw new InvalidArgumentException(eu.getElementTag(alias) + "Unknown type: " + alias.getClass());
+				throw new NotImplementedException(eu.getElementTag(alias) + "Unknown type: " + alias.getClass());
 			}
 
 			alias.setWidth(alias.getWidth() + AbstractCellDesignerAliasConverter.HOMODIMER_OFFSET * (homodir - 1));
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionToXml.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionToXml.java
index cb5690bad3..1305ccd3c2 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionToXml.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionToXml.java
@@ -387,15 +387,11 @@ public class ReactionToXml extends XmlParser {
 				}
 				parents.add(species);
 			}
-			// and top parent alias (for sbml compliant view of celldesigner file)
-			Element alias = reactant.getElement();
-			while (alias.getParent() instanceof Complex) {
-				alias = alias.getParent();
-			}
+			
 			sb.append("<speciesReference species=\"" + elements.getElementId(species) + "\">\n");
 			sb.append("<annotation>\n");
 			sb.append("<celldesigner:extension>\n");
-			sb.append("<celldesigner:alias>" + alias.getElementId() + "</celldesigner:alias>\n");
+			sb.append("<celldesigner:alias>" + species.getElementId() + "</celldesigner:alias>\n");
 			sb.append("</celldesigner:extension>\n");
 			sb.append("</annotation>\n");
 			sb.append("</speciesReference>\n");
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/ProteinMapping.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/ProteinMapping.java
index 64ff8471cb..80d6eb5b25 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/ProteinMapping.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/ProteinMapping.java
@@ -138,12 +138,4 @@ public enum ProteinMapping {
 			throw new InvalidStateException(e);
 		}
 	}
-
-	public Protein createProteinAlias() {
-		try {
-			return clazz.getConstructor().newInstance();
-		} catch (Exception e) {
-			throw new InvalidStateException(e);
-		}
-	}
 }
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesMapping.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesMapping.java
index 857c7e4454..35b6c49eb1 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesMapping.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesMapping.java
@@ -13,11 +13,11 @@ import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerRna;
 import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerSimpleMolecule;
 import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerSpecies;
 import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerUnknown;
-import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.map.species.AntisenseRna;
 import lcsb.mapviewer.model.map.species.Complex;
 import lcsb.mapviewer.model.map.species.Degraded;
 import lcsb.mapviewer.model.map.species.Drug;
+import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.map.species.Gene;
 import lcsb.mapviewer.model.map.species.Ion;
 import lcsb.mapviewer.model.map.species.Phenotype;
@@ -92,14 +92,14 @@ public enum SpeciesMapping {
 	/**
 	 * CellDesigner xml node type.
 	 */
-	private String									 cellDesignerString;
+	private String															 cellDesignerString;
 
 	/**
 	 * Class that should be used to represent cell designer node.
 	 */
 	private Class<? extends CellDesignerSpecies> cellDesignerClazz;
 
-	private Class<? extends Element>	 modelClazz;
+	private Class<? extends Element>						 modelClazz;
 
 	/**
 	 * Default constructor.
@@ -175,15 +175,6 @@ public enum SpeciesMapping {
 	 *          {@link CellDesignerSpecies} class
 	 * @return {@link SpeciesMapping} for given {@link CellDesignerSpecies} class
 	 */
-	public static SpeciesMapping getMappingByCellDesignerClass(Class<? extends CellDesignerSpecies> searchClazz) {
-		for (SpeciesMapping mapping : SpeciesMapping.values()) {
-			if (mapping.getCellDesignerClazz().isAssignableFrom(searchClazz)) {
-				return mapping;
-			}
-		}
-		return null;
-	}
-
 	public static SpeciesMapping getMappingByModelClass(Class<? extends Element> searchClazz) {
 		for (SpeciesMapping mapping : SpeciesMapping.values()) {
 			if (mapping.getModelClazz().isAssignableFrom(searchClazz)) {
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesSbmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesSbmlParser.java
index ce50c31c7e..7033c094dd 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesSbmlParser.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesSbmlParser.java
@@ -182,8 +182,8 @@ public class SpeciesSbmlParser extends AbstractElementXmlParser<CellDesignerSpec
 		if (species.hasOnlySubstanceUnits() != null) {
 			attributesBuilder.append(" hasOnlySubstanceUnits=\"" + species.hasOnlySubstanceUnits() + "\"");
 		}
-		if (species.getParent() != null && species.getParent() instanceof Compartment) {
-			Compartment comp = (Compartment) species.getParent();
+		if (species.getCompartment() != null) {
+			Compartment comp = species.getCompartment();
 			attributesBuilder.append(" compartment=\"" + elements.getElementId(comp) + "\"");
 		} else {
 			attributesBuilder.append(" compartment=\"default\"");
@@ -492,7 +492,8 @@ public class SpeciesSbmlParser extends AbstractElementXmlParser<CellDesignerSpec
 	}
 
 	/**
-	 * Creates {@link CellDesignerModificationResidue} from the apropriate xml node.
+	 * Creates {@link CellDesignerModificationResidue} from the apropriate xml
+	 * node.
 	 * 
 	 * @param rootNode
 	 *          xml node
@@ -547,8 +548,8 @@ public class SpeciesSbmlParser extends AbstractElementXmlParser<CellDesignerSpec
 	}
 
 	/**
-	 * Creates {@link CellDesignerAntisenseRnaRegion} from {@link CellDesignerModificationResidue}
-	 * description.
+	 * Creates {@link CellDesignerAntisenseRnaRegion} from
+	 * {@link CellDesignerModificationResidue} description.
 	 * 
 	 * @param mr
 	 *          object from which we create {@link CellDesignerAntisenseRnaRegion}
@@ -569,7 +570,8 @@ public class SpeciesSbmlParser extends AbstractElementXmlParser<CellDesignerSpec
 	}
 
 	/**
-	 * Creates {@link CellDesignerRnaRegion} from {@link CellDesignerModificationResidue} description.
+	 * Creates {@link CellDesignerRnaRegion} from
+	 * {@link CellDesignerModificationResidue} description.
 	 * 
 	 * @param mr
 	 *          object from which we create {@link CellDesignerRnaRegion}
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerAntisenseRna.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerAntisenseRna.java
index 1331d5d3c6..3a1c835cff 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerAntisenseRna.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerAntisenseRna.java
@@ -65,11 +65,6 @@ public class CellDesignerAntisenseRna extends CellDesignerSpecies<AntisenseRna>
 		}
 	}
 
-	@Override
-	public String getStringType() {
-		return "Antisense RNA";
-	}
-
 	/**
 	 * Addd antisense rna region (part of rna sequence that has some meaning) to
 	 * the object. If the region with given id exists then the data of this region
@@ -143,7 +138,7 @@ public class CellDesignerAntisenseRna extends CellDesignerSpecies<AntisenseRna>
 	}
 
 	@Override
-	public AntisenseRna createAlias(String aliasId) {
+	public AntisenseRna createModelElement(String aliasId) {
 		AntisenseRna result = new AntisenseRna(aliasId);
 		super.setAliasFields(result);
 		for (CellDesignerAntisenseRnaRegion region : regions) {
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerCompartment.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerCompartment.java
index 5a0f4fe4b5..3c7bbe5ae3 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerCompartment.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerCompartment.java
@@ -119,11 +119,6 @@ public class CellDesignerCompartment extends CellDesignerElement<Compartment> im
 		this.compartmentId = id;
 	}
 
-	@Override
-	public String getStringType() {
-		return "Compartment";
-	}
-
 	/**
 	 * Adds element.
 	 * 
@@ -144,7 +139,7 @@ public class CellDesignerCompartment extends CellDesignerElement<Compartment> im
 	}
 
 	@Override
-	public Compartment createAlias(String aliasId) {
+	public Compartment createModelElement(String aliasId) {
 		Compartment result = new Compartment(aliasId);
 		super.setAliasFields(result);
 		if (elements.size() > 0) {
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerComplexSpecies.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerComplexSpecies.java
index d6daf136e3..1b4d7d6de1 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerComplexSpecies.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerComplexSpecies.java
@@ -81,11 +81,6 @@ public class CellDesignerComplexSpecies extends CellDesignerSpecies<Complex> {
 		}
 	}
 
-	@Override
-	public String getStringType() {
-		return "Complex species";
-	}
-
 	/**
 	 * Adds element to the complex.
 	 * 
@@ -160,7 +155,7 @@ public class CellDesignerComplexSpecies extends CellDesignerSpecies<Complex> {
 	}
 
 	@Override
-	public Complex createAlias(String aliasId) {
+	public Complex createModelElement(String aliasId) {
 		Complex result = new Complex(aliasId);
 		super.setAliasFields(result);
 
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerDegraded.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerDegraded.java
index 9dce75e57f..76a0fe4aef 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerDegraded.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerDegraded.java
@@ -42,12 +42,7 @@ public class CellDesignerDegraded extends CellDesignerSpecies<Degraded> {
 	}
 
 	@Override
-	public String getStringType() {
-		return "Degraded";
-	}
-
-	@Override
-	public Degraded createAlias(String aliasId) {
+	public Degraded createModelElement(String aliasId) {
 		Degraded result = new Degraded(aliasId);
 		super.setAliasFields(result);
 		return result;
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerDrug.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerDrug.java
index aa868a43f8..3bc6b96307 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerDrug.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerDrug.java
@@ -42,12 +42,7 @@ public class CellDesignerDrug extends CellDesignerSpecies<Drug> {
 	}
 
 	@Override
-	public String getStringType() {
-		return "Drug";
-	}
-
-	@Override
-	public Drug createAlias(String aliasId) {
+	public Drug createModelElement(String aliasId) {
 		Drug result = new Drug(aliasId);
 		super.setAliasFields(result);
 		return result;
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerElement.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerElement.java
index 0185a9279f..f87b166e5a 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerElement.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerElement.java
@@ -11,8 +11,6 @@ import org.apache.log4j.Logger;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.model.map.MiriamData;
-import lcsb.mapviewer.model.map.model.Model;
-import lcsb.mapviewer.model.map.model.ModelData;
 import lcsb.mapviewer.model.map.species.Element;
 
 /**
@@ -93,11 +91,6 @@ public abstract class CellDesignerElement<T extends Element> implements Serializ
 	 */
 	private CellDesignerComplexSpecies complex;
 
-	/**
-	 * In which model this element is located.
-	 */
-	private ModelData									 model;
-
 	/**
 	 * Set of miriam annotations for this element.
 	 */
@@ -185,13 +178,6 @@ public abstract class CellDesignerElement<T extends Element> implements Serializ
 
 	}
 
-	/**
-	 * Returns the string represening type of the element.
-	 * 
-	 * @return string representing class type
-	 */
-	public abstract String getStringType();
-
 	public String getNotes() {
 		return notes;
 	}
@@ -293,32 +279,6 @@ public abstract class CellDesignerElement<T extends Element> implements Serializ
 		this.complex = complex;
 	}
 
-	/**
-	 * @return the model
-	 * @see #model
-	 */
-	public ModelData getModelData() {
-		return model;
-	}
-
-	/**
-	 * @param model
-	 *          the model to set
-	 * @see #model
-	 */
-	public void setModelData(ModelData model) {
-		this.model = model;
-	}
-
-	/**
-	 * @param model
-	 *          the model to set
-	 * @see #model
-	 */
-	public void setModel(Model model) {
-		this.model = model.getModelData();
-	}
-
 	public Set<MiriamData> getMiriamData() {
 		return miriamData;
 	}
@@ -361,11 +321,11 @@ public abstract class CellDesignerElement<T extends Element> implements Serializ
 
 	public abstract void setElementId(String elementId);
 
-	public T createAlias() {
-		return createAlias(null);
+	public T createModelElement() {
+		return createModelElement(null);
 	}
 
-	public abstract T createAlias(String aliasId);
+	public abstract T createModelElement(String modelElementId);
 
 	protected void setAliasFields(T result) {
 		result.setNotes(notes);
@@ -376,7 +336,6 @@ public abstract class CellDesignerElement<T extends Element> implements Serializ
 		result.setName(name);
 		result.addSynonyms(synonyms);
 		result.addFormerSymbols(formerSymbols);
-		result.setModelData(model);
 		result.addMiriamData(miriamData);
 	}
 }
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerGene.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerGene.java
index f530f3f9b9..e053a853f1 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerGene.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerGene.java
@@ -69,11 +69,6 @@ public class CellDesignerGene extends CellDesignerSpecies<Gene> {
 		}
 	}
 
-	@Override
-	public String getStringType() {
-		return "Gene";
-	}
-
 	/**
 	 * Adds modification to the gene.
 	 * 
@@ -110,7 +105,7 @@ public class CellDesignerGene extends CellDesignerSpecies<Gene> {
 	}
 
 	@Override
-	public Gene createAlias(String aliasId) {
+	public Gene createModelElement(String aliasId) {
 		Gene result = new Gene(aliasId);
 		super.setAliasFields(result);
 		for (CellDesignerModificationResidue mr : modificationResidues) {
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerGenericProtein.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerGenericProtein.java
index c16c011fbc..4d12d99057 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerGenericProtein.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerGenericProtein.java
@@ -46,7 +46,7 @@ public class CellDesignerGenericProtein extends CellDesignerProtein<GenericProte
 		}
 	}
 
-	public GenericProtein createAlias(String aliasId) {
+	public GenericProtein createModelElement(String aliasId) {
 		GenericProtein result = new GenericProtein(aliasId);
 		super.setAliasFields(result);
 
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerIon.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerIon.java
index d3db455b6d..7a828e6790 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerIon.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerIon.java
@@ -43,12 +43,7 @@ public class CellDesignerIon extends CellDesignerChemical<Ion> {
 	}
 
 	@Override
-	public String getStringType() {
-		return "Ion";
-	}
-
-	@Override
-	public Ion createAlias(String aliasId) {
+	public Ion createModelElement(String aliasId) {
 		Ion result = new Ion(aliasId);
 		super.setAliasFields(result);
 		return result;
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerIonChannelProtein.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerIonChannelProtein.java
index 2c4571b9cb..8a7fbc97a8 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerIonChannelProtein.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerIonChannelProtein.java
@@ -43,7 +43,7 @@ public class CellDesignerIonChannelProtein extends CellDesignerProtein<IonChanne
 	}
 
 	@Override
-	public IonChannelProtein createAlias(String aliasId) {
+	public IonChannelProtein createModelElement(String aliasId) {
 		IonChannelProtein result = new IonChannelProtein(aliasId);
 		super.setAliasFields(result);
 		return result;
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerPhenotype.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerPhenotype.java
index 6b43d2473e..a27e5fe6bd 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerPhenotype.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerPhenotype.java
@@ -43,12 +43,7 @@ public class CellDesignerPhenotype extends CellDesignerSpecies<Phenotype> {
 	}
 
 	@Override
-	public String getStringType() {
-		return "Phenotype";
-	}
-
-	@Override
-	public Phenotype createAlias(String aliasId) {
+	public Phenotype createModelElement(String aliasId) {
 		Phenotype result = new Phenotype(aliasId);
 		super.setAliasFields(result);
 		return result;
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerProtein.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerProtein.java
index 76908e3df1..35f08309b1 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerProtein.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerProtein.java
@@ -87,11 +87,6 @@ public class CellDesignerProtein<T extends Protein> extends CellDesignerSpecies<
 		}
 	}
 
-	@Override
-	public String getStringType() {
-		return "Protein";
-	}
-
 	/**
 	 * Adds modification to the protein.
 	 * 
@@ -146,11 +141,6 @@ public class CellDesignerProtein<T extends Protein> extends CellDesignerSpecies<
 		this.modificationResidues = modificationResidues;
 	}
 
-	@Override
-	public T createAlias() {
-		throw new NotImplementedException();
-	}
-
 	@Override
 	protected void setAliasFields(T result) {
 		super.setAliasFields(result);
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerReceptorProtein.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerReceptorProtein.java
index 7c3cf684e3..0416953bc0 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerReceptorProtein.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerReceptorProtein.java
@@ -43,7 +43,7 @@ public class CellDesignerReceptorProtein extends CellDesignerProtein<ReceptorPro
 	}
 
 	@Override
-	public ReceptorProtein createAlias(String aliasId) {
+	public ReceptorProtein createModelElement(String aliasId) {
 		ReceptorProtein result = new ReceptorProtein(aliasId);
 		super.setAliasFields(result);
 		return result;
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerRna.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerRna.java
index 3438630752..e2b75d3816 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerRna.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerRna.java
@@ -96,11 +96,6 @@ public class CellDesignerRna extends CellDesignerSpecies<Rna> {
 		addRegion(new CellDesignerRnaRegion(param));
 	}
 
-	@Override
-	public String getStringType() {
-		return "RNA";
-	}
-
 	/**
 	 * Adds region. If the region with given id exists then the data of this
 	 * region is copied to the one that is already in the {@link CellDesignerRna}.
@@ -139,7 +134,7 @@ public class CellDesignerRna extends CellDesignerSpecies<Rna> {
 	}
 
 	@Override
-	public Rna createAlias(String aliasId) {
+	public Rna createModelElement(String aliasId) {
 		Rna result = new Rna(aliasId);
 		super.setAliasFields(result);
 		for (CellDesignerRnaRegion region : regions) {
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerSimpleMolecule.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerSimpleMolecule.java
index 74abe84f0a..ccc562159f 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerSimpleMolecule.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerSimpleMolecule.java
@@ -50,12 +50,7 @@ public class CellDesignerSimpleMolecule extends CellDesignerChemical<SimpleMolec
 	}
 
 	@Override
-	public String getStringType() {
-		return "Simple molecule";
-	}
-
-	@Override
-	public SimpleMolecule createAlias(String aliasId) {
+	public SimpleMolecule createModelElement(String aliasId) {
 		SimpleMolecule result = new SimpleMolecule(aliasId);
 		super.setAliasFields(result);
 		return result;
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerSpecies.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerSpecies.java
index 9bacb5acfd..66acec7dce 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerSpecies.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerSpecies.java
@@ -332,15 +332,6 @@ public class CellDesignerSpecies<T extends Species> extends CellDesignerElement<
 		}
 	}
 
-	/**
-	 * Returns string that describe a type of species.
-	 * 
-	 * @return string that describe a species type
-	 */
-	public String getStringType() {
-		throw new NotImplementedException();
-	}
-
 	/**
 	 * @return the initialAmount
 	 * @see #initialAmount
@@ -469,7 +460,7 @@ public class CellDesignerSpecies<T extends Species> extends CellDesignerElement<
 	}
 
 	@Override
-	public T createAlias(String aliasId) {
+	public T createModelElement(String aliasId) {
 		throw new NotImplementedException("" + this.getClass());
 	}
 
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerTruncatedProtein.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerTruncatedProtein.java
index 5256979b55..e30481b398 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerTruncatedProtein.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerTruncatedProtein.java
@@ -43,7 +43,7 @@ public class CellDesignerTruncatedProtein extends CellDesignerProtein<TruncatedP
 	}
 
 	@Override
-	public TruncatedProtein createAlias(String aliasId) {
+	public TruncatedProtein createModelElement(String aliasId) {
 		TruncatedProtein result = new TruncatedProtein(aliasId);
 		super.setAliasFields(result);
 
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerUnknown.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerUnknown.java
index c17a7d5bba..e2c47cc817 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerUnknown.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerUnknown.java
@@ -41,12 +41,7 @@ public class CellDesignerUnknown extends CellDesignerSpecies<Unknown> {
 	}
 
 	@Override
-	public String getStringType() {
-		return "Unknown";
-	}
-
-	@Override
-	public Unknown createAlias(String aliasId) {
+	public Unknown createModelElement(String aliasId) {
 		Unknown result = new Unknown(aliasId);
 		super.setAliasFields(result);
 		return result;
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/fields/CellDesignerRnaRegion.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/fields/CellDesignerRnaRegion.java
index 3917251077..926263ee13 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/fields/CellDesignerRnaRegion.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/structure/fields/CellDesignerRnaRegion.java
@@ -285,7 +285,7 @@ public class CellDesignerRnaRegion implements Serializable {
 		result.setIdRnaRegion(this.idRnaRegion);
 		result.setSize(this.size);
 		result.setPos(this.getPos());
-		result.setType(this.type);
+		result.setType(this.getType());
 		result.setState(this.state);
 		result.setName(this.name);
 		return result;
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeUtils.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeUtils.java
index 8f137652ac..dda0a2c6a9 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeUtils.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeUtils.java
@@ -74,17 +74,16 @@ public class ModifierTypeUtils {
 	 * @return {@link Modifier} for the CellDesigner type
 	 */
 	public Modifier createModifierForStringType(String type, Species alias) {
-		Modifier mod = null;
 		ModifierType modType = getModifierTypeForStringType(type);
 		if (modType == null) {
 			throw new InvalidArgumentException("Unknown modifier type: " + type);
 		}
 		try {
-			mod = modType.getClazz().getConstructor(Species.class).newInstance(alias);
+			Modifier mod = modType.getClazz().getConstructor(Species.class).newInstance(alias);
+			return mod;
 		} catch (Exception e) {
 			throw new InvalidStateException("Problem with instantiation of Modifier class: " + type);
 		}
-		return mod;
 	}
 
 	/**
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/AllCellDesignerTests.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/AllCellDesignerTests.java
index 0d41f0455f..5c6735bb6e 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/AllCellDesignerTests.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/AllCellDesignerTests.java
@@ -23,6 +23,7 @@ import org.junit.runners.Suite.SuiteClasses;
 		AllSpeciesTests.class, //
 		AllStructureTests.class, //
 		AllTypesTests.class, //
+		CellDesignerElementCollectionTest.class,//
 		CellDesignerParserExceptionTest.class, //
 		CellDesignerXmlParserTest.class, //
 		ComplexParserTests.class, //
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerElementCollectionTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerElementCollectionTest.java
new file mode 100644
index 0000000000..66320431e5
--- /dev/null
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerElementCollectionTest.java
@@ -0,0 +1,43 @@
+package lcsb.mapviewer.converter.model.celldesigner;
+
+import static org.junit.Assert.fail;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.Test;
+
+import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerComplexSpecies;
+
+public class CellDesignerElementCollectionTest {
+
+	@AfterClass
+	public static void tearDownAfterClass() throws Exception {
+	}
+
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	@Test
+	public void testAddTheSameElementTwice() {
+		try {
+			CellDesignerElementCollection collection = new CellDesignerElementCollection();
+			CellDesignerComplexSpecies complex = new CellDesignerComplexSpecies();
+			complex.setElementId("id");
+			collection.addElement(complex);
+			collection.addElement(complex);
+			fail("Exception expected");
+		} catch (InvalidArgumentException e) {
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
+}
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 b01fa2e4f9..1e16abdfea 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
@@ -16,6 +16,7 @@ import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
 
 import org.apache.log4j.Logger;
 import org.junit.After;
@@ -472,7 +473,7 @@ public class CellDesignerXmlParserTest extends CellDesignerTestFunctions {
 
 			CellDesignerXmlParser parser = new CellDesignerXmlParser();
 			String xmlString = parser.toXml(model);
-			
+
 			InputStream is = new ByteArrayInputStream(xmlString.getBytes());
 			Model model2 = parser.createModel(new ConverterParams().inputStream(is).sizeAutoAdjust(false));
 
@@ -946,4 +947,27 @@ public class CellDesignerXmlParserTest extends CellDesignerTestFunctions {
 		}
 	}
 
+	@Test
+	public void testNestedComp() throws Exception {
+		try {
+			CellDesignerXmlParser parser = new CellDesignerXmlParser();
+			Model model = parser.createModel(new ConverterParams().filename("testFiles/compartment/nested_compartments.xml"));
+
+			assertNotNull(model.getElementByElementId("ca2").getCompartment());
+			assertNotNull(model.getElementByElementId("sa1").getCompartment());
+
+			String xml = parser.toXml(model);
+
+			Model model2 = parser.createModel(new ConverterParams().inputStream(new ByteArrayInputStream(xml.getBytes(StandardCharsets.UTF_8))));
+			
+			ModelComparator comparator = new ModelComparator();
+			
+			model.setName(null);
+			assertEquals(0, comparator.compare(model, model2));
+		} 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 fb7c3da3fe..1b54bd3230 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
@@ -430,4 +430,24 @@ public class RestAnnotationParserTest extends CellDesignerTestFunctions {
 		}
 	}
 
+	@Test
+	public void testProcessNotes() throws Exception {
+		try {
+			String newNotes = "new notes";
+			String oldNotes = "old notes";
+			RestAnnotationParser parser = new RestAnnotationParser();
+			String str = "Description: " + newNotes + "\n" + oldNotes;
+			GenericProtein protein = new GenericProtein("id");
+			parser.processNotes(str, protein);
+
+			assertTrue(protein.getNotes().contains(newNotes));
+			assertTrue(protein.getNotes().contains(oldNotes));
+			assertFalse(protein.getNotes().contains("Description"));
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
 }
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/compartment/CompartmentCollectionXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/compartment/CompartmentCollectionXmlParserTest.java
index caba87a708..5c6bcb7cc2 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/compartment/CompartmentCollectionXmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/compartment/CompartmentCollectionXmlParserTest.java
@@ -79,7 +79,7 @@ public class CompartmentCollectionXmlParserTest extends CellDesignerTestFunction
 
 			List<Compartment> aliases = new ArrayList<>();
 			for (CellDesignerCompartment compartment : compartments) {
-				aliases.add(compartment.createAlias("ca" + aliasIdCounter));
+				aliases.add(compartment.createModelElement("ca" + aliasIdCounter));
 			}
 
 			String xmlString2 = parser.toXml(aliases);
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/compartment/CompartmentXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/compartment/CompartmentXmlParserTest.java
index fd6c3adb9f..7d482c7fbe 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/compartment/CompartmentXmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/compartment/CompartmentXmlParserTest.java
@@ -68,7 +68,7 @@ public class CompartmentXmlParserTest extends CellDesignerTestFunctions {
 
 			Pair<String, CellDesignerCompartment> result = compartmentParser.parseXmlElement(xmlString);
 			CellDesignerCompartment compartment = result.getRight();
-			Compartment alias = compartment.createAlias("id");
+			Compartment alias = compartment.createModelElement("id");
 			String transformedXml = compartmentParser.toXml(alias);
 			assertNotNull(transformedXml);
 			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/geometry/ProteinCellDesignerAliasConverterTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/geometry/ProteinCellDesignerAliasConverterTest.java
index 53505a973f..214844b4fd 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/geometry/ProteinCellDesignerAliasConverterTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/geometry/ProteinCellDesignerAliasConverterTest.java
@@ -1,6 +1,7 @@
 package lcsb.mapviewer.converter.model.celldesigner.geometry;
 
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 import org.junit.After;
 import org.junit.AfterClass;
@@ -9,6 +10,7 @@ import org.junit.Test;
 import org.mockito.Mockito;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.converter.model.celldesigner.geometry.helper.CellDesignerAnchor;
 import lcsb.mapviewer.model.map.species.Protein;
 
 public class ProteinCellDesignerAliasConverterTest {
@@ -32,9 +34,25 @@ public class ProteinCellDesignerAliasConverterTest {
 		try {
 			Protein alias = Mockito.mock(Protein.class);
 			converter.getBoundPathIterator(alias);
+			fail("Exception expected");
 		} catch (NotImplementedException e) {
 			assertTrue(e.getMessage().contains("Not implemented protein converter for type"));
 		}
 	}
+	
+	@Test
+	public void testGetPointCoordinates() {
+		try {
+			Protein alias = Mockito.spy(Protein.class);
+			alias.setWidth(10);
+			alias.setHeight(10);
+			converter.getPointCoordinates(alias, CellDesignerAnchor.E);
+			fail("Exception expected");
+		} catch (NotImplementedException e) {
+			assertTrue(e.getMessage().contains("Unknown type"));
+		}
+	}
+	
+	
 
 }
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionToXmlTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionToXmlTest.java
index db03abd568..6466737705 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionToXmlTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionToXmlTest.java
@@ -146,6 +146,35 @@ public class ReactionToXmlTest {
 
 	}
 
+	@Test
+	public void testInvalidToXml() {
+
+		Model model = new ModelFullIndexed(null);
+
+		Complex complex = new Complex("4");
+		complex.setComplex(complex);
+		model.addElement(complex);
+
+		Reaction reaction = new TransportReaction();
+
+		Reactant reactant = new Reactant(complex);
+		reactant.setLine(new PolylineData(new Point2D.Double(), new Point2D.Double(10, 0)));
+		Product product = new Product(complex);
+		product.setLine(new PolylineData(new Point2D.Double(), new Point2D.Double(20, 0)));
+
+		reaction.addReactant(reactant);
+		reaction.addProduct(product);
+
+
+		try {
+			toXmlParser.toXml(reaction);
+			fail("Exception expected");
+		} catch (InvalidArgumentException e) {
+
+		}
+
+	}
+
 	@Test
 	public void testInvalidReaction() {
 
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/AntisenseRnaXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/AntisenseRnaXmlParserTest.java
index e014668ec7..9e5b0c45d0 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/AntisenseRnaXmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/AntisenseRnaXmlParserTest.java
@@ -128,7 +128,7 @@ public class AntisenseRnaXmlParserTest extends CellDesignerTestFunctions {
 			Pair<String, CellDesignerAntisenseRna> result = antisenseRnaParser.parseXmlElement(xmlString);
 			CellDesignerAntisenseRna antisenseRna = result.getRight();
 
-			String transformedXml = antisenseRnaParser.toXml(antisenseRna.createAlias());
+			String transformedXml = antisenseRnaParser.toXml(antisenseRna.createModelElement());
 			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 			DocumentBuilder builder = factory.newDocumentBuilder();
 			InputSource is = new InputSource(new StringReader(transformedXml));
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/GeneXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/GeneXmlParserTest.java
index eb41d7c3e5..6a66946678 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/GeneXmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/GeneXmlParserTest.java
@@ -68,7 +68,7 @@ public class GeneXmlParserTest extends CellDesignerTestFunctions {
 			String xmlString = readFile(testGeneFile);
 			Pair<String, CellDesignerGene> result = geneParser.parseXmlElement(xmlString);
 			CellDesignerGene gene = result.getRight();
-			String transformedXml = geneParser.toXml(gene.createAlias());
+			String transformedXml = geneParser.toXml(gene.createModelElement());
 			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 			DocumentBuilder builder = factory.newDocumentBuilder();
 			InputSource is = new InputSource(new StringReader(transformedXml));
@@ -76,7 +76,7 @@ public class GeneXmlParserTest extends CellDesignerTestFunctions {
 			NodeList root = doc.getChildNodes();
 			assertEquals("celldesigner:gene", root.item(0).getNodeName());
 
-			Pair<String, CellDesignerGene> result2 = geneParser.parseXmlElement(geneParser.toXml(gene.createAlias()));
+			Pair<String, CellDesignerGene> result2 = geneParser.parseXmlElement(geneParser.toXml(gene.createModelElement()));
 			CellDesignerGene gene2 = result2.getRight();
 			assertEquals(gene.getName(), gene2.getName());
 			assertTrue(gene2.getNotes().trim().contains(gene.getNotes().trim()));
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/ProteinXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/ProteinXmlParserTest.java
index b09e9356c8..fbca38d03a 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/ProteinXmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/ProteinXmlParserTest.java
@@ -74,7 +74,7 @@ public class ProteinXmlParserTest extends CellDesignerTestFunctions {
 
 			Pair<String, CellDesignerProtein<?>> result = proteinParser.parseXmlElement(xmlString);
 			CellDesignerProtein<?> protein = result.getRight();
-			String transformedXml = proteinParser.toXml(protein.createAlias("id"));
+			String transformedXml = proteinParser.toXml(protein.createModelElement("id"));
 			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 			DocumentBuilder builder = factory.newDocumentBuilder();
 			InputSource is = new InputSource(new StringReader(transformedXml));
@@ -82,7 +82,7 @@ public class ProteinXmlParserTest extends CellDesignerTestFunctions {
 			NodeList root = doc.getChildNodes();
 			assertEquals("celldesigner:protein", root.item(0).getNodeName());
 
-			Pair<String, CellDesignerProtein<?>> result2 = proteinParser.parseXmlElement(proteinParser.toXml(protein.createAlias("id")));
+			Pair<String, CellDesignerProtein<?>> result2 = proteinParser.parseXmlElement(proteinParser.toXml(protein.createModelElement("id")));
 			CellDesignerProtein<?> protein2 = result2.getRight();
 			assertEquals(protein.getName(), protein2.getName());
 			assertEquals(protein.getClass(), protein2.getClass());
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/RnaXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/RnaXmlParserTest.java
index e5624c6569..9e743299ad 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/RnaXmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/RnaXmlParserTest.java
@@ -83,7 +83,7 @@ public class RnaXmlParserTest extends CellDesignerTestFunctions {
 			Pair<String, CellDesignerRna> result = rnaParser.parseXmlElement(xmlString);
 			CellDesignerRna rna = result.getRight();
 
-			String transformedXml = rnaParser.toXml(rna.createAlias("id"));
+			String transformedXml = rnaParser.toXml(rna.createModelElement("id"));
 			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 			DocumentBuilder builder = factory.newDocumentBuilder();
 			InputSource is = new InputSource(new StringReader(transformedXml));
@@ -91,7 +91,7 @@ public class RnaXmlParserTest extends CellDesignerTestFunctions {
 			NodeList root = doc.getChildNodes();
 			assertEquals("celldesigner:RNA", root.item(0).getNodeName());
 
-			Pair<String, CellDesignerRna> result2 = rnaParser.parseXmlElement(rnaParser.toXml(rna.createAlias("id")));
+			Pair<String, CellDesignerRna> result2 = rnaParser.parseXmlElement(rnaParser.toXml(rna.createModelElement("id")));
 			CellDesignerRna rna2 = result2.getRight();
 			assertEquals(rna.getName(), rna2.getName());
 			assertTrue(rna2.getNotes().trim().contains(rna.getNotes().trim()));
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesCollectionXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesCollectionXmlParserTest.java
index 0357a7fdef..5d13120a21 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesCollectionXmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesCollectionXmlParserTest.java
@@ -142,7 +142,7 @@ public class SpeciesCollectionXmlParserTest extends CellDesignerTestFunctions {
 			List<Pair<String, ? extends CellDesignerSpecies<?>>> list = parser.parseXmlRnaCollection(node);
 			List<Rna> arList = new ArrayList<>();
 			for (Pair<String, ? extends CellDesignerSpecies<?>> pair : list) {
-				arList.add((Rna) pair.getRight().createAlias());
+				arList.add((Rna) pair.getRight().createModelElement());
 			}
 			String convertedString = parser.rnaCollectionToXmlString(arList);
 			assertNotNull(convertedString);
@@ -178,7 +178,7 @@ public class SpeciesCollectionXmlParserTest extends CellDesignerTestFunctions {
 			List<Pair<String, ? extends CellDesignerSpecies<?>>> list = parser.parseXmlGeneCollection(node);
 			List<Gene> arList = new ArrayList<>();
 			for (Pair<String, ? extends CellDesignerSpecies<?>> pair : list) {
-				arList.add((Gene) pair.getRight().createAlias());
+				arList.add((Gene) pair.getRight().createModelElement());
 			}
 			String convertedString = parser.geneCollectionToXmlString(arList);
 			assertNotNull(convertedString);
@@ -214,7 +214,7 @@ public class SpeciesCollectionXmlParserTest extends CellDesignerTestFunctions {
 			List<Pair<String, ? extends CellDesignerSpecies<?>>> list = parser.parseXmlProteinCollection(node);
 			List<Protein> arList = new ArrayList<>();
 			for (Pair<String, ? extends CellDesignerSpecies<?>> pair : list) {
-				arList.add((Protein) pair.getRight().createAlias("" + idCounter++));
+				arList.add((Protein) pair.getRight().createModelElement("" + idCounter++));
 			}
 			String convertedString = parser.proteinCollectionToXmlString(arList);
 			assertNotNull(convertedString);
@@ -251,7 +251,7 @@ public class SpeciesCollectionXmlParserTest extends CellDesignerTestFunctions {
 			List<Pair<String, ? extends CellDesignerSpecies<?>>> list = parser.parseXmlAntisenseRnaCollection(node);
 			List<AntisenseRna> arList = new ArrayList<>();
 			for (Pair<String, ? extends CellDesignerSpecies<?>> pair : list) {
-				arList.add((AntisenseRna) pair.getRight().createAlias());
+				arList.add((AntisenseRna) pair.getRight().createModelElement());
 			}
 			String convertedString = parser.antisenseRnaCollectionToXmlString(arList);
 			assertNotNull(convertedString);
@@ -308,9 +308,8 @@ public class SpeciesCollectionXmlParserTest extends CellDesignerTestFunctions {
 				if (species.getClass() == CellDesignerProtein.class) {
 					species = new CellDesignerGenericProtein(species);
 				}
-				species.setModel(model);
 
-				Species alias = species.createAlias("alias" + (x++));
+				Species alias = species.createModelElement("alias" + (x++));
 				model.addElement(alias);
 				speciesList.add(alias);
 			}
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesSbmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesSbmlParserTest.java
index a1c2c9bd7e..24833a18ae 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesSbmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/species/SpeciesSbmlParserTest.java
@@ -55,9 +55,7 @@ public class SpeciesSbmlParserTest extends CellDesignerTestFunctions {
 
 	String												testDirectory					 = "testFiles" + System.getProperty("file.separator") + "xmlNodeTestExamples"
 			+ System.getProperty("file.separator");
-	String												testAntisenseRnaFile	 = "sbml_antisense_rna.xml";
 	String												testGeneFile					 = "sbml_gene.xml";
-	String												testComplexFile				 = "sbml_complex.xml";
 	String												testDegradedFile			 = "sbml_degraded.xml";
 	String												testDrugFile					 = "sbml_drug.xml";
 	String												testIonFile						 = "sbml_ion.xml";
@@ -84,7 +82,7 @@ public class SpeciesSbmlParserTest extends CellDesignerTestFunctions {
 	@Test
 	public void testParseXmlSpeciesAntisenseRna() throws Exception {
 		try {
-			String xmlString = readFile(testDirectory + testAntisenseRnaFile);
+			String xmlString = readFile(testDirectory + "sbml_antisense_rna.xml");
 			Pair<String, ? extends CellDesignerSpecies<?>> result = parser.parseXmlElement(xmlString);
 			CellDesignerAntisenseRna species = (CellDesignerAntisenseRna) result.getRight();
 			assertEquals("s2", species.getElementId());
@@ -101,11 +99,11 @@ public class SpeciesSbmlParserTest extends CellDesignerTestFunctions {
 	@Test
 	public void testToXmlAntisenseRna() throws Exception {
 		try {
-			String xmlString = readFile(testDirectory + testAntisenseRnaFile);
+			String xmlString = readFile(testDirectory + "sbml_antisense_rna.xml");
 			Pair<String, ? extends CellDesignerSpecies<?>> result = parser.parseXmlElement(xmlString);
 			CellDesignerAntisenseRna species = (CellDesignerAntisenseRna) result.getRight();
 
-			String transformedXml = parser.toXml(species.createAlias());
+			String transformedXml = parser.toXml(species.createModelElement());
 			assertNotNull(transformedXml);
 			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 			DocumentBuilder builder = factory.newDocumentBuilder();
@@ -114,7 +112,7 @@ public class SpeciesSbmlParserTest extends CellDesignerTestFunctions {
 			NodeList root = doc.getChildNodes();
 			assertEquals("species", root.item(0).getNodeName());
 
-			Pair<String, ? extends CellDesignerSpecies<?>> result2 = parser.parseXmlElement(parser.toXml(species.createAlias()));
+			Pair<String, ? extends CellDesignerSpecies<?>> result2 = parser.parseXmlElement(parser.toXml(species.createModelElement()));
 			CellDesignerAntisenseRna species2 = (CellDesignerAntisenseRna) result2.getRight();
 
 			assertEquals(species.getName(), species2.getName());
@@ -133,7 +131,7 @@ public class SpeciesSbmlParserTest extends CellDesignerTestFunctions {
 	@Test
 	public void testParseXmlSpeciesComplex() throws Exception {
 		try {
-			String xmlString = readFile(testDirectory + testComplexFile);
+			String xmlString = readFile(testDirectory + "sbml_complex.xml");
 			Pair<String, ? extends CellDesignerSpecies<?>> result = parser.parseXmlElement(xmlString);
 			CellDesignerComplexSpecies species = (CellDesignerComplexSpecies) result.getRight();
 			assertNotNull(species);
@@ -149,11 +147,11 @@ public class SpeciesSbmlParserTest extends CellDesignerTestFunctions {
 	@Test
 	public void testToXmlComplex() throws Exception {
 		try {
-			String xmlString = readFile(testDirectory + testComplexFile);
+			String xmlString = readFile(testDirectory + "sbml_complex.xml");
 			Pair<String, ? extends CellDesignerSpecies<?>> result = parser.parseXmlElement(xmlString);
 			CellDesignerComplexSpecies species = (CellDesignerComplexSpecies) result.getRight();
 
-			String transformedXml = parser.toXml(species.createAlias());
+			String transformedXml = parser.toXml(species.createModelElement());
 			assertNotNull(transformedXml);
 			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 			DocumentBuilder builder = factory.newDocumentBuilder();
@@ -162,7 +160,7 @@ public class SpeciesSbmlParserTest extends CellDesignerTestFunctions {
 			NodeList root = doc.getChildNodes();
 			assertEquals("species", root.item(0).getNodeName());
 
-			Pair<String, ? extends CellDesignerSpecies<?>> result2 = parser.parseXmlElement(parser.toXml(species.createAlias()));
+			Pair<String, ? extends CellDesignerSpecies<?>> result2 = parser.parseXmlElement(parser.toXml(species.createModelElement()));
 			CellDesignerComplexSpecies species2 = (CellDesignerComplexSpecies) result2.getRight();
 
 			assertNotNull(species2);
@@ -202,7 +200,7 @@ public class SpeciesSbmlParserTest extends CellDesignerTestFunctions {
 			Pair<String, ? extends CellDesignerSpecies<?>> result = parser.parseXmlElement(xmlString);
 			CellDesignerDegraded species = (CellDesignerDegraded) result.getRight();
 
-			String transformedXml = parser.toXml(species.createAlias());
+			String transformedXml = parser.toXml(species.createModelElement());
 			assertNotNull(transformedXml);
 			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 			DocumentBuilder builder = factory.newDocumentBuilder();
@@ -211,7 +209,7 @@ public class SpeciesSbmlParserTest extends CellDesignerTestFunctions {
 			NodeList root = doc.getChildNodes();
 			assertEquals("species", root.item(0).getNodeName());
 
-			Pair<String, ? extends CellDesignerSpecies<?>> result2 = parser.parseXmlElement(parser.toXml(species.createAlias()));
+			Pair<String, ? extends CellDesignerSpecies<?>> result2 = parser.parseXmlElement(parser.toXml(species.createModelElement()));
 			CellDesignerDegraded species2 = (CellDesignerDegraded) result2.getRight();
 
 			assertNotNull(species2);
@@ -248,7 +246,7 @@ public class SpeciesSbmlParserTest extends CellDesignerTestFunctions {
 			Pair<String, ? extends CellDesignerSpecies<?>> result = parser.parseXmlElement(xmlString);
 			CellDesignerDrug species = (CellDesignerDrug) result.getRight();
 
-			String transformedXml = parser.toXml(species.createAlias());
+			String transformedXml = parser.toXml(species.createModelElement());
 			assertNotNull(transformedXml);
 			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 			DocumentBuilder builder = factory.newDocumentBuilder();
@@ -257,7 +255,7 @@ public class SpeciesSbmlParserTest extends CellDesignerTestFunctions {
 			NodeList root = doc.getChildNodes();
 			assertEquals("species", root.item(0).getNodeName());
 
-			Pair<String, ? extends CellDesignerSpecies<?>> result2 = parser.parseXmlElement(parser.toXml(species.createAlias()));
+			Pair<String, ? extends CellDesignerSpecies<?>> result2 = parser.parseXmlElement(parser.toXml(species.createModelElement()));
 			CellDesignerDrug species2 = (CellDesignerDrug) result2.getRight();
 
 			assertNotNull(species2);
@@ -324,7 +322,7 @@ public class SpeciesSbmlParserTest extends CellDesignerTestFunctions {
 			Pair<String, ? extends CellDesignerSpecies<?>> result = parser.parseXmlElement(xmlString);
 			CellDesignerGene species = (CellDesignerGene) result.getRight();
 
-			String transformedXml = parser.toXml(species.createAlias());
+			String transformedXml = parser.toXml(species.createModelElement());
 			assertNotNull(transformedXml);
 			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 			DocumentBuilder builder = factory.newDocumentBuilder();
@@ -333,7 +331,7 @@ public class SpeciesSbmlParserTest extends CellDesignerTestFunctions {
 			NodeList root = doc.getChildNodes();
 			assertEquals("species", root.item(0).getNodeName());
 
-			Pair<String, ? extends CellDesignerSpecies<?>> result2 = parser.parseXmlElement(parser.toXml(species.createAlias()));
+			Pair<String, ? extends CellDesignerSpecies<?>> result2 = parser.parseXmlElement(parser.toXml(species.createModelElement()));
 			CellDesignerGene species2 = (CellDesignerGene) result2.getRight();
 
 			assertNotNull(species2);
@@ -375,7 +373,7 @@ public class SpeciesSbmlParserTest extends CellDesignerTestFunctions {
 			Pair<String, ? extends CellDesignerSpecies<?>> result = parser.parseXmlElement(xmlString);
 			CellDesignerIon species = (CellDesignerIon) result.getRight();
 
-			String transformedXml = parser.toXml(species.createAlias());
+			String transformedXml = parser.toXml(species.createModelElement());
 			assertNotNull(transformedXml);
 			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 			DocumentBuilder builder = factory.newDocumentBuilder();
@@ -427,7 +425,7 @@ public class SpeciesSbmlParserTest extends CellDesignerTestFunctions {
 			Pair<String, ? extends CellDesignerSpecies<?>> result = parser.parseXmlElement(xmlString);
 			CellDesignerPhenotype species = (CellDesignerPhenotype) result.getRight();
 
-			String transformedXml = parser.toXml(species.createAlias());
+			String transformedXml = parser.toXml(species.createModelElement());
 			assertNotNull(transformedXml);
 			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 			DocumentBuilder builder = factory.newDocumentBuilder();
@@ -436,7 +434,7 @@ public class SpeciesSbmlParserTest extends CellDesignerTestFunctions {
 			NodeList root = doc.getChildNodes();
 			assertEquals("species", root.item(0).getNodeName());
 
-			Pair<String, ? extends CellDesignerSpecies<?>> result2 = parser.parseXmlElement(parser.toXml(species.createAlias()));
+			Pair<String, ? extends CellDesignerSpecies<?>> result2 = parser.parseXmlElement(parser.toXml(species.createModelElement()));
 			CellDesignerPhenotype species2 = (CellDesignerPhenotype) result2.getRight();
 
 			assertNotNull(species2);
@@ -480,7 +478,7 @@ public class SpeciesSbmlParserTest extends CellDesignerTestFunctions {
 			Pair<String, ? extends CellDesignerSpecies<?>> result = parser.parseXmlElement(xmlString);
 			CellDesignerGenericProtein species = new CellDesignerGenericProtein(result.getRight());
 
-			String transformedXml = parser.toXml(species.createAlias("" + idCounter++));
+			String transformedXml = parser.toXml(species.createModelElement("" + idCounter++));
 			assertNotNull(transformedXml);
 			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 			DocumentBuilder builder = factory.newDocumentBuilder();
@@ -489,7 +487,7 @@ public class SpeciesSbmlParserTest extends CellDesignerTestFunctions {
 			NodeList root = doc.getChildNodes();
 			assertEquals("species", root.item(0).getNodeName());
 
-			Pair<String, ? extends CellDesignerSpecies<?>> result2 = parser.parseXmlElement(parser.toXml(species.createAlias("" + idCounter++)));
+			Pair<String, ? extends CellDesignerSpecies<?>> result2 = parser.parseXmlElement(parser.toXml(species.createModelElement("" + idCounter++)));
 			CellDesignerProtein<?> species2 = (CellDesignerProtein<?>) result2.getRight();
 
 			assertNotNull(species2);
@@ -532,7 +530,7 @@ public class SpeciesSbmlParserTest extends CellDesignerTestFunctions {
 			Pair<String, ? extends CellDesignerSpecies<?>> result = parser.parseXmlElement(xmlString);
 			CellDesignerRna species = (CellDesignerRna) result.getRight();
 
-			String transformedXml = parser.toXml(species.createAlias());
+			String transformedXml = parser.toXml(species.createModelElement());
 			assertNotNull(transformedXml);
 			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 			DocumentBuilder builder = factory.newDocumentBuilder();
@@ -541,7 +539,7 @@ public class SpeciesSbmlParserTest extends CellDesignerTestFunctions {
 			NodeList root = doc.getChildNodes();
 			assertEquals("species", root.item(0).getNodeName());
 
-			Pair<String, ? extends CellDesignerSpecies<?>> result2 = parser.parseXmlElement(parser.toXml(species.createAlias()));
+			Pair<String, ? extends CellDesignerSpecies<?>> result2 = parser.parseXmlElement(parser.toXml(species.createModelElement()));
 			CellDesignerRna species2 = (CellDesignerRna) result2.getRight();
 
 			assertNotNull(species2);
@@ -581,7 +579,7 @@ public class SpeciesSbmlParserTest extends CellDesignerTestFunctions {
 			Pair<String, ? extends CellDesignerSpecies<?>> result = parser.parseXmlElement(xmlString);
 			CellDesignerSimpleMolecule species = (CellDesignerSimpleMolecule) result.getRight();
 
-			String transformedXml = parser.toXml(species.createAlias("" + idCounter++));
+			String transformedXml = parser.toXml(species.createModelElement("" + idCounter++));
 			assertNotNull(transformedXml);
 			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 			DocumentBuilder builder = factory.newDocumentBuilder();
@@ -590,7 +588,7 @@ public class SpeciesSbmlParserTest extends CellDesignerTestFunctions {
 			NodeList root = doc.getChildNodes();
 			assertEquals("species", root.item(0).getNodeName());
 
-			Pair<String, ? extends CellDesignerSpecies<?>> result2 = parser.parseXmlElement(parser.toXml(species.createAlias("" + idCounter++)));
+			Pair<String, ? extends CellDesignerSpecies<?>> result2 = parser.parseXmlElement(parser.toXml(species.createModelElement("" + idCounter++)));
 			CellDesignerSimpleMolecule species2 = (CellDesignerSimpleMolecule) result2.getRight();
 
 			assertNotNull(species2);
@@ -631,7 +629,7 @@ public class SpeciesSbmlParserTest extends CellDesignerTestFunctions {
 			Pair<String, ? extends CellDesignerSpecies<?>> result = parser.parseXmlElement(xmlString);
 			CellDesignerUnknown species = (CellDesignerUnknown) result.getRight();
 
-			String transformedXml = parser.toXml(species.createAlias());
+			String transformedXml = parser.toXml(species.createModelElement());
 			assertNotNull(transformedXml);
 			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 			DocumentBuilder builder = factory.newDocumentBuilder();
@@ -640,7 +638,7 @@ public class SpeciesSbmlParserTest extends CellDesignerTestFunctions {
 			NodeList root = doc.getChildNodes();
 			assertEquals("species", root.item(0).getNodeName());
 
-			Pair<String, ? extends CellDesignerSpecies<?>> result2 = parser.parseXmlElement(parser.toXml(species.createAlias()));
+			Pair<String, ? extends CellDesignerSpecies<?>> result2 = parser.parseXmlElement(parser.toXml(species.createModelElement()));
 			CellDesignerUnknown species2 = (CellDesignerUnknown) result2.getRight();
 
 			assertNotNull(species2);
@@ -858,7 +856,7 @@ public class SpeciesSbmlParserTest extends CellDesignerTestFunctions {
 	public void testToXmlWithDefaultCompartment() throws Exception {
 		try {
 			CellDesignerGenericProtein species = new CellDesignerGenericProtein();
-			String xml = parser.toXml(species.createAlias("EL_ID"));
+			String xml = parser.toXml(species.createModelElement("EL_ID"));
 			assertTrue(xml.contains("EL_ID"));
 		} catch (Exception e) {
 			e.printStackTrace();
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/AllStructureTests.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/AllStructureTests.java
index 4999fd5c63..15e84c09a0 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/AllStructureTests.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/AllStructureTests.java
@@ -4,9 +4,13 @@ import org.junit.runner.RunWith;
 import org.junit.runners.Suite;
 import org.junit.runners.Suite.SuiteClasses;
 
+import lcsb.mapviewer.converter.model.celldesigner.structure.fields.AllFieldsTests;
+
 @RunWith(Suite.class)
-@SuiteClasses({ AntisenseRnaRegionTest.class, //
+@SuiteClasses({ AllFieldsTests.class, //
+		AntisenseRnaRegionTest.class, //
 		AntisenseRnaTest.class, //
+		CellDesignerChemicalTest.class, //
 		CompartmentTest.class, //
 		ComplexSpeciesTest.class, //
 		ConnectSchemeTest.class, //
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/AntisenseRnaRegionTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/AntisenseRnaRegionTest.java
index cd76043886..dc475ce8fd 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/AntisenseRnaRegionTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/AntisenseRnaRegionTest.java
@@ -2,7 +2,6 @@ package lcsb.mapviewer.converter.model.celldesigner.structure;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
 import static org.junit.Assert.fail;
 
 import org.apache.commons.lang3.SerializationUtils;
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/AntisenseRnaTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/AntisenseRnaTest.java
index 06f0f87d3e..98b0de4f63 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/AntisenseRnaTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/AntisenseRnaTest.java
@@ -12,6 +12,7 @@ import org.apache.commons.lang3.SerializationUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.Mockito;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.converter.model.celldesigner.structure.fields.CellDesignerAntisenseRnaRegion;
@@ -119,7 +120,6 @@ public class AntisenseRnaTest {
 	public void testGetters() {
 		try {
 			CellDesignerAntisenseRna aRna = new CellDesignerAntisenseRna(new CellDesignerSpecies<AntisenseRna>());
-			assertNotNull(aRna.getStringType());
 
 			List<CellDesignerAntisenseRnaRegion> regions = new ArrayList<>();
 
@@ -146,13 +146,8 @@ public class AntisenseRnaTest {
 	@Test
 	public void testInvalidCopy() {
 		try {
-			new CellDesignerAntisenseRna() {
-
-				/**
-				 * 
-				 */
-				private static final long serialVersionUID = 1L;
-			}.copy();
+			CellDesignerAntisenseRna antisenseRna = Mockito.spy(CellDesignerAntisenseRna.class);
+			antisenseRna.copy();
 			fail("Exception expected");
 		} catch (NotImplementedException e) {
 		} catch (Exception e) {
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerChemicalTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerChemicalTest.java
new file mode 100644
index 0000000000..da6753e8ae
--- /dev/null
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/CellDesignerChemicalTest.java
@@ -0,0 +1,40 @@
+package lcsb.mapviewer.converter.model.celldesigner.structure;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.Test;
+
+public class CellDesignerChemicalTest {
+
+	@AfterClass
+	public static void tearDownAfterClass() throws Exception {
+	}
+
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	@Test
+	public void testGetters() {
+		String smiles = "smiles";
+		String inChI = "inchi";
+		String inChIKey = "key";
+
+		CellDesignerChemical<?> chemical = new CellDesignerIon();
+		chemical.setSmiles(smiles);
+		chemical.setInChI(inChI);
+		chemical.setInChIKey(inChIKey);
+
+		assertEquals(smiles, chemical.getSmiles());
+		assertEquals(inChI, chemical.getInChI());
+		assertEquals(inChIKey, chemical.getInChIKey());
+	}
+
+}
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/CompartmentTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/CompartmentTest.java
index 683467964a..e0316dca58 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/CompartmentTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/CompartmentTest.java
@@ -10,6 +10,7 @@ import org.apache.commons.lang3.SerializationUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.Mockito;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
 
@@ -97,8 +98,7 @@ public class CompartmentTest {
 
 			compartment.setElementId(elementId);
 			assertEquals(elementId, compartment.getElementId());
-
-			assertNotNull(compartment.getStringType());
+			
 		} catch (Exception e) {
 			e.printStackTrace();
 			throw e;
@@ -124,16 +124,43 @@ public class CompartmentTest {
 		}
 	}
 
+	@Test
+	public void testHashCode() {
+		try {
+			CellDesignerCompartment compartment = new CellDesignerCompartment();
+			compartment.setName("name");
+
+			int code = compartment.hashCode();
+			compartment.setName("name2");
+			int code2 = compartment.hashCode();
+
+			assertTrue(code != code2);
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
 	@Test
 	public void testInvalidCopy() {
 		try {
-			new CellDesignerCompartment() {
+			CellDesignerCompartment compartment = Mockito.spy(CellDesignerCompartment.class);
+			compartment.copy();
+			fail("Exception expected");
+		} catch (NotImplementedException e) {
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
 
-				/**
-				 * 
-				 */
-				private static final long serialVersionUID = 1L;
-			}.copy();
+	@Test
+	public void testCreateModelElementWithProblems() {
+		try {
+			CellDesignerCompartment compartment = new CellDesignerCompartment();
+			compartment.addElement(new CellDesignerAntisenseRna());
+			compartment.createModelElement();
 			fail("Exception expected");
 		} catch (NotImplementedException e) {
 		} catch (Exception e) {
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ComplexSpeciesTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ComplexSpeciesTest.java
index d4a46a3bce..674e14a750 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ComplexSpeciesTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ComplexSpeciesTest.java
@@ -11,12 +11,10 @@ import org.apache.commons.lang3.SerializationUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.Mockito;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerComplexSpecies;
-import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerElement;
-import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerSpecies;
 import lcsb.mapviewer.model.map.species.AntisenseRna;
 
 public class ComplexSpeciesTest {
@@ -56,7 +54,6 @@ public class ComplexSpeciesTest {
 			CellDesignerComplexSpecies species = new CellDesignerComplexSpecies();
 			species.addElement(new CellDesignerSpecies<AntisenseRna>());
 			CellDesignerComplexSpecies complex = new CellDesignerComplexSpecies(species);
-			assertNotNull(complex.getStringType());
 
 			Set<CellDesignerElement<?>> elements = new HashSet<>();
 			complex.setElements(elements);
@@ -124,13 +121,22 @@ public class ComplexSpeciesTest {
 	@Test
 	public void testInvalidCopy() {
 		try {
-			new CellDesignerComplexSpecies() {
+			CellDesignerComplexSpecies complex = Mockito.spy(CellDesignerComplexSpecies.class);
+			complex.copy();
+			fail("Exception expected");
+		} catch (NotImplementedException e) {
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
 
-				/**
-				 * 
-				 */
-				private static final long serialVersionUID = 1L;
-			}.copy();
+	@Test
+	public void testCreateInvalidElement() {
+		try {
+			CellDesignerComplexSpecies complex = new CellDesignerComplexSpecies();
+			complex.addElement(new CellDesignerGene());
+			complex.createModelElement();
 			fail("Exception expected");
 		} catch (NotImplementedException e) {
 		} catch (Exception e) {
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/DegradedTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/DegradedTest.java
index 245d441ac1..636f4bb559 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/DegradedTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/DegradedTest.java
@@ -7,10 +7,9 @@ import org.apache.commons.lang3.SerializationUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.Mockito;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerDegraded;
-import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerSpecies;
 import lcsb.mapviewer.model.map.species.Degraded;
 
 public class DegradedTest {
@@ -44,17 +43,6 @@ public class DegradedTest {
 		}
 	}
 
-	@Test
-	public void testGetters() {
-		try {
-			CellDesignerDegraded degraded = new CellDesignerDegraded(new CellDesignerSpecies<Degraded>());
-			assertNotNull(degraded.getStringType());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
 	@Test
 	public void testCopy() {
 		try {
@@ -69,13 +57,8 @@ public class DegradedTest {
 	@Test
 	public void testInvalidCopy() {
 		try {
-			new CellDesignerDegraded() {
-
-				/**
-				 * 
-				 */
-				private static final long serialVersionUID = 1L;
-			}.copy();
+			CellDesignerDegraded degraded = Mockito.spy(CellDesignerDegraded.class);
+			degraded.copy();
 			fail("Exception expected");
 		} catch (NotImplementedException e) {
 		} catch (Exception e) {
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/DrugTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/DrugTest.java
index 67068e7b80..b0354518a9 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/DrugTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/DrugTest.java
@@ -7,10 +7,9 @@ import org.apache.commons.lang3.SerializationUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.Mockito;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerDrug;
-import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerSpecies;
 import lcsb.mapviewer.model.map.species.Drug;
 
 public class DrugTest {
@@ -32,7 +31,6 @@ public class DrugTest {
 			throw e;
 		}
 	}
-	
 
 	@Test
 	public void testConstructor1() {
@@ -45,17 +43,6 @@ public class DrugTest {
 		}
 	}
 
-	@Test
-	public void testGetters() {
-		try {
-			CellDesignerDrug degraded = new CellDesignerDrug(new CellDesignerSpecies<Drug>());
-			assertNotNull(degraded.getStringType());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
 	@Test
 	public void testCopy() {
 		try {
@@ -70,13 +57,8 @@ public class DrugTest {
 	@Test
 	public void testInvalidCopy() {
 		try {
-			new CellDesignerDrug() {
-
-				/**
-				 * 
-				 */
-				private static final long serialVersionUID = 1L;
-			}.copy();
+			CellDesignerDrug drug = Mockito.spy(CellDesignerDrug.class);
+			drug.copy();
 			fail("Exception expected");
 		} catch (NotImplementedException e) {
 		} catch (Exception e) {
@@ -85,5 +67,4 @@ public class DrugTest {
 		}
 	}
 
-	
 }
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ElementTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ElementTest.java
index 290c5f552d..6e000c3bca 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ElementTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ElementTest.java
@@ -107,20 +107,20 @@ public class ElementTest extends CellDesignerTestFunctions {
 			List<String> synonyms = new ArrayList<>();
 			List<String> formerSymbols = new ArrayList<>();
 			CellDesignerComplexSpecies complex = new CellDesignerComplexSpecies();
-			Model model = new ModelFullIndexed(null);
 			String formula = "str";
+			String abbreviation = "abr";
 
 			element.setSynonyms(synonyms);
 			element.setFormerSymbols(formerSymbols);
 			element.setComplex(complex);
-			element.setModel(model);
 			element.setFormula(formula);
+			element.setAbbreviation(abbreviation);
 
 			assertEquals(synonyms, element.getSynonyms());
 			assertEquals(formerSymbols, element.getFormerSymbols());
 			assertEquals(complex, element.getComplex());
-			assertEquals(model.getModelData(), element.getModelData());
 			assertEquals(formula, element.getFormula());
+			assertEquals(abbreviation, element.getAbbreviation());
 
 		} catch (Exception e) {
 			e.printStackTrace();
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/GeneTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/GeneTest.java
index 3615ade99b..d9aaebc4e0 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/GeneTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/GeneTest.java
@@ -11,6 +11,7 @@ import org.apache.commons.lang3.SerializationUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.Mockito;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.converter.model.celldesigner.structure.fields.CellDesignerModificationResidue;
@@ -54,7 +55,6 @@ public class GeneTest {
 		try {
 			List<CellDesignerModificationResidue> modificationResidues = new ArrayList<>();
 			CellDesignerGene gene = new CellDesignerGene(new CellDesignerSpecies<Gene>());
-			assertNotNull(gene.getStringType());
 			gene.setModificationResidues(modificationResidues);
 			assertEquals(modificationResidues, gene.getModificationResidues());
 		} catch (Exception e) {
@@ -77,13 +77,8 @@ public class GeneTest {
 	@Test
 	public void testInvalidCopy() {
 		try {
-			new CellDesignerGene() {
-
-				/**
-				 * 
-				 */
-				private static final long serialVersionUID = 1L;
-			}.copy();
+			CellDesignerGene gene = Mockito.spy(CellDesignerGene.class);
+			gene.copy();
 			fail("Exception expected");
 		} catch (NotImplementedException e) {
 		} catch (Exception e) {
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/GenericProteinTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/GenericProteinTest.java
index 40507f0dce..866399a63a 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/GenericProteinTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/GenericProteinTest.java
@@ -7,10 +7,9 @@ import org.apache.commons.lang3.SerializationUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.Mockito;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerGenericProtein;
-import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerSpecies;
 import lcsb.mapviewer.model.map.species.GenericProtein;
 
 public class GenericProteinTest {
@@ -58,13 +57,8 @@ public class GenericProteinTest {
 	@Test
 	public void testCopy2() {
 		try {
-			new CellDesignerGenericProtein() {
-
-				/**
-				 * 
-				 */
-				private static final long serialVersionUID = 1L;
-			}.copy();
+			CellDesignerGenericProtein protein = Mockito.spy(CellDesignerGenericProtein.class);
+			protein.copy();
 			fail("Exception expected");
 		} catch (NotImplementedException e) {
 		} catch (Exception e) {
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/IonChannelProteinTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/IonChannelProteinTest.java
index 927e254d89..e4c9423343 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/IonChannelProteinTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/IonChannelProteinTest.java
@@ -7,10 +7,9 @@ import org.apache.commons.lang3.SerializationUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.Mockito;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerIonChannelProtein;
-import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerSpecies;
 import lcsb.mapviewer.model.map.species.IonChannelProtein;
 
 public class IonChannelProteinTest {
@@ -58,13 +57,8 @@ public class IonChannelProteinTest {
 	@Test
 	public void testCopy2() {
 		try {
-			new CellDesignerIonChannelProtein() {
-
-				/**
-				 * 
-				 */
-				private static final long serialVersionUID = 1L;
-			}.copy();
+			CellDesignerIonChannelProtein protein = Mockito.spy(CellDesignerIonChannelProtein.class);
+			protein.copy();
 			fail("Exception expected");
 		} catch (NotImplementedException e) {
 		} catch (Exception e) {
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/IonTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/IonTest.java
index 6e234ae978..a42eadbe87 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/IonTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/IonTest.java
@@ -7,10 +7,9 @@ import org.apache.commons.lang3.SerializationUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.Mockito;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerIon;
-import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerSpecies;
 import lcsb.mapviewer.model.map.species.IonChannelProtein;
 
 public class IonTest {
@@ -32,7 +31,6 @@ public class IonTest {
 			throw e;
 		}
 	}
-	
 
 	@Test
 	public void testConstructor1() {
@@ -45,17 +43,6 @@ public class IonTest {
 		}
 	}
 
-	@Test
-	public void testGetters() {
-		try {
-			CellDesignerIon degraded = new CellDesignerIon(new CellDesignerSpecies<IonChannelProtein>());
-			assertNotNull(degraded.getStringType());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
 	@Test
 	public void testCopy() {
 		try {
@@ -70,13 +57,8 @@ public class IonTest {
 	@Test
 	public void testInvalidCopy() {
 		try {
-			new CellDesignerIon() {
-
-				/**
-				 * 
-				 */
-				private static final long serialVersionUID = 1L;
-			}.copy();
+			CellDesignerIon ion = Mockito.spy(CellDesignerIon.class);
+			ion.copy();
 			fail("Exception expected");
 		} catch (NotImplementedException e) {
 		} catch (Exception e) {
@@ -85,5 +67,4 @@ public class IonTest {
 		}
 	}
 
-	
 }
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/PhenotypeTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/PhenotypeTest.java
index 2c29ccafb2..2e0508828c 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/PhenotypeTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/PhenotypeTest.java
@@ -7,6 +7,7 @@ import org.apache.commons.lang3.SerializationUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.Mockito;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
 
@@ -56,13 +57,8 @@ public class PhenotypeTest {
 	@Test
 	public void testInvalidCopy() {
 		try {
-			new CellDesignerPhenotype() {
-
-				/**
-				 * 
-				 */
-				private static final long serialVersionUID = 1L;
-			}.copy();
+			CellDesignerPhenotype phenotype = Mockito.spy(CellDesignerPhenotype.class);
+			phenotype.copy();
 			fail("Exception expected");
 		} catch (NotImplementedException e) {
 		} catch (Exception e) {
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ProteinTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ProteinTest.java
index abfd04f7e1..0ab3558eea 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ProteinTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ProteinTest.java
@@ -15,6 +15,7 @@ import org.mockito.Mockito;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.converter.model.celldesigner.structure.fields.CellDesignerModificationResidue;
+import lcsb.mapviewer.model.map.species.GenericProtein;
 import lcsb.mapviewer.model.map.species.Protein;
 
 public class ProteinTest {
@@ -108,21 +109,10 @@ public class ProteinTest {
 		}
 	}
 
-	@Test
-	public void testGetters() {
-		try {
-			CellDesignerProtein<?> protein = new CellDesignerGenericProtein(new CellDesignerSpecies<Protein>());
-			assertNotNull(protein.getStringType());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
 	@Test
 	public void testCopy() {
 		try {
-			CellDesignerProtein<?> protein = new CellDesignerGenericProtein().copy();
+			CellDesignerProtein<?> protein = new CellDesignerProtein<GenericProtein>().copy();
 			assertNotNull(protein);
 		} catch (Exception e) {
 			e.printStackTrace();
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ReceptorProteinTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ReceptorProteinTest.java
index 9713ddd4f5..f9b3b8a7a7 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ReceptorProteinTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/ReceptorProteinTest.java
@@ -7,10 +7,9 @@ import org.apache.commons.lang3.SerializationUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.Mockito;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerReceptorProtein;
-import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerSpecies;
 import lcsb.mapviewer.model.map.species.ReceptorProtein;
 
 public class ReceptorProteinTest {
@@ -58,13 +57,8 @@ public class ReceptorProteinTest {
 	@Test
 	public void testCopy2() {
 		try {
-			new CellDesignerReceptorProtein() {
-
-				/**
-				 * 
-				 */
-				private static final long serialVersionUID = 1L;
-			}.copy();
+			CellDesignerReceptorProtein protein = Mockito.spy(CellDesignerReceptorProtein.class);
+			protein.copy();
 			fail("Exception expected");
 		} catch (NotImplementedException e) {
 		} catch (Exception e) {
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/RnaTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/RnaTest.java
index c5cc495f63..6cd1da2342 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/RnaTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/RnaTest.java
@@ -13,6 +13,7 @@ import org.apache.log4j.Logger;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.Mockito;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.converter.model.celldesigner.structure.fields.CellDesignerRnaRegion;
@@ -55,7 +56,6 @@ public class RnaTest {
 	public void testGetters() {
 		try {
 			CellDesignerRna rna = new CellDesignerRna(new CellDesignerSpecies<Rna>());
-			assertNotNull(rna.getStringType());
 			List<CellDesignerRnaRegion> regions = new ArrayList<>();
 
 			rna.setRegions(regions);
@@ -81,13 +81,8 @@ public class RnaTest {
 	@Test
 	public void testInvalidCopy() {
 		try {
-			new CellDesignerRna() {
-
-				/**
-				 * 
-				 */
-				private static final long serialVersionUID = 1L;
-			}.copy();
+			CellDesignerRna rna = Mockito.spy(CellDesignerRna.class);
+			rna.copy();
 			fail("Exception expected");
 		} catch (NotImplementedException e) {
 		} catch (Exception e) {
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/SimpleMoleculeTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/SimpleMoleculeTest.java
index 6b819c24c4..12ba41b5c9 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/SimpleMoleculeTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/SimpleMoleculeTest.java
@@ -7,6 +7,7 @@ import org.apache.commons.lang3.SerializationUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.Mockito;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.model.map.species.SimpleMolecule;
@@ -30,7 +31,6 @@ public class SimpleMoleculeTest {
 			throw e;
 		}
 	}
-	
 
 	@Test
 	public void testConstructor1() {
@@ -43,17 +43,6 @@ public class SimpleMoleculeTest {
 		}
 	}
 
-	@Test
-	public void testGetters() {
-		try {
-			CellDesignerSimpleMolecule degraded = new CellDesignerSimpleMolecule(new CellDesignerSpecies<SimpleMolecule>());
-			assertNotNull(degraded.getStringType());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
 	@Test
 	public void testCopy() {
 		try {
@@ -68,13 +57,8 @@ public class SimpleMoleculeTest {
 	@Test
 	public void testInvalidCopy() {
 		try {
-			new CellDesignerSimpleMolecule() {
-
-				/**
-				 * 
-				 */
-				private static final long serialVersionUID = 1L;
-			}.copy();
+			CellDesignerSimpleMolecule simpleMolecule = Mockito.spy(CellDesignerSimpleMolecule.class);
+			simpleMolecule.copy();
 			fail("Exception expected");
 		} catch (NotImplementedException e) {
 		} catch (Exception e) {
@@ -83,5 +67,4 @@ public class SimpleMoleculeTest {
 		}
 	}
 
-	
 }
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/SpeciesTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/SpeciesTest.java
index 14a1f22989..bbc8f26a2f 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/SpeciesTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/SpeciesTest.java
@@ -16,6 +16,7 @@ import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerTestFunctions;
 import lcsb.mapviewer.model.map.MiriamData;
 import lcsb.mapviewer.model.map.species.GenericProtein;
+import lcsb.mapviewer.model.map.species.Rna;
 
 public class SpeciesTest extends CellDesignerTestFunctions {
 
@@ -44,21 +45,17 @@ public class SpeciesTest extends CellDesignerTestFunctions {
 			String elementId = "51";
 			Integer initialAmount = 54;
 			Integer initialConcentration = 58;
+			Integer charge = 59;
 			Boolean onlySubstanceUnits = true;
 
 			String trueStr = "true";
+			assertFalse(species.isHypothetical());
 			species.setHypothetical(trueStr);
 			assertTrue(species.isHypothetical());
 
 			species.setElementId(elementId);
 			assertEquals(elementId, species.getElementId());
 
-			try {
-				assertNull(species.getStringType());
-				fail("Exception expected");
-			} catch (NotImplementedException e) {
-			}
-
 			species.setInitialAmount(initialAmount);
 			assertEquals(initialAmount, species.getInitialAmount());
 
@@ -67,6 +64,13 @@ public class SpeciesTest extends CellDesignerTestFunctions {
 
 			species.setInitialConcentration(initialConcentration);
 			assertEquals(initialConcentration, species.getInitialConcentration());
+			
+			species.setCharge(charge);
+			
+			assertEquals(charge, species.getCharge());
+			
+			species.setElementId("");
+			assertEquals("", species.getElementId());
 
 		} catch (Exception e) {
 			e.printStackTrace();
@@ -317,4 +321,17 @@ public class SpeciesTest extends CellDesignerTestFunctions {
 		}
 	}
 
+	@Test
+	public void testCreateInvalidElement() {
+		try {
+			CellDesignerSpecies<?> complex = new CellDesignerSpecies<Rna>();
+			complex.createModelElement("id");
+			fail("Exception expected");
+		} catch (NotImplementedException e) {
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+	}
+
 }
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/TruncatedProteinTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/TruncatedProteinTest.java
index 3c62798bc5..9171a2ff8c 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/TruncatedProteinTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/TruncatedProteinTest.java
@@ -7,10 +7,9 @@ import org.apache.commons.lang3.SerializationUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.Mockito;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerSpecies;
-import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerTruncatedProtein;
 import lcsb.mapviewer.model.map.species.TruncatedProtein;
 
 public class TruncatedProteinTest {
@@ -58,13 +57,8 @@ public class TruncatedProteinTest {
 	@Test
 	public void testCopy2() {
 		try {
-			new CellDesignerTruncatedProtein() {
-
-				/**
-				 * 
-				 */
-				private static final long serialVersionUID = 1L;
-			}.copy();
+			CellDesignerTruncatedProtein protein = Mockito.spy(CellDesignerTruncatedProtein.class);
+			protein.copy();
 			fail("Exception expected");
 		} catch (NotImplementedException e) {
 		} catch (Exception e) {
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/UnknownTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/UnknownTest.java
index 8ed1e0bc65..1c5b80fe1f 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/UnknownTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/UnknownTest.java
@@ -7,10 +7,9 @@ import org.apache.commons.lang3.SerializationUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.Mockito;
 
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerSpecies;
-import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerUnknown;
 import lcsb.mapviewer.model.map.species.Unknown;
 
 public class UnknownTest {
@@ -44,17 +43,6 @@ public class UnknownTest {
 		}
 	}
 
-	@Test
-	public void testGetters() {
-		try {
-			CellDesignerUnknown degraded = new CellDesignerUnknown(new CellDesignerSpecies<Unknown>());
-			assertNotNull(degraded.getStringType());
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
 	@Test
 	public void testCopy() {
 		try {
@@ -69,13 +57,8 @@ public class UnknownTest {
 	@Test
 	public void testInvalidCopy() {
 		try {
-			new CellDesignerUnknown() {
-
-				/**
-				 * 
-				 */
-				private static final long serialVersionUID = 1L;
-			}.copy();
+			CellDesignerUnknown unknown = Mockito.spy(CellDesignerUnknown.class);
+			unknown.copy();
 			fail("Exception expected");
 		} catch (NotImplementedException e) {
 		} catch (Exception e) {
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/fields/AllFieldsTests.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/fields/AllFieldsTests.java
new file mode 100644
index 0000000000..7c08337d3f
--- /dev/null
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/fields/AllFieldsTests.java
@@ -0,0 +1,13 @@
+package lcsb.mapviewer.converter.model.celldesigner.structure.fields;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+@RunWith(Suite.class)
+@SuiteClasses({ CellDesignerModificationResidueTest.class, //
+		CellDesignerRnaRegionTest.class,//
+})
+public class AllFieldsTests {
+
+}
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/fields/CellDesignerModificationResidueTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/fields/CellDesignerModificationResidueTest.java
new file mode 100644
index 0000000000..96aa3aa79b
--- /dev/null
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/fields/CellDesignerModificationResidueTest.java
@@ -0,0 +1,30 @@
+package lcsb.mapviewer.converter.model.celldesigner.structure.fields;
+
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.Test;
+
+public class CellDesignerModificationResidueTest {
+
+	@AfterClass
+	public static void tearDownAfterClass() throws Exception {
+	}
+
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	@Test
+	public void test() {
+		CellDesignerModificationResidue region = new CellDesignerModificationResidue();
+		assertNotNull(region.toString());
+	}
+
+}
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/fields/CellDesignerRnaRegionTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/fields/CellDesignerRnaRegionTest.java
new file mode 100644
index 0000000000..f7e08b5a68
--- /dev/null
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/structure/fields/CellDesignerRnaRegionTest.java
@@ -0,0 +1,30 @@
+package lcsb.mapviewer.converter.model.celldesigner.structure.fields;
+
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.Test;
+
+public class CellDesignerRnaRegionTest {
+
+	@AfterClass
+	public static void tearDownAfterClass() throws Exception {
+	}
+
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	@Test
+	public void testToString() {
+		CellDesignerRnaRegion region = new CellDesignerRnaRegion();
+		assertNotNull(region.toString());
+	}
+
+}
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeUtilsTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeUtilsTest.java
index 47c055254a..91176fc9f1 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeUtilsTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/types/ModifierTypeUtilsTest.java
@@ -251,4 +251,14 @@ public class ModifierTypeUtilsTest {
 		}
 	}
 
+	@Test
+	public void testCreateModifierForStringType2() throws Exception {
+		try {
+			utils.createModifierForStringType("unjkType", null);
+			fail("Exceptione expected");
+		} catch (InvalidArgumentException e) {
+			assertTrue(e.getMessage().contains("Unknown modifier type"));
+		}
+	}
+
 }
-- 
GitLab