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 7472ee1cbb776bfb8d42484d2f335210ff00e461..e418c5232819ecd2f76045faca2104ad311930b8 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
@@ -29,6 +29,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.celldesigner.structure.ComplexSpeciesTest;
 import lcsb.mapviewer.converter.model.sbml.reaction.SbmlReactionParser;
 import lcsb.mapviewer.converter.model.sbml.species.SbmlSpeciesParser;
 import lcsb.mapviewer.model.map.BioEntity;
@@ -40,7 +41,9 @@ import lcsb.mapviewer.model.map.modifier.Modulation;
 import lcsb.mapviewer.model.map.reaction.AbstractNode;
 import lcsb.mapviewer.model.map.reaction.Modifier;
 import lcsb.mapviewer.model.map.reaction.Reaction;
+import lcsb.mapviewer.model.map.species.Complex;
 import lcsb.mapviewer.model.map.species.Element;
+import lcsb.mapviewer.model.map.species.Species;
 
 public class SbmlParser implements IConverter {
 
@@ -115,6 +118,9 @@ public class SbmlParser implements IConverter {
       if (sbmlModel.getRuleCount() > 0) {
         throw new NotImplementedException("Rule not implemented for model");
       }
+      if (layoutExists) {
+        addComplexRelationsBasedOnCoordinates(model);
+      }
       createLayout(model, layout, params.isSizeAutoAdjust(), reactionParser);
       return model;
     } catch (XMLStreamException e) {
@@ -122,6 +128,39 @@ public class SbmlParser implements IConverter {
     }
   }
 
+  private void addComplexRelationsBasedOnCoordinates(Model model) {
+    for (Element element : model.getElements()) {
+      if (element instanceof Species) {
+        Species species = (Species) element;
+        if (species.getComplex() == null && element.getWidth() != 0 || element.getHeight() != 0) {
+          Complex complex = findComplexForElement(species, model);
+          if (complex != null) {
+            complex.addSpecies(species);
+          }
+        }
+      }
+    }
+  }
+
+  private Complex findComplexForElement(Species species, Model model) {
+    Complex result = null;
+    for (Element element : model.getElements()) {
+      if (element instanceof Complex && element!=species) {
+        Complex complex = (Complex) element;
+        if ( complex.getWidth() != 0 || complex.getHeight() != 0) {
+          if (complex.contains(species)) {
+            if (result==null) {
+              result = complex;
+            } else if (result.getSize()>complex.getSize()) {
+              result = complex;
+            }
+          }
+        }
+      }
+    }
+    return result;
+  }
+
   private void createLayout(Model model, Layout layout, boolean resize, SbmlReactionParser parser)
       throws InvalidInputDataExecption {
     if (model.getWidth() == null) {