diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlElementParser.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlElementParser.java
index 8530ae1a6b6095339d7ca9597f94ba3686699840..3360e35551261b615cdb03deba92c69f88529e7a 100644
--- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlElementParser.java
+++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlElementParser.java
@@ -37,26 +37,22 @@ public abstract class SbmlElementParser<T extends org.sbml.jsbml.Symbol> {
     for (T sbmlElement : getSbmlElementList(sbmlModel)) {
       result.add(parse(sbmlElement, sbmlModel));
     }
-    if (layout != null) {
-      return mergeLayout(result, layout, sbmlModel);
-    } else {
-      return result;
-    }
+    return result;
   }
 
   protected abstract ListOf<T> getSbmlElementList(Model sbmlModel);
 
-  protected List<Element> mergeLayout(List<Element> elements, Layout sbmlLayout, Model sbmlModel)
+  protected List<Element> mergeLayout(List<? extends Element> elements, Layout sbmlLayout, Model sbmlModel)
       throws InvalidInputDataExecption {
     Set<Element> used = new HashSet<>();
     Map<String, Element> elementById = new HashMap<>();
+    List<Element> result = new ArrayList<>();
     for (Element species : elements) {
       if (elementById.get(species.getElementId()) != null) {
         throw new InvalidInputDataExecption("Duplicated element id: " + species.getElementId());
       }
       elementById.put(species.getElementId(), species);
     }
-    List<Element> result = new ArrayList<>();
 
     for (Pair<String, AbstractReferenceGlyph> idGlyphPair : getGlyphs(sbmlLayout)) {
       String id = idGlyphPair.getLeft();
@@ -66,18 +62,21 @@ public abstract class SbmlElementParser<T extends org.sbml.jsbml.Symbol> {
       }
       used.add(source);
       AbstractReferenceGlyph glyph = idGlyphPair.getRight();
-      Element SpeciesWithLayout = source.copy();
-      SpeciesWithLayout.setElementId(glyph.getId());
-      SpeciesWithLayout.setX(glyph.getBoundingBox().getPosition().getX());
-      SpeciesWithLayout.setY(glyph.getBoundingBox().getPosition().getY());
-      SpeciesWithLayout.setWidth(glyph.getBoundingBox().getDimensions().getWidth());
-      SpeciesWithLayout.setHeight(glyph.getBoundingBox().getDimensions().getHeight());
-      result.add(SpeciesWithLayout);
+      Element elementWithLayout = source.copy();
+      elementWithLayout.setElementId(glyph.getId());
+      elementWithLayout.setX(glyph.getBoundingBox().getPosition().getX());
+      elementWithLayout.setY(glyph.getBoundingBox().getPosition().getY());
+      elementWithLayout.setWidth(glyph.getBoundingBox().getDimensions().getWidth());
+      elementWithLayout.setHeight(glyph.getBoundingBox().getDimensions().getHeight());
+      minervaModel.addElement(elementWithLayout);
+      result.add(elementWithLayout);
     }
-    for (Element Species : elements) {
-      if (!used.contains(Species)) {
-        logger.warn("Layout doesn't contain information about Element: " + Species.getElementId());
-        result.add(Species);
+    for (Element element : elements) {
+      if (!used.contains(element)) {
+        logger.warn("Layout doesn't contain information about Element: " + element.getElementId());
+        result.add(element);
+      } else {
+        minervaModel.removeElement(element);
       }
     }
     return result;
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 a14a15c80cda8faedc8dc0540c774fb96f6eaa6c..36b25f1bb68a02c6db5faede9e2de8b24349d21d 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
@@ -51,6 +51,7 @@ public class SbmlParser implements IConverter {
 
       SbmlCompartmentParser compartmentParser = new SbmlCompartmentParser(layout, model);
       SbmlSpeciesParser speciesParser = new SbmlSpeciesParser(layout, model);
+      SbmlReactionParser reactionParser = new SbmlReactionParser(layout, model);
 
       Set<MiriamData> annotations = compartmentParser.parseAnnotation(sbmlModel.getAnnotation());
       if (annotations.size() > 0) {
@@ -58,6 +59,15 @@ public class SbmlParser implements IConverter {
       }
       model.addElements(compartmentParser.parseList(sbmlModel));
       model.addElements(speciesParser.parseList(sbmlModel));
+      model.addReactions(reactionParser.parseList(sbmlModel));
+
+      if (layout != null) {
+        compartmentParser.mergeLayout(model.getCompartments(), layout, sbmlModel);
+        speciesParser.mergeLayout(model.getSpeciesList(), layout, sbmlModel);
+        reactionParser.mergeLayout(model.getReactions(), layout, sbmlModel);
+      }
+      reactionParser.validateReactions(model.getReactions());
+
       if (sbmlModel.getConstraintCount() > 0) {
         throw new NotImplementedException("Constraints not implemented for model");
       }
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
new file mode 100644
index 0000000000000000000000000000000000000000..627c2db528ef6660e593ee892db66c24ff0ac5f0
--- /dev/null
+++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlReactionParser.java
@@ -0,0 +1,162 @@
+package lcsb.mapviewer.converter.model.sbml;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+import org.sbml.jsbml.Annotation;
+import org.sbml.jsbml.ListOf;
+import org.sbml.jsbml.Model;
+import org.sbml.jsbml.ModifierSpeciesReference;
+import org.sbml.jsbml.SpeciesReference;
+import org.sbml.jsbml.ext.layout.Layout;
+import org.sbml.jsbml.ext.layout.ReactionGlyph;
+import org.sbml.jsbml.ext.layout.SpeciesReferenceGlyph;
+import org.sbml.jsbml.util.NotImplementedException;
+
+import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.converter.InvalidInputDataExecption;
+import lcsb.mapviewer.model.map.MiriamData;
+import lcsb.mapviewer.model.map.reaction.Modifier;
+import lcsb.mapviewer.model.map.reaction.Product;
+import lcsb.mapviewer.model.map.reaction.Reactant;
+import lcsb.mapviewer.model.map.reaction.Reaction;
+import lcsb.mapviewer.model.map.reaction.ReactionNode;
+import lcsb.mapviewer.model.map.reaction.type.StateTransitionReaction;
+import lcsb.mapviewer.model.map.species.Element;
+import lcsb.mapviewer.model.map.species.Species;
+import lcsb.mapviewer.modelutils.map.ElementUtils;
+
+public class SbmlReactionParser {
+  Logger logger = Logger.getLogger(SbmlReactionParser.class);
+
+  Layout layout;
+
+  lcsb.mapviewer.model.map.model.Model minervaModel;
+  ElementUtils eu = new ElementUtils();
+
+  public SbmlReactionParser(Layout sbmlLayout, lcsb.mapviewer.model.map.model.Model minervaModel) {
+    this.layout = sbmlLayout;
+    this.minervaModel = minervaModel;
+  }
+
+  public List<Reaction> parseList(Model sbmlModel) throws InvalidInputDataExecption {
+    List<Reaction> result = new ArrayList<>();
+    for (org.sbml.jsbml.Reaction sbmlElement : getSbmlElementList(sbmlModel)) {
+      result.add(parse(sbmlElement, sbmlModel));
+    }
+    return result;
+  }
+
+  protected ListOf<org.sbml.jsbml.Reaction> getSbmlElementList(Model sbmlModel) {
+    return sbmlModel.getListOfReactions();
+  }
+
+  protected void mergeLayout(Collection<Reaction> elements, Layout sbmlLayout, Model sbmlModel)
+      throws InvalidInputDataExecption {
+    Set<Reaction> used = new HashSet<>();
+    Map<String, Reaction> elementById = new HashMap<>();
+    for (Reaction species : elements) {
+      if (elementById.get(species.getIdReaction()) != null) {
+        throw new InvalidInputDataExecption("Duplicated reaction id: " + species.getIdReaction());
+      }
+      elementById.put(species.getIdReaction(), species);
+    }
+
+    for (ReactionGlyph glyph : sbmlLayout.getListOfReactionGlyphs()) {
+      Reaction source = elementById.get(glyph.getReaction());
+      if (source == null) {
+        throw new InvalidInputDataExecption("Layout contains invalid Species id: " + glyph.getReaction());
+      }
+      used.add(source);
+      Reaction reactionWithLayout = source.copy();
+      reactionWithLayout.setIdReaction(glyph.getId());
+      for (SpeciesReferenceGlyph speciesGlyph : glyph.getListOfSpeciesReferenceGlyphs()) {
+        ReactionNode minervaNode = null;
+        Element minervaElement = minervaModel.getElementByElementId(speciesGlyph.getSpeciesReference());
+        if (minervaElement == null) {
+          throw new InvalidInputDataExecption("Cannot find source reaction node for layouted reaction: "
+              + speciesGlyph.getSpeciesReference() + ", " + glyph.getId());
+        }
+        for (ReactionNode node : reactionWithLayout.getReactionNodes()) {
+          if (node.getElement().equals(minervaElement)) {
+            minervaNode = node;
+          }
+        }
+        if (minervaNode == null) {
+          throw new InvalidInputDataExecption("Cannot find reaction node for layouted reaction: "
+              + speciesGlyph.getSpeciesReference() + ", " + glyph.getId());
+        }
+        minervaElement = minervaModel.getElementByElementId(speciesGlyph.getId());
+        if (minervaElement == null) {
+          throw new InvalidInputDataExecption("Cannot find layouted reaction node for layouted reaction: "
+              + speciesGlyph.getId() + ", " + glyph.getId());
+        }
+        minervaNode.setElement(minervaElement);
+      }
+      try {
+        minervaModel.addReaction(new StateTransitionReaction(reactionWithLayout));
+      } catch (InvalidArgumentException e) {
+        throw new InvalidInputDataExecption(e);
+      }
+    }
+    for (Reaction reaction : elements) {
+      if (!used.contains(reaction)) {
+        logger.warn("Layout doesn't contain information about Element: " + reaction.getIdReaction());
+      } else {
+        minervaModel.removeReaction(reaction);
+      }
+    }
+  }
+
+  protected Reaction parse(org.sbml.jsbml.Reaction sbmlReaction, Model sbmlModel) throws InvalidInputDataExecption {
+    Reaction reaction = new Reaction();
+    reaction.setIdReaction(sbmlReaction.getId());
+    if (sbmlReaction.getKineticLaw() != null) {
+      throw new NotImplementedException("KineticLaw not implemented");
+    }
+    for (SpeciesReference reactant : sbmlReaction.getListOfReactants()) {
+      Species element = minervaModel.getElementByElementId(reactant.getSpecies());
+      reaction.addReactant(new Reactant(element));
+    }
+    for (SpeciesReference product : sbmlReaction.getListOfProducts()) {
+      Species element = minervaModel.getElementByElementId(product.getSpecies());
+      reaction.addProduct(new Product(element));
+    }
+
+    for (ModifierSpeciesReference modifier : sbmlReaction.getListOfModifiers()) {
+      Species element = minervaModel.getElementByElementId(modifier.getSpecies());
+      reaction.addModifier(new Modifier(element));
+    }
+
+    return reaction;
+  }
+
+  protected Set<MiriamData> parseAnnotation(Annotation annotation) {
+    if (annotation.getCVTermCount() > 0) {
+      throw new NotImplementedException();
+    }
+    Set<MiriamData> result = new HashSet<>();
+    return result;
+  }
+
+  public void validateReactions(Set<Reaction> reactions) throws InvalidInputDataExecption {
+    for (Reaction reaction : reactions) {
+      if (reaction.getReactants().size() == 0) {
+        throw new InvalidInputDataExecption(
+            eu.getElementTag(reaction) + "At least one reactant is required for reaction");
+      }
+      if (reaction.getProducts().size() == 0) {
+        throw new InvalidInputDataExecption(
+            eu.getElementTag(reaction) + "At least one product is required for reaction");
+      }
+    }
+
+  }
+
+}
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/SbmlSpeciesParser.java
index d84c48257f2a101a428596cfdaf5de71cf6cc862..ea3fd6196b7c5ce61c2ec8d426cc55f8b82ab46d 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/SbmlSpeciesParser.java
@@ -60,7 +60,7 @@ public class SbmlSpeciesParser extends SbmlElementParser<org.sbml.jsbml.Species>
   }
 
   @Override
-  protected List<Element> mergeLayout(List<Element> elements, Layout sbmlLayout, Model sbmlModel)
+  protected List<Element> mergeLayout(List<? extends Element> elements, Layout sbmlLayout, Model sbmlModel)
       throws InvalidInputDataExecption {
     List<Element> result = super.mergeLayout(elements, sbmlLayout, sbmlModel);
 
diff --git a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlPareserForInvalidReactionTest.java b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlPareserForInvalidReactionTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..09c74b274e253e3a351041451ea8e71351248769
--- /dev/null
+++ b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlPareserForInvalidReactionTest.java
@@ -0,0 +1,58 @@
+package lcsb.mapviewer.converter.model.sbml;
+
+import static org.junit.Assert.fail;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.apache.log4j.Logger;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+import lcsb.mapviewer.converter.ConverterParams;
+import lcsb.mapviewer.converter.IConverter;
+import lcsb.mapviewer.converter.InvalidInputDataExecption;
+
+@RunWith(Parameterized.class)
+public class SbmlPareserForInvalidReactionTest {
+
+  static Logger logger = Logger.getLogger(SbmlPareserForInvalidReactionTest.class.getName());
+
+  private Path filePath;
+
+  public SbmlPareserForInvalidReactionTest(Path filePath) {
+    this.filePath = filePath;
+  }
+
+  @Parameters(name = "{index} : {0}")
+  public static Collection<Object[]> data() throws IOException {
+    Collection<Object[]> data = new ArrayList<Object[]>();
+    Files.walk(Paths.get("testFiles/invalidReaction")).forEach(fPath -> {
+      if (Files.isRegularFile(fPath) && fPath.toString().endsWith(".xml")) {
+        data.add(new Object[] { fPath });
+      }
+    });
+    return data;
+  }
+
+  @Test
+  public void createModelTest() throws Exception {
+    try {
+      IConverter converter = new SbmlParser();
+
+      converter.createModel(new ConverterParams().filename(filePath.toString()));
+      fail("Exception expected when parsing file: " + filePath.toString());
+    } catch (InvalidInputDataExecption e) {
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+}
diff --git a/converter-sbml/testFiles/invalidReaction/ReactionGlyph_Example.xml b/converter-sbml/testFiles/invalidReaction/ReactionGlyph_Example.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f12628c5d0ff0c62e09abf8838441f866610c912
--- /dev/null
+++ b/converter-sbml/testFiles/invalidReaction/ReactionGlyph_Example.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core"
+	xmlns:layout="http://www.sbml.org/sbml/level3/version1/layout/version1"
+	level="3" version="1" layout:required="false">
+	<model id="TestModel_with_modifiers">
+		<listOfReactions>
+			<reaction id="Hexokinase" reversible="false" fast="false">
+			</reaction>
+		</listOfReactions>
+		<layout:listOfLayouts xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+			xmlns:layout="http://www.sbml.org/sbml/level3/version1/layout/version1">
+			<layout:layout layout:id="Layout_1">
+				<layout:dimensions layout:width="400"
+					layout:height="230" />
+				<layout:listOfReactionGlyphs>
+					<layout:reactionGlyph layout:id="glyph_Hexokinase"
+						layout:reaction="Hexokinase">
+						<layout:curve>
+							<layout:listOfCurveSegments>
+								<layout:curveSegment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+									xsi:type="LineSegment">
+									<layout:start layout:x="170" layout:y="100" />
+									<layout:end layout:x="170" layout:y="130" />
+								</layout:curveSegment>
+							</layout:listOfCurveSegments>
+						</layout:curve>
+						<layout:listOfSpeciesReferenceGlyphs>
+						</layout:listOfSpeciesReferenceGlyphs>
+					</layout:reactionGlyph>
+				</layout:listOfReactionGlyphs>
+			</layout:layout>
+		</layout:listOfLayouts>
+	</model>
+</sbml>
\ No newline at end of file
diff --git a/converter-sbml/testFiles/layoutExample/ReactionGlyph_Example_level2+id.xml b/converter-sbml/testFiles/invalidReaction/ReactionGlyph_Example_level2+id.xml
similarity index 100%
rename from converter-sbml/testFiles/layoutExample/ReactionGlyph_Example_level2+id.xml
rename to converter-sbml/testFiles/invalidReaction/ReactionGlyph_Example_level2+id.xml
diff --git a/converter-sbml/testFiles/layoutExample/ReactionGlyph_Example_level2+id_level3.xml b/converter-sbml/testFiles/invalidReaction/ReactionGlyph_Example_level2+id_level3.xml
similarity index 100%
rename from converter-sbml/testFiles/layoutExample/ReactionGlyph_Example_level2+id_level3.xml
rename to converter-sbml/testFiles/invalidReaction/ReactionGlyph_Example_level2+id_level3.xml
diff --git a/converter-sbml/testFiles/layoutExample/ReactionGlyph_Example_level2.xml b/converter-sbml/testFiles/invalidReaction/ReactionGlyph_Example_level2.xml
similarity index 100%
rename from converter-sbml/testFiles/layoutExample/ReactionGlyph_Example_level2.xml
rename to converter-sbml/testFiles/invalidReaction/ReactionGlyph_Example_level2.xml
diff --git a/converter-sbml/testFiles/layoutExample/ReactionGlyph_Example_level2_level3.xml b/converter-sbml/testFiles/invalidReaction/ReactionGlyph_Example_level2_level3.xml
similarity index 100%
rename from converter-sbml/testFiles/layoutExample/ReactionGlyph_Example_level2_level3.xml
rename to converter-sbml/testFiles/invalidReaction/ReactionGlyph_Example_level2_level3.xml
diff --git a/converter-sbml/testFiles/layoutExample/Complete_Example.xml b/converter-sbml/testFiles/layoutExample/Complete_Example.xml
index d7081bf344afa5318c871d6c91fcc7e3a1e6e6ac..679d836a8f5839797e5d98d1aa225a82cca3dd39 100644
--- a/converter-sbml/testFiles/layoutExample/Complete_Example.xml
+++ b/converter-sbml/testFiles/layoutExample/Complete_Example.xml
@@ -1,262 +1,273 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <sbml xmlns="http://www.sbml.org/sbml/level3/version1/core"
-xmlns:layout="http://www.sbml.org/sbml/level3/version1/layout/version1"
-level="3" version="1" layout:required="false" >
-<model id="TestModel_with_modifiers" timeUnits="time">
-<listOfUnitDefinitions>
-<unitDefinition id="volume">
-<listOfUnits>
-<unit kind="litre" exponent="1" scale="0" multiplier="1"/>
-</listOfUnits>
-</unitDefinition>
-<unitDefinition id="substance">
-<listOfUnits>
-<unit kind="mole" exponent="1" scale="0" multiplier="1"/>
-</listOfUnits>
-</unitDefinition>
-<unitDefinition id="time">
-<listOfUnits>
-<unit kind="second" exponent="1" scale="0" multiplier="1"/>
-</listOfUnits>
-</unitDefinition>
-</listOfUnitDefinitions>
-<listOfCompartments>
-<compartment id="Yeast" spatialDimensions="3" units="volume" constant="true"/>
-</listOfCompartments>
-<listOfSpecies>
-<species id="Glucose" compartment="Yeast" substanceUnits="substance"
-hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false"/>
-<species id="G6P" name="Glucose-6-phosphate" compartment="Yeast"
-substanceUnits="substance" hasOnlySubstanceUnits="false"
-boundaryCondition="false" constant="false"/>
-<species id="ATP" compartment="Yeast" substanceUnits="substance"
-hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false"/>
-<species id="ADP" compartment="Yeast" substanceUnits="substance"
-hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false"/>
-<species id="Pi" compartment="Yeast" substanceUnits="substance"
-hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false"/>
-</listOfSpecies>
-<listOfReactions>
-<reaction id="Hexokinase" reversible="false" fast="false">
-<listOfReactants>
-<speciesReference id="SpeciesReference_Glucose" species="Glucose"
-stoichiometry="1" constant="true"/>
-<speciesReference id="SpeciesReference_ATP" species="ATP"
-stoichiometry="1" constant="true"/>
-</listOfReactants>
-<listOfProducts>
-<speciesReference id="SpeciesReference_G6P" species="G6P"
-stoichiometry="1" constant="true"/>
-<speciesReference id="SpeciesReference_ADP" species="ADP"
-stoichiometry="1" constant="true"/>
-</listOfProducts>
-<listOfModifiers>
-<modifierSpeciesReference id="ModifierSpeciesReference_G6P" species="G6P"/>
-<modifierSpeciesReference id="ModifierSpeciesReference_Pi" species="Pi"/>
-</listOfModifiers>
-</reaction>
-</listOfReactions>
-<layout:listOfLayouts xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-xmlns:layout="http://www.sbml.org/sbml/level3/version1/layout/version1">
-<layout:layout layout:id="Layout_1">
-<layout:dimensions layout:width="400" layout:height="230"/>
-<layout:listOfCompartmentGlyphs>
-<layout:compartmentGlyph layout:id="CompartmentGlyph_1" layout:compartment="Yeast">
-<layout:boundingBox layout:id="bb1">
-<layout:position layout:x="5" layout:y="5"/>
-<layout:dimensions layout:width="390" layout:height="220"/>
-</layout:boundingBox>
-</layout:compartmentGlyph>
-</layout:listOfCompartmentGlyphs>
-<layout:listOfSpeciesGlyphs>
-<layout:speciesGlyph layout:id="SpeciesGlyph_Glucose" layout:species="Glucose">
-<layout:boundingBox layout:id="bb2">
-<layout:position layout:x="105" layout:y="20"/>
-<layout:dimensions layout:width="130" layout:height="20"/>
-</layout:boundingBox>
-</layout:speciesGlyph>
-<layout:speciesGlyph layout:id="SpeciesGlyph_G6P" layout:species="G6P">
-<layout:boundingBox layout:id="bb5">
-<layout:position layout:x="50" layout:y="190"/>
-<layout:dimensions layout:width="270" layout:height="20"/>
-</layout:boundingBox>
-</layout:speciesGlyph>
-<layout:speciesGlyph layout:id="SpeciesGlyph_ATP" layout:species="ATP">
-<layout:boundingBox layout:id="bb3">
-<layout:position layout:x="270" layout:y="70"/>
-<layout:dimensions layout:width="80" layout:height="20"/>
-</layout:boundingBox>
-</layout:speciesGlyph>
-<layout:speciesGlyph layout:id="glyph_ADP" layout:species="ADP">
-<layout:boundingBox layout:id="bb4">
-<layout:position layout:x="270" layout:y="140"/>
-<layout:dimensions layout:width="80" layout:height="20"/>
-</layout:boundingBox>
-</layout:speciesGlyph>
-<layout:speciesGlyph layout:id="SpeciesGlyph_Pi" layout:species="Pi">
-<layout:boundingBox layout:id="bb6">
-<layout:position layout:x="50" layout:y="100"/>
-<layout:dimensions layout:width="60" layout:height="20"/>
-</layout:boundingBox>
-</layout:speciesGlyph>
-</layout:listOfSpeciesGlyphs>
-<layout:listOfReactionGlyphs>
-<layout:reactionGlyph layout:id="glyph_Hexokinase" layout:reaction="Hexokinase">
-<layout:curve>
-<layout:listOfCurveSegments>
-<layout:curveSegment
-xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-xsi:type="LineSegment">
-<layout:start layout:x="170" layout:y="100"/>
-<layout:end layout:x="170" layout:y="130"/>
-</layout:curveSegment>
-</layout:listOfCurveSegments>
-</layout:curve>
-<layout:listOfSpeciesReferenceGlyphs>
-<layout:speciesReferenceGlyph layout:id="SpeciesReferenceGlyph_Glucose"
-layout:speciesReference="SpeciesReference_Glucose"
-layout:speciesGlyph="SpeciesGlyph_Glucose"
-layout:role="substrate">
-<layout:curve>
-<layout:listOfCurveSegments>
-<layout:curveSegment
-xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-xsi:type="LineSegment">
-<layout:start layout:x="170" layout:y="100"/>
-<layout:end layout:x="170" layout:y="50"/>
-</layout:curveSegment>
-</layout:listOfCurveSegments>
-</layout:curve>
-</layout:speciesReferenceGlyph>
-<layout:speciesReferenceGlyph layout:id="SpeciesReferenceGlyph_ATP"
-layout:speciesReference="SpeciesReference_ATP"
-layout:speciesGlyph="SpeciesGlyph_ATP"
-layout:role="sidesubstrate">
-<layout:curve>
-<layout:listOfCurveSegments>
-<layout:curveSegment
-xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-xsi:type="CubicBezier">
-<layout:start layout:x="170" layout:y="100"/>
-<layout:end layout:x="260" layout:y="80"/>
-<layout:basePoint1 layout:x="170" layout:y="80"/>
-<layout:basePoint2 layout:x="170" layout:y="80"/>
-</layout:curveSegment>
-</layout:listOfCurveSegments>
-</layout:curve>
-</layout:speciesReferenceGlyph>
-<layout:speciesReferenceGlyph layout:id="SpeciesReferenceGlyph_G6P_1"
-layout:speciesReference="SpeciesReference_G6P"
-layout:speciesGlyph="SpeciesGlyph_G6P"
-layout:role="product">
-<layout:curve>
-<layout:listOfCurveSegments>
-<layout:curveSegment
-xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-xsi:type="LineSegment">
-<layout:start layout:x="170" layout:y="130"/>
-<layout:end layout:x="170" layout:y="180"/>
-</layout:curveSegment>
-</layout:listOfCurveSegments>
-</layout:curve>
-</layout:speciesReferenceGlyph>
-<layout:speciesReferenceGlyph layout:id="SpeciesReferenceGlyph_ADP"
-layout:speciesReference="SpeciesReference_ADP"
-layout:speciesGlyph="glyph_ADP"
-layout:role="sideproduct">
-<layout:curve>
-<layout:listOfCurveSegments>
-<layout:curveSegment
-xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-xsi:type="CubicBezier">
-<layout:start layout:x="170" layout:y="130"/>
-<layout:end layout:x="260" layout:y="150"/>
-<layout:basePoint1 layout:x="170" layout:y="150"/>
-<layout:basePoint2 layout:x="170" layout:y="150"/>
-</layout:curveSegment>
-</layout:listOfCurveSegments>
-</layout:curve>
-</layout:speciesReferenceGlyph>
-<layout:speciesReferenceGlyph layout:id="SpeciesReferenceGlyph_G6P_2"
-layout:speciesReference="ModifierSpeciesReference_G6P"
-layout:speciesGlyph="SpeciesGlyph_G6P"
-layout:role="inhibitor">
-<layout:curve>
-<layout:listOfCurveSegments>
-<layout:curveSegment
-xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-xsi:type="CubicBezier">
-<layout:start layout:x="45" layout:y="200"/>
-<layout:end layout:x="165" layout:y="120"/>
-<layout:basePoint1 layout:x="0" layout:y="200"/>
-<layout:basePoint2 layout:x="0" layout:y="120"/>
-</layout:curveSegment>
-</layout:listOfCurveSegments>
-</layout:curve>
-</layout:speciesReferenceGlyph>
-<layout:speciesReferenceGlyph layout:id="SpeciesReferenceGlyph_PI"
-layout:speciesReference="ModifierSpeciesReference_Pi"
-layout:speciesGlyph="SpeciesGlyph_Pi"
-layout:role="activator">
-<layout:curve>
-<layout:listOfCurveSegments>
-<layout:curveSegment
-xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-xsi:type="CubicBezier">
-<layout:start layout:x="115" layout:y="110"/>
-<layout:end layout:x="165" layout:y="110"/>
-<layout:basePoint1 layout:x="140" layout:y="110"/>
-<layout:basePoint2 layout:x="140" layout:y="110"/>
-</layout:curveSegment>
-</layout:listOfCurveSegments>
-</layout:curve>
-</layout:speciesReferenceGlyph>
-</layout:listOfSpeciesReferenceGlyphs>
-</layout:reactionGlyph>
-</layout:listOfReactionGlyphs>
-<layout:listOfTextGlyphs>
-<layout:textGlyph layout:id="TextGlyph_Glucose"
-layout:originOfText="Glucose"
-layout:graphicalObject="SpeciesGlyph_Glucose">
-<layout:boundingBox layout:id="bbA">
-<layout:position layout:x="115" layout:y="20"/>
-<layout:dimensions layout:width="110" layout:height="20"/>
-</layout:boundingBox>
-</layout:textGlyph>
-<layout:textGlyph layout:id="TextGlyph_G6P"
-layout:originOfText="G6P"
-layout:graphicalObject="SpeciesGlyph_G6P">
-<layout:boundingBox layout:id="bbD">
-<layout:position layout:x="60" layout:y="190"/>
-<layout:dimensions layout:width="250" layout:height="20"/>
-</layout:boundingBox>
-</layout:textGlyph>
-<layout:textGlyph layout:id="TextGlyph_ATP"
-layout:originOfText="ATP"
-layout:graphicalObject="SpeciesGlyph_ATP">
-<layout:boundingBox layout:id="bbB">
-<layout:position layout:x="280" layout:y="70"/>
-<layout:dimensions layout:width="60" layout:height="20"/>
-</layout:boundingBox>
-</layout:textGlyph>
-<layout:textGlyph layout:id="TextGlyph_ADP"
-layout:originOfText="ADP"
-layout:graphicalObject="glyph_ADP">
-<layout:boundingBox layout:id="bbC">
-<layout:position layout:x="280" layout:y="140"/>
-<layout:dimensions layout:width="60" layout:height="20"/>
-</layout:boundingBox>
-</layout:textGlyph>
-<layout:textGlyph layout:id="TextGlyph_PI"
-layout:originOfText="Pi"
-layout:graphicalObject="SpeciesGlyph_Pi">
-<layout:boundingBox layout:id="bbE">
-<layout:position layout:x="60" layout:y="100"/>
-<layout:dimensions layout:width="40" layout:height="20"/>
-</layout:boundingBox>
-</layout:textGlyph>
-</layout:listOfTextGlyphs>
-</layout:layout>
-</layout:listOfLayouts>
-</model>
+	xmlns:layout="http://www.sbml.org/sbml/level3/version1/layout/version1"
+	level="3" version="1" layout:required="false">
+	<model id="TestModel_with_modifiers" timeUnits="time">
+		<listOfUnitDefinitions>
+			<unitDefinition id="volume">
+				<listOfUnits>
+					<unit kind="litre" exponent="1" scale="0" multiplier="1" />
+				</listOfUnits>
+			</unitDefinition>
+			<unitDefinition id="substance">
+				<listOfUnits>
+					<unit kind="mole" exponent="1" scale="0" multiplier="1" />
+				</listOfUnits>
+			</unitDefinition>
+			<unitDefinition id="time">
+				<listOfUnits>
+					<unit kind="second" exponent="1" scale="0" multiplier="1" />
+				</listOfUnits>
+			</unitDefinition>
+		</listOfUnitDefinitions>
+		<listOfCompartments>
+			<compartment id="Yeast" spatialDimensions="3" units="volume"
+				constant="true" />
+		</listOfCompartments>
+		<listOfSpecies>
+			<species id="Glucose" compartment="Yeast" substanceUnits="substance"
+				hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false" />
+			<species id="G6P" name="Glucose-6-phosphate" compartment="Yeast"
+				substanceUnits="substance" hasOnlySubstanceUnits="false"
+				boundaryCondition="false" constant="false" />
+			<species id="ATP" compartment="Yeast" substanceUnits="substance"
+				hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false" />
+			<species id="ADP" compartment="Yeast" substanceUnits="substance"
+				hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false" />
+			<species id="Pi" compartment="Yeast" substanceUnits="substance"
+				hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false" />
+		</listOfSpecies>
+		<listOfReactions>
+			<reaction id="Hexokinase" reversible="false" fast="false">
+				<listOfReactants>
+					<speciesReference id="SpeciesReference_Glucose"
+						species="Glucose" stoichiometry="1" constant="true" />
+					<speciesReference id="SpeciesReference_ATP"
+						species="ATP" stoichiometry="1" constant="true" />
+				</listOfReactants>
+				<listOfProducts>
+					<speciesReference id="SpeciesReference_G6P"
+						species="G6P" stoichiometry="1" constant="true" />
+					<speciesReference id="SpeciesReference_ADP"
+						species="ADP" stoichiometry="1" constant="true" />
+				</listOfProducts>
+				<listOfModifiers>
+					<modifierSpeciesReference id="ModifierSpeciesReference_G6P"
+						species="G6P" />
+					<modifierSpeciesReference id="ModifierSpeciesReference_Pi"
+						species="Pi" />
+				</listOfModifiers>
+			</reaction>
+		</listOfReactions>
+		<layout:listOfLayouts xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+			xmlns:layout="http://www.sbml.org/sbml/level3/version1/layout/version1">
+			<layout:layout layout:id="Layout_1">
+				<layout:dimensions layout:width="400"
+					layout:height="230" />
+				<layout:listOfCompartmentGlyphs>
+					<layout:compartmentGlyph layout:id="CompartmentGlyph_1"
+						layout:compartment="Yeast">
+						<layout:boundingBox layout:id="bb1">
+							<layout:position layout:x="5" layout:y="5" />
+							<layout:dimensions layout:width="390"
+								layout:height="220" />
+						</layout:boundingBox>
+					</layout:compartmentGlyph>
+				</layout:listOfCompartmentGlyphs>
+				<layout:listOfSpeciesGlyphs>
+					<layout:speciesGlyph layout:id="SpeciesGlyph_Glucose"
+						layout:species="Glucose">
+						<layout:boundingBox layout:id="bb2">
+							<layout:position layout:x="105" layout:y="20" />
+							<layout:dimensions layout:width="130"
+								layout:height="20" />
+						</layout:boundingBox>
+					</layout:speciesGlyph>
+					<layout:speciesGlyph layout:id="SpeciesGlyph_G6P"
+						layout:species="G6P">
+						<layout:boundingBox layout:id="bb5">
+							<layout:position layout:x="50" layout:y="190" />
+							<layout:dimensions layout:width="270"
+								layout:height="20" />
+						</layout:boundingBox>
+					</layout:speciesGlyph>
+					<layout:speciesGlyph layout:id="SpeciesGlyph_ATP"
+						layout:species="ATP">
+						<layout:boundingBox layout:id="bb3">
+							<layout:position layout:x="270" layout:y="70" />
+							<layout:dimensions layout:width="80"
+								layout:height="20" />
+						</layout:boundingBox>
+					</layout:speciesGlyph>
+					<layout:speciesGlyph layout:id="glyph_ADP"
+						layout:species="ADP">
+						<layout:boundingBox layout:id="bb4">
+							<layout:position layout:x="270" layout:y="140" />
+							<layout:dimensions layout:width="80"
+								layout:height="20" />
+						</layout:boundingBox>
+					</layout:speciesGlyph>
+					<layout:speciesGlyph layout:id="SpeciesGlyph_Pi"
+						layout:species="Pi">
+						<layout:boundingBox layout:id="bb6">
+							<layout:position layout:x="50" layout:y="100" />
+							<layout:dimensions layout:width="60"
+								layout:height="20" />
+						</layout:boundingBox>
+					</layout:speciesGlyph>
+				</layout:listOfSpeciesGlyphs>
+				<layout:listOfReactionGlyphs>
+					<layout:reactionGlyph layout:id="glyph_Hexokinase"
+						layout:reaction="Hexokinase">
+						<layout:curve>
+							<layout:listOfCurveSegments>
+								<layout:curveSegment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+									xsi:type="LineSegment">
+									<layout:start layout:x="170" layout:y="100" />
+									<layout:end layout:x="170" layout:y="130" />
+								</layout:curveSegment>
+							</layout:listOfCurveSegments>
+						</layout:curve>
+						<layout:listOfSpeciesReferenceGlyphs>
+							<layout:speciesReferenceGlyph
+								layout:id="SpeciesReferenceGlyph_Glucose"
+								layout:speciesReference="SpeciesReference_Glucose"
+								layout:speciesGlyph="SpeciesGlyph_Glucose" layout:role="substrate">
+								<layout:curve>
+									<layout:listOfCurveSegments>
+										<layout:curveSegment
+											xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+											xsi:type="LineSegment">
+											<layout:start layout:x="170" layout:y="100" />
+											<layout:end layout:x="170" layout:y="50" />
+										</layout:curveSegment>
+									</layout:listOfCurveSegments>
+								</layout:curve>
+							</layout:speciesReferenceGlyph>
+							<layout:speciesReferenceGlyph
+								layout:id="SpeciesReferenceGlyph_ATP" layout:speciesReference="SpeciesReference_ATP"
+								layout:speciesGlyph="SpeciesGlyph_ATP" layout:role="sidesubstrate">
+								<layout:curve>
+									<layout:listOfCurveSegments>
+										<layout:curveSegment
+											xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+											xsi:type="CubicBezier">
+											<layout:start layout:x="170" layout:y="100" />
+											<layout:end layout:x="260" layout:y="80" />
+											<layout:basePoint1 layout:x="170" layout:y="80" />
+											<layout:basePoint2 layout:x="170" layout:y="80" />
+										</layout:curveSegment>
+									</layout:listOfCurveSegments>
+								</layout:curve>
+							</layout:speciesReferenceGlyph>
+							<layout:speciesReferenceGlyph
+								layout:id="SpeciesReferenceGlyph_G6P_1" layout:speciesReference="SpeciesReference_G6P"
+								layout:speciesGlyph="SpeciesGlyph_G6P" layout:role="product">
+								<layout:curve>
+									<layout:listOfCurveSegments>
+										<layout:curveSegment
+											xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+											xsi:type="LineSegment">
+											<layout:start layout:x="170" layout:y="130" />
+											<layout:end layout:x="170" layout:y="180" />
+										</layout:curveSegment>
+									</layout:listOfCurveSegments>
+								</layout:curve>
+							</layout:speciesReferenceGlyph>
+							<layout:speciesReferenceGlyph
+								layout:id="SpeciesReferenceGlyph_ADP" layout:speciesReference="SpeciesReference_ADP"
+								layout:speciesGlyph="glyph_ADP" layout:role="sideproduct">
+								<layout:curve>
+									<layout:listOfCurveSegments>
+										<layout:curveSegment
+											xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+											xsi:type="CubicBezier">
+											<layout:start layout:x="170" layout:y="130" />
+											<layout:end layout:x="260" layout:y="150" />
+											<layout:basePoint1 layout:x="170" layout:y="150" />
+											<layout:basePoint2 layout:x="170" layout:y="150" />
+										</layout:curveSegment>
+									</layout:listOfCurveSegments>
+								</layout:curve>
+							</layout:speciesReferenceGlyph>
+							<layout:speciesReferenceGlyph
+								layout:id="SpeciesReferenceGlyph_G6P_2" layout:speciesReference="ModifierSpeciesReference_G6P"
+								layout:speciesGlyph="SpeciesGlyph_G6P" layout:role="inhibitor">
+								<layout:curve>
+									<layout:listOfCurveSegments>
+										<layout:curveSegment
+											xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+											xsi:type="CubicBezier">
+											<layout:start layout:x="45" layout:y="200" />
+											<layout:end layout:x="165" layout:y="120" />
+											<layout:basePoint1 layout:x="0" layout:y="200" />
+											<layout:basePoint2 layout:x="0" layout:y="120" />
+										</layout:curveSegment>
+									</layout:listOfCurveSegments>
+								</layout:curve>
+							</layout:speciesReferenceGlyph>
+							<layout:speciesReferenceGlyph
+								layout:id="SpeciesReferenceGlyph_PI" layout:speciesReference="ModifierSpeciesReference_Pi"
+								layout:speciesGlyph="SpeciesGlyph_Pi" layout:role="activator">
+								<layout:curve>
+									<layout:listOfCurveSegments>
+										<layout:curveSegment
+											xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+											xsi:type="CubicBezier">
+											<layout:start layout:x="115" layout:y="110" />
+											<layout:end layout:x="165" layout:y="110" />
+											<layout:basePoint1 layout:x="140" layout:y="110" />
+											<layout:basePoint2 layout:x="140" layout:y="110" />
+										</layout:curveSegment>
+									</layout:listOfCurveSegments>
+								</layout:curve>
+							</layout:speciesReferenceGlyph>
+						</layout:listOfSpeciesReferenceGlyphs>
+					</layout:reactionGlyph>
+				</layout:listOfReactionGlyphs>
+				<layout:listOfTextGlyphs>
+					<layout:textGlyph layout:id="TextGlyph_Glucose"
+						layout:originOfText="Glucose" layout:graphicalObject="SpeciesGlyph_Glucose">
+						<layout:boundingBox layout:id="bbA">
+							<layout:position layout:x="115" layout:y="20" />
+							<layout:dimensions layout:width="110"
+								layout:height="20" />
+						</layout:boundingBox>
+					</layout:textGlyph>
+					<layout:textGlyph layout:id="TextGlyph_G6P"
+						layout:originOfText="G6P" layout:graphicalObject="SpeciesGlyph_G6P">
+						<layout:boundingBox layout:id="bbD">
+							<layout:position layout:x="60" layout:y="190" />
+							<layout:dimensions layout:width="250"
+								layout:height="20" />
+						</layout:boundingBox>
+					</layout:textGlyph>
+					<layout:textGlyph layout:id="TextGlyph_ATP"
+						layout:originOfText="ATP" layout:graphicalObject="SpeciesGlyph_ATP">
+						<layout:boundingBox layout:id="bbB">
+							<layout:position layout:x="280" layout:y="70" />
+							<layout:dimensions layout:width="60"
+								layout:height="20" />
+						</layout:boundingBox>
+					</layout:textGlyph>
+					<layout:textGlyph layout:id="TextGlyph_ADP"
+						layout:originOfText="ADP" layout:graphicalObject="glyph_ADP">
+						<layout:boundingBox layout:id="bbC">
+							<layout:position layout:x="280" layout:y="140" />
+							<layout:dimensions layout:width="60"
+								layout:height="20" />
+						</layout:boundingBox>
+					</layout:textGlyph>
+					<layout:textGlyph layout:id="TextGlyph_PI"
+						layout:originOfText="Pi" layout:graphicalObject="SpeciesGlyph_Pi">
+						<layout:boundingBox layout:id="bbE">
+							<layout:position layout:x="60" layout:y="100" />
+							<layout:dimensions layout:width="40"
+								layout:height="20" />
+						</layout:boundingBox>
+					</layout:textGlyph>
+				</layout:listOfTextGlyphs>
+			</layout:layout>
+		</layout:listOfLayouts>
+	</model>
 </sbml>
\ No newline at end of file
diff --git a/converter-sbml/testFiles/layoutExample/ReactionGlyph_Example.xml b/converter-sbml/testFiles/layoutExample/ReactionGlyph_Example.xml
deleted file mode 100644
index 189da3871f8be71bd50ceec690db47fe7725ccb2..0000000000000000000000000000000000000000
--- a/converter-sbml/testFiles/layoutExample/ReactionGlyph_Example.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core"
-xmlns:layout="http://www.sbml.org/sbml/level3/version1/layout/version1"
-level="3" version="1" layout:required="false" >
-<model id="TestModel_with_modifiers">
-<listOfReactions>
-<reaction id="Hexokinase" reversible="false" fast="false">
-</reaction>
-</listOfReactions>
-<layout:listOfLayouts xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-xmlns:layout="http://www.sbml.org/sbml/level3/version1/layout/version1">
-<layout:layout layout:id="Layout_1">
-<layout:dimensions layout:width="400" layout:height="230"/>
-<layout:listOfReactionGlyphs>
-<layout:reactionGlyph layout:id="glyph_Hexokinase" layout:reaction="Hexokinase">
-<layout:curve>
-<layout:listOfCurveSegments>
-<layout:curveSegment
-xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-xsi:type="LineSegment">
-<layout:start layout:x="170" layout:y="100"/>
-<layout:end layout:x="170" layout:y="130"/>
-</layout:curveSegment>
-</layout:listOfCurveSegments>
-</layout:curve>
-<layout:listOfSpeciesReferenceGlyphs>
-</layout:listOfSpeciesReferenceGlyphs>
-</layout:reactionGlyph>
-</layout:listOfReactionGlyphs>
-</layout:layout>
-</layout:listOfLayouts>
-</model>
-</sbml>
\ No newline at end of file