diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerXmlParser.java
index 05794c33d6b038a965eae2c05d8335b4f415d098..0178e222c6815444680ab198fbc92548fef24096 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerXmlParser.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerXmlParser.java
@@ -9,7 +9,6 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Set;
 
 import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.lang3.StringEscapeUtils;
@@ -30,6 +29,7 @@ import lcsb.mapviewer.converter.model.celldesigner.alias.AliasCollectionXmlParse
 import lcsb.mapviewer.converter.model.celldesigner.annotation.RestAnnotationParser;
 import lcsb.mapviewer.converter.model.celldesigner.compartment.CompartmentCollectionXmlParser;
 import lcsb.mapviewer.converter.model.celldesigner.function.FunctionCollectionXmlParser;
+import lcsb.mapviewer.converter.model.celldesigner.parameter.ParameterCollectionXmlParser;
 import lcsb.mapviewer.converter.model.celldesigner.reaction.ReactionCollectionXmlParser;
 import lcsb.mapviewer.converter.model.celldesigner.reaction.UnknownReactionClassException;
 import lcsb.mapviewer.converter.model.celldesigner.species.InternalModelSpeciesData;
@@ -37,9 +37,9 @@ import lcsb.mapviewer.converter.model.celldesigner.species.SpeciesCollectionXmlP
 import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerCompartment;
 import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerElement;
 import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerSpecies;
+import lcsb.mapviewer.converter.model.celldesigner.unit.UnitCollectionXmlParser;
 import lcsb.mapviewer.model.graphics.PolylineData;
 import lcsb.mapviewer.model.map.InconsistentModelException;
-import lcsb.mapviewer.model.map.SbmlFunction;
 import lcsb.mapviewer.model.map.compartment.Compartment;
 import lcsb.mapviewer.model.map.layout.graphics.Layer;
 import lcsb.mapviewer.model.map.layout.graphics.LayerOval;
@@ -110,6 +110,7 @@ public class CellDesignerXmlParser extends XmlParser implements IConverter {
   public Model createModel(ConverterParams params) throws InvalidInputDataExecption {
     CellDesignerElementCollection elements = new CellDesignerElementCollection();
     FunctionCollectionXmlParser functionParser = new FunctionCollectionXmlParser();
+    UnitCollectionXmlParser unitParser = new UnitCollectionXmlParser();
 
     Model model = new ModelFullIndexed(null);
 
@@ -120,6 +121,8 @@ public class CellDesignerXmlParser extends XmlParser implements IConverter {
     aliasCollectionParser = new AliasCollectionXmlParser(elements, model);
     compartmentCollectionXmlParser = new CompartmentCollectionXmlParser(elements);
 
+    ParameterCollectionXmlParser parameterParser = new ParameterCollectionXmlParser(model);
+
     DOMParser parser = new DOMParser();
     try {
       parser.parse(params.getSource());
@@ -163,6 +166,8 @@ public class CellDesignerXmlParser extends XmlParser implements IConverter {
       }
       Node reactionsNode = null;
       Node functionsNode = null;
+      Node unitsNode = null;
+      Node parametersNode = null;
 
       NodeList nodes = modelNode.getChildNodes();
       for (int x = 0; x < nodes.getLength(); x++) {
@@ -184,15 +189,25 @@ public class CellDesignerXmlParser extends XmlParser implements IConverter {
             }
             model.setNotes(notes);
           } else if (node.getNodeName().equalsIgnoreCase("listOfUnitDefinitions")) {
-            continue; // we can ignore unit definitions
+            unitsNode = node;
           } else if (node.getNodeName().equalsIgnoreCase("listOfFunctionDefinitions")) {
             functionsNode = node;
+          } else if (node.getNodeName().equalsIgnoreCase("listOfParameters")) {
+            parametersNode = node;
           } else {
             throw new InvalidInputDataExecption("Unknown element of model: " + node.getNodeName());
           }
         }
       }
 
+      if (unitsNode!=null) {
+        model.addUnits(unitParser.parseXmlUnitCollection(unitsNode));
+      }
+
+      if (parametersNode!=null) {
+        model.addParameters(parameterParser.parseXmlParameterCollection(parametersNode));
+      }
+
       Node annotationNode = getNode("annotation", modelNode.getChildNodes());
       if (annotationNode == null) {
         throw new InvalidInputDataExecption("No annotation node in SBML/model");
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/function/FunctionCollectionXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/function/FunctionCollectionXmlParser.java
index ceeaa4963e7ddec0893daaec96c63c70b4672b61..e8ebe8c18093be82f91c65b18fb97d4a18f333b9 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/function/FunctionCollectionXmlParser.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/function/FunctionCollectionXmlParser.java
@@ -7,7 +7,7 @@ import org.w3c.dom.Node;
 
 import lcsb.mapviewer.common.XmlParser;
 import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
-import lcsb.mapviewer.model.map.SbmlFunction;
+import lcsb.mapviewer.model.map.kinetics.SbmlFunction;
 
 public class FunctionCollectionXmlParser extends XmlParser {
 
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/function/FunctionXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/function/FunctionXmlParser.java
index b25b2829d123ffd3dfbf04bab7963039232a8896..e5fa4b9379866dc01100efefa620ae224e7d005b 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/function/FunctionXmlParser.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/function/FunctionXmlParser.java
@@ -8,7 +8,7 @@ import org.w3c.dom.Node;
 
 import lcsb.mapviewer.common.XmlParser;
 import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
-import lcsb.mapviewer.model.map.SbmlFunction;
+import lcsb.mapviewer.model.map.kinetics.SbmlFunction;
 
 public class FunctionXmlParser extends XmlParser {
   Logger logger = Logger.getLogger(FunctionXmlParser.class);
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/parameter/ParameterCollectionXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/parameter/ParameterCollectionXmlParser.java
new file mode 100644
index 0000000000000000000000000000000000000000..cc8d4a3c0ee6e2bea51a14c1b8d8989e612face5
--- /dev/null
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/parameter/ParameterCollectionXmlParser.java
@@ -0,0 +1,31 @@
+package lcsb.mapviewer.converter.model.celldesigner.parameter;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+import org.w3c.dom.Node;
+
+import lcsb.mapviewer.common.XmlParser;
+import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
+import lcsb.mapviewer.model.map.kinetics.SbmlParameter;
+import lcsb.mapviewer.model.map.model.Model;
+
+public class ParameterCollectionXmlParser extends XmlParser {
+  Logger logger = Logger.getLogger(ParameterCollectionXmlParser.class);
+
+  private ParameterXmlParser parameterParser;
+
+  public ParameterCollectionXmlParser(Model model) {
+    parameterParser = new ParameterXmlParser(model);
+  }
+
+  public Set<SbmlParameter> parseXmlParameterCollection(Node functionsNode) throws InvalidXmlSchemaException {
+    Set<SbmlParameter> result = new HashSet<>();
+    for (Node node : super.getNodes("parameter", functionsNode.getChildNodes())) {
+      result.add(parameterParser.parseFunction(node));
+    }
+    return result;
+  }
+
+}
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/parameter/ParameterXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/parameter/ParameterXmlParser.java
new file mode 100644
index 0000000000000000000000000000000000000000..c0eb0dbaf0927d62ecf0064fc085beea7dd29dc6
--- /dev/null
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/parameter/ParameterXmlParser.java
@@ -0,0 +1,29 @@
+package lcsb.mapviewer.converter.model.celldesigner.parameter;
+
+import org.apache.log4j.Logger;
+import org.w3c.dom.Node;
+
+import lcsb.mapviewer.common.XmlParser;
+import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
+import lcsb.mapviewer.model.map.kinetics.SbmlParameter;
+import lcsb.mapviewer.model.map.model.Model;
+
+public class ParameterXmlParser extends XmlParser {
+  Logger logger = Logger.getLogger(ParameterXmlParser.class);
+
+  private Model model;
+  
+  public ParameterXmlParser(Model model) {
+    this.model = model;
+  }
+
+  public SbmlParameter parseFunction(Node unitNode) throws InvalidXmlSchemaException {
+    String parameterId = getNodeAttr("id", unitNode);
+
+    SbmlParameter result = new SbmlParameter(parameterId);
+    result.setName(getNodeAttr("name", unitNode));
+    result.setValue(Double.parseDouble(getNodeAttr("value", unitNode)));
+    result.setUnits(model.getUnitsByUnitId(getNodeAttr("units", unitNode)));
+    return result;
+  }
+}
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/unit/UnitCollectionXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/unit/UnitCollectionXmlParser.java
new file mode 100644
index 0000000000000000000000000000000000000000..1cf70a80670ce41454055cdb8f9c71f965e232a8
--- /dev/null
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/unit/UnitCollectionXmlParser.java
@@ -0,0 +1,24 @@
+package lcsb.mapviewer.converter.model.celldesigner.unit;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.w3c.dom.Node;
+
+import lcsb.mapviewer.common.XmlParser;
+import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
+import lcsb.mapviewer.model.map.kinetics.SbmlUnit;
+
+public class UnitCollectionXmlParser extends XmlParser {
+
+  private UnitXmlParser unitParser = new UnitXmlParser();
+
+  public Set<SbmlUnit> parseXmlUnitCollection(Node functionsNode) throws InvalidXmlSchemaException {
+    Set<SbmlUnit> result = new HashSet<>();
+    for (Node node : super.getNodes("unitDefinition", functionsNode.getChildNodes())) {
+      result.add(unitParser.parseFunction(node));
+    }
+    return result;
+  }
+
+}
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/unit/UnitXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/unit/UnitXmlParser.java
new file mode 100644
index 0000000000000000000000000000000000000000..fe1ca925a076d10518635f53844040873aa43821
--- /dev/null
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/unit/UnitXmlParser.java
@@ -0,0 +1,70 @@
+package lcsb.mapviewer.converter.model.celldesigner.unit;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.w3c.dom.Node;
+
+import lcsb.mapviewer.common.XmlParser;
+import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
+import lcsb.mapviewer.model.map.kinetics.SbmlUnit;
+import lcsb.mapviewer.model.map.kinetics.SbmlUnitType;
+import lcsb.mapviewer.model.map.kinetics.SbmlUnitTypeFactor;
+
+public class UnitXmlParser extends XmlParser {
+  Logger logger = Logger.getLogger(UnitXmlParser.class);
+
+  public SbmlUnit parseFunction(Node unitNode) throws InvalidXmlSchemaException {
+    String unitId = getNodeAttr("id", unitNode);
+
+    SbmlUnit result = new SbmlUnit(unitId);
+    result.setName(getNodeAttr("name", unitNode));
+    Node factors = getNode("listOfUnits", unitNode);
+    if (factors == null) {
+      throw new InvalidXmlSchemaException(
+          "Unit Definition " + unitId + " doesn't contain information about units (listOfUnits node)");
+    }
+    for (SbmlUnitTypeFactor factor : parseUnitTypeFactors(factors)) {
+      result.addUnitTypeFactor(factor);
+    }
+
+    return result;
+  }
+
+  private List<SbmlUnitTypeFactor> parseUnitTypeFactors(Node factors) throws InvalidXmlSchemaException {
+    List<SbmlUnitTypeFactor> result = new ArrayList<>();
+    List<Node> variables = super.getNodes("unit", factors.getChildNodes());
+    for (Node node : variables) {
+      result.add(parseFactor(node));
+    }
+    return result;
+  }
+
+  private SbmlUnitTypeFactor parseFactor(Node node) throws InvalidXmlSchemaException {
+    String unitTypeString = getNodeAttr("kind", node);
+    SbmlUnitType unitType;
+    try {
+      unitType = SbmlUnitType.valueOf(unitTypeString.toUpperCase());
+    } catch (Exception e) {
+      throw new InvalidXmlSchemaException("Unknown unit kind: " + unitTypeString);
+    }
+    int scale = 0;
+    double multiplier = 1.0;
+    int exponent = 1;
+
+    String scaleString = getNodeAttr("scale", node);
+    if (scaleString != null && !scaleString.isEmpty()) {
+      scale = Integer.parseInt(scaleString);
+    }
+    String exponentString = getNodeAttr("exponent", node);
+    if (exponentString != null && !exponentString.isEmpty()) {
+      exponent = Integer.parseInt(exponentString);
+    }
+    String multiplierString = getNodeAttr("multiplier", node);
+    if (multiplierString != null && !multiplierString.isEmpty()) {
+      multiplier = Double.parseDouble(multiplierString);
+    }
+    return new SbmlUnitTypeFactor(unitType, exponent, scale, multiplier);
+  }
+}
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/AllCellDesignerTests.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/AllCellDesignerTests.java
index 5c6735bb6efcfdd6716791b0e6fd31e5c1adc3ce..1b78ab1daf11696d225703098f4201e53b5dc8d3 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/AllCellDesignerTests.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/AllCellDesignerTests.java
@@ -1,36 +1,42 @@
 package lcsb.mapviewer.converter.model.celldesigner;
 
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
 import lcsb.mapviewer.converter.model.celldesigner.alias.AllAliasTests;
 import lcsb.mapviewer.converter.model.celldesigner.annotation.AllAnnotationTests;
 import lcsb.mapviewer.converter.model.celldesigner.compartment.AllCompartmentTests;
+import lcsb.mapviewer.converter.model.celldesigner.function.FunctionXmlParserTest;
 import lcsb.mapviewer.converter.model.celldesigner.geometry.AllGeometryTests;
+import lcsb.mapviewer.converter.model.celldesigner.parameter.ParameterXmlParserTest;
 import lcsb.mapviewer.converter.model.celldesigner.reaction.AllReactionTests;
 import lcsb.mapviewer.converter.model.celldesigner.species.AllSpeciesTests;
 import lcsb.mapviewer.converter.model.celldesigner.structure.AllStructureTests;
 import lcsb.mapviewer.converter.model.celldesigner.types.AllTypesTests;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-import org.junit.runners.Suite.SuiteClasses;
+import lcsb.mapviewer.converter.model.celldesigner.unit.UnitXmlParserTest;
 
 @RunWith(Suite.class)
 @SuiteClasses({ //
-		AllAnnotationTests.class, //
-		AllAliasTests.class, //
-		AllCompartmentTests.class, //
-		AllGeometryTests.class, //
-		AllReactionTests.class, //
-		AllSpeciesTests.class, //
-		AllStructureTests.class, //
-		AllTypesTests.class, //
-		CellDesignerElementCollectionTest.class,//
-		CellDesignerParserExceptionTest.class, //
-		CellDesignerXmlParserTest.class, //
-		ComplexParserTests.class, //
-		InvalidGroupExceptionTest.class, //
-		LayerXmlParserTest.class, //
-		NestedComplexParsingTests.class, //
-		ReconDataInCellDesignerXmlParserTest.class,//
+    AllAnnotationTests.class, //
+    AllAliasTests.class, //
+    AllCompartmentTests.class, //
+    AllGeometryTests.class, //
+    AllReactionTests.class, //
+    AllSpeciesTests.class, //
+    AllStructureTests.class, //
+    AllTypesTests.class, //
+    CellDesignerElementCollectionTest.class, //
+    CellDesignerParserExceptionTest.class, //
+    CellDesignerXmlParserTest.class, //
+    ComplexParserTests.class, //
+    FunctionXmlParserTest.class, //
+    InvalidGroupExceptionTest.class, //
+    LayerXmlParserTest.class, //
+    NestedComplexParsingTests.class, //
+    ParameterXmlParserTest.class, //
+    ReconDataInCellDesignerXmlParserTest.class, //
+    UnitXmlParserTest.class,//
 })
 public class AllCellDesignerTests {
 
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/ComplexParserTests.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/ComplexParserTests.java
index 6484b409707e96020b844a8d544b0cd3f5cb9049..b2686560126584ec847aa05c4c912b2b9e7b7c35 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/ComplexParserTests.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/ComplexParserTests.java
@@ -62,6 +62,32 @@ public class ComplexParserTests extends CellDesignerTestFunctions {
     }
   }
 
+  @Test
+  public void testParseParameters() throws Exception {
+    try {
+      Model model = getModelForFile("testFiles/parameter.xml");
+
+      assertEquals(1, model.getParameters().size());
+
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void testParseUnits() throws Exception {
+    try {
+      Model model = getModelForFile("testFiles/unit.xml");
+
+      assertEquals(1, model.getUnits().size());
+
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
   @Test
   public void testParseCompartmens() throws Exception {
     Model model;
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/function/FunctionXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/function/FunctionXmlParserTest.java
index 71af481a351568405e4ed6aa7ba8c4ea297a47fe..b0dde7d9de2c4e9ea041056f6358069b978a1326 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/function/FunctionXmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/function/FunctionXmlParserTest.java
@@ -10,7 +10,7 @@ import org.junit.Test;
 
 import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerTestFunctions;
-import lcsb.mapviewer.model.map.SbmlFunction;
+import lcsb.mapviewer.model.map.kinetics.SbmlFunction;
 
 public class FunctionXmlParserTest extends CellDesignerTestFunctions {
 
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/parameter/ParameterXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/parameter/ParameterXmlParserTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..ea6201dc1751885c131f54b9a0ae92ca4519f8d9
--- /dev/null
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/parameter/ParameterXmlParserTest.java
@@ -0,0 +1,36 @@
+package lcsb.mapviewer.converter.model.celldesigner.parameter;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.io.IOException;
+
+import org.junit.Test;
+
+import lcsb.mapviewer.common.Configuration;
+import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
+import lcsb.mapviewer.converter.model.celldesigner.CellDesignerTestFunctions;
+import lcsb.mapviewer.model.map.kinetics.SbmlParameter;
+import lcsb.mapviewer.model.map.kinetics.SbmlUnit;
+import lcsb.mapviewer.model.map.model.Model;
+import lcsb.mapviewer.model.map.model.ModelFullIndexed;
+
+public class ParameterXmlParserTest extends CellDesignerTestFunctions {
+
+  @Test
+  public void testParseBasicData() throws InvalidXmlSchemaException, IOException {
+    SbmlUnit volume = new SbmlUnit("volume");
+    Model model = new ModelFullIndexed(null);
+    model.addUnit(volume);
+    ParameterXmlParser parser = new ParameterXmlParser(model);
+    SbmlParameter unit = parser
+        .parseFunction(super.getXmlDocumentFromFile("testFiles/parameter/simple.xml").getFirstChild());
+
+    assertNotNull(unit);
+    assertEquals(unit.getParameterId(), "param_id");
+    assertEquals(unit.getName(), "Parameter name");
+    assertEquals(unit.getValue(), 12.0, Configuration.EPSILON);
+    assertEquals(unit.getUnits(), volume);
+  }
+
+}
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/unit/UnitXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/unit/UnitXmlParserTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..b55724ba110531a017404bc26171574bb2a82db9
--- /dev/null
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/unit/UnitXmlParserTest.java
@@ -0,0 +1,33 @@
+package lcsb.mapviewer.converter.model.celldesigner.unit;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.io.IOException;
+
+import org.junit.Test;
+
+import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
+import lcsb.mapviewer.converter.model.celldesigner.CellDesignerTestFunctions;
+import lcsb.mapviewer.model.map.kinetics.SbmlUnit;
+
+public class UnitXmlParserTest extends CellDesignerTestFunctions {
+
+  UnitXmlParser parser = new UnitXmlParser();
+
+  @Test
+  public void testParseBasicData() throws InvalidXmlSchemaException, IOException {
+    SbmlUnit unit = parser.parseFunction(super.getXmlDocumentFromFile("testFiles/unit/simple.xml").getFirstChild());
+    assertNotNull(unit);
+    assertEquals(unit.getUnitId(), "unit_id");
+    assertEquals(unit.getName(), "unit name");
+  }
+
+  @Test
+  public void testParseUnitTypes() throws InvalidXmlSchemaException, IOException {
+    SbmlUnit unit = parser.parseFunction(super.getXmlDocumentFromFile("testFiles/unit/simple.xml").getFirstChild());
+    assertNotNull(unit);
+    assertEquals(unit.getUnitTypeFactors().size(), 1);
+  }
+
+}
diff --git a/converter-CellDesigner/testFiles/parameter.xml b/converter-CellDesigner/testFiles/parameter.xml
new file mode 100644
index 0000000000000000000000000000000000000000..940a6cf422bb4aab454116031ed574271f576c22
--- /dev/null
+++ b/converter-CellDesigner/testFiles/parameter.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level2/version4" xmlns:celldesigner="http://www.sbml.org/2001/ns/celldesigner" level="2" version="4">
+<model metaid="untitled" id="untitled">
+<annotation>
+<celldesigner:extension>
+<celldesigner:modelVersion>4.0</celldesigner:modelVersion>
+<celldesigner:modelDisplay sizeX="600" sizeY="400"/>
+<celldesigner:listOfCompartmentAliases/>
+<celldesigner:listOfComplexSpeciesAliases/>
+<celldesigner:listOfSpeciesAliases/>
+<celldesigner:listOfGroups/>
+<celldesigner:listOfProteins/>
+<celldesigner:listOfGenes/>
+<celldesigner:listOfRNAs/>
+<celldesigner:listOfAntisenseRNAs/>
+<celldesigner:listOfLayers/>
+<celldesigner:listOfBlockDiagrams/>
+</celldesigner:extension>
+</annotation>
+<listOfUnitDefinitions>
+<unitDefinition metaid="substance" id="substance" name="substance">
+<listOfUnits>
+<unit metaid="CDMT00001" kind="mole"/>
+</listOfUnits>
+</unitDefinition>
+<unitDefinition metaid="volume" id="volume" name="volume">
+<listOfUnits>
+<unit metaid="CDMT00002" kind="litre"/>
+</listOfUnits>
+</unitDefinition>
+<unitDefinition metaid="area" id="area" name="area">
+<listOfUnits>
+<unit metaid="CDMT00003" kind="metre" exponent="2"/>
+</listOfUnits>
+</unitDefinition>
+<unitDefinition metaid="length" id="length" name="length">
+<listOfUnits>
+<unit metaid="CDMT00004" kind="metre"/>
+</listOfUnits>
+</unitDefinition>
+<unitDefinition metaid="time" id="time" name="time">
+<listOfUnits>
+<unit metaid="CDMT00005" kind="second"/>
+</listOfUnits>
+</unitDefinition>
+</listOfUnitDefinitions>
+<listOfCompartments>
+<compartment metaid="default" id="default" size="1" units="volume"/>
+</listOfCompartments>
+<listOfParameters>
+<parameter metaid="param_id" id="param_id" name="Parameter name" value="12" units="volume"/>
+</listOfParameters>
+</model>
+</sbml>
diff --git a/converter-CellDesigner/testFiles/parameter/simple.xml b/converter-CellDesigner/testFiles/parameter/simple.xml
new file mode 100644
index 0000000000000000000000000000000000000000..53a110385b639e8a0202d6327002bdd9d9512f03
--- /dev/null
+++ b/converter-CellDesigner/testFiles/parameter/simple.xml
@@ -0,0 +1 @@
+<parameter metaid="param_id" id="param_id" name="Parameter name" value="12" units="volume"/>
diff --git a/converter-CellDesigner/testFiles/unit.xml b/converter-CellDesigner/testFiles/unit.xml
new file mode 100644
index 0000000000000000000000000000000000000000..17cb63121b5a7326106311d6ae4462647c8cec34
--- /dev/null
+++ b/converter-CellDesigner/testFiles/unit.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level2/version4" xmlns:celldesigner="http://www.sbml.org/2001/ns/celldesigner" level="2" version="4">
+<model metaid="untitled" id="untitled">
+<annotation>
+<celldesigner:extension>
+<celldesigner:modelVersion>4.0</celldesigner:modelVersion>
+<celldesigner:modelDisplay sizeX="600" sizeY="400"/>
+<celldesigner:listOfCompartmentAliases/>
+<celldesigner:listOfComplexSpeciesAliases/>
+<celldesigner:listOfSpeciesAliases/>
+<celldesigner:listOfGroups/>
+<celldesigner:listOfProteins/>
+<celldesigner:listOfGenes/>
+<celldesigner:listOfRNAs/>
+<celldesigner:listOfAntisenseRNAs/>
+<celldesigner:listOfLayers/>
+<celldesigner:listOfBlockDiagrams/>
+</celldesigner:extension>
+</annotation>
+<listOfUnitDefinitions>
+<unitDefinition metaid="substance" id="substance" name="substance">
+<listOfUnits>
+<unit metaid="CDMT00004" kind="mole"/>
+</listOfUnits>
+</unitDefinition>
+</listOfUnitDefinitions>
+<listOfCompartments>
+<compartment metaid="default" id="default" size="1" units="volume"/>
+</listOfCompartments>
+</model>
+</sbml>
diff --git a/converter-CellDesigner/testFiles/unit/simple.xml b/converter-CellDesigner/testFiles/unit/simple.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f017bc8652b9e312d040723259312967d824975d
--- /dev/null
+++ b/converter-CellDesigner/testFiles/unit/simple.xml
@@ -0,0 +1,5 @@
+<unitDefinition metaid="substance" id="unit_id" name="unit name">
+<listOfUnits>
+<unit metaid="CDMT00001" kind="mole"/>
+</listOfUnits>
+</unitDefinition>
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/SbmlFunction.java b/model/src/main/java/lcsb/mapviewer/model/map/kinetics/SbmlFunction.java
similarity index 93%
rename from model/src/main/java/lcsb/mapviewer/model/map/SbmlFunction.java
rename to model/src/main/java/lcsb/mapviewer/model/map/kinetics/SbmlFunction.java
index fc75944422f6147e87ad2d8d6a55f9f89fd181be..f9e067bae5fa6149bd4151b29694fbfc40c80185 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/SbmlFunction.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/kinetics/SbmlFunction.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map;
+package lcsb.mapviewer.model.map.kinetics;
 
 import java.io.Serializable;
 import java.util.ArrayList;
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/kinetics/SbmlParameter.java b/model/src/main/java/lcsb/mapviewer/model/map/kinetics/SbmlParameter.java
new file mode 100644
index 0000000000000000000000000000000000000000..7684fc2f29f15772d4955d440d8442f6ec79e08e
--- /dev/null
+++ b/model/src/main/java/lcsb/mapviewer/model/map/kinetics/SbmlParameter.java
@@ -0,0 +1,101 @@
+package lcsb.mapviewer.model.map.kinetics;
+
+import java.io.Serializable;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.apache.log4j.Logger;
+
+/**
+ * Representation of a single SBML parameter
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+@Entity
+@Table(name = "sbml_parameter")
+@org.hibernate.annotations.GenericGenerator(name = "test-increment-strategy", strategy = "increment")
+@XmlRootElement
+public class SbmlParameter implements Serializable {
+
+  /**
+   * Default class logger.
+   */
+  @SuppressWarnings("unused")
+  private static Logger logger = Logger.getLogger(SbmlParameter.class);
+
+  /**
+   * 
+   */
+  private static final long serialVersionUID = 1L;
+
+  /**
+   * Unique database identifier.
+   */
+  @Id
+  @GeneratedValue(strategy = GenerationType.IDENTITY)
+  @Column(name = "idDb", unique = true, nullable = false)
+  private int id;
+
+  private String parameterId;
+
+  private String name;
+
+  private Double value;
+  private SbmlUnit units;
+
+  /**
+   * Constructor required by hibernate.
+   */
+  SbmlParameter() {
+    super();
+  }
+
+  public SbmlParameter(String parameterId) {
+    this.parameterId = parameterId;
+  }
+
+  public void setFunctionId(String parameterId) {
+    this.parameterId = parameterId;
+  }
+
+  public String getName() {
+    return name;
+  }
+
+  public void setName(String name) {
+    this.name = name;
+  }
+
+  public String getParameterId() {
+    return parameterId;
+  }
+
+  public void setParameterId(String parameterId) {
+    this.parameterId = parameterId;
+  }
+
+  public Double getValue() {
+    return value;
+  }
+
+  public void setValue(Double value) {
+    this.value = value;
+  }
+
+  public SbmlUnit getUnits() {
+    return units;
+  }
+
+  public void setUnits(SbmlUnit units) {
+    this.units = units;
+    
+  }
+
+}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/kinetics/SbmlUnit.java b/model/src/main/java/lcsb/mapviewer/model/map/kinetics/SbmlUnit.java
new file mode 100644
index 0000000000000000000000000000000000000000..38d63472528b91c45ad523add85f81fba17530b2
--- /dev/null
+++ b/model/src/main/java/lcsb/mapviewer/model/map/kinetics/SbmlUnit.java
@@ -0,0 +1,88 @@
+package lcsb.mapviewer.model.map.kinetics;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.apache.log4j.Logger;
+
+/**
+ * Representation of a single SBML unit
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+@Entity
+@Table(name = "sbml_unit")
+@org.hibernate.annotations.GenericGenerator(name = "test-increment-strategy", strategy = "increment")
+@XmlRootElement
+public class SbmlUnit implements Serializable {
+
+  /**
+   * Default class logger.
+   */
+  @SuppressWarnings("unused")
+  private static Logger logger = Logger.getLogger(SbmlUnit.class);
+
+  /**
+   * 
+   */
+  private static final long serialVersionUID = 1L;
+
+  /**
+   * Unique database identifier.
+   */
+  @Id
+  @GeneratedValue(strategy = GenerationType.IDENTITY)
+  @Column(name = "idDb", unique = true, nullable = false)
+  private int id;
+
+  private String unitId;
+  private String name;
+
+  private List<SbmlUnitTypeFactor> unitTypeFactors = new ArrayList<>();
+
+  /**
+   * Constructor required by hibernate.
+   */
+  SbmlUnit() {
+    super();
+  }
+
+  public SbmlUnit(String unitId) {
+    this.unitId = unitId;
+  }
+
+  public String getUnitId() {
+    return unitId;
+  }
+
+  public void setUnitId(String unitId) {
+    this.unitId = unitId;
+  }
+
+  public String getName() {
+    return name;
+  }
+
+  public void setName(String name) {
+    this.name = name;
+  }
+
+  public void addUnitTypeFactor(SbmlUnitTypeFactor factor) {
+    unitTypeFactors.add(factor);
+  }
+
+  public List<SbmlUnitTypeFactor> getUnitTypeFactors() {
+    return unitTypeFactors;
+  }
+
+}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/kinetics/SbmlUnitType.java b/model/src/main/java/lcsb/mapviewer/model/map/kinetics/SbmlUnitType.java
new file mode 100644
index 0000000000000000000000000000000000000000..9cee1416c9dc32b4885204612b81ebdee52c375e
--- /dev/null
+++ b/model/src/main/java/lcsb/mapviewer/model/map/kinetics/SbmlUnitType.java
@@ -0,0 +1,36 @@
+package lcsb.mapviewer.model.map.kinetics;
+
+public enum SbmlUnitType {
+  AMPERE,
+  BECQUEREL,
+  CANDELA,
+  COULUMB,
+  DIMENSIONLESS,
+  FARAD,
+  GRAM,
+  GRAY,
+  HENRY,
+  HERTZ,
+  ITEM,
+  JOULE,
+  KATAL,
+  KELVIN,
+  KILOGRAM,
+  LITRE,
+  LUMEN,
+  LUX,
+  METRE,
+  MOLE,
+  NEWTON,
+  OHM,
+  PASCAL,
+  RADIAN,
+  SECOND,
+  SIEMENS,
+  SIEVERT,
+  STERADIAN,
+  TESLA,
+  VOLT,
+  WATT,
+  WEBER,
+}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/kinetics/SbmlUnitTypeFactor.java b/model/src/main/java/lcsb/mapviewer/model/map/kinetics/SbmlUnitTypeFactor.java
new file mode 100644
index 0000000000000000000000000000000000000000..16f20feb524ee9af4ae6d969a66d98ef1ce3324e
--- /dev/null
+++ b/model/src/main/java/lcsb/mapviewer/model/map/kinetics/SbmlUnitTypeFactor.java
@@ -0,0 +1,103 @@
+package lcsb.mapviewer.model.map.kinetics;
+
+import java.io.Serializable;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.apache.log4j.Logger;
+
+/**
+ * Representation of a single SBML unit factor. For example unit for velocity is
+ * m/s. It means that we have two unit types here:
+ * <ul>
+ * <li>metre^1</li>
+ * <li>second^-1</li>
+ * </ul>
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+@Entity
+@Table(name = "sbml_unit_factor")
+@org.hibernate.annotations.GenericGenerator(name = "test-increment-strategy", strategy = "increment")
+@XmlRootElement
+public class SbmlUnitTypeFactor implements Serializable {
+
+  /**
+   * Default class logger.
+   */
+  @SuppressWarnings("unused")
+  private static Logger logger = Logger.getLogger(SbmlUnitTypeFactor.class);
+
+  /**
+   * 
+   */
+  private static final long serialVersionUID = 1L;
+
+  /**
+   * Unique database identifier.
+   */
+  @Id
+  @GeneratedValue(strategy = GenerationType.IDENTITY)
+  @Column(name = "idDb", unique = true, nullable = false)
+  private int id;
+
+  private SbmlUnitType unitType;
+
+  private int exponent = 1;
+  private int scale = 0;
+  private double multiplier = 1.0;
+
+  /**
+   * Constructor required by hibernate.
+   */
+  SbmlUnitTypeFactor() {
+    super();
+  }
+
+  public SbmlUnitTypeFactor(SbmlUnitType unitType, int exponent, int scale, double multiplier) {
+    this.unitType = unitType;
+    this.exponent = exponent;
+    this.scale = scale;
+    this.multiplier = multiplier;
+  }
+
+  public SbmlUnitType getUnitType() {
+    return unitType;
+  }
+
+  public void setUnitType(SbmlUnitType unitType) {
+    this.unitType = unitType;
+  }
+
+  public int getExponent() {
+    return exponent;
+  }
+
+  public void setExponent(int exponent) {
+    this.exponent = exponent;
+  }
+
+  public int getScale() {
+    return scale;
+  }
+
+  public void setScale(int scale) {
+    this.scale = scale;
+  }
+
+  public double getMultiplier() {
+    return multiplier;
+  }
+
+  public void setMultiplier(double multiplier) {
+    this.multiplier = multiplier;
+  }
+
+}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/model/Model.java b/model/src/main/java/lcsb/mapviewer/model/map/model/Model.java
index 613c5ce87787ac6a4fc74c6a6a71ff04b0019c36..81ac64e4b5f69d112e7e4233f69db8fa2a7485a8 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/model/Model.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/model/Model.java
@@ -8,9 +8,11 @@ import java.util.Set;
 import lcsb.mapviewer.model.Project;
 import lcsb.mapviewer.model.map.BioEntity;
 import lcsb.mapviewer.model.map.MiriamData;
-import lcsb.mapviewer.model.map.SbmlFunction;
 import lcsb.mapviewer.model.map.compartment.Compartment;
 import lcsb.mapviewer.model.map.graph.DataMiningSet;
+import lcsb.mapviewer.model.map.kinetics.SbmlFunction;
+import lcsb.mapviewer.model.map.kinetics.SbmlParameter;
+import lcsb.mapviewer.model.map.kinetics.SbmlUnit;
 import lcsb.mapviewer.model.map.layout.BlockDiagram;
 import lcsb.mapviewer.model.map.layout.ElementGroup;
 import lcsb.mapviewer.model.map.layout.Layout;
@@ -592,5 +594,17 @@ public interface Model {
 
   Set<SbmlFunction> getFunctions();
 
-  void addFunctions(Collection<SbmlFunction> parseXmlFunctionCollection);
+  void addFunctions(Collection<SbmlFunction> sbmlFunctions);
+
+  Set<SbmlParameter> getParameters();
+
+  void addUnits(Collection<SbmlUnit> units);
+
+  Set<SbmlUnit> getUnits();
+
+  void addUnit(SbmlUnit volume);
+
+  SbmlUnit getUnitsByUnitId(String unitId);
+
+  void addParameters(Collection<SbmlParameter> sbmlParamters);
 }
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/model/ModelData.java b/model/src/main/java/lcsb/mapviewer/model/map/model/ModelData.java
index 95fe2a9fbdf13cef3d5481774cb6f3e7fbfb3d27..3970c18f012b0cc61618d0e30c619f1d92bf95d2 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/model/ModelData.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/model/ModelData.java
@@ -27,8 +27,10 @@ import org.hibernate.annotations.CascadeType;
 
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.model.Project;
-import lcsb.mapviewer.model.map.SbmlFunction;
 import lcsb.mapviewer.model.map.graph.DataMiningSet;
+import lcsb.mapviewer.model.map.kinetics.SbmlFunction;
+import lcsb.mapviewer.model.map.kinetics.SbmlParameter;
+import lcsb.mapviewer.model.map.kinetics.SbmlUnit;
 import lcsb.mapviewer.model.map.layout.BlockDiagram;
 import lcsb.mapviewer.model.map.layout.ElementGroup;
 import lcsb.mapviewer.model.map.layout.Layout;
@@ -112,6 +114,14 @@ public class ModelData implements Serializable {
   @OneToMany(mappedBy = "model", orphanRemoval = true)
   private Set<SbmlFunction> functions = new HashSet<>();
 
+  @Cascade({ CascadeType.ALL })
+  @OneToMany(mappedBy = "model", orphanRemoval = true)
+  private Set<SbmlParameter> parameters = new HashSet<>();
+
+  @Cascade({ CascadeType.ALL })
+  @OneToMany(mappedBy = "model", orphanRemoval = true)
+  private Set<SbmlUnit> units = new HashSet<>();
+
   /**
    * When the map was created.
    */
@@ -747,4 +757,24 @@ public class ModelData implements Serializable {
   public Set<SbmlFunction> getFunctions() {
     return functions;
   }
+
+  public Set<SbmlParameter> getParameters() {
+    return parameters;
+  }
+
+  public void addUnits(Collection<SbmlUnit> units) {
+    this.units.addAll(units);
+  }
+
+  public Set<SbmlUnit> getUnits() {
+    return units;
+  }
+
+  public void addUnit(SbmlUnit unit) {
+    this.units.add(unit);
+  }
+
+  public void addParameters(Collection<SbmlParameter> sbmlParamters) {
+    this.parameters.addAll(sbmlParamters);
+  }
 }
\ No newline at end of file
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/model/ModelFullIndexed.java b/model/src/main/java/lcsb/mapviewer/model/map/model/ModelFullIndexed.java
index 99a09db9a8def3b1d92c7874973690364b455b83..6cfd3c14a696d8d8821d601bd433571faa646a45 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/model/ModelFullIndexed.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/model/ModelFullIndexed.java
@@ -16,9 +16,11 @@ import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.model.Project;
 import lcsb.mapviewer.model.map.BioEntity;
 import lcsb.mapviewer.model.map.MiriamData;
-import lcsb.mapviewer.model.map.SbmlFunction;
 import lcsb.mapviewer.model.map.compartment.Compartment;
 import lcsb.mapviewer.model.map.graph.DataMiningSet;
+import lcsb.mapviewer.model.map.kinetics.SbmlFunction;
+import lcsb.mapviewer.model.map.kinetics.SbmlParameter;
+import lcsb.mapviewer.model.map.kinetics.SbmlUnit;
 import lcsb.mapviewer.model.map.layout.BlockDiagram;
 import lcsb.mapviewer.model.map.layout.ElementGroup;
 import lcsb.mapviewer.model.map.layout.Layout;
@@ -663,4 +665,40 @@ public class ModelFullIndexed implements Model {
   public void addFunctions(Collection<SbmlFunction> functions) {
     modelData.getFunctions().addAll(functions);
   }
+
+  @Override
+  public Set<SbmlParameter> getParameters() {
+    return modelData.getParameters();
+  }
+
+  @Override
+  public void addUnits(Collection<SbmlUnit> units) {
+    modelData.addUnits(units);
+  }
+
+  @Override
+  public Set<SbmlUnit> getUnits() {
+    return modelData.getUnits();
+  }
+
+  @Override
+  public void addUnit(SbmlUnit unit) {
+    modelData.addUnit(unit);
+
+  }
+
+  @Override
+  public SbmlUnit getUnitsByUnitId(String unitId) {
+    for (SbmlUnit unit : getUnits()) {
+      if (unit.getUnitId().equals(unitId)) {
+        return unit;
+      }
+    }
+    return null;
+  }
+
+  @Override
+  public void addParameters(Collection<SbmlParameter> sbmlParamters) {
+    modelData.addParameters(sbmlParamters);
+  }
 }
diff --git a/model/src/test/java/lcsb/mapviewer/model/graphics/PolylineDataComparatorTest.java b/model/src/test/java/lcsb/mapviewer/model/graphics/PolylineDataComparatorTest.java
index fef2e475523dc8a4c2caf99544bf0d18e67c5588..2348b1ca8c296283b363e187b0c0ff8a8e9fba83 100644
--- a/model/src/test/java/lcsb/mapviewer/model/graphics/PolylineDataComparatorTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/graphics/PolylineDataComparatorTest.java
@@ -66,7 +66,8 @@ public class PolylineDataComparatorTest {
 
 			pd1 = new PolylineData();
 			pd2 = new PolylineData();
-			pd2.addPoint(new Point2D.Double(1, 2));
+            pd2.addPoint(new Point2D.Double(1, 2));
+            pd2.addPoint(new Point2D.Double(1, 3));
 			assertTrue(comparator.compare(pd1, pd2) != 0);
 			assertTrue(comparator.compare(pd2, pd1) != 0);
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/AllMapTests.java b/model/src/test/java/lcsb/mapviewer/model/map/AllMapTests.java
index 3d0f4876666965a2e4ad4c30476afe105d0ddba8..83b9a41a35e749c1943be44758712c2a16831d12 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/AllMapTests.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/AllMapTests.java
@@ -6,6 +6,7 @@ import org.junit.runners.Suite.SuiteClasses;
 
 import lcsb.mapviewer.model.map.compartment.AllCompartmentTests;
 import lcsb.mapviewer.model.map.graph.AllGraphTests;
+import lcsb.mapviewer.model.map.kinetics.AllKineticsTests;
 import lcsb.mapviewer.model.map.layout.AllLayoutTests;
 import lcsb.mapviewer.model.map.layout.graphics.AllGraphicsTests;
 import lcsb.mapviewer.model.map.model.AllModelTests;
@@ -16,32 +17,33 @@ import lcsb.mapviewer.model.map.statistics.AllStatisticsTests;
 
 @RunWith(Suite.class)
 @SuiteClasses({ AllCompartmentTests.class, //
-		ElementInFewParentsExceptionTest.class, //
-		AllGraphTests.class, //
-		AllGraphicsTests.class, //
-		AllLayoutTests.class, //
-		AllModelTests.class, //
-		AllModifierTests.class, //
-		AllReactionTests.class, //
-		AllSpeciesTests.class, //
-		AllStatisticsTests.class, //
-		CommentTest.class, //
-		InconsistentModelExceptionTest.class, //
-		LayoutComparatorTest.class, //
-		MiriamDataTest.class, //
-		MiriamRelationTypeTest.class, //
-		MiriamTypeTest.class, //
-		MiriamTypeNameComparatorTest.class, //
-		OverviewImageComparatorTest.class, //
-		OverviewImageLinkComparatorTest.class, //
-		OverviewImageLinkTest.class, //
-		OverviewImageTest.class, //
-		OverviewLinkComparatorTest.class, //
-		OverviewLinkTest.class, //
-		OverviewModelLinkComparatorTest.class, //
-		OverviewModelLinkTest.class, //
-		OverviewSearchLinkTest.class, //
-		SearchIndexTest.class,//
+    ElementInFewParentsExceptionTest.class, //
+    AllGraphTests.class, //
+    AllGraphicsTests.class, //
+    AllKineticsTests.class, //
+    AllLayoutTests.class, //
+    AllModelTests.class, //
+    AllModifierTests.class, //
+    AllReactionTests.class, //
+    AllSpeciesTests.class, //
+    AllStatisticsTests.class, //
+    CommentTest.class, //
+    InconsistentModelExceptionTest.class, //
+    LayoutComparatorTest.class, //
+    MiriamDataTest.class, //
+    MiriamRelationTypeTest.class, //
+    MiriamTypeTest.class, //
+    MiriamTypeNameComparatorTest.class, //
+    OverviewImageComparatorTest.class, //
+    OverviewImageLinkComparatorTest.class, //
+    OverviewImageLinkTest.class, //
+    OverviewImageTest.class, //
+    OverviewLinkComparatorTest.class, //
+    OverviewLinkTest.class, //
+    OverviewModelLinkComparatorTest.class, //
+    OverviewModelLinkTest.class, //
+    OverviewSearchLinkTest.class, //
+    SearchIndexTest.class,//
 })
 
 public class AllMapTests {
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/kinetics/AllKineticsTests.java b/model/src/test/java/lcsb/mapviewer/model/map/kinetics/AllKineticsTests.java
new file mode 100644
index 0000000000000000000000000000000000000000..b699ac87b8b6a7e439ab8ec92892b438bb1d16f2
--- /dev/null
+++ b/model/src/test/java/lcsb/mapviewer/model/map/kinetics/AllKineticsTests.java
@@ -0,0 +1,11 @@
+package lcsb.mapviewer.model.map.kinetics;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+@RunWith(Suite.class)
+@SuiteClasses({ SbmlFunctionTest.class, SbmlParameterTest.class, SbmlUnitTest.class, SbmlUnitTypeFactorTest.class })
+public class AllKineticsTests {
+
+}
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/SbmlFunctionTest.java b/model/src/test/java/lcsb/mapviewer/model/map/kinetics/SbmlFunctionTest.java
similarity index 96%
rename from model/src/test/java/lcsb/mapviewer/model/map/SbmlFunctionTest.java
rename to model/src/test/java/lcsb/mapviewer/model/map/kinetics/SbmlFunctionTest.java
index 20e3c983f963d874f2a23cb982e3dbb110fcca97..5ea1f583d747b692a00d4b813a0b77df6899725c 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/SbmlFunctionTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/kinetics/SbmlFunctionTest.java
@@ -1,4 +1,4 @@
-package lcsb.mapviewer.model.map;
+package lcsb.mapviewer.model.map.kinetics;
 
 import static org.junit.Assert.*;
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/kinetics/SbmlParameterTest.java b/model/src/test/java/lcsb/mapviewer/model/map/kinetics/SbmlParameterTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..374f97100dd1dd6ed5ea0e84fc3c5506761e8712
--- /dev/null
+++ b/model/src/test/java/lcsb/mapviewer/model/map/kinetics/SbmlParameterTest.java
@@ -0,0 +1,32 @@
+package lcsb.mapviewer.model.map.kinetics;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+public class SbmlParameterTest {
+
+  @Test
+  public void testConstructor() {
+    String id = "param_id";
+    SbmlParameter parameter = new SbmlParameter(id);
+    assertEquals(id, parameter.getParameterId());
+  }
+
+  @Test
+  public void testSetName() {
+    String name= "name";
+    SbmlParameter parameter = new SbmlParameter("");
+    parameter.setName(name);
+    assertEquals(name, parameter.getName());
+  }
+
+  @Test
+  public void testSetValue() {
+    Double value= 13.0;
+    SbmlParameter parameter = new SbmlParameter("");
+    parameter.setValue(value);
+    assertEquals(value, parameter.getValue());
+  }
+
+}
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/kinetics/SbmlUnitTest.java b/model/src/test/java/lcsb/mapviewer/model/map/kinetics/SbmlUnitTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..a6cdd5328b0126b3c47c9c3444b7be5dbe62e0ab
--- /dev/null
+++ b/model/src/test/java/lcsb/mapviewer/model/map/kinetics/SbmlUnitTest.java
@@ -0,0 +1,33 @@
+package lcsb.mapviewer.model.map.kinetics;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+public class SbmlUnitTest {
+
+  @Test
+  public void testConstructor() {
+    String id = "id";
+    SbmlUnit unit = new SbmlUnit(id);
+    assertEquals(unit.getUnitId(), id);
+  }
+
+  @Test
+  public void testSetName() {
+    String name= "id";
+    SbmlUnit unit = new SbmlUnit("");
+    unit.setName(name);
+    assertEquals(unit.getName(), name);
+  }
+
+  @Test
+  public void testAddUnitTypeFactor() {
+    SbmlUnitTypeFactor factor = new SbmlUnitTypeFactor(SbmlUnitType.METRE, 2, 0, 1.0);
+    SbmlUnit unit = new SbmlUnit("");
+    unit.addUnitTypeFactor(factor);
+    assertEquals(unit.getUnitTypeFactors().size(), 1);
+    assertEquals(unit.getUnitTypeFactors().get(0), factor);
+  }
+
+}
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/kinetics/SbmlUnitTypeFactorTest.java b/model/src/test/java/lcsb/mapviewer/model/map/kinetics/SbmlUnitTypeFactorTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..83ec875f1f4f3c5c2169cee098957953f76b445a
--- /dev/null
+++ b/model/src/test/java/lcsb/mapviewer/model/map/kinetics/SbmlUnitTypeFactorTest.java
@@ -0,0 +1,25 @@
+package lcsb.mapviewer.model.map.kinetics;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+import lcsb.mapviewer.common.Configuration;
+
+public class SbmlUnitTypeFactorTest {
+
+  @Test
+  public void testConstructor() {
+    int exponent = 1;
+    int scale = 1;
+    double multiplier = 1.0;
+    SbmlUnitType unitType = SbmlUnitType.METRE;
+    SbmlUnitTypeFactor factor = new SbmlUnitTypeFactor(unitType, exponent, scale, multiplier);
+    assertEquals(factor.getUnitType(), unitType);
+    assertEquals(factor.getExponent(), exponent);
+    assertEquals(factor.getScale(), scale);
+    assertEquals(factor.getMultiplier(), multiplier, Configuration.EPSILON);
+
+  }
+
+}