diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlBioEntityExporter.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlBioEntityExporter.java
index b864632feac0f5b664af934aadbdb7e56ede3b8e..3367dd33ba2862310bf98349c3a7b5c017c47ed2 100644
--- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlBioEntityExporter.java
+++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlBioEntityExporter.java
@@ -16,13 +16,14 @@ import lcsb.mapviewer.common.exception.InvalidStateException;
 import lcsb.mapviewer.model.map.BioEntity;
 import lcsb.mapviewer.model.map.InconsistentModelException;
 
-public abstract class SbmlBioEntityExporter<T extends BioEntity, S extends org.sbml.jsbml.AbstractNamedSBase> extends XmlParser {
+public abstract class SbmlBioEntityExporter<T extends BioEntity, S extends org.sbml.jsbml.AbstractNamedSBase>
+    extends XmlParser {
   Logger logger = Logger.getLogger(SbmlBioEntityExporter.class);
 
-  Layout layout;
+  private Layout layout;
 
-  lcsb.mapviewer.model.map.model.Model minervaModel;
-  Model sbmlModel;
+  private lcsb.mapviewer.model.map.model.Model minervaModel;
+  private Model sbmlModel;
 
   Map<String, S> sbmlElementByElementId = new HashMap<>();
   Map<String, AbstractReferenceGlyph> sbmlGlyphByElementId = new HashMap<>();
@@ -57,7 +58,7 @@ public abstract class SbmlBioEntityExporter<T extends BioEntity, S extends org.s
 
   public abstract S createSbmlElement(T element) throws InconsistentModelException;
 
-  protected S getSbmlElement(T element, String compartmentName) throws InconsistentModelException {
+  public S getSbmlElement(T element, String compartmentName) throws InconsistentModelException {
     String mapKey = element.getClass().getSimpleName() + "\n" + element.getElementId() + "\n" + compartmentName;
     if (sbmlElementByElementNameAndCompartmentName.get(mapKey) == null) {
       S sbmlElement = createSbmlElement(element);
@@ -88,4 +89,28 @@ public abstract class SbmlBioEntityExporter<T extends BioEntity, S extends org.s
     return (idCounter++) + "";
   }
 
+  protected Model getSbmlModel() {
+    return sbmlModel;
+  }
+
+  protected void setSbmlModel(Model sbmlModel) {
+    this.sbmlModel = sbmlModel;
+  }
+
+  protected Layout getLayout() {
+    return layout;
+  }
+
+  protected void setLayout(Layout layout) {
+    this.layout = layout;
+  }
+
+  protected lcsb.mapviewer.model.map.model.Model getMinervaModel() {
+    return minervaModel;
+  }
+
+  protected void setMinervaModel(lcsb.mapviewer.model.map.model.Model minervaModel) {
+    this.minervaModel = minervaModel;
+  }
+
 }
diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlCompartmentExporter.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlCompartmentExporter.java
index 269927153d0ff5db3926bba98c4409c923cf1482..5d6ed3439f0d9d94d7b5c71adc3e74e310a771f2 100644
--- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlCompartmentExporter.java
+++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlCompartmentExporter.java
@@ -18,17 +18,17 @@ public class SbmlCompartmentExporter extends SbmlElementExporter<Compartment, or
 
   @Override
   public org.sbml.jsbml.Compartment createSbmlElement(Compartment element) throws InconsistentModelException {
-    return sbmlModel.createCompartment("comp_" + (getNextId()));
+    return getSbmlModel().createCompartment("comp_" + (getNextId()));
   }
 
   @Override
   protected List<Compartment> getElementList() {
-    return minervaModel.getCompartments();
+    return getMinervaModel().getCompartments();
   }
 
   @Override
   protected AbstractReferenceGlyph createElementGlyph(String sbmlCompartmentId, String glyphId) {
-    return layout.createCompartmentGlyph(glyphId, sbmlCompartmentId);
+    return getLayout().createCompartmentGlyph(glyphId, sbmlCompartmentId);
   }
 
 }
diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlExporter.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlExporter.java
index d05941bef41cf587f4e9ac39e7a0952dda198a7a..57d7dd87937354ffabd6847c170ce379b66e6af5 100644
--- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlExporter.java
+++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlExporter.java
@@ -11,6 +11,7 @@ import org.sbml.jsbml.ext.layout.Dimensions;
 import org.sbml.jsbml.ext.layout.Layout;
 import org.sbml.jsbml.ext.layout.LayoutModelPlugin;
 
+import lcsb.mapviewer.converter.model.sbml.species.SbmlSpeciesExporter;
 import lcsb.mapviewer.model.map.InconsistentModelException;
 import lcsb.mapviewer.model.map.species.Species;
 
diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlParser.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlParser.java
index ee244ef5616df3ff148e939cb7fad5e871bc549c..beed330498d19d8574155b3715ad70a23a68f639 100644
--- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlParser.java
+++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlParser.java
@@ -28,6 +28,7 @@ import lcsb.mapviewer.converter.ConverterException;
 import lcsb.mapviewer.converter.ConverterParams;
 import lcsb.mapviewer.converter.IConverter;
 import lcsb.mapviewer.converter.InvalidInputDataExecption;
+import lcsb.mapviewer.converter.model.sbml.species.SbmlSpeciesParser;
 import lcsb.mapviewer.model.map.BioEntity;
 import lcsb.mapviewer.model.map.InconsistentModelException;
 import lcsb.mapviewer.model.map.MiriamData;
diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlReactionExporter.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlReactionExporter.java
index 7f39759342fecec83c30e5d85acf22c38d1428a1..e769a96c8c1398942c48d976f698d99622615e11 100644
--- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlReactionExporter.java
+++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlReactionExporter.java
@@ -21,7 +21,6 @@ import org.sbml.jsbml.ext.layout.Point;
 import org.sbml.jsbml.ext.layout.ReactionGlyph;
 import org.sbml.jsbml.ext.layout.SpeciesReferenceGlyph;
 import org.sbml.jsbml.ext.layout.SpeciesReferenceRole;
-import org.sbml.jsbml.text.parser.ParseException;
 import org.w3c.dom.Node;
 
 import lcsb.mapviewer.common.Configuration;
@@ -61,7 +60,7 @@ public class SbmlReactionExporter extends SbmlBioEntityExporter<Reaction, org.sb
     if (result != null) {
       return result;
     }
-    result = sbmlModel.createReaction(reactionId);
+    result = getSbmlModel().createReaction(reactionId);
     result.setReversible(reaction.isReversible());
     for (Product product : reaction.getProducts()) {
       Species sbmlSymbol = speciesExporter.sbmlElementByElementId.get(product.getElement().getElementId());
@@ -88,7 +87,7 @@ public class SbmlReactionExporter extends SbmlBioEntityExporter<Reaction, org.sb
     SbmlKinetics kinetics = reaction.getKinetics();
     KineticLaw result = new KineticLaw();
     for (SbmlParameter minervaParameter : kinetics.getParameters()) {
-      if (minervaModel.getParameterById(minervaParameter.getElementId()) == null) {
+      if (getMinervaModel().getParameterById(minervaParameter.getElementId()) == null) {
         LocalParameter parameter = new LocalParameter();
         parameter.setId(minervaParameter.getElementId());
         parameter.setName(minervaParameter.getName());
@@ -102,11 +101,11 @@ public class SbmlReactionExporter extends SbmlBioEntityExporter<Reaction, org.sb
       Node node = super.getXmlDocumentFromString(kinetics.getDefinition());
       for (Node ciNode : super.getAllNotNecessirellyDirectChild("ci", node)) {
         String id = super.getNodeValue(ciNode).trim();
-        Element element = minervaModel.getElementByElementId(id);
+        Element element = getMinervaModel().getElementByElementId(id);
         if (element != null) {
           String sbmlId = null;
-          Species species= speciesExporter.sbmlElementByElementId.get(id);
-          if (species !=null) {
+          Species species = speciesExporter.sbmlElementByElementId.get(id);
+          if (species != null) {
             sbmlId = species.getId();
           } else {
             sbmlId = compartmentExporter.sbmlElementByElementId.get(id).getId();
@@ -143,10 +142,10 @@ public class SbmlReactionExporter extends SbmlBioEntityExporter<Reaction, org.sb
     try {
       // handle case when input data cannot doesn't come from SBML parser and contains
       // "__" that mess up identifier uniqueness
-      reactionGlyph = layout.createReactionGlyph(glyphId, sbmlElementId);
+      reactionGlyph = getLayout().createReactionGlyph(glyphId, sbmlElementId);
     } catch (IllegalArgumentException e) {
       glyphId += "_" + getNextId();
-      reactionGlyph = layout.createReactionGlyph(glyphId, sbmlElementId);
+      reactionGlyph = getLayout().createReactionGlyph(glyphId, sbmlElementId);
     }
 
     return reactionGlyph;
@@ -154,7 +153,7 @@ public class SbmlReactionExporter extends SbmlBioEntityExporter<Reaction, org.sb
 
   @Override
   protected Collection<Reaction> getElementList() {
-    return minervaModel.getReactions();
+    return getMinervaModel().getReactions();
   }
 
   @Override
diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlReactionParser.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlReactionParser.java
index a623cd369572180ca7b2618e67f2c92976e96596..6b6e41c57ab36e18c9065222a07df5b00a02c9fd 100644
--- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlReactionParser.java
+++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlReactionParser.java
@@ -29,6 +29,7 @@ import lcsb.mapviewer.common.exception.InvalidStateException;
 import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
 import lcsb.mapviewer.converter.InvalidInputDataExecption;
 import lcsb.mapviewer.converter.model.celldesigner.types.ModifierType;
+import lcsb.mapviewer.converter.model.sbml.species.SbmlSpeciesParser;
 import lcsb.mapviewer.model.graphics.ArrowType;
 import lcsb.mapviewer.model.graphics.ArrowTypeData;
 import lcsb.mapviewer.model.graphics.PolylineData;
diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlSpeciesExporter.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesExporter.java
similarity index 73%
rename from converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlSpeciesExporter.java
rename to converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesExporter.java
index cbde58157f83c5056e593c4e0a34d59e96facc98..17a1a9e1005029ef69bc20c2eab6c6d9ae1c57a6 100644
--- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlSpeciesExporter.java
+++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesExporter.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.converter.model.sbml;
+package lcsb.mapviewer.converter.model.sbml.species;
 
 import java.util.List;
 
@@ -6,6 +6,8 @@ import org.apache.log4j.Logger;
 import org.sbml.jsbml.ext.layout.AbstractReferenceGlyph;
 import org.sbml.jsbml.ext.layout.Layout;
 
+import lcsb.mapviewer.converter.model.sbml.SbmlCompartmentExporter;
+import lcsb.mapviewer.converter.model.sbml.SbmlElementExporter;
 import lcsb.mapviewer.model.map.InconsistentModelException;
 import lcsb.mapviewer.model.map.species.Species;
 
@@ -21,7 +23,7 @@ public class SbmlSpeciesExporter extends SbmlElementExporter<Species, org.sbml.j
 
   @Override
   public org.sbml.jsbml.Species createSbmlElement(Species element) throws InconsistentModelException {
-    org.sbml.jsbml.Species result = sbmlModel.createSpecies("species_" + (getNextId()));
+    org.sbml.jsbml.Species result = getSbmlModel().createSpecies("species_" + (getNextId()));
     if (element.getCompartment() != null) {
       result.setCompartment(compartmentExporter.getSbmlElement(element.getCompartment(), null));
     }
@@ -30,13 +32,13 @@ public class SbmlSpeciesExporter extends SbmlElementExporter<Species, org.sbml.j
 
   @Override
   protected AbstractReferenceGlyph createElementGlyph(String sbmlElementId, String glyphId) {
-    AbstractReferenceGlyph speciesGlyph = layout.createSpeciesGlyph(glyphId, sbmlElementId);
+    AbstractReferenceGlyph speciesGlyph = getLayout().createSpeciesGlyph(glyphId, sbmlElementId);
     return speciesGlyph;
   }
 
   @Override
   protected List<Species> getElementList() {
-    return minervaModel.getSpeciesList();
+    return getMinervaModel().getSpeciesList();
   }
 
 }
diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlSpeciesParser.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesParser.java
similarity index 94%
rename from converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlSpeciesParser.java
rename to converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesParser.java
index 1a9826c4e3d11f6e4c1d58dbf20926c90a554f4e..f93acacea88dcae1c7c0e68d43f76d06fc00ad13 100644
--- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlSpeciesParser.java
+++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesParser.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.converter.model.sbml;
+package lcsb.mapviewer.converter.model.sbml.species;
 
 import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
@@ -15,6 +15,7 @@ import org.sbml.jsbml.ext.layout.SpeciesGlyph;
 import lcsb.mapviewer.common.Pair;
 import lcsb.mapviewer.common.exception.InvalidStateException;
 import lcsb.mapviewer.converter.InvalidInputDataExecption;
+import lcsb.mapviewer.converter.model.sbml.SbmlElementParser;
 import lcsb.mapviewer.model.map.compartment.Compartment;
 import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.map.species.SimpleMolecule;
@@ -51,7 +52,7 @@ public class SbmlSpeciesParser extends SbmlElementParser<org.sbml.jsbml.Species>
   }
 
   @Override
-  protected List<Element> mergeLayout(List<? extends Element> elements, Layout sbmlLayout, Model sbmlModel)
+  public List<Element> mergeLayout(List<? extends Element> elements, Layout sbmlLayout, Model sbmlModel)
       throws InvalidInputDataExecption {
     List<Element> result = super.mergeLayout(elements, sbmlLayout, sbmlModel);