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 50be3be76dcbce74732f82ac78e28606678c5b36..3a633ce4f7101f43ca7c18838751294dcaa62b39 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
@@ -89,125 +89,124 @@ public class SbmlReactionParser {
         throw new InvalidInputDataExecption("Layout contains invalid Species id: " + glyph.getReaction());
       }
       used.add(source);
-      Reaction reactionWithLayout = source.copy();
-      reactionWithLayout.setIdReaction(glyph.getId());
-      for (SpeciesReferenceGlyph speciesRefernceGlyph : glyph.getListOfSpeciesReferenceGlyphs()) {
-        SpeciesGlyph speciesGlyph = layout.getSpeciesGlyph(speciesRefernceGlyph.getSpeciesGlyph());
-        ReactionNode minervaNode = null;
-        Class<? extends ReactionNode> nodeClass = null;
-        switch (speciesRefernceGlyph.getRole()) {
-        case ACTIVATOR:
-          nodeClass = Trigger.class;
-          break;
-        case INHIBITOR:
-          nodeClass = Inhibition.class;
-          break;
-        case MODIFIER:
-          nodeClass = Modulation.class;
-          break;
-        case PRODUCT:
-          nodeClass = Product.class;
-          break;
-        case SIDEPRODUCT:
-          nodeClass = Product.class;
-          break;
-        case SIDESUBSTRATE:
-          nodeClass = Reactant.class;
-          break;
-        case SUBSTRATE:
-          nodeClass = Reactant.class;
-          break;
-        case UNDEFINED:
-          nodeClass = null;
-          break;
-        }
-        for (ReactionNode node : reactionWithLayout.getReactionNodes()) {
-          if (node.getElement().getElementId().equals(speciesGlyph.getSpecies())) {
-            if (nodeClass == null) {
-              minervaNode = node;
-            } else if (node.getClass().isAssignableFrom(nodeClass)) {
-              minervaNode = node;
+      try {
+        Reaction reactionWithLayout = source.copy();
+        reactionWithLayout.setIdReaction(glyph.getId());
+        for (SpeciesReferenceGlyph speciesRefernceGlyph : glyph.getListOfSpeciesReferenceGlyphs()) {
+          SpeciesGlyph speciesGlyph = layout.getSpeciesGlyph(speciesRefernceGlyph.getSpeciesGlyph());
+          ReactionNode minervaNode = null;
+          Class<? extends ReactionNode> nodeClass = null;
+          switch (speciesRefernceGlyph.getRole()) {
+          case ACTIVATOR:
+            nodeClass = Trigger.class;
+            break;
+          case INHIBITOR:
+            nodeClass = Inhibition.class;
+            break;
+          case MODIFIER:
+            nodeClass = Modulation.class;
+            break;
+          case PRODUCT:
+            nodeClass = Product.class;
+            break;
+          case SIDEPRODUCT:
+            nodeClass = Product.class;
+            break;
+          case SIDESUBSTRATE:
+            nodeClass = Reactant.class;
+            break;
+          case SUBSTRATE:
+            nodeClass = Reactant.class;
+            break;
+          case UNDEFINED:
+            nodeClass = null;
+            break;
+          }
+          for (ReactionNode node : reactionWithLayout.getReactionNodes()) {
+            if (node.getElement().getElementId().equals(speciesGlyph.getSpecies())) {
+              if (nodeClass == null) {
+                minervaNode = node;
+              } else if (node.getClass().isAssignableFrom(nodeClass)) {
+                minervaNode = node;
+              }
             }
           }
-        }
-        if (minervaNode == null) {
-          throw new InvalidInputDataExecption(
-              "Cannot find reaction node for layouted reaction: " + speciesGlyph.getSpecies() + ", " + glyph.getId());
-        }
-        Element minervaElement = minervaModel.getElementByElementId(speciesGlyph.getId());
-        if (minervaElement == null) {
-          throw new InvalidInputDataExecption("Cannot find layouted reaction node for layouted reaction: "
-              + speciesGlyph.getId() + ", " + glyph.getId());
-        }
+          if (minervaNode == null) {
+            throw new InvalidInputDataExecption(
+                "Cannot find reaction node for layouted reaction: " + speciesGlyph.getSpecies() + ", " + glyph.getId());
+          }
+          Element minervaElement = minervaModel.getElementByElementId(speciesGlyph.getId());
+          if (minervaElement == null) {
+            throw new InvalidInputDataExecption("Cannot find layouted reaction node for layouted reaction: "
+                + speciesGlyph.getId() + ", " + glyph.getId());
+          }
 
-        PolylineData line = null;
-        for (CurveSegment segment : speciesRefernceGlyph.getCurve().getListOfCurveSegments()) {
-          Point2D start = new Point2D.Double(segment.getStart().getX(), segment.getStart().getY());
-          Point2D end = new Point2D.Double(segment.getEnd().getX(), segment.getEnd().getY());
-          if (line == null) {
-            line = new PolylineData(start, end);
-          } else {
-            line.addPoint(end);
+          PolylineData line = null;
+          for (CurveSegment segment : speciesRefernceGlyph.getCurve().getListOfCurveSegments()) {
+            Point2D start = new Point2D.Double(segment.getStart().getX(), segment.getStart().getY());
+            Point2D end = new Point2D.Double(segment.getEnd().getX(), segment.getEnd().getY());
+            if (line == null) {
+              line = new PolylineData(start, end);
+            } else {
+              line.addPoint(end);
+            }
           }
-        }
-        if (minervaNode instanceof Reactant) {
-          line = line.reverse();
-        }
-        if (minervaNode instanceof Product) {
-          ArrowTypeData atd = new ArrowTypeData();
-          atd.setArrowType(ArrowType.FULL);
-          line.setEndAtd(atd);
-        } else if (minervaNode instanceof Modifier) {
-          for (ModifierType mt : ModifierType.values()) {
-            if (mt.getClazz().equals(nodeClass)) {
-              line.setEndAtd(mt.getAtd());
-              line.setType(mt.getLineType());
+          if (minervaNode instanceof Reactant) {
+            line = line.reverse();
+          }
+          if (minervaNode instanceof Product) {
+            ArrowTypeData atd = new ArrowTypeData();
+            atd.setArrowType(ArrowType.FULL);
+            line.setEndAtd(atd);
+          } else if (minervaNode instanceof Modifier) {
+            for (ModifierType mt : ModifierType.values()) {
+              if (mt.getClazz().equals(nodeClass)) {
+                line.setEndAtd(mt.getAtd());
+                line.setType(mt.getLineType());
+              }
             }
           }
-        }
-        minervaNode.setLine(line);
-        minervaNode.setElement(minervaElement);
-        if (nodeClass != minervaNode.getClass()) {
-          reactionWithLayout.removeModifier((Modifier) minervaNode);
+          minervaNode.setLine(line);
+          minervaNode.setElement(minervaElement);
+          if (nodeClass != minervaNode.getClass()) {
+            reactionWithLayout.removeModifier((Modifier) minervaNode);
 
-          try {
-            ReactionNode newNode = nodeClass.getConstructor().newInstance();
-            newNode.setElement(minervaElement);
-            newNode.setLine(line);
-            reactionWithLayout.addNode(newNode);
-          } catch (InstantiationException | IllegalAccessException | IllegalArgumentException
-              | InvocationTargetException | NoSuchMethodException | SecurityException e) {
-            throw new InvalidStateException(e);
+            try {
+              ReactionNode newNode = nodeClass.getConstructor().newInstance();
+              newNode.setElement(minervaElement);
+              newNode.setLine(line);
+              reactionWithLayout.addNode(newNode);
+            } catch (InstantiationException | IllegalAccessException | IllegalArgumentException
+                | InvocationTargetException | NoSuchMethodException | SecurityException e) {
+              throw new InvalidStateException(e);
+            }
           }
         }
-      }
-      if (reactionWithLayout.getReactants().size()>1 && reactionWithLayout.getProducts().size()>0) {
-        PolylineData line = new PolylineData();
-        Point2D p1 = reactionWithLayout.getReactants().get(0).getLine().getEndPoint();
-        Point2D p2 = reactionWithLayout.getProducts().get(0).getLine().getBeginPoint();
-        Point2D center = new Point2D.Double((p1.getX()+p2.getX())/2, (p1.getY()+p2.getY())/2);
-        line.addPoint(p1);
-        line.addPoint(center);
-        NodeOperator operator = new AndOperator();
-        operator.addInputs(reactionWithLayout.getReactants());
-        operator.setLine(line);
-        reactionWithLayout.addNode(operator);
-      }
-      if (reactionWithLayout.getReactants().size()>0 && reactionWithLayout.getProducts().size()>1) {
-        PolylineData line = new PolylineData();
-        Point2D p1 = reactionWithLayout.getReactants().get(0).getLine().getEndPoint();
-        Point2D p2 = reactionWithLayout.getProducts().get(0).getLine().getBeginPoint();
-        Point2D center = new Point2D.Double((p1.getX()+p2.getX())/2, (p1.getY()+p2.getY())/2);
-        line.addPoint(p2);
-        line.addPoint(center);
-        NodeOperator operator = new SplitOperator();
-        operator.addOutputs(reactionWithLayout.getProducts());
-        operator.setLine(line);
-        reactionWithLayout.addNode(operator);
-      }
-      
-      logger.debug(glyph.getCurve().getListOfCurveSegments().get(0));
-      try {
+        if (reactionWithLayout.getReactants().size() > 1 && reactionWithLayout.getProducts().size() > 0) {
+          PolylineData line = new PolylineData();
+          Point2D p1 = reactionWithLayout.getReactants().get(0).getLine().getEndPoint();
+          Point2D p2 = reactionWithLayout.getProducts().get(0).getLine().getBeginPoint();
+          Point2D center = new Point2D.Double((p1.getX() + p2.getX()) / 2, (p1.getY() + p2.getY()) / 2);
+          line.addPoint(p1);
+          line.addPoint(center);
+          NodeOperator operator = new AndOperator();
+          operator.addInputs(reactionWithLayout.getReactants());
+          operator.setLine(line);
+          reactionWithLayout.addNode(operator);
+        }
+        if (reactionWithLayout.getReactants().size() > 0 && reactionWithLayout.getProducts().size() > 1) {
+          PolylineData line = new PolylineData();
+          Point2D p1 = reactionWithLayout.getReactants().get(0).getLine().getEndPoint();
+          Point2D p2 = reactionWithLayout.getProducts().get(0).getLine().getBeginPoint();
+          Point2D center = new Point2D.Double((p1.getX() + p2.getX()) / 2, (p1.getY() + p2.getY()) / 2);
+          line.addPoint(p2);
+          line.addPoint(center);
+          NodeOperator operator = new SplitOperator();
+          operator.addOutputs(reactionWithLayout.getProducts());
+          operator.setLine(line);
+          reactionWithLayout.addNode(operator);
+        }
+
         minervaModel.addReaction(new StateTransitionReaction(reactionWithLayout));
       } catch (InvalidArgumentException e) {
         throw new InvalidInputDataExecption(e);
diff --git a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/AllSbmlConverterTests.java b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/AllSbmlConverterTests.java
new file mode 100644
index 0000000000000000000000000000000000000000..5841758afbbd099cba792497ba0c14f26707c199
--- /dev/null
+++ b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/AllSbmlConverterTests.java
@@ -0,0 +1,11 @@
+package lcsb.mapviewer.converter.model.sbml;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+@RunWith(Suite.class)
+@SuiteClasses({ GenericSbmlParserTest.class, SbmlPareserForInvalidReactionTest.class, SbmlParserTest.class })
+public class AllSbmlConverterTests {
+
+}
diff --git a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlParserTest.java b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlParserTest.java
index dfa7b80ef15b547b23f48cb5740db0c3a855ca85..21c3124f6213a06978d1eaa91abfabddc2bb322c 100644
--- a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlParserTest.java
+++ b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlParserTest.java
@@ -5,9 +5,7 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
-import java.awt.Desktop;
 import java.awt.Point;
-import java.io.File;
 import java.io.FileNotFoundException;
 
 import org.apache.log4j.Logger;
@@ -15,9 +13,6 @@ import org.junit.Test;
 
 import lcsb.mapviewer.converter.ConverterParams;
 import lcsb.mapviewer.converter.InvalidInputDataExecption;
-import lcsb.mapviewer.converter.graphics.AbstractImageGenerator;
-import lcsb.mapviewer.converter.graphics.NormalImageGenerator;
-import lcsb.mapviewer.converter.graphics.PngImageGenerator;
 import lcsb.mapviewer.model.map.compartment.Compartment;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.reaction.Reaction;
@@ -110,32 +105,34 @@ public class SbmlParserTest {
     }
     assertEquals(2, reaction.getOperators().size());
 
-    AbstractImageGenerator.Params params = new AbstractImageGenerator.Params().height(model.getHeight())
-        .width(model.getWidth()).nested(true).scale(1).level(20).x(0).y(0).model(model);
-    NormalImageGenerator nig = new PngImageGenerator(params);
-    nig.saveToFile("tmp.png");
-    Desktop.getDesktop().open(new File("tmp.png"));
+    // AbstractImageGenerator.Params params = new
+    // AbstractImageGenerator.Params().height(model.getHeight())
+    // .width(model.getWidth()).nested(true).scale(1).level(20).x(0).y(0).model(model);
+    // NormalImageGenerator nig = new PngImageGenerator(params);
+    // nig.saveToFile("tmp.png");
+    // Desktop.getDesktop().open(new File("tmp.png"));
 
   }
 
   @Test
   public void testReactionWithoutLayout() throws Exception {
-    Model model = parser.createModel(new ConverterParams().filename("testFiles/layoutExample/Complete_Example_level2.xml"));
+    Model model = parser
+        .createModel(new ConverterParams().filename("testFiles/layoutExample/Complete_Example_level2.xml"));
     assertNotNull(model);
     assertEquals(1, model.getReactions().size());
     Reaction reaction = model.getReactions().iterator().next();
     for (ReactionNode node : reaction.getReactionNodes()) {
-      logger.debug(node.getClass()+","+node.getElement());
       assertNotNull(node.getLine());
       assertTrue(node.getLine().length() > 0);
     }
     assertEquals(2, reaction.getOperators().size());
 
-    AbstractImageGenerator.Params params = new AbstractImageGenerator.Params().height(model.getHeight())
-        .width(model.getWidth()).nested(true).scale(1).level(20).x(0).y(0).model(model);
-    NormalImageGenerator nig = new PngImageGenerator(params);
-    nig.saveToFile("tmp.png");
-    Desktop.getDesktop().open(new File("tmp.png"));
+    // AbstractImageGenerator.Params params = new
+    // AbstractImageGenerator.Params().height(model.getHeight())
+    // .width(model.getWidth()).nested(true).scale(1).level(20).x(0).y(0).model(model);
+    // NormalImageGenerator nig = new PngImageGenerator(params);
+    // nig.saveToFile("tmp.png");
+    // Desktop.getDesktop().open(new File("tmp.png"));
 
   }