diff --git a/CellDesigner-plugin/pom.xml b/CellDesigner-plugin/pom.xml
index 1f0c13239d63c1e767d1ad4ee0b51d3e9ea00a93..9fd4b4804fc1d55ec1f16a709265b076cca6c49d 100644
--- a/CellDesigner-plugin/pom.xml
+++ b/CellDesigner-plugin/pom.xml
@@ -1,85 +1,87 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>lcsb.mapviewer</groupId>
-    <artifactId>parent</artifactId>
-    <version>1.0</version>
-  </parent>
-  <artifactId>CellDesigner-plugin</artifactId>
-  	<!-- dependency from the MapViewer model -->
-
-  <repositories>
-		<repository>
-	    <id>central</id>
-    	<url>http://repo.maven.apache.org/maven2/</url>
-		</repository>
-
-		<repository>
-   		<id>repo</id>
-    	<releases>
-       	<enabled>true</enabled>
-       	<checksumPolicy>ignore</checksumPolicy>
-    	</releases>
-    	<snapshots>
-        <enabled>false</enabled>
-    	</snapshots>
-    	<url>file://${project.basedir}/repo</url>
-		</repository>
-
-	</repositories>
-
-<build>
-  <plugins>
-    <plugin>
-      <artifactId>maven-assembly-plugin</artifactId>
-      <executions>
-    		<execution>
-      		<id>make-assembly</id> <!-- this is used for inheritance merges -->
-      		<phase>package</phase> <!-- bind to the packaging phase -->
-      		<goals>
-        		<goal>single</goal>
-      		</goals>
-      		<configuration>
-        		<descriptor>install.xml</descriptor>
-      		</configuration>
-    		</execution>
-  		</executions>
-    </plugin>
-  </plugins>
-</build>
-	
-	
-	<dependencies>
-		<dependency>
-            <groupId>lcsb.mapviewer</groupId>
-            <artifactId>model</artifactId>
-            <version>1.0</version>
-		</dependency>
-
-		<dependency>
-            <groupId>lcsb.mapviewer</groupId>
-            <artifactId>commons</artifactId>
-            <version>1.0</version>
-    </dependency>
-
-		<dependency>
-            <groupId>lcsb.mapviewer</groupId>
-            <artifactId>converter-CellDesigner</artifactId>
-            <version>1.0</version>
-		</dependency>
-
-		<dependency>
-			<groupId>jp.sbi</groupId>
-			<artifactId>celldesigner</artifactId>
-			<version>${celldesigner.version}</version>
-		</dependency>
-    
-		<dependency>
-			<groupId>org.sbml</groupId>
-			<artifactId>libsbml</artifactId>
-			<version>${libsbml.version}</version>
-		</dependency>
-    
-  </dependencies>
-  
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>lcsb.mapviewer</groupId>
+		<artifactId>parent</artifactId>
+		<version>1.0</version>
+	</parent>
+	<artifactId>CellDesigner-plugin</artifactId>
+	<!-- dependency from the MapViewer model -->
+
+	<repositories>
+		<repository>
+			<id>central</id>
+			<url>http://repo.maven.apache.org/maven2/</url>
+		</repository>
+
+		<repository>
+			<id>repo</id>
+			<releases>
+				<enabled>true</enabled>
+				<checksumPolicy>ignore</checksumPolicy>
+			</releases>
+			<snapshots>
+				<enabled>false</enabled>
+			</snapshots>
+			<url>file://${project.basedir}/repo</url>
+		</repository>
+
+	</repositories>
+
+	<build>
+		<plugins>
+			<plugin>
+				<artifactId>maven-assembly-plugin</artifactId>
+				<executions>
+					<execution>
+						<id>make-assembly</id> <!-- this is used for inheritance merges -->
+						<phase>package</phase> <!-- bind to the packaging phase -->
+						<goals>
+							<goal>single</goal>
+						</goals>
+						<configuration>
+							<descriptor>install.xml</descriptor>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+
+
+	<dependencies>
+		<dependency>
+			<groupId>lcsb.mapviewer</groupId>
+			<artifactId>model</artifactId>
+			<version>1.0</version>
+		</dependency>
+
+		<dependency>
+			<groupId>lcsb.mapviewer</groupId>
+			<artifactId>commons</artifactId>
+			<version>1.0</version>
+		</dependency>
+
+		<dependency>
+			<groupId>lcsb.mapviewer</groupId>
+			<artifactId>converter-CellDesigner</artifactId>
+			<version>1.0</version>
+		</dependency>
+
+		<dependency>
+			<groupId>jp.sbi</groupId>
+			<artifactId>celldesigner</artifactId>
+			<version>${celldesigner.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.sbml</groupId>
+			<artifactId>libsbml</artifactId>
+			<version>${libsbml.version}</version>
+		</dependency>
+
+	</dependencies>
+
 </project>
\ No newline at end of file
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 3e36ff93a7dfd29fa2b27891fd6b556f29564dee..71357a911e75b274d81f18d5ec3762930216f72c 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
@@ -160,7 +160,11 @@ public class RestAnnotationParser extends XmlParser {
         return "";
       }
     } else if (value instanceof String) {
-      return type.getCommonName() + ": " + value + "\n";
+      if (!((String) value).trim().isEmpty() || forceFullInfo) {
+        return type.getCommonName() + ": " + value + "\n";
+      } else {
+        return "";
+      }
     } else if (value instanceof Integer) {
       return type.getCommonName() + ": " + value + "\n";
     } else if (value instanceof Collection) {
@@ -350,7 +354,7 @@ public class RestAnnotationParser extends XmlParser {
       logger.debug("Y");
       notes = notes.substring(notes.indexOf("</head>") + "</head>".length());
     }
-    notes = notes.replace("xmlns=\"http://www.w3.org/1999/xhtml\"","");
+    notes = notes.replace("xmlns=\"http://www.w3.org/1999/xhtml\"", "");
     return notes.replaceAll("&amp;", "&");
   }
 
diff --git a/converter-sbml/pom.xml b/converter-sbml/pom.xml
index 02b7787a01428db97df5cacda80e28901a87825f..f2d8e21147b738460e70b20d49b36325b4afd80d 100644
--- a/converter-sbml/pom.xml
+++ b/converter-sbml/pom.xml
@@ -76,9 +76,9 @@
 		<dependency>
 			<groupId>org.sbml.jsbml</groupId>
 			<artifactId>jsbml</artifactId>
-			<version>1.3.1</version>
+			<version>${jsbml.version}</version>
 			<!-- for now we use lower version of log4j and this one introduce some 
-				problem with tomcat loggin -->
+				problem with tomcat logging -->
 			<exclusions>
 				<exclusion>
 					<groupId>org.apache.logging.log4j</groupId>
@@ -97,24 +97,67 @@
 					<artifactId>slf4j-api</artifactId>
 				</exclusion>
 				<exclusion>
-    			<groupId>junit</groupId>
-    			<artifactId>junit</artifactId>
+					<groupId>junit</groupId>
+					<artifactId>junit</artifactId>
 				</exclusion>
 				<exclusion>
-			    <groupId>commons-logging</groupId>
-    			<artifactId>commons-logging</artifactId>
+					<groupId>commons-logging</groupId>
+					<artifactId>commons-logging</artifactId>
 				</exclusion>
 				<exclusion>
-			    <groupId>org.codehaus.woodstox</groupId>
-    			<artifactId>stax2-api</artifactId>
+					<groupId>org.codehaus.woodstox</groupId>
+					<artifactId>stax2-api</artifactId>
+				</exclusion>
+			<!-- https://github.com/sbmlteam/jsbml/issues/156 -->
+				<exclusion>
+					<groupId>org.sbml.jsbml</groupId>
+					<artifactId>jsbml-core</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+
+		<dependency>
+			<groupId>org.sbml.jsbml</groupId>
+			<artifactId>jsbml-core</artifactId>
+			<version>${jsbml.version}</version>
+			<!-- for now we use lower version of log4j and this one introduce some 
+				problem with tomcat logging -->
+			<exclusions>
+				<exclusion>
+					<groupId>org.apache.logging.log4j</groupId>
+					<artifactId>log4j-core</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.apache.logging.log4j</groupId>
+					<artifactId>log4j-api</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.apache.logging.log4j</groupId>
+					<artifactId>log4j-1.2-api</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.slf4j</groupId>
+					<artifactId>slf4j-api</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>junit</groupId>
+					<artifactId>junit</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>commons-logging</groupId>
+					<artifactId>commons-logging</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.codehaus.woodstox</groupId>
+					<artifactId>stax2-api</artifactId>
 				</exclusion>
 			</exclusions>
 		</dependency>
 
 		<dependency>
-    		<groupId>org.codehaus.woodstox</groupId>
-    		<artifactId>stax2-api</artifactId>
-    		<version>${stax2-api.version}</version>
+			<groupId>org.codehaus.woodstox</groupId>
+			<artifactId>stax2-api</artifactId>
+			<version>${stax2-api.version}</version>
 		</dependency>
 
 		<dependency>
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 656622664598424d68d2630690ad8ad7b96b7b5f..be31323ace489bad052aa2171c8e6c23b4ffdfd4 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
@@ -1,5 +1,6 @@
 package lcsb.mapviewer.converter.model.sbml;
 
+import java.awt.Color;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
@@ -11,6 +12,13 @@ import org.apache.log4j.Logger;
 import org.sbml.jsbml.Model;
 import org.sbml.jsbml.ext.layout.AbstractReferenceGlyph;
 import org.sbml.jsbml.ext.layout.Layout;
+import org.sbml.jsbml.ext.render.ColorDefinition;
+import org.sbml.jsbml.ext.render.LocalRenderInformation;
+import org.sbml.jsbml.ext.render.LocalStyle;
+import org.sbml.jsbml.ext.render.RenderConstants;
+import org.sbml.jsbml.ext.render.RenderGraphicalObjectPlugin;
+import org.sbml.jsbml.ext.render.RenderGroup;
+import org.sbml.jsbml.ext.render.RenderLayoutPlugin;
 
 import lcsb.mapviewer.common.XmlParser;
 import lcsb.mapviewer.common.exception.InvalidStateException;
@@ -116,6 +124,13 @@ public abstract class SbmlBioEntityExporter<T extends BioEntity, S extends org.s
     this.layout = layout;
   }
 
+  protected RenderLayoutPlugin getRenderPlugin() {
+    if (layout.getExtensionCount() > 0) {
+      return (RenderLayoutPlugin) layout.getExtension("render");
+    }
+    return null;
+  }
+
   protected lcsb.mapviewer.model.map.model.Model getMinervaModel() {
     return minervaModel;
   }
@@ -132,4 +147,47 @@ public abstract class SbmlBioEntityExporter<T extends BioEntity, S extends org.s
     return sbmlGlyphByElementId.get(elementId);
   }
 
+  protected ColorDefinition getColorDefinition(Color color) {
+    RenderLayoutPlugin renderPlugin = getRenderPlugin();
+
+    LocalRenderInformation renderInformation = null;
+    for (LocalRenderInformation lri : renderPlugin.getListOfLocalRenderInformation()) {
+      if (lri.getId().equals("minerva_definitions")) {
+        renderInformation = lri;
+      }
+    }
+    if (renderInformation == null) {
+      renderInformation = new LocalRenderInformation("minerva_definitions");
+      renderPlugin.addLocalRenderInformation(renderInformation);
+    }
+
+    for (ColorDefinition cd : renderInformation.getListOfColorDefinitions()) {
+      if (cd.getValue().equals(color)) {
+        return cd;
+      }
+    }
+    ColorDefinition colorDefinition = new ColorDefinition("color_" + colorToString(color), color);
+
+
+    renderInformation.addColorDefinition(colorDefinition);
+    return colorDefinition;
+  }
+
+  protected void assignStyleToGlyph(AbstractReferenceGlyph speciesGlyph, LocalStyle style) {
+    RenderGraphicalObjectPlugin rgop = new RenderGraphicalObjectPlugin(speciesGlyph);
+    rgop.setObjectRole(style.getRoleList().get(0));
+
+    speciesGlyph.addExtension(RenderConstants.shortLabel, rgop);
+  }
+
+  protected LocalStyle createStyle(T element) {
+    LocalRenderInformation renderInformation = new LocalRenderInformation();
+    LocalStyle style = new LocalStyle();
+    style.getRoleList().add("style_" + element.getElementId());
+    style.setGroup(new RenderGroup());
+    renderInformation.addLocalStyle(style);
+    getRenderPlugin().addLocalRenderInformation(renderInformation);
+    return style;
+  }
+
 }
diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlBioEntityParser.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlBioEntityParser.java
index e9926b9ed964c70c306b33fe2b0caf118b08006f..0103895ce8d9c39eba6e27eeebb632ea152a3d2d 100644
--- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlBioEntityParser.java
+++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlBioEntityParser.java
@@ -1,6 +1,9 @@
 package lcsb.mapviewer.converter.model.sbml;
 
+import java.awt.Color;
+import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Map;
 import java.util.Set;
 
 import javax.xml.stream.XMLStreamException;
@@ -9,6 +12,9 @@ import org.apache.log4j.Logger;
 import org.sbml.jsbml.AbstractNamedSBase;
 import org.sbml.jsbml.Annotation;
 import org.sbml.jsbml.ext.layout.Layout;
+import org.sbml.jsbml.ext.render.LocalRenderInformation;
+import org.sbml.jsbml.ext.render.LocalStyle;
+import org.sbml.jsbml.ext.render.RenderLayoutPlugin;
 import org.w3c.dom.Node;
 
 import lcsb.mapviewer.common.XmlParser;
@@ -89,4 +95,67 @@ public class SbmlBioEntityParser extends XmlParser {
     return (idCounter++) + "";
   }
 
+  /**
+   * Returns {@link LocalStyle} from the layout data identified by objectRole.
+   * 
+   * @param objectRole
+   *          object role identifier
+   * @return {@link LocalStyle} from the layout data
+   */
+  protected LocalStyle getStyleForRole(String objectRole) {
+    RenderLayoutPlugin renderPlugin = (RenderLayoutPlugin) layout.getExtension("render");
+    for (LocalRenderInformation lri : renderPlugin.getListOfLocalRenderInformation()) {
+      for (LocalStyle style : lri.getListOfLocalStyles()) {
+        if (style.getRoleList().contains(objectRole)) {
+          return style;
+        }
+      }
+    }
+    return null;
+  }
+
+  protected Color getColorByColorDefinition(String fill) {
+    RenderLayoutPlugin renderPlugin = (RenderLayoutPlugin) layout.getExtension("render");
+    for (LocalRenderInformation lri : renderPlugin.getListOfLocalRenderInformation()) {
+      if (lri.getColorDefinition(fill) != null) {
+        return lri.getColorDefinition(fill).getValue();
+      }
+    }
+    return null;
+  }
+
+  protected LocalStyle getStyleForElement(BioEntity element) {
+    LocalStyle result = getStyleByRole("style_" + element.getElementId());
+    if (result == null && element.getElementId().contains("__")) {
+      result = getStyleByRole("style_" + element.getElementId().split("__")[1]);
+    }
+    if (result == null) {
+      result = getStyleByRole("default_" + element.getClass().getSimpleName());
+    }
+    return result;
+  }
+
+  private Map<String, LocalStyle> styleById = null;
+
+  LocalStyle getStyleByRole(String string) {
+    if (styleById == null) {
+      styleById = new HashMap<>();
+      if (layout != null) {
+        RenderLayoutPlugin renderPlugin = (RenderLayoutPlugin) layout.getExtension("render");
+        if (renderPlugin != null) {
+          for (LocalRenderInformation lri : renderPlugin.getListOfLocalRenderInformation()) {
+            if (lri.getId().equals("minerva_definitions")) {
+              for (LocalStyle style : lri.getListOfLocalStyles()) {
+                for (String role : style.getRoleList()) {
+                  styleById.put(role, style);
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+    return styleById.get(string);
+  }
+
 }
\ No newline at end of file
diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlElementExporter.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlElementExporter.java
index 6b2433971b351a52284b593e2af65136fe2a083f..4a4db0e0817b9a721a7cce99ed792ec6f7e59b94 100644
--- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlElementExporter.java
+++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlElementExporter.java
@@ -6,6 +6,8 @@ import org.sbml.jsbml.ext.layout.BoundingBox;
 import org.sbml.jsbml.ext.layout.Dimensions;
 import org.sbml.jsbml.ext.layout.Layout;
 import org.sbml.jsbml.ext.layout.Point;
+import org.sbml.jsbml.ext.render.ColorDefinition;
+import org.sbml.jsbml.ext.render.LocalStyle;
 
 import lcsb.mapviewer.model.map.species.Element;
 
@@ -25,8 +27,14 @@ public abstract class SbmlElementExporter<T extends Element, S extends org.sbml.
     dimensions.setWidth(element.getWidth());
     dimensions.setHeight(element.getHeight());
     boundingBox.setDimensions(dimensions);
-
     speciesGlyph.setBoundingBox(boundingBox);
+
+    LocalStyle style = createStyle(element);
+    ColorDefinition color = getColorDefinition(element.getColor());
+    style.getGroup().setFill(color.getId());
+
+    assignStyleToGlyph(speciesGlyph, style);
+
   }
 
 }
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 bac6ee8c1366bd7bf3fac869ed70a06f089bc067..0f9972fd83a2d9f993b9b9b4515a6296126ed638 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
@@ -1,5 +1,6 @@
 package lcsb.mapviewer.converter.model.sbml;
 
+import java.awt.Color;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -12,6 +13,9 @@ import org.sbml.jsbml.ListOf;
 import org.sbml.jsbml.Model;
 import org.sbml.jsbml.ext.layout.AbstractReferenceGlyph;
 import org.sbml.jsbml.ext.layout.Layout;
+import org.sbml.jsbml.ext.render.LocalStyle;
+import org.sbml.jsbml.ext.render.RenderConstants;
+import org.sbml.jsbml.ext.render.RenderGraphicalObjectPlugin;
 
 import lcsb.mapviewer.common.Pair;
 import lcsb.mapviewer.converter.InvalidInputDataExecption;
@@ -57,6 +61,13 @@ public abstract class SbmlElementParser<T extends org.sbml.jsbml.Symbol> extends
       elementBySbmlId.put(species.getElementId(), species);
     }
 
+    for (Element element : elements) {
+      LocalStyle style = getStyleForElement(element);
+
+      if (style != null) {
+        applyStyleToElement(element, style);
+      }
+    }
     for (Pair<String, AbstractReferenceGlyph> idGlyphPair : getGlyphs(sbmlLayout)) {
       String id = idGlyphPair.getLeft();
       Element source = elementBySbmlId.get(id);
@@ -68,12 +79,7 @@ public abstract class SbmlElementParser<T extends org.sbml.jsbml.Symbol> extends
       if (glyph.getId() == null || glyph.getId().equals("")) {
         throw new InvalidInputDataExecption("Glyph for Species " + idGlyphPair.getLeft() + " doesn't have id");
       }
-      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());
+      Element elementWithLayout = createElementWithLayout(source, glyph);
       minervaModel.addElement(elementWithLayout);
       result.add(elementWithLayout);
       elementBySbmlId.put(id, elementWithLayout);
@@ -91,6 +97,33 @@ public abstract class SbmlElementParser<T extends org.sbml.jsbml.Symbol> extends
     return result;
   }
 
+  private Element createElementWithLayout(Element source, AbstractReferenceGlyph glyph)
+      throws InvalidInputDataExecption {
+    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());
+
+    RenderGraphicalObjectPlugin rgop = (RenderGraphicalObjectPlugin) glyph.getExtension(RenderConstants.shortLabel);
+    if (rgop != null) {
+      LocalStyle style = getStyleForRole(rgop.getObjectRole());
+      if (style == null) {
+        throw new InvalidInputDataExecption("Style " + rgop.getObjectRole() + " is not defined");
+      }
+      applyStyleToElement(elementWithLayout, style);
+    }
+    return elementWithLayout;
+  }
+
+  private void applyStyleToElement(Element elementWithLayout, LocalStyle style) {
+    if (style.getGroup().getFill() != null) {
+      Color backgroundColor = getColorByColorDefinition(style.getGroup().getFill());
+      elementWithLayout.setColor(backgroundColor);
+    }
+  }
+
   protected abstract List<Pair<String, AbstractReferenceGlyph>> getGlyphs(Layout sbmlLayout);
 
   protected abstract Element parse(T species, Model sbmlModel) throws InvalidInputDataExecption;
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 15a7771f0d8d8b857fc7f17653389615308ffa98..5501b2aa09c79d1dac5d6183f08ce41a30ffe711 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,8 @@ import org.sbml.jsbml.SBMLWriter;
 import org.sbml.jsbml.ext.layout.Dimensions;
 import org.sbml.jsbml.ext.layout.Layout;
 import org.sbml.jsbml.ext.layout.LayoutModelPlugin;
+import org.sbml.jsbml.ext.render.GlobalRenderInformation;
+import org.sbml.jsbml.ext.render.RenderLayoutPlugin;
 
 import lcsb.mapviewer.converter.model.sbml.reaction.SbmlReactionExporter;
 import lcsb.mapviewer.converter.model.sbml.species.SbmlSpeciesExporter;
@@ -19,6 +21,7 @@ import lcsb.mapviewer.model.map.species.Species;
 
 public class SbmlExporter {
   Logger logger = Logger.getLogger(SbmlExporter.class);
+
   public String toXml(lcsb.mapviewer.model.map.model.Model model)
       throws SBMLException, XMLStreamException, InconsistentModelException {
     SBMLDocument doc = new SBMLDocument(3, 1);
@@ -47,7 +50,7 @@ public class SbmlExporter {
     return stream.toString();
   }
 
-  private Layout createSbmlLayout(lcsb.mapviewer.model.map.model.Model model, Model result) {
+  public Layout createSbmlLayout(lcsb.mapviewer.model.map.model.Model model, Model result) {
     LayoutModelPlugin layoutPlugin = new LayoutModelPlugin(result);
     Layout layout = new Layout();
     Dimensions dimensions = new Dimensions();
@@ -64,6 +67,15 @@ public class SbmlExporter {
     layout.setDimensions(dimensions);
     layoutPlugin.add(layout);
     result.addExtension("layout", layoutPlugin);
+    
+    createSbmlRenderPlugin(layout, result);
     return layout;
   }
+
+  RenderLayoutPlugin createSbmlRenderPlugin(Layout layout, Model result) {
+    RenderLayoutPlugin renderPlugin = new RenderLayoutPlugin(layout);
+    renderPlugin.setRenderInformation(new GlobalRenderInformation());
+    layout.addExtension("render", renderPlugin);
+    return renderPlugin;
+  }
 }
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 d27a540db2645e38c6ccc9e281537959ae20898b..7472ee1cbb776bfb8d42484d2f335210ff00e461 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
@@ -19,6 +19,7 @@ import org.sbml.jsbml.SBMLReader;
 import org.sbml.jsbml.ext.SBasePlugin;
 import org.sbml.jsbml.ext.layout.Layout;
 import org.sbml.jsbml.ext.layout.LayoutModelPlugin;
+import org.sbml.jsbml.ext.render.LocalStyle;
 
 import lcsb.mapviewer.commands.CommandExecutionException;
 import lcsb.mapviewer.commands.layout.ApplySimpleLayoutModelCommand;
@@ -114,14 +115,15 @@ public class SbmlParser implements IConverter {
       if (sbmlModel.getRuleCount() > 0) {
         throw new NotImplementedException("Rule not implemented for model");
       }
-      createLayout(model, layout, params.isSizeAutoAdjust());
+      createLayout(model, layout, params.isSizeAutoAdjust(), reactionParser);
       return model;
     } catch (XMLStreamException e) {
       throw new InvalidInputDataExecption(e);
     }
   }
 
-  private void createLayout(Model model, Layout layout, boolean resize) throws InvalidInputDataExecption {
+  private void createLayout(Model model, Layout layout, boolean resize, SbmlReactionParser parser)
+      throws InvalidInputDataExecption {
     if (model.getWidth() == null) {
       double maxY = 0;
       double maxX = 0;
@@ -150,6 +152,15 @@ public class SbmlParser implements IConverter {
     try {
       if (bioEntitesRequiringLayout.size() > 0) {
         new ApplySimpleLayoutModelCommand(model, bioEntitesRequiringLayout, true).execute();
+        for (BioEntity bioEntity : bioEntitesRequiringLayout) {
+          if (bioEntity instanceof Reaction) {
+            LocalStyle style = parser.getStyleForElement(bioEntity);
+
+            if (style != null) {
+              parser.applyStyleToReaction((Reaction) bioEntity, style);
+            }
+          }
+        }
       }
     } catch (CommandExecutionException e) {
       throw new InvalidInputDataExecption("Problem with generating layout", e);
diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporter.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporter.java
index 20e89b58a1a204cf0ade7042639e4a4be93e0326..28b6c80aff8c4317fa08c8b37f6f6ee7981323d7 100644
--- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporter.java
+++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionExporter.java
@@ -23,6 +23,8 @@ 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.ext.render.ColorDefinition;
+import org.sbml.jsbml.ext.render.LocalStyle;
 import org.w3c.dom.Node;
 
 import lcsb.mapviewer.common.Configuration;
@@ -173,8 +175,8 @@ public class SbmlReactionExporter extends SbmlBioEntityExporter<Reaction, org.sb
   }
 
   @Override
-  protected void assignLayoutToGlyph(Reaction reaction, AbstractReferenceGlyph compartmentGlyph) {
-    ReactionGlyph reactionGlyph = (ReactionGlyph) compartmentGlyph;
+  protected void assignLayoutToGlyph(Reaction reaction, AbstractReferenceGlyph glyph) {
+    ReactionGlyph reactionGlyph = (ReactionGlyph) glyph;
     boolean firstReactant = true;
     reactionGlyph.setCurve(new Curve());
 
@@ -242,6 +244,14 @@ public class SbmlReactionExporter extends SbmlBioEntityExporter<Reaction, org.sb
         modifierGlyph.setRole(SpeciesReferenceRole.MODIFIER);
       }
     }
+    
+    LocalStyle style = createStyle(reaction);
+    ColorDefinition color = getColorDefinition(reaction.getReactants().get(0).getLine().getColor());
+    style.getGroup().setStrokeWidth(reaction.getReactants().get(0).getLine().getWidth());
+    style.getGroup().setFill(color.getId());
+
+    assignStyleToGlyph(reactionGlyph, style);
+    
   }
 
   private void addOperatorLineToGlyph(ReactionGlyph reactantGlyph, NodeOperator operator, boolean reverse) {
diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionParser.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionParser.java
index add9c0916d66da509def9f93bd209fee8a9841b4..e02e9b12d4db8b66bb0682cc4a806c63d91666e2 100644
--- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionParser.java
+++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/reaction/SbmlReactionParser.java
@@ -1,5 +1,6 @@
 package lcsb.mapviewer.converter.model.sbml.reaction;
 
+import java.awt.Color;
 import java.awt.geom.Point2D;
 import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
@@ -22,6 +23,9 @@ import org.sbml.jsbml.ext.layout.Layout;
 import org.sbml.jsbml.ext.layout.ReactionGlyph;
 import org.sbml.jsbml.ext.layout.SpeciesGlyph;
 import org.sbml.jsbml.ext.layout.SpeciesReferenceGlyph;
+import org.sbml.jsbml.ext.render.LocalStyle;
+import org.sbml.jsbml.ext.render.RenderConstants;
+import org.sbml.jsbml.ext.render.RenderGraphicalObjectPlugin;
 import org.w3c.dom.Node;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
@@ -41,6 +45,7 @@ import lcsb.mapviewer.model.map.kinetics.SbmlKinetics;
 import lcsb.mapviewer.model.map.modifier.Inhibition;
 import lcsb.mapviewer.model.map.modifier.Modulation;
 import lcsb.mapviewer.model.map.modifier.Trigger;
+import lcsb.mapviewer.model.map.reaction.AbstractNode;
 import lcsb.mapviewer.model.map.reaction.AndOperator;
 import lcsb.mapviewer.model.map.reaction.Modifier;
 import lcsb.mapviewer.model.map.reaction.NodeOperator;
@@ -56,8 +61,6 @@ import lcsb.mapviewer.modelutils.map.ElementUtils;
 public class SbmlReactionParser extends SbmlBioEntityParser {
   Logger logger = Logger.getLogger(SbmlReactionParser.class);
 
-  Layout layout;
-
   lcsb.mapviewer.model.map.model.Model minervaModel;
   ElementUtils eu = new ElementUtils();
 
@@ -108,33 +111,7 @@ public class SbmlReactionParser extends SbmlBioEntityParser {
         for (SpeciesReferenceGlyph speciesRefernceGlyph : glyph.getListOfSpeciesReferenceGlyphs()) {
           SpeciesGlyph speciesGlyph = layout.getSpeciesGlyph(speciesRefernceGlyph.getSpeciesGlyph());
           ReactionNode minervaNode = null;
-          Class<? extends ReactionNode> nodeClass = null;
-          if (speciesRefernceGlyph.getRole() != null) {
-            switch (speciesRefernceGlyph.getRole()) {
-            case ACTIVATOR:
-              nodeClass = Trigger.class;
-              break;
-            case INHIBITOR:
-              nodeClass = Inhibition.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:
-            case MODIFIER:
-              nodeClass = null;
-              break;
-            }
-          }
+          Class<? extends ReactionNode> nodeClass = getReactionNodeClass(speciesRefernceGlyph);
 
           if (reactionWithLayout.isReversible() && (nodeClass == Reactant.class || nodeClass == Product.class)) {
             nodeClass = null;
@@ -233,6 +210,8 @@ public class SbmlReactionParser extends SbmlBioEntityParser {
           operator.setLine(line);
           reactionWithLayout.addNode(operator);
         }
+        assignRenderDataToReaction(glyph, reactionWithLayout);
+
         minervaModel.addReaction(reactionWithLayout);
       } catch (InvalidArgumentException e) {
         throw new InvalidInputDataExecption(e);
@@ -255,6 +234,63 @@ public class SbmlReactionParser extends SbmlBioEntityParser {
     }
   }
 
+  private Class<? extends ReactionNode> getReactionNodeClass(SpeciesReferenceGlyph speciesRefernceGlyph) {
+    Class<? extends ReactionNode> nodeClass = null;
+    if (speciesRefernceGlyph.getRole() != null) {
+      switch (speciesRefernceGlyph.getRole()) {
+      case ACTIVATOR:
+        nodeClass = Trigger.class;
+        break;
+      case INHIBITOR:
+        nodeClass = Inhibition.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:
+      case MODIFIER:
+        nodeClass = null;
+        break;
+      }
+    }
+    return nodeClass;
+  }
+
+  private void assignRenderDataToReaction(ReactionGlyph glyph, Reaction reactionWithLayout)
+      throws InvalidInputDataExecption {
+    RenderGraphicalObjectPlugin rgop = (RenderGraphicalObjectPlugin) glyph.getExtension(RenderConstants.shortLabel);
+    if (rgop != null) {
+      LocalStyle style = getStyleForRole(rgop.getObjectRole());
+      if (style == null) {
+        throw new InvalidInputDataExecption("Style " + rgop.getObjectRole() + " is not defined");
+      }
+      applyStyleToReaction(reactionWithLayout, style);
+    }
+  }
+
+  public void applyStyleToReaction(Reaction reactionWithLayout, LocalStyle style) {
+    if (style.getGroup().getFill() != null) {
+      Color color = getColorByColorDefinition(style.getGroup().getFill());
+      for (AbstractNode node : reactionWithLayout.getNodes()) {
+        node.getLine().setColor(color);
+      }
+    }
+    if (style.getGroup().getStrokeWidth() != null) {
+      for (AbstractNode node : reactionWithLayout.getNodes()) {
+        node.getLine().setWidth(style.getGroup().getStrokeWidth());
+      }
+    }
+  }
+
   private PolylineData getLineFromReferenceGlyph(SpeciesReferenceGlyph speciesRefernceGlyph) {
     PolylineData line = null;
     for (CurveSegment segment : speciesRefernceGlyph.getCurve().getListOfCurveSegments()) {
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
index c59f7cab22f89ef245becebd0ab8885d062121bd..2e9a90faca7c22117648dcd96573563c91a1bb0a 100644
--- 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
@@ -12,6 +12,7 @@ import lcsb.mapviewer.converter.model.sbml.species.AllSbmlSpeciesTests;
     AllSbmlSpeciesTests.class, //
     GenericSbmlParserTest.class, //
     GenericSbmlToXmlParserTest.class, //
+    SbmlBioEntityExporterTest.class, //
     SbmlExporterTest.class, //
     SbmlPareserForInvalidReactionTest.class, //
     SbmlParserTest.class, //
diff --git a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlBioEntityExporterTest.java b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlBioEntityExporterTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..471f844b462f960b4d52d25e611d80b584f1f6e9
--- /dev/null
+++ b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlBioEntityExporterTest.java
@@ -0,0 +1,61 @@
+package lcsb.mapviewer.converter.model.sbml;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import java.awt.Color;
+
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.sbml.jsbml.Model;
+import org.sbml.jsbml.SBMLDocument;
+import org.sbml.jsbml.ext.layout.Layout;
+import org.sbml.jsbml.ext.layout.LayoutModelPlugin;
+import org.sbml.jsbml.ext.render.ColorDefinition;
+import org.sbml.jsbml.ext.render.RenderLayoutPlugin;
+
+import lcsb.mapviewer.model.map.model.ModelFullIndexed;
+
+public class SbmlBioEntityExporterTest {
+
+  @Test
+  public void testEmptyGetRenderPlugin() {
+    @SuppressWarnings("rawtypes")
+    SbmlBioEntityExporter exporter = Mockito.mock(SbmlBioEntityExporter.class, Mockito.CALLS_REAL_METHODS);
+    Layout layout = new Layout();
+    exporter.setLayout(layout);
+
+    assertNull(exporter.getRenderPlugin());
+  }
+
+  @Test
+  public void testGetRenderPluginWithLayout() {
+    SbmlBioEntityExporter<?, ?> exporter = createMockExporter();
+    assertNotNull(exporter.getRenderPlugin());
+  }
+
+  @SuppressWarnings("rawtypes")
+  private SbmlBioEntityExporter createMockExporter() {
+    SbmlBioEntityExporter exporter = Mockito.mock(SbmlBioEntityExporter.class, Mockito.CALLS_REAL_METHODS);
+
+    SBMLDocument doc = new SBMLDocument(3, 1);
+    Model result = doc.createModel();
+
+    SbmlExporter sbmlExporter = new SbmlExporter();
+    Layout layout = sbmlExporter.createSbmlLayout(new ModelFullIndexed(null), result);
+
+    exporter.setSbmlModel(result);
+    exporter.setLayout(layout);
+    return exporter;
+  }
+
+  @Test
+  public void testAddColors() {
+    SbmlBioEntityExporter<?, ?> exporter = createMockExporter();
+    ColorDefinition c1 = exporter.getColorDefinition(Color.BLUE);
+    ColorDefinition c2 = exporter.getColorDefinition(Color.BLUE);
+    assertEquals(c1, c2);
+  }
+
+}
diff --git a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlExporterTest.java b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlExporterTest.java
index 3d6832feedb6c3867094a78ff5189fd2f4412a5b..ad40790555de5aea076bce9db4f36e6f25e7dc42 100644
--- a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlExporterTest.java
+++ b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlExporterTest.java
@@ -5,15 +5,13 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
+import java.awt.Color;
 import java.awt.Desktop;
 import java.awt.geom.Point2D;
 import java.io.ByteArrayInputStream;
 import java.io.File;
-import java.io.InputStream;
-import java.io.StringWriter;
 import java.nio.file.Files;
 
-import org.apache.commons.io.IOUtils;
 import org.apache.log4j.Logger;
 import org.junit.Test;
 
@@ -23,17 +21,18 @@ import lcsb.mapviewer.converter.IConverter;
 import lcsb.mapviewer.converter.graphics.AbstractImageGenerator;
 import lcsb.mapviewer.converter.graphics.NormalImageGenerator;
 import lcsb.mapviewer.converter.graphics.PngImageGenerator;
-import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
 import lcsb.mapviewer.model.graphics.PolylineData;
 import lcsb.mapviewer.model.map.compartment.Compartment;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelComparator;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
+import lcsb.mapviewer.model.map.reaction.AbstractNode;
 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.GenericProtein;
 import lcsb.mapviewer.model.map.species.Species;
 
@@ -42,6 +41,8 @@ public class SbmlExporterTest {
   SbmlParser parser = new SbmlParser();
   SbmlExporter exporter = new SbmlExporter();
 
+  ModelComparator comparator = new ModelComparator();
+
   @Test
   public void testExportCompartment() throws Exception {
     Model model = getModelAfterSerializing("testFiles/layoutExample/CompartmentGlyph_Example_level2_level3.xml");
@@ -67,6 +68,7 @@ public class SbmlExporterTest {
 
   private Model getModelAfterSerializing(Model originalModel) throws Exception {
     String xml = exporter.toXml(originalModel);
+    logger.debug(xml);
     ByteArrayInputStream stream = new ByteArrayInputStream(xml.getBytes("UTF-8"));
     Model result = parser.createModel(new ConverterParams().inputStream(stream));
     // showImage(originalModel);
@@ -261,7 +263,7 @@ public class SbmlExporterTest {
     assertEquals(0, comparator.compare(model, model2));
 
   }
-  
+
   @Test
   public void testExportProblematicNotes() throws Exception {
     Model model = createModelWithReaction();
@@ -274,4 +276,39 @@ public class SbmlExporterTest {
     assertEquals(reaction.getNotes(), deserializedReaction.getNotes());
 
   }
+
+  @Test
+  public void testColorParsing() throws Exception {
+    Model model = parser.createModel(new ConverterParams().filename("testFiles/layoutExample/example1.xml"));
+    for (Element element : model.getElements()) {
+      element.setColor(Color.BLUE);
+    }
+    Model model2 = getModelAfterSerializing(model);
+    assertEquals(0, comparator.compare(model, model2));
+  }
+
+  @Test
+  public void testReactionColorParsing() throws Exception {
+    Model model = parser.createModel(new ConverterParams().filename("testFiles/layoutExample/example1.xml"));
+    for (Reaction element : model.getReactions()) {
+      for (AbstractNode node: element.getNodes()) {
+        node.getLine().setColor(Color.BLUE);
+      }
+    }
+    Model model2 = getModelAfterSerializing(model);
+    assertEquals(0, comparator.compare(model, model2));
+  }
+
+  @Test
+  public void testReactionLineWidthParsing() throws Exception {
+    Model model = parser.createModel(new ConverterParams().filename("testFiles/layoutExample/example1.xml"));
+    for (Reaction element : model.getReactions()) {
+      for (AbstractNode node: element.getNodes()) {
+        node.getLine().setWidth(12.7);
+      }
+    }
+    Model model2 = getModelAfterSerializing(model);
+    assertEquals(0, comparator.compare(model, model2));
+  }
+
 }
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 68625d82772a07831a96a6c6f2dae65b9b383c59..8f1cc44b8194b62c33423b5ec454f01dc07e24e1 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,11 +5,13 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
+import java.awt.Color;
 import java.io.FileNotFoundException;
 
 import org.apache.log4j.Logger;
 import org.junit.Test;
 
+import lcsb.mapviewer.common.Configuration;
 import lcsb.mapviewer.converter.ConverterParams;
 import lcsb.mapviewer.converter.InvalidInputDataExecption;
 import lcsb.mapviewer.model.map.compartment.Compartment;
@@ -151,9 +153,35 @@ public class SbmlParserTest {
     assertEquals(1, model.getCompartments().iterator().next().getMiriamData().size());
   }
 
-  @Test(expected=InvalidInputDataExecption.class)
+  @Test(expected = InvalidInputDataExecption.class)
   public void testInvalidReactionLayout() throws Exception {
-    parser.createModel(new ConverterParams().filename("testFiles/invalidReaction/reaction_with_missing_part_of_layout.xml"));
+    parser.createModel(
+        new ConverterParams().filename("testFiles/invalidReaction/reaction_with_missing_part_of_layout.xml"));
+  }
+
+  @Test
+  public void testDefaultColors() throws Exception {
+    Model model = parser.createModel(new ConverterParams().filename("testFiles/small/default_colors.xml"));
+    assertNotNull(model);
+    assertEquals(Color.BLUE, model.getElementByElementId("Species_1").getColor());
+    assertEquals(Color.RED, model.getElementByElementId("Species_2").getColor());
+
+    Reaction r1 = null;
+    Reaction r2 = null;
+    for (Reaction reaction : model.getReactions()) {
+      if (reaction.getElementId().contains("Reaction_1")) {
+        r1 = reaction;
+      }
+      if (reaction.getElementId().contains("Reaction_2")) {
+        r2 = reaction;
+      }
+    }
+    assertEquals(Color.BLUE, r1.getReactants().get(0).getLine().getColor());
+    assertEquals(3.0, r1.getReactants().get(0).getLine().getWidth(), Configuration.EPSILON);
+
+    assertEquals(Color.GREEN, r2.getReactants().get(0).getLine().getColor());
+    assertEquals(2.0, r2.getReactants().get(0).getLine().getWidth(), Configuration.EPSILON);
+
   }
 
 }
diff --git a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesExporterTest.java b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesExporterTest.java
index 8aa572c29da12bc2942babdbc85ab5b7dd88c0ee..a3ed722dd9f0e8e8ac8a43b54718feb80bac05f5 100644
--- a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesExporterTest.java
+++ b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/species/SbmlSpeciesExporterTest.java
@@ -6,9 +6,9 @@ import org.apache.log4j.Logger;
 import org.junit.Test;
 import org.sbml.jsbml.SBMLDocument;
 import org.sbml.jsbml.ext.layout.Layout;
-import org.sbml.jsbml.ext.layout.LayoutModelPlugin;
 
 import lcsb.mapviewer.converter.model.sbml.SbmlCompartmentExporter;
+import lcsb.mapviewer.converter.model.sbml.SbmlExporter;
 import lcsb.mapviewer.model.map.InconsistentModelException;
 import lcsb.mapviewer.model.map.compartment.Compartment;
 import lcsb.mapviewer.model.map.model.Model;
@@ -51,7 +51,7 @@ public class SbmlSpeciesExporterTest {
     Element protein2 = new GenericProtein("sa2");
     protein2.setName("SNCA");
     protein2.setCompartment(compartment);
-    
+
     Model model = new ModelFullIndexed(null);
     model.addElement(protein1);
     model.addElement(protein2);
@@ -68,10 +68,8 @@ public class SbmlSpeciesExporterTest {
     SBMLDocument doc = new SBMLDocument(3, 1);
     sbmlModel = doc.createModel(model.getIdModel());
 
-    LayoutModelPlugin layoutPlugin = new LayoutModelPlugin(sbmlModel);
-    sbmlLayout = new Layout();
-    layoutPlugin.add(sbmlLayout);
-    sbmlModel.addExtension("layout", layoutPlugin);
+    SbmlExporter sbmlExporter = new SbmlExporter();
+    sbmlLayout = sbmlExporter.createSbmlLayout(model, sbmlModel);
 
     SbmlCompartmentExporter compartmentExporter = new SbmlCompartmentExporter(sbmlLayout, model);
     compartmentExporter.exportElements(sbmlModel);
diff --git a/converter-sbml/testFiles/small/default_colors.xml b/converter-sbml/testFiles/small/default_colors.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1a2bc53d9e6d113b8e54bdb773cef35c46843310
--- /dev/null
+++ b/converter-sbml/testFiles/small/default_colors.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" layout:required="false" level="3" render:required="false" version="1" xmlns:layout="http://www.sbml.org/sbml/level3/version1/layout/version1" xmlns:render="http://www.sbml.org/sbml/level3/version1/render/version1">
+  <model id="TestModel">
+    <layout:listOfLayouts xmlns="http://projects.eml.org/bcb/sbml/level2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+      <layout:layout id="Layout_1">
+ 				<render:listOfRenderInformation xmlns:render="http://www.sbml.org/sbml/level3/version1/render/version1">
+          <render:renderInformation>
+            <render:listOfStyles>
+              <render:style render:roleList="style_Compartment_1">
+                <render:g render:fill="color_FF0000FF"/>
+              </render:style>
+            </render:listOfStyles>
+          </render:renderInformation>
+          <render:renderInformation render:id="minerva_definitions">
+            <render:listOfColorDefinitions>
+              <render:colorDefinition render:id="blue_color" render:value="#0000FFFF"/>
+              <render:colorDefinition render:id="red_color" render:value="#FF0000FF"/>
+              <render:colorDefinition render:id="green_color" render:value="#00FF00FF"/>
+            </render:listOfColorDefinitions>
+            <render:listOfStyles>
+              <!-- element type specific -->
+              <render:style render:roleList="default_GenericProtein">
+                <render:g render:fill="blue_color"/>
+              </render:style>
+              <render:style render:roleList="default_SimpleMolecule">
+                <render:g render:fill="red_color"/>
+              </render:style>
+              <!-- reaction type specific -->
+              <render:style render:roleList="default_StateTransitionReaction">
+                <render:g render:fill="green_color" render:stroke-width="2.0"/>
+              </render:style>
+              <!-- element specific -->
+              <render:style render:roleList="style_Species_1">
+                <render:g render:fill="blue_color"/>
+              </render:style>
+              <!-- reaction specific -->
+              <render:style render:roleList="style_Reaction_1">
+                <render:g render:fill="blue_color" render:stroke-width="3.0"/>
+              </render:style>
+            </render:listOfStyles>
+          </render:renderInformation>
+        </render:listOfRenderInformation>        
+      </layout:layout>
+    </layout:listOfLayouts>
+    <listOfCompartments>
+      <compartment id="Compartment_1" size="1"/>
+    </listOfCompartments>
+    <listOfSpecies>
+      <species id="Species_1" compartment="Compartment_1" initialConcentration="0"/>
+      <species id="Species_2" compartment="Compartment_1" initialConcentration="0"/>
+    </listOfSpecies>
+    <listOfReactions>
+      <reaction id="Reaction_1" reversible="false">
+        <listOfReactants>
+          <speciesReference species="Species_1">
+            <annotation>
+              <layoutId xmlns="http://projects.eml.org/bcb/sbml/level2" id="SpeciesReference_1"/>
+            </annotation>
+          </speciesReference>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="Species_2">
+            <annotation>
+              <layoutId xmlns="http://projects.eml.org/bcb/sbml/level2" id="SpeciesReference_2"/>
+            </annotation>
+          </speciesReference>
+        </listOfProducts>
+      </reaction>
+      <reaction id="Reaction_2" reversible="false">
+        <listOfReactants>
+          <speciesReference species="Species_2">
+            <annotation>
+              <layoutId xmlns="http://projects.eml.org/bcb/sbml/level2" id="SpeciesReference_3"/>
+            </annotation>
+          </speciesReference>
+        </listOfReactants>
+        <listOfProducts>
+          <speciesReference species="Species_1">
+            <annotation>
+              <layoutId xmlns="http://projects.eml.org/bcb/sbml/level2" id="SpeciesReference_4"/>
+            </annotation>
+          </speciesReference>
+        </listOfProducts>
+      </reaction>
+    </listOfReactions>
+  </model>
+</sbml>
diff --git a/pom.xml b/pom.xml
index 947569cfae6e22e447d40af2a61e4c1d4ebf55ff..a8adf9f7c41337b1f9961934ab407e653af131da 100644
--- a/pom.xml
+++ b/pom.xml
@@ -54,6 +54,8 @@
 		<jaxb.version>2.2.7</jaxb.version>
 		
 		<batik.version>1.8</batik.version>
+
+		<jsbml.version>1.4</jsbml.version>
 		
 		<itext.version>5.5.6</itext.version>