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 f918d97a6ec7d4101417ecf270b15031cf090ad2..6a7e6d10c7f48261e4506f369742259314358c0f 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
@@ -31,7 +31,6 @@ import lcsb.mapviewer.converter.model.celldesigner.compartment.CompartmentCollec
 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;
 import lcsb.mapviewer.converter.model.celldesigner.species.SpeciesCollectionXmlParser;
 import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerCompartment;
@@ -241,29 +240,6 @@ public class CellDesignerXmlParser extends XmlParser implements IConverter {
       }
     } catch (InvalidXmlSchemaException e) {
       throw new InvalidInputDataExecption(e);
-    } catch (UnknownReactionClassException e) {
-      String type = e.getReactionType();
-      String reactionId = e.getReactionId();
-      String newType = null;
-      if ("CATALYSIS".equalsIgnoreCase(type)) {
-        newType = "positive influence";
-      } else if ("INHIBITION".equalsIgnoreCase(type)) {
-        newType = "negative influence";
-      } else if ("UNKNOWN_CATALYSIS".equalsIgnoreCase(type)) {
-        newType = "unknown positive influence";
-      } else if ("UNKNOWN_INHIBITION".equalsIgnoreCase(type)) {
-        newType = "unknown negative influence";
-      } else if ("PHYSICAL_STIMULATION".equalsIgnoreCase(type)) {
-        newType = "reduced physical stimulation";
-      } else if ("MODULATION".equalsIgnoreCase(type)) {
-        newType = "reduced modulation";
-      } else if ("TRIGGER".equalsIgnoreCase(type)) {
-        newType = "reduced trigger";
-      } else {
-        throw new InvalidInputDataExecption(e);
-      }
-      throw new InvalidInputDataExecption("Reaction type \"" + type + "\" is inappropriate for reaction " + reactionId
-          + ". Suggested type: " + newType + " in the \"Reduced\" notation of CellDesigner.", e);
     } catch (CellDesignerParserException e) {
       throw new InvalidInputDataExecption(e);
     }
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXml.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXml.java
index 8eb79c0076059cd62f50f5822a51629ac09f4478..5262e182d05350894003826dd39e66a988914905 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXml.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXml.java
@@ -475,14 +475,12 @@ public class ReactionFromXml extends XmlParser {
    * @param result
    *          initial data
    * @return reaction with a new type
-   * @throws UnknownReactionClassException
-   *           thrown when type is invalid
+   * @throws ReactionParserException
    */
-  Reaction createProperTypeReaction(String type, Reaction result) throws UnknownReactionClassException {
+  Reaction createProperTypeReaction(String type, Reaction result) throws ReactionParserException {
     ReactionLineData rdl = ReactionLineData.getByCellDesignerString(type);
     if (rdl == null) {
-      throw new UnknownReactionClassException("Unknown CellDesigner class type: " + type + ".", type,
-          result.getIdReaction());
+      throw new ReactionParserException("Unknown CellDesigner class type: " + type + ".", result);
     }
     return rdl.createReaction(result);
   }
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionLineData.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionLineData.java
index 7c08957570f59ed479fd75cc9463268971f16d0a..6c55012a2060f64dd75f88f229f5851b886d291c 100644
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionLineData.java
+++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionLineData.java
@@ -3,15 +3,18 @@ package lcsb.mapviewer.converter.model.celldesigner.reaction;
 import java.util.HashMap;
 import java.util.Map;
 
-import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.model.graphics.ArrowType;
 import lcsb.mapviewer.model.graphics.LineType;
 import lcsb.mapviewer.model.map.reaction.Reaction;
 import lcsb.mapviewer.model.map.reaction.type.BooleanLogicGateReaction;
+import lcsb.mapviewer.model.map.reaction.type.CatalysisReaction;
 import lcsb.mapviewer.model.map.reaction.type.DissociationReaction;
 import lcsb.mapviewer.model.map.reaction.type.HeterodimerAssociationReaction;
+import lcsb.mapviewer.model.map.reaction.type.InhibitionReaction;
 import lcsb.mapviewer.model.map.reaction.type.KnownTransitionOmittedReaction;
+import lcsb.mapviewer.model.map.reaction.type.ModulationReaction;
 import lcsb.mapviewer.model.map.reaction.type.NegativeInfluenceReaction;
+import lcsb.mapviewer.model.map.reaction.type.PhysicalStimulationReaction;
 import lcsb.mapviewer.model.map.reaction.type.PositiveInfluenceReaction;
 import lcsb.mapviewer.model.map.reaction.type.ReducedModulationReaction;
 import lcsb.mapviewer.model.map.reaction.type.ReducedPhysicalStimulationReaction;
@@ -20,7 +23,10 @@ import lcsb.mapviewer.model.map.reaction.type.StateTransitionReaction;
 import lcsb.mapviewer.model.map.reaction.type.TranscriptionReaction;
 import lcsb.mapviewer.model.map.reaction.type.TranslationReaction;
 import lcsb.mapviewer.model.map.reaction.type.TransportReaction;
+import lcsb.mapviewer.model.map.reaction.type.TriggerReaction;
 import lcsb.mapviewer.model.map.reaction.type.TruncationReaction;
+import lcsb.mapviewer.model.map.reaction.type.UnknownCatalysisReaction;
+import lcsb.mapviewer.model.map.reaction.type.UnknownInhibitionReaction;
 import lcsb.mapviewer.model.map.reaction.type.UnknownNegativeInfluenceReaction;
 import lcsb.mapviewer.model.map.reaction.type.UnknownPositiveInfluenceReaction;
 import lcsb.mapviewer.model.map.reaction.type.UnknownReducedModulationReaction;
@@ -37,328 +43,370 @@ import lcsb.mapviewer.model.map.reaction.type.UnknownTransitionReaction;
  */
 public enum ReactionLineData {
 
-	/**
-	 * Information about arrows/lines for {@link BooleanLogicGateReaction} class.
-	 */
-	BOOLEAN_LOGIC_GATE(BooleanLogicGateReaction.class, "BOOLEAN_LOGIC_GATE"),
-
-	/**
-	 * Information about arrows/lines for {@link DissociationReaction} class.
-	 */
-	DISSOCIATION(DissociationReaction.class, "DISSOCIATION"),
-
-	/**
-	 * Information about arrows/lines for {@link HeterodimerAssociationReaction}
-	 * class.
-	 */
-	HETERODIMER_ASSOCIATION(HeterodimerAssociationReaction.class, "HETERODIMER_ASSOCIATION"),
-
-	/**
-	 * Information about arrows/lines for {@link KnownTransitionOmittedReaction}
-	 * class.
-	 */
-	KNOWN_TRANSITION_OMITTED(KnownTransitionOmittedReaction.class, "KNOWN_TRANSITION_OMITTED"),
-
-	/**
-	 * Information about arrows/lines for {@link NegativeInfluenceReaction} class.
-	 */
-	NEGATIVE_INFLUENCE(NegativeInfluenceReaction.class, "NEGATIVE_INFLUENCE", LineType.SOLID, ArrowType.CROSSBAR, 3),
-
-	/**
-	 * Information about arrows/lines for {@link PositiveInfluenceReaction} class.
-	 */
-	POSITIVE_INFLUENCE(PositiveInfluenceReaction.class, "POSITIVE_INFLUENCE", LineType.SOLID, ArrowType.OPEN),
-
-	/**
-	 * Information about arrows/lines for {@link ReducedModulationReaction} class.
-	 */
-	REDUCED_MODULATION(ReducedModulationReaction.class, "REDUCED_MODULATION", LineType.SOLID, ArrowType.BLANK),
-
-	/**
-	 * Information about arrows/lines for
-	 * {@link ReducedPhysicalStimulationReaction} class.
-	 */
-	REDUCED_PHYSICAL_STIMULATION(ReducedPhysicalStimulationReaction.class, "REDUCED_PHYSICAL_STIMULATION", LineType.SOLID, ArrowType.BLANK),
-
-	/**
-	 * Information about arrows/lines for {@link ReducedTriggerReaction} class.
-	 */
-	REDUCED_TRIGGER(ReducedTriggerReaction.class, "REDUCED_TRIGGER", LineType.SOLID, ArrowType.BLANK_CROSSBAR),
-
-	/**
-	 * Information about arrows/lines for {@link StateTransitionReaction} class.
-	 */
-	STATE_TRANSITION(StateTransitionReaction.class, "STATE_TRANSITION"),
-
-	/**
-	 * Information about arrows/lines for {@link TranscriptionReaction} class.
-	 */
-	TRANSCRIPTION(TranscriptionReaction.class, "TRANSCRIPTION", LineType.DASH_DOT_DOT),
-
-	/**
-	 * Information about arrows/lines for {@link TranslationReaction} class.
-	 */
-	TRANSLATION(TranslationReaction.class, "TRANSLATION", LineType.DASH_DOT),
-
-	/**
-	 * Information about arrows/lines for {@link TransportReaction} class.
-	 */
-	TRANSPORT(TransportReaction.class, "TRANSPORT", LineType.SOLID, ArrowType.FULL_CROSSBAR),
-
-	/**
-	 * Information about arrows/lines for {@link TruncationReaction} class.
-	 */
-	TRUNCATION(TruncationReaction.class, "TRUNCATION"),
-
-	/**
-	 * Information about arrows/lines for {@link UnknownNegativeInfluenceReaction}
-	 * class.
-	 */
-	UNKNOWN_NEGATIVE_INFLUENCE(UnknownNegativeInfluenceReaction.class, "UNKNOWN_NEGATIVE_INFLUENCE", LineType.DASHED, ArrowType.CROSSBAR, 3),
-
-	/**
-	 * Information about arrows/lines for {@link UnknownPositiveInfluenceReaction}
-	 * class.
-	 */
-	UNKNOWN_POSITIVE_INFLUENCE(UnknownPositiveInfluenceReaction.class, "UNKNOWN_POSITIVE_INFLUENCE", LineType.DASHED, ArrowType.OPEN),
-
-	/**
-	 * Information about arrows/lines for {@link UnknownReducedModulationReaction}
-	 * class.
-	 */
-	UNKNOWN_REDUCED_MODEULATION(UnknownReducedModulationReaction.class, "UNKNOWN_REDUCED_MODULATION", LineType.DASHED, ArrowType.DIAMOND),
-
-	/**
-	 * Information about arrows/lines for
-	 * {@link UnknownReducedPhysicalStimulationReaction} class.
-	 */
-	UNKNOWN_REDUCED_PHYSICAL_STIMULATION(UnknownReducedPhysicalStimulationReaction.class, "UNKNOWN_REDUCED_PHYSICAL_STIMULATION", LineType.DASHED, //
-			ArrowType.BLANK),
-
-	/**
-	 * Information about arrows/lines for {@link UnknownReducedTriggerReaction}
-	 * class.
-	 */
-	UNKNOWN_REDUCED_TRIGGER(UnknownReducedTriggerReaction.class, "UNKNOWN_REDUCED_TRIGGER", LineType.DASHED, ArrowType.BLANK_CROSSBAR),
-
-	/**
-	 * Information about arrows/lines for {@link UnknownTransitionReaction} class.
-	 */
-	UNKNOWN_TRANSITION(UnknownTransitionReaction.class, "UNKNOWN_TRANSITION");
-
-	/**
-	 * {@link Reaction} class for which the data is stored.
-	 */
-	private Class<? extends Reaction>	reactionClass;
-
-	/**
-	 * Type of arrow that should be used by products.
-	 */
-	private ArrowType									productArrowType;
-
-	/**
-	 * Line types that should be used by the reaction.
-	 */
-	private LineType									lineType;
-
-	/**
-	 * How much product line should be trimmed at the end.
-	 */
-	private double										productLineTrim;
-
-	/**
-	 * String used by CellDesigner to represent reaction.
-	 */
-	private String										cellDesignerString;
-
-	/**
-	 * 
-	 * @param clazz
-	 *          {@link #reactionClass}
-	 * @param cellDesignerString
-	 *          {@link #cellDesignerString}
-	 */
-	ReactionLineData(Class<? extends Reaction> clazz, String cellDesignerString) {
-		this(clazz, cellDesignerString, LineType.SOLID);
-
-	}
-
-	/**
-	 * 
-	 * @param clazz
-	 *          {@link #reactionClass}
-	 * @param cellDesignerString
-	 *          {@link #cellDesignerString}
-	 * @param lineType
-	 *          {@link #lineType}
-	 */
-	ReactionLineData(Class<? extends Reaction> clazz, String cellDesignerString, LineType lineType) {
-		this(clazz, cellDesignerString, lineType, ArrowType.FULL);
-	}
-
-	/**
-	 * 
-	 * @param clazz
-	 *          {@link #reactionClass}
-	 * @param cellDesignerString
-	 *          {@link #cellDesignerString}
-	 * @param lineType
-	 *          {@link #lineType}
-	 * @param productArrowType
-	 *          {@link #productArrowType}
-	 */
-	ReactionLineData(Class<? extends Reaction> clazz, String cellDesignerString, LineType lineType, ArrowType productArrowType) {
-		this(clazz, cellDesignerString, lineType, productArrowType, 0.0);
-	}
-
-	/**
-	 * 
-	 * @param clazz
-	 *          {@link #reactionClass}
-	 * @param cellDesignerString
-	 *          {@link #cellDesignerString}
-	 * @param lineType
-	 *          {@link #lineType}
-	 * @param productArrowType
-	 *          {@link #productArrowType}
-	 * @param productLineTrim
-	 *          {@link #productLineTrim}
-	 */
-	ReactionLineData(Class<? extends Reaction> clazz, String cellDesignerString, LineType lineType, ArrowType productArrowType, double productLineTrim) {
-		this.reactionClass = clazz;
-		this.lineType = lineType;
-		this.productArrowType = productArrowType;
-		this.productLineTrim = productLineTrim;
-		this.cellDesignerString = cellDesignerString;
-	}
-
-	/**
-	 * @return the reactionClass
-	 * @see #reactionClass
-	 */
-	public Class<? extends Reaction> getReactionClass() {
-		return reactionClass;
-	}
-
-	/**
-	 * @return the productArrowType
-	 * @see #productArrowType
-	 */
-	public ArrowType getProductArrowType() {
-		return productArrowType;
-	}
-
-	/**
-	 * @return the lineType
-	 * @see #lineType
-	 */
-	public LineType getLineType() {
-		return lineType;
-	}
-
-	/**
-	 * @return the productLineTrim
-	 * @see #productLineTrim
-	 */
-	public double getProductLineTrim() {
-		return productLineTrim;
-	}
-
-	/**
-	 * Map used for reverse lookup between {@link Reaction} types and
-	 * {@link ReactionLineData}.
-	 */
-	private static Map<Class<? extends Reaction>, ReactionLineData>	map							= null;
-
-	/**
-	 * Map used for reverse lookup between {@link #cellDesignerString} types and
-	 * {@link ReactionLineData}.
-	 */
-	private static Map<String, ReactionLineData>										cellDesignerMap	= null;
-
-	/**
-	 * Method that finds {@link ReactionLineData} or given {@link Reaction} type.
-	 * 
-	 * @param clazz
-	 *          type for which {@link ReactionLineData} will be returned
-	 * @return {@link ReactionLineData} or given {@link Reaction} type
-	 */
-	public static ReactionLineData getByReactionType(Class<? extends Reaction> clazz) {
-		if (map == null) {
-			map = new HashMap<Class<? extends Reaction>, ReactionLineData>();
-			for (ReactionLineData rld : values()) {
-				map.put(rld.getReactionClass(), rld);
-			}
-		}
-		return map.get(clazz);
-	}
-
-	/**
-	 * @return the cellDesignerString
-	 * @see #cellDesignerString
-	 */
-	public String getCellDesignerString() {
-		return cellDesignerString;
-	}
-
-	/**
-	 * Returns {@link ReactionLineData} identified by CellDEsigner string that
-	 * identifies this Reaction type.
-	 * 
-	 * @param type
-	 *          {@link #cellDesignerString}
-	 * @return {@link ReactionLineData} identified by CellDEsigner string that
-	 *         identifies this Reaction type
-	 */
-	public static ReactionLineData getByCellDesignerString(String type) {
-		if (cellDesignerMap == null) {
-			cellDesignerMap = new HashMap<String, ReactionLineData>();
-			for (ReactionLineData rld : values()) {
-				cellDesignerMap.put(rld.getCellDesignerString(), rld);
-			}
-		}
-		return cellDesignerMap.get(type);
-	}
-
-	/**
-	 * Creates instance of {@link Reaction} represented by this enum and copies
-	 * the data from result parameter.
-	 * 
-	 * @param result
-	 *          original data
-	 * @return instance of {@link Reaction} represented by this enum and copies
-	 *         the data from result parameter
-	 */
-	public Reaction createReaction(Reaction result) {
-		try {
-			return reactionClass.getConstructor(Reaction.class).newInstance(result);
-		} catch (Exception e) {
-			throw new InvalidArgumentException("[" + this.name() + "] Problem with creation the new instance of Reaction for: " + result + ". ");
-		}
-	}
-
-	/**
-	 * Returns {@link ReactionLineData} that can be aplpied for lines with given
-	 * line type and arrow type. If there are more then one possibility, one of
-	 * them will be returned (nothing is guaranteed).
-	 * 
-	 * @param lineType
-	 *          type of the line for which are looking for
-	 *          {@link ReactionLineData}
-	 * @param productArrowType
-	 *          type of the arrow for which are looking for
-	 *          {@link ReactionLineData}
-	 * @return {@link ReactionLineData} that can be aplpied for lines with given
-	 *         line type and arrow type. If there are more then one possibility,
-	 *         one of them will be returned (nothing is guaranteed)
-	 */
-	public static ReactionLineData getByLineType(LineType lineType, ArrowType productArrowType) {
-		for (ReactionLineData rld : values()) {
-			if (rld.getLineType().equals(lineType) && rld.getProductArrowType().equals(productArrowType)) {
-				return rld;
-			}
-		}
-		return null;
-	}
+  /**
+   * Information about arrows/lines for {@link BooleanLogicGateReaction} class.
+   */
+  BOOLEAN_LOGIC_GATE(BooleanLogicGateReaction.class, "BOOLEAN_LOGIC_GATE"),
+
+  /**
+   * Information about arrows/lines for {@link CatalysisReaction} class.
+   */
+  CATALYSIS(CatalysisReaction.class, "CATALYSIS", LineType.SOLID, ArrowType.CIRCLE),
+
+  /**
+   * Information about arrows/lines for {@link DissociationReaction} class.
+   */
+  DISSOCIATION(DissociationReaction.class, "DISSOCIATION"),
+
+  /**
+   * Information about arrows/lines for {@link HeterodimerAssociationReaction}
+   * class.
+   */
+  HETERODIMER_ASSOCIATION(HeterodimerAssociationReaction.class, "HETERODIMER_ASSOCIATION"),
+
+  /**
+   * Information about arrows/lines for {@link InhibitionReaction} class.
+   */
+  INHIBITION(InhibitionReaction.class, "INHIBITION", LineType.SOLID, ArrowType.CROSSBAR),
+
+  /**
+   * Information about arrows/lines for {@link KnownTransitionOmittedReaction}
+   * class.
+   */
+  KNOWN_TRANSITION_OMITTED(KnownTransitionOmittedReaction.class, "KNOWN_TRANSITION_OMITTED"),
+
+  /**
+   * Information about arrows/lines for {@link ModulationReaction} class.
+   */
+  MODULATION(ModulationReaction.class, "MODULATION", LineType.SOLID, ArrowType.DIAMOND),
+
+  /**
+   * Information about arrows/lines for {@link NegativeInfluenceReaction} class.
+   */
+  NEGATIVE_INFLUENCE(NegativeInfluenceReaction.class, "NEGATIVE_INFLUENCE", LineType.SOLID, ArrowType.CROSSBAR, 3),
+
+  /**
+   * Information about arrows/lines for {@link PhysicalStimulationReaction} class.
+   */
+  PHYSICAL_STIMULATION(PhysicalStimulationReaction.class, "PHYSICAL_STIMULATION", LineType.SOLID, ArrowType.BLANK),
+
+  /**
+   * Information about arrows/lines for {@link PositiveInfluenceReaction} class.
+   */
+  POSITIVE_INFLUENCE(PositiveInfluenceReaction.class, "POSITIVE_INFLUENCE", LineType.SOLID, ArrowType.OPEN),
+
+  /**
+   * Information about arrows/lines for {@link ReducedModulationReaction} class.
+   */
+  REDUCED_MODULATION(ReducedModulationReaction.class, "REDUCED_MODULATION", LineType.SOLID, ArrowType.BLANK),
+
+  /**
+   * Information about arrows/lines for {@link ReducedPhysicalStimulationReaction}
+   * class.
+   */
+  REDUCED_PHYSICAL_STIMULATION(ReducedPhysicalStimulationReaction.class, "REDUCED_PHYSICAL_STIMULATION", LineType.SOLID,
+      ArrowType.BLANK),
+
+  /**
+   * Information about arrows/lines for {@link ReducedTriggerReaction} class.
+   */
+  REDUCED_TRIGGER(ReducedTriggerReaction.class, "REDUCED_TRIGGER", LineType.SOLID, ArrowType.BLANK_CROSSBAR),
+
+  /**
+   * Information about arrows/lines for {@link StateTransitionReaction} class.
+   */
+  STATE_TRANSITION(StateTransitionReaction.class, "STATE_TRANSITION"),
+
+  /**
+   * Information about arrows/lines for {@link TranscriptionReaction} class.
+   */
+  TRANSCRIPTION(TranscriptionReaction.class, "TRANSCRIPTION", LineType.DASH_DOT_DOT),
+
+  /**
+   * Information about arrows/lines for {@link TranslationReaction} class.
+   */
+  TRANSLATION(TranslationReaction.class, "TRANSLATION", LineType.DASH_DOT),
+
+  /**
+   * Information about arrows/lines for {@link TransportReaction} class.
+   */
+  TRANSPORT(TransportReaction.class, "TRANSPORT", LineType.SOLID, ArrowType.FULL_CROSSBAR),
+
+  /**
+   * Information about arrows/lines for {@link TriggerReaction} class.
+   */
+  TRIGGER(TriggerReaction.class, "TRIGGER", LineType.SOLID, ArrowType.BLANK_CROSSBAR),
+
+  /**
+   * Information about arrows/lines for {@link TruncationReaction} class.
+   */
+  TRUNCATION(TruncationReaction.class, "TRUNCATION"),
+
+  /**
+   * Information about arrows/lines for {@link UnknownCatalysisReaction} class.
+   */
+  UNKNOWN_CATALYSIS(UnknownCatalysisReaction.class, "UNKNOWN_CATALYSIS", LineType.DASHED, ArrowType.CIRCLE),
+
+  /**
+   * Information about arrows/lines for {@link UnknownInhibitionReaction} class.
+   */
+  UNKNOWN_INHIBITION(UnknownInhibitionReaction.class, "UNKNOWN_INHIBITION", LineType.DASHED, ArrowType.CROSSBAR),
+
+  /**
+   * Information about arrows/lines for {@link UnknownNegativeInfluenceReaction}
+   * class.
+   */
+  UNKNOWN_NEGATIVE_INFLUENCE(UnknownNegativeInfluenceReaction.class, "UNKNOWN_NEGATIVE_INFLUENCE", LineType.DASHED,
+      ArrowType.CROSSBAR, 3),
+
+  /**
+   * Information about arrows/lines for {@link UnknownPositiveInfluenceReaction}
+   * class.
+   */
+  UNKNOWN_POSITIVE_INFLUENCE(UnknownPositiveInfluenceReaction.class, "UNKNOWN_POSITIVE_INFLUENCE", LineType.DASHED,
+      ArrowType.OPEN),
+
+  /**
+   * Information about arrows/lines for {@link UnknownReducedModulationReaction}
+   * class.
+   */
+  UNKNOWN_REDUCED_MODEULATION(UnknownReducedModulationReaction.class, "UNKNOWN_REDUCED_MODULATION", LineType.DASHED,
+      ArrowType.DIAMOND),
+
+  /**
+   * Information about arrows/lines for
+   * {@link UnknownReducedPhysicalStimulationReaction} class.
+   */
+  UNKNOWN_REDUCED_PHYSICAL_STIMULATION(UnknownReducedPhysicalStimulationReaction.class,
+      "UNKNOWN_REDUCED_PHYSICAL_STIMULATION", LineType.DASHED, //
+      ArrowType.BLANK),
+
+  /**
+   * Information about arrows/lines for {@link UnknownReducedTriggerReaction}
+   * class.
+   */
+  UNKNOWN_REDUCED_TRIGGER(UnknownReducedTriggerReaction.class, "UNKNOWN_REDUCED_TRIGGER", LineType.DASHED,
+      ArrowType.BLANK_CROSSBAR),
+
+  /**
+   * Information about arrows/lines for {@link UnknownTransitionReaction} class.
+   */
+  UNKNOWN_TRANSITION(UnknownTransitionReaction.class, "UNKNOWN_TRANSITION");
+
+  /**
+   * {@link Reaction} class for which the data is stored.
+   */
+  private Class<? extends Reaction> reactionClass;
+
+  /**
+   * Type of arrow that should be used by products.
+   */
+  private ArrowType productArrowType;
+
+  /**
+   * Line types that should be used by the reaction.
+   */
+  private LineType lineType;
+
+  /**
+   * How much product line should be trimmed at the end.
+   */
+  private double productLineTrim;
+
+  /**
+   * String used by CellDesigner to represent reaction.
+   */
+  private String cellDesignerString;
+
+  /**
+   * 
+   * @param clazz
+   *          {@link #reactionClass}
+   * @param cellDesignerString
+   *          {@link #cellDesignerString}
+   */
+  ReactionLineData(Class<? extends Reaction> clazz, String cellDesignerString) {
+    this(clazz, cellDesignerString, LineType.SOLID);
+
+  }
+
+  /**
+   * 
+   * @param clazz
+   *          {@link #reactionClass}
+   * @param cellDesignerString
+   *          {@link #cellDesignerString}
+   * @param lineType
+   *          {@link #lineType}
+   */
+  ReactionLineData(Class<? extends Reaction> clazz, String cellDesignerString, LineType lineType) {
+    this(clazz, cellDesignerString, lineType, ArrowType.FULL);
+  }
+
+  /**
+   * 
+   * @param clazz
+   *          {@link #reactionClass}
+   * @param cellDesignerString
+   *          {@link #cellDesignerString}
+   * @param lineType
+   *          {@link #lineType}
+   * @param productArrowType
+   *          {@link #productArrowType}
+   */
+  ReactionLineData(Class<? extends Reaction> clazz, String cellDesignerString, LineType lineType,
+      ArrowType productArrowType) {
+    this(clazz, cellDesignerString, lineType, productArrowType, 0.0);
+  }
+
+  /**
+   * 
+   * @param clazz
+   *          {@link #reactionClass}
+   * @param cellDesignerString
+   *          {@link #cellDesignerString}
+   * @param lineType
+   *          {@link #lineType}
+   * @param productArrowType
+   *          {@link #productArrowType}
+   * @param productLineTrim
+   *          {@link #productLineTrim}
+   */
+  ReactionLineData(Class<? extends Reaction> clazz, String cellDesignerString, LineType lineType,
+      ArrowType productArrowType, double productLineTrim) {
+    this.reactionClass = clazz;
+    this.lineType = lineType;
+    this.productArrowType = productArrowType;
+    this.productLineTrim = productLineTrim;
+    this.cellDesignerString = cellDesignerString;
+  }
+
+  /**
+   * @return the reactionClass
+   * @see #reactionClass
+   */
+  public Class<? extends Reaction> getReactionClass() {
+    return reactionClass;
+  }
+
+  /**
+   * @return the productArrowType
+   * @see #productArrowType
+   */
+  public ArrowType getProductArrowType() {
+    return productArrowType;
+  }
+
+  /**
+   * @return the lineType
+   * @see #lineType
+   */
+  public LineType getLineType() {
+    return lineType;
+  }
+
+  /**
+   * @return the productLineTrim
+   * @see #productLineTrim
+   */
+  public double getProductLineTrim() {
+    return productLineTrim;
+  }
+
+  /**
+   * Map used for reverse lookup between {@link Reaction} types and
+   * {@link ReactionLineData}.
+   */
+  private static Map<Class<? extends Reaction>, ReactionLineData> map = null;
+
+  /**
+   * Map used for reverse lookup between {@link #cellDesignerString} types and
+   * {@link ReactionLineData}.
+   */
+  private static Map<String, ReactionLineData> cellDesignerMap = null;
+
+  /**
+   * Method that finds {@link ReactionLineData} or given {@link Reaction} type.
+   * 
+   * @param clazz
+   *          type for which {@link ReactionLineData} will be returned
+   * @return {@link ReactionLineData} or given {@link Reaction} type
+   */
+  public static ReactionLineData getByReactionType(Class<? extends Reaction> clazz) {
+    if (map == null) {
+      map = new HashMap<Class<? extends Reaction>, ReactionLineData>();
+      for (ReactionLineData rld : values()) {
+        map.put(rld.getReactionClass(), rld);
+      }
+    }
+    return map.get(clazz);
+  }
+
+  /**
+   * @return the cellDesignerString
+   * @see #cellDesignerString
+   */
+  public String getCellDesignerString() {
+    return cellDesignerString;
+  }
+
+  /**
+   * Returns {@link ReactionLineData} identified by CellDEsigner string that
+   * identifies this Reaction type.
+   * 
+   * @param type
+   *          {@link #cellDesignerString}
+   * @return {@link ReactionLineData} identified by CellDEsigner string that
+   *         identifies this Reaction type
+   */
+  public static ReactionLineData getByCellDesignerString(String type) {
+    if (cellDesignerMap == null) {
+      cellDesignerMap = new HashMap<String, ReactionLineData>();
+      for (ReactionLineData rld : values()) {
+        cellDesignerMap.put(rld.getCellDesignerString(), rld);
+      }
+    }
+    return cellDesignerMap.get(type);
+  }
+
+  /**
+   * Creates instance of {@link Reaction} represented by this enum and copies the
+   * data from result parameter.
+   * 
+   * @param result
+   *          original data
+   * @return instance of {@link Reaction} represented by this enum and copies the
+   *         data from result parameter
+   * @throws ReactionParserException 
+   */
+  public Reaction createReaction(Reaction result) throws ReactionParserException {
+    try {
+      return reactionClass.getConstructor(Reaction.class).newInstance(result);
+    } catch (Exception e) {
+      throw new ReactionParserException("Problem with creation the new instance of reaction. ", result, e);
+    }
+  }
+
+  /**
+   * Returns {@link ReactionLineData} that can be aplpied for lines with given
+   * line type and arrow type. If there are more then one possibility, one of them
+   * will be returned (nothing is guaranteed).
+   * 
+   * @param lineType
+   *          type of the line for which are looking for {@link ReactionLineData}
+   * @param productArrowType
+   *          type of the arrow for which are looking for {@link ReactionLineData}
+   * @return {@link ReactionLineData} that can be aplpied for lines with given
+   *         line type and arrow type. If there are more then one possibility, one
+   *         of them will be returned (nothing is guaranteed)
+   */
+  public static ReactionLineData getByLineType(LineType lineType, ArrowType productArrowType) {
+    for (ReactionLineData rld : values()) {
+      if (rld.getLineType().equals(lineType) && rld.getProductArrowType().equals(productArrowType)) {
+        return rld;
+      }
+    }
+    return null;
+  }
 
 }
diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/UnknownReactionClassException.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/UnknownReactionClassException.java
deleted file mode 100644
index cf114341b600d5eb3519bdcbc66b91415a05d061..0000000000000000000000000000000000000000
--- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/reaction/UnknownReactionClassException.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package lcsb.mapviewer.converter.model.celldesigner.reaction;
-
-/**
- * Exception thrown when unknown
- * {@link lcsb.mapviewer.model.map.reaction.Reaction} class found.
- * 
- * @author Piotr Gawron
- * 
- */
-public class UnknownReactionClassException extends ReactionParserException {
-
-	/**
-	 * Type of reaction that was a reason for this exception.
-	 */
-	private String reactionType;
-
-	/**
-	 * Default constructor.
-	 * 
-	 * @param message
-	 *          message thrown
-	 * @param type
-	 *          {@link #reactionType}
-	 * @param reactionId
-	 *          {@link #reactionId}
-	 */
-	public UnknownReactionClassException(String message, String type, String reactionId) {
-		super(message, reactionId);
-		this.reactionType = type;
-	}
-
-	/**
-	 * @return the reactionType
-	 * @see #reactionType
-	 */
-	public String getReactionType() {
-		return reactionType;
-	}
-
-	/**
-	 * @param reactionType
-	 *          the reactionType to set
-	 * @see #reactionType
-	 */
-	public void setReactionType(String reactionType) {
-		this.reactionType = reactionType;
-	}
-
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-
-}
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerXmlParserTest.java
index 7784e993cc4a3335ed7c4aa257b1aab4cdc275d6..bdce5e8a510707ef3d9e4769bdd95167d514d627 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerXmlParserTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerXmlParserTest.java
@@ -241,6 +241,25 @@ public class CellDesignerXmlParserTest extends CellDesignerTestFunctions {
     }
   }
 
+  @Test
+  public void testModifierReactionModelToXml() throws Exception {
+    try {
+      CellDesignerXmlParser parser = new CellDesignerXmlParser();
+      FileInputStream fis = new FileInputStream("testFiles/reactions/modification_reaction/catalysis.xml");
+      Model model = parser.createModel(new ConverterParams().inputStream(fis));
+      String xmlString = parser.toXml(model);
+
+      InputStream is = new ByteArrayInputStream(xmlString.getBytes("UTF-8"));
+
+      Model model2 = parser.createModel(new ConverterParams().inputStream(is).sizeAutoAdjust(false));
+      ModelComparator comparator = new ModelComparator();
+      assertEquals(0, comparator.compare(model, model2));
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
   @Test
   public void testAutoMapWidth() {
     try {
@@ -332,96 +351,6 @@ public class CellDesignerXmlParserTest extends CellDesignerTestFunctions {
     }
   }
 
-  @Test
-  public void testInvalidCatalysisReaction() {
-    try {
-      CellDesignerXmlParser parser = new CellDesignerXmlParser();
-      FileInputStream fis = new FileInputStream("testFiles/invalid/catalysis_reaction.xml");
-      parser.createModel(new ConverterParams().inputStream(fis));
-      fail("Exception expected");
-    } catch (InvalidInputDataExecption e) {
-      assertTrue(e.getMessage().contains("CATALYSIS"));
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail("Exception occured: " + e.getMessage());
-    }
-  }
-
-  @Test
-  public void testInvalidInhibitionReaction() {
-    try {
-      CellDesignerXmlParser parser = new CellDesignerXmlParser();
-      FileInputStream fis = new FileInputStream("testFiles/invalid/inhibition_reaction.xml");
-      parser.createModel(new ConverterParams().inputStream(fis));
-      fail("Exception expected");
-    } catch (InvalidInputDataExecption e) {
-      assertTrue(e.getMessage().contains("INHIBITION"));
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail("Exception occured: " + e.getMessage());
-    }
-  }
-
-  @Test
-  public void testInvalidModulationReaction() {
-    try {
-      CellDesignerXmlParser parser = new CellDesignerXmlParser();
-      FileInputStream fis = new FileInputStream("testFiles/invalid/modulation_reaction.xml");
-      parser.createModel(new ConverterParams().inputStream(fis));
-      fail("Exception expected");
-    } catch (InvalidInputDataExecption e) {
-      assertTrue(e.getMessage().contains("MODULATION"));
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail("Exception occured: " + e.getMessage());
-    }
-  }
-
-  @Test
-  public void testInvalidPhysicalStimulationReaction() {
-    try {
-      CellDesignerXmlParser parser = new CellDesignerXmlParser();
-      FileInputStream fis = new FileInputStream("testFiles/invalid/physical_stimulation_reaction.xml");
-      parser.createModel(new ConverterParams().inputStream(fis));
-      fail("Exception expected");
-    } catch (InvalidInputDataExecption e) {
-      assertTrue(e.getMessage().contains("PHYSICAL_STIMULATION"));
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail("Exception occured: " + e.getMessage());
-    }
-  }
-
-  @Test
-  public void testInvalidTriggerReaction() {
-    try {
-      CellDesignerXmlParser parser = new CellDesignerXmlParser();
-      FileInputStream fis = new FileInputStream("testFiles/invalid/trigger_reaction.xml");
-      parser.createModel(new ConverterParams().inputStream(fis));
-      fail("Exception expected");
-    } catch (InvalidInputDataExecption e) {
-      assertTrue(e.getMessage().contains("TRIGGER"));
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail("Exception occured: " + e.getMessage());
-    }
-  }
-
-  @Test
-  public void testInvalidUnknownCatalysisReaction() {
-    try {
-      CellDesignerXmlParser parser = new CellDesignerXmlParser();
-      FileInputStream fis = new FileInputStream("testFiles/invalid/unknown_catalysis_reaction.xml");
-      parser.createModel(new ConverterParams().inputStream(fis));
-      fail("Exception expected");
-    } catch (InvalidInputDataExecption e) {
-      assertTrue(e.getMessage().contains("UNKNOWN_CATALYSIS"));
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail("Exception occured: " + e.getMessage());
-    }
-  }
-
   @Test
   public void testInvalidBrokenTypeReaction() {
     try {
@@ -437,21 +366,6 @@ public class CellDesignerXmlParserTest extends CellDesignerTestFunctions {
     }
   }
 
-  @Test
-  public void testInvalidUnknownInhibitionReaction() {
-    try {
-      CellDesignerXmlParser parser = new CellDesignerXmlParser();
-      FileInputStream fis = new FileInputStream("testFiles/invalid/unknown_inhibition_reaction.xml");
-      parser.createModel(new ConverterParams().inputStream(fis));
-      fail("Exception expected");
-    } catch (InvalidInputDataExecption e) {
-      assertTrue(e.getMessage().contains("UNKNOWN_INHIBITION"));
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail("Exception occured: " + e.getMessage());
-    }
-  }
-
   @Test
   public void testToXmlAfterAnnotating() throws Exception {
     try {
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/AllReactionTests.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/AllReactionTests.java
index 5284caf287314aba6947d1f9ee7100cc0f2b44f3..736069c5d08eae9326bb5b1ecf1949d634adf8b5 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/AllReactionTests.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/AllReactionTests.java
@@ -6,6 +6,7 @@ import org.junit.runners.Suite.SuiteClasses;
 
 @RunWith(Suite.class)
 @SuiteClasses({ KineticsXmlParserTest.class, //
+    ModificationReactionTest.class, //
     ReactionCollectionXmlParserTest.class, //
     ReactionFromXmlTest.class, //
     ReactionLineDataTest.class, //
@@ -13,7 +14,6 @@ import org.junit.runners.Suite.SuiteClasses;
     ReactionParserTests.class, //
     ReactionToXmlTest.class, //
     UnknownModifierClassExceptionTest.class, //
-    UnknownReactionClassExceptionTest.class,//
 })
 public class AllReactionTests {
 
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ModificationReactionTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ModificationReactionTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..9e7e4627c495e4b991615f7ca25307fd4337be4f
--- /dev/null
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ModificationReactionTest.java
@@ -0,0 +1,126 @@
+package lcsb.mapviewer.converter.model.celldesigner.reaction;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.FileInputStream;
+
+import org.apache.log4j.Logger;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import lcsb.mapviewer.converter.ConverterParams;
+import lcsb.mapviewer.converter.model.celldesigner.CellDesignerTestFunctions;
+import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
+import lcsb.mapviewer.model.map.model.Model;
+import lcsb.mapviewer.model.map.reaction.type.CatalysisReaction;
+import lcsb.mapviewer.model.map.reaction.type.InhibitionReaction;
+import lcsb.mapviewer.model.map.reaction.type.ModulationReaction;
+import lcsb.mapviewer.model.map.reaction.type.PhysicalStimulationReaction;
+import lcsb.mapviewer.model.map.reaction.type.TriggerReaction;
+import lcsb.mapviewer.model.map.reaction.type.UnknownCatalysisReaction;
+import lcsb.mapviewer.model.map.reaction.type.UnknownInhibitionReaction;
+
+public class ModificationReactionTest extends CellDesignerTestFunctions {
+  Logger logger = Logger.getLogger(ModificationReactionTest.class);
+
+  @Before
+  public void setUp() throws Exception {
+  }
+
+  @After
+  public void tearDown() throws Exception {
+  }
+
+  @Test
+  public void testCatalysisReaction() throws Exception {
+    try {
+      CellDesignerXmlParser parser = new CellDesignerXmlParser();
+      FileInputStream fis = new FileInputStream("testFiles/reactions/modification_reaction/catalysis.xml");
+      Model model = parser.createModel(new ConverterParams().inputStream(fis));
+      assertEquals(CatalysisReaction.class, model.getReactionByReactionId("re1").getClass());
+
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void testInhibitionReaction() throws Exception {
+    try {
+      CellDesignerXmlParser parser = new CellDesignerXmlParser();
+      FileInputStream fis = new FileInputStream("testFiles/reactions/modification_reaction/inhibition.xml");
+      Model model = parser.createModel(new ConverterParams().inputStream(fis));
+      assertEquals(InhibitionReaction.class, model.getReactionByReactionId("re2").getClass());
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void testModulationReaction() throws Exception {
+    try {
+      CellDesignerXmlParser parser = new CellDesignerXmlParser();
+      FileInputStream fis = new FileInputStream("testFiles/reactions/modification_reaction/modulation.xml");
+      Model model = parser.createModel(new ConverterParams().inputStream(fis));
+      assertEquals(ModulationReaction.class, model.getReactionByReactionId("re1").getClass());
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void testPhysicalStimulationReaction() throws Exception {
+    try {
+      CellDesignerXmlParser parser = new CellDesignerXmlParser();
+      FileInputStream fis = new FileInputStream("testFiles/reactions/modification_reaction/physical_stimulation.xml");
+      Model model = parser.createModel(new ConverterParams().inputStream(fis));
+      assertEquals(PhysicalStimulationReaction.class, model.getReactionByReactionId("re1").getClass());
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void testTriggerReaction() throws Exception {
+    try {
+      CellDesignerXmlParser parser = new CellDesignerXmlParser();
+      FileInputStream fis = new FileInputStream("testFiles/reactions/modification_reaction/trigger.xml");
+      Model model = parser.createModel(new ConverterParams().inputStream(fis));
+      assertEquals(TriggerReaction.class, model.getReactionByReactionId("re1").getClass());
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void testUnknownCatalysisReaction() throws Exception {
+    try {
+      CellDesignerXmlParser parser = new CellDesignerXmlParser();
+      FileInputStream fis = new FileInputStream("testFiles/reactions/modification_reaction/unknown_catalysis.xml");
+      Model model = parser.createModel(new ConverterParams().inputStream(fis));
+      assertEquals(UnknownCatalysisReaction.class, model.getReactionByReactionId("re1").getClass());
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void testUnknownInhibitionReaction() throws Exception {
+    try {
+      CellDesignerXmlParser parser = new CellDesignerXmlParser();
+      FileInputStream fis = new FileInputStream("testFiles/reactions/modification_reaction/unknown_inhibition.xml");
+      Model model = parser.createModel(new ConverterParams().inputStream(fis));
+      assertEquals(UnknownInhibitionReaction.class, model.getReactionByReactionId("re1").getClass());
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+}
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXmlTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXmlTest.java
index 5828d1ac3e8f4d9199240ab107780d512a745f3e..ddcab87314557c09f422504b3ba3a9c39b5695db 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXmlTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionFromXmlTest.java
@@ -453,7 +453,7 @@ public class ReactionFromXmlTest extends CellDesignerTestFunctions {
       // test situation when createProperTypeReaction returns reaction of
       // unknown type
       ReactionFromXml parser = new ReactionFromXml(null, false) {
-        Reaction createProperTypeReaction(String type, Reaction result) throws UnknownReactionClassException {
+        Reaction createProperTypeReaction(String type, Reaction result) {
           return result;
         }
       };
@@ -484,7 +484,7 @@ public class ReactionFromXmlTest extends CellDesignerTestFunctions {
       }
 
       ReactionFromXml parser = new ReactionFromXml(null, false) {
-        Reaction createProperTypeReaction(String type, Reaction result) throws UnknownReactionClassException {
+        Reaction createProperTypeReaction(String type, Reaction result) {
           return new NewReactionType(result);
         }
       };
@@ -508,7 +508,7 @@ public class ReactionFromXmlTest extends CellDesignerTestFunctions {
       // reaction with two many base reactants
 
       ReactionFromXml parser = new ReactionFromXml(null, false) {
-        Reaction createProperTypeReaction(String type, Reaction result) throws UnknownReactionClassException {
+        Reaction createProperTypeReaction(String type, Reaction result) throws ReactionParserException {
           Reaction r = super.createProperTypeReaction(type, result);
           r.addReactant(new Reactant());
           return r;
@@ -534,7 +534,7 @@ public class ReactionFromXmlTest extends CellDesignerTestFunctions {
       // reaction with two many base products
 
       ReactionFromXml parser = new ReactionFromXml(null, false) {
-        Reaction createProperTypeReaction(String type, Reaction result) throws UnknownReactionClassException {
+        Reaction createProperTypeReaction(String type, Reaction result) throws ReactionParserException {
           Reaction r = super.createProperTypeReaction(type, result);
           r.addProduct(new Product());
           return r;
@@ -568,7 +568,7 @@ public class ReactionFromXmlTest extends CellDesignerTestFunctions {
       }
 
       ReactionFromXml parser = new ReactionFromXml(null, false) {
-        Reaction createProperTypeReaction(String type, Reaction result) throws UnknownReactionClassException {
+        Reaction createProperTypeReaction(String type, Reaction result) {
           return new NewReactionType(result);
         }
       };
@@ -591,7 +591,7 @@ public class ReactionFromXmlTest extends CellDesignerTestFunctions {
       // reaction with two many base reactants
 
       ReactionFromXml parser = new ReactionFromXml(null, false) {
-        Reaction createProperTypeReaction(String type, Reaction result) throws UnknownReactionClassException {
+        Reaction createProperTypeReaction(String type, Reaction result) throws ReactionParserException {
           Reaction r = super.createProperTypeReaction(type, result);
           r.addReactant(new Reactant());
           return r;
@@ -616,7 +616,7 @@ public class ReactionFromXmlTest extends CellDesignerTestFunctions {
       // reaction with two many base products
 
       ReactionFromXml parser = new ReactionFromXml(null, false) {
-        Reaction createProperTypeReaction(String type, Reaction result) throws UnknownReactionClassException {
+        Reaction createProperTypeReaction(String type, Reaction result) throws ReactionParserException {
           Reaction r = super.createProperTypeReaction(type, result);
           r.addProduct(new Product());
           return r;
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionLineDataTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionLineDataTest.java
index 53643ccffb4009f6ca2fff69098eb5e5ac009533..76bab8805ae98efb943e69b3eeb026ab1b4e4a38 100644
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionLineDataTest.java
+++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/ReactionLineDataTest.java
@@ -10,47 +10,46 @@ import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
 
-import lcsb.mapviewer.common.exception.InvalidArgumentException;
 import lcsb.mapviewer.model.map.reaction.Reaction;
 
 public class ReactionLineDataTest {
 
-	@Before
-	public void setUp() throws Exception {
-	}
-
-	@After
-	public void tearDown() throws Exception {
-	}
-
-	@Test
-	public void testGetByLineType() {
-		assertNull(ReactionLineData.getByLineType(null, null));
-	}
-
-	@Test
-	public void test() {
-		assertNotNull(ReactionLineData.getByCellDesignerString("UNKNOWN_REDUCED_MODULATION"));
-	}
-
-	@Test
-	public void testAllValues() {
-		for (ReactionLineData value : ReactionLineData.values()) {
-			assertNotNull(ReactionLineData.valueOf(value.toString()));
-		}
-	}
-
-	@Test
-	public void testCreateInvalidReaction() {
-		try {
-			ReactionLineData.TRANSPORT.createReaction(Mockito.mock(Reaction.class));
-			fail("Exception expected");
-		} catch (InvalidArgumentException e) {
-			assertTrue(e.getMessage().contains("Problem with creation the new instance of Reaction"));
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
+  @Before
+  public void setUp() throws Exception {
+  }
+
+  @After
+  public void tearDown() throws Exception {
+  }
+
+  @Test
+  public void testGetByLineType() {
+    assertNull(ReactionLineData.getByLineType(null, null));
+  }
+
+  @Test
+  public void test() {
+    assertNotNull(ReactionLineData.getByCellDesignerString("UNKNOWN_REDUCED_MODULATION"));
+  }
+
+  @Test
+  public void testAllValues() {
+    for (ReactionLineData value : ReactionLineData.values()) {
+      assertNotNull(ReactionLineData.valueOf(value.toString()));
+    }
+  }
+
+  @Test
+  public void testCreateInvalidReaction() throws Exception {
+    try {
+      ReactionLineData.TRANSPORT.createReaction(Mockito.mock(Reaction.class));
+      fail("Exception expected");
+    } catch (ReactionParserException e) {
+      assertTrue(e.getMessage().contains("Problem with creation the new instance of reaction"));
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
 
 }
diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/UnknownReactionClassExceptionTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/UnknownReactionClassExceptionTest.java
deleted file mode 100644
index 4ae9c4ef4ebd9f7fdc1712aa65a46f35166dbaac..0000000000000000000000000000000000000000
--- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/reaction/UnknownReactionClassExceptionTest.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package lcsb.mapviewer.converter.model.celldesigner.reaction;
-
-import static org.junit.Assert.assertEquals;
-
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.Test;
-
-public class UnknownReactionClassExceptionTest {
-
-	@AfterClass
-	public static void tearDownAfterClass() throws Exception {
-	}
-
-	@Before
-	public void setUp() throws Exception {
-	}
-
-	@After
-	public void tearDown() throws Exception {
-	}
-
-	@Test
-	public void testGetters() {
-		String modificationType = "str";
-		UnknownReactionClassException exception = new UnknownReactionClassException(null, null, null);
-		exception.setReactionType(modificationType);
-		assertEquals(modificationType, exception.getReactionType());
-	}
-
-}
diff --git a/converter-CellDesigner/testFiles/invalid/unknown_inhibition_reaction.xml b/converter-CellDesigner/testFiles/invalid/unknown_inhibition_reaction.xml
deleted file mode 100644
index a1108f0624cca6dd27539169c0d9cebf3142f066..0000000000000000000000000000000000000000
--- a/converter-CellDesigner/testFiles/invalid/unknown_inhibition_reaction.xml
+++ /dev/null
@@ -1,153 +0,0 @@
-<?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:speciesAlias id="sa3" species="s3">
-<celldesigner:activity>inactive</celldesigner:activity>
-<celldesigner:bounds x="124.0" y="85.0" w="80.0" h="30.0"/>
-<celldesigner:font size="12"/>
-<celldesigner:view state="usual"/>
-<celldesigner:usualView>
-<celldesigner:innerPosition x="0.0" y="0.0"/>
-<celldesigner:boxSize width="80.0" height="30.0"/>
-<celldesigner:singleLine width="1.0"/>
-<celldesigner:paint color="ffcc99ff" scheme="Color"/>
-</celldesigner:usualView>
-<celldesigner:briefView>
-<celldesigner:innerPosition x="0.0" y="0.0"/>
-<celldesigner:boxSize width="80.0" height="60.0"/>
-<celldesigner:singleLine width="1.0"/>
-<celldesigner:paint color="3fff0000" scheme="Color"/>
-</celldesigner:briefView>
-<celldesigner:info state="empty" angle="-1.5707963267948966"/>
-</celldesigner:speciesAlias>
-<celldesigner:speciesAlias id="sa4" species="s4">
-<celldesigner:activity>inactive</celldesigner:activity>
-<celldesigner:bounds x="340.0" y="82.0" w="80.0" h="30.0"/>
-<celldesigner:font size="12"/>
-<celldesigner:view state="usual"/>
-<celldesigner:usualView>
-<celldesigner:innerPosition x="0.0" y="0.0"/>
-<celldesigner:boxSize width="80.0" height="30.0"/>
-<celldesigner:singleLine width="1.0"/>
-<celldesigner:paint color="ffcc99ff" scheme="Color"/>
-</celldesigner:usualView>
-<celldesigner:briefView>
-<celldesigner:innerPosition x="0.0" y="0.0"/>
-<celldesigner:boxSize width="80.0" height="60.0"/>
-<celldesigner:singleLine width="1.0"/>
-<celldesigner:paint color="3fff0000" scheme="Color"/>
-</celldesigner:briefView>
-<celldesigner:info state="empty" angle="-1.5707963267948966"/>
-</celldesigner:speciesAlias>
-</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="CDMT00003" kind="mole"/>
-</listOfUnits>
-</unitDefinition>
-<unitDefinition metaid="volume" id="volume" name="volume">
-<listOfUnits>
-<unit metaid="CDMT00004" kind="litre"/>
-</listOfUnits>
-</unitDefinition>
-<unitDefinition metaid="area" id="area" name="area">
-<listOfUnits>
-<unit metaid="CDMT00005" kind="metre" exponent="2"/>
-</listOfUnits>
-</unitDefinition>
-<unitDefinition metaid="length" id="length" name="length">
-<listOfUnits>
-<unit metaid="CDMT00006" kind="metre"/>
-</listOfUnits>
-</unitDefinition>
-<unitDefinition metaid="time" id="time" name="time">
-<listOfUnits>
-<unit metaid="CDMT00007" kind="second"/>
-</listOfUnits>
-</unitDefinition>
-</listOfUnitDefinitions>
-<listOfCompartments>
-<compartment metaid="default" id="default" size="1" units="volume"/>
-</listOfCompartments>
-<listOfSpecies>
-<species metaid="s3" id="s3" name="s3" compartment="default" initialAmount="0">
-<annotation>
-<celldesigner:extension>
-<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
-<celldesigner:speciesIdentity>
-<celldesigner:class>PHENOTYPE</celldesigner:class>
-<celldesigner:name>s3</celldesigner:name>
-</celldesigner:speciesIdentity>
-</celldesigner:extension>
-</annotation>
-</species>
-<species metaid="s4" id="s4" name="s4" compartment="default" initialAmount="0">
-<annotation>
-<celldesigner:extension>
-<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
-<celldesigner:speciesIdentity>
-<celldesigner:class>PHENOTYPE</celldesigner:class>
-<celldesigner:name>s4</celldesigner:name>
-</celldesigner:speciesIdentity>
-</celldesigner:extension>
-</annotation>
-</species>
-</listOfSpecies>
-<listOfReactions>
-<reaction metaid="re3" id="re3" reversible="false">
-<annotation>
-<celldesigner:extension>
-<celldesigner:reactionType>UNKNOWN_INHIBITION</celldesigner:reactionType>
-<celldesigner:baseReactants>
-<celldesigner:baseReactant species="s3" alias="sa3"/>
-</celldesigner:baseReactants>
-<celldesigner:baseProducts>
-<celldesigner:baseProduct species="s4" alias="sa4"/>
-</celldesigner:baseProducts>
-<celldesigner:connectScheme connectPolicy="direct">
-<celldesigner:listOfLineDirection>
-<celldesigner:lineDirection index="0" value="unknown"/>
-</celldesigner:listOfLineDirection>
-</celldesigner:connectScheme>
-<celldesigner:line width="1.0" color="ff000000"/>
-</celldesigner:extension>
-</annotation>
-<listOfReactants>
-<speciesReference metaid="CDMT00008" species="s3">
-<annotation>
-<celldesigner:extension>
-<celldesigner:alias>sa3</celldesigner:alias>
-</celldesigner:extension>
-</annotation>
-</speciesReference>
-</listOfReactants>
-<listOfProducts>
-<speciesReference metaid="CDMT00009" species="s4">
-<annotation>
-<celldesigner:extension>
-<celldesigner:alias>sa4</celldesigner:alias>
-</celldesigner:extension>
-</annotation>
-</speciesReference>
-</listOfProducts>
-</reaction>
-</listOfReactions>
-</model>
-</sbml>
diff --git a/converter-CellDesigner/testFiles/invalid/catalysis_reaction.xml b/converter-CellDesigner/testFiles/reactions/modification_reaction/catalysis.xml
similarity index 80%
rename from converter-CellDesigner/testFiles/invalid/catalysis_reaction.xml
rename to converter-CellDesigner/testFiles/reactions/modification_reaction/catalysis.xml
index fe0b221fffad29e3917631547e2b4ff4151ea1be..bf4d021f9848b9ab72f05a682f7a2330c5003090 100644
--- a/converter-CellDesigner/testFiles/invalid/catalysis_reaction.xml
+++ b/converter-CellDesigner/testFiles/reactions/modification_reaction/catalysis.xml
@@ -8,9 +8,9 @@
 <celldesigner:listOfCompartmentAliases/>
 <celldesigner:listOfComplexSpeciesAliases/>
 <celldesigner:listOfSpeciesAliases>
-<celldesigner:speciesAlias id="sa3" species="s3">
+<celldesigner:speciesAlias id="sa1" species="s1">
 <celldesigner:activity>inactive</celldesigner:activity>
-<celldesigner:bounds x="124.0" y="85.0" w="80.0" h="30.0"/>
+<celldesigner:bounds x="125.0" y="205.0" w="80.0" h="30.0"/>
 <celldesigner:font size="12"/>
 <celldesigner:view state="usual"/>
 <celldesigner:usualView>
@@ -27,16 +27,16 @@
 </celldesigner:briefView>
 <celldesigner:info state="empty" angle="-1.5707963267948966"/>
 </celldesigner:speciesAlias>
-<celldesigner:speciesAlias id="sa4" species="s4">
+<celldesigner:speciesAlias id="sa2" species="s2">
 <celldesigner:activity>inactive</celldesigner:activity>
-<celldesigner:bounds x="340.0" y="82.0" w="80.0" h="30.0"/>
+<celldesigner:bounds x="139.0" y="48.0" w="80.0" h="40.0"/>
 <celldesigner:font size="12"/>
 <celldesigner:view state="usual"/>
 <celldesigner:usualView>
 <celldesigner:innerPosition x="0.0" y="0.0"/>
-<celldesigner:boxSize width="80.0" height="30.0"/>
+<celldesigner:boxSize width="80.0" height="40.0"/>
 <celldesigner:singleLine width="1.0"/>
-<celldesigner:paint color="ffcc99ff" scheme="Color"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
 </celldesigner:usualView>
 <celldesigner:briefView>
 <celldesigner:innerPosition x="0.0" y="0.0"/>
@@ -48,7 +48,9 @@
 </celldesigner:speciesAlias>
 </celldesigner:listOfSpeciesAliases>
 <celldesigner:listOfGroups/>
-<celldesigner:listOfProteins/>
+<celldesigner:listOfProteins>
+<celldesigner:protein id="pr1" name="s2" type="GENERIC"/>
+</celldesigner:listOfProteins>
 <celldesigner:listOfGenes/>
 <celldesigner:listOfRNAs/>
 <celldesigner:listOfAntisenseRNAs/>
@@ -87,41 +89,41 @@
 <compartment metaid="default" id="default" size="1" units="volume"/>
 </listOfCompartments>
 <listOfSpecies>
-<species metaid="s3" id="s3" name="s3" compartment="default" initialAmount="0">
+<species metaid="s1" id="s1" name="s1" compartment="default" initialAmount="0">
 <annotation>
 <celldesigner:extension>
 <celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
 <celldesigner:speciesIdentity>
 <celldesigner:class>PHENOTYPE</celldesigner:class>
-<celldesigner:name>s3</celldesigner:name>
+<celldesigner:name>s1</celldesigner:name>
 </celldesigner:speciesIdentity>
 </celldesigner:extension>
 </annotation>
 </species>
-<species metaid="s4" id="s4" name="s4" compartment="default" initialAmount="0">
+<species metaid="s2" id="s2" name="s2" compartment="default" initialAmount="0">
 <annotation>
 <celldesigner:extension>
 <celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
 <celldesigner:speciesIdentity>
-<celldesigner:class>PHENOTYPE</celldesigner:class>
-<celldesigner:name>s4</celldesigner:name>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr1</celldesigner:proteinReference>
 </celldesigner:speciesIdentity>
 </celldesigner:extension>
 </annotation>
 </species>
 </listOfSpecies>
 <listOfReactions>
-<reaction metaid="re2" id="re2" reversible="false">
+<reaction metaid="re1" id="re1" reversible="false">
 <annotation>
 <celldesigner:extension>
 <celldesigner:reactionType>CATALYSIS</celldesigner:reactionType>
 <celldesigner:baseReactants>
-<celldesigner:baseReactant species="s3" alias="sa3">
+<celldesigner:baseReactant species="s2" alias="sa2">
 <celldesigner:linkAnchor position="INACTIVE"/>
 </celldesigner:baseReactant>
 </celldesigner:baseReactants>
 <celldesigner:baseProducts>
-<celldesigner:baseProduct species="s4" alias="sa4">
+<celldesigner:baseProduct species="s1" alias="sa1">
 <celldesigner:linkAnchor position="INACTIVE"/>
 </celldesigner:baseProduct>
 </celldesigner:baseProducts>
@@ -134,19 +136,19 @@
 </celldesigner:extension>
 </annotation>
 <listOfReactants>
-<speciesReference metaid="CDMT00001" species="s3">
+<speciesReference metaid="CDMT00001" species="s2">
 <annotation>
 <celldesigner:extension>
-<celldesigner:alias>sa3</celldesigner:alias>
+<celldesigner:alias>sa2</celldesigner:alias>
 </celldesigner:extension>
 </annotation>
 </speciesReference>
 </listOfReactants>
 <listOfProducts>
-<speciesReference metaid="CDMT00002" species="s4">
+<speciesReference metaid="CDMT00002" species="s1">
 <annotation>
 <celldesigner:extension>
-<celldesigner:alias>sa4</celldesigner:alias>
+<celldesigner:alias>sa1</celldesigner:alias>
 </celldesigner:extension>
 </annotation>
 </speciesReference>
diff --git a/converter-CellDesigner/testFiles/reactions/modification_reaction/inhibition.xml b/converter-CellDesigner/testFiles/reactions/modification_reaction/inhibition.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f7602639a68ecd67374160c1ab2a4d29c7568c39
--- /dev/null
+++ b/converter-CellDesigner/testFiles/reactions/modification_reaction/inhibition.xml
@@ -0,0 +1,159 @@
+<?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:speciesAlias id="sa1" species="s1">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="125.0" y="205.0" w="80.0" h="30.0"/>
+<celldesigner:font size="12"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="30.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffcc99ff" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa2" species="s2">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="139.0" y="48.0" w="80.0" h="40.0"/>
+<celldesigner:font size="12"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="40.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:speciesAlias>
+</celldesigner:listOfSpeciesAliases>
+<celldesigner:listOfGroups/>
+<celldesigner:listOfProteins>
+<celldesigner:protein id="pr1" name="s2" type="GENERIC"/>
+</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="CDMT00003" kind="mole"/>
+</listOfUnits>
+</unitDefinition>
+<unitDefinition metaid="volume" id="volume" name="volume">
+<listOfUnits>
+<unit metaid="CDMT00004" kind="litre"/>
+</listOfUnits>
+</unitDefinition>
+<unitDefinition metaid="area" id="area" name="area">
+<listOfUnits>
+<unit metaid="CDMT00005" kind="metre" exponent="2"/>
+</listOfUnits>
+</unitDefinition>
+<unitDefinition metaid="length" id="length" name="length">
+<listOfUnits>
+<unit metaid="CDMT00006" kind="metre"/>
+</listOfUnits>
+</unitDefinition>
+<unitDefinition metaid="time" id="time" name="time">
+<listOfUnits>
+<unit metaid="CDMT00007" kind="second"/>
+</listOfUnits>
+</unitDefinition>
+</listOfUnitDefinitions>
+<listOfCompartments>
+<compartment metaid="default" id="default" size="1" units="volume"/>
+</listOfCompartments>
+<listOfSpecies>
+<species metaid="s1" id="s1" name="s1" compartment="default" initialAmount="0">
+<annotation>
+<celldesigner:extension>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>PHENOTYPE</celldesigner:class>
+<celldesigner:name>s1</celldesigner:name>
+</celldesigner:speciesIdentity>
+</celldesigner:extension>
+</annotation>
+</species>
+<species metaid="s2" id="s2" name="s2" compartment="default" initialAmount="0">
+<annotation>
+<celldesigner:extension>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr1</celldesigner:proteinReference>
+</celldesigner:speciesIdentity>
+</celldesigner:extension>
+</annotation>
+</species>
+</listOfSpecies>
+<listOfReactions>
+<reaction metaid="re2" id="re2" reversible="false">
+<annotation>
+<celldesigner:extension>
+<celldesigner:reactionType>INHIBITION</celldesigner:reactionType>
+<celldesigner:baseReactants>
+<celldesigner:baseReactant species="s2" alias="sa2">
+<celldesigner:linkAnchor position="INACTIVE"/>
+</celldesigner:baseReactant>
+</celldesigner:baseReactants>
+<celldesigner:baseProducts>
+<celldesigner:baseProduct species="s1" alias="sa1">
+<celldesigner:linkAnchor position="INACTIVE"/>
+</celldesigner:baseProduct>
+</celldesigner:baseProducts>
+<celldesigner:connectScheme connectPolicy="direct">
+<celldesigner:listOfLineDirection>
+<celldesigner:lineDirection index="0" value="unknown"/>
+</celldesigner:listOfLineDirection>
+</celldesigner:connectScheme>
+<celldesigner:line width="1.0" color="ff000000"/>
+</celldesigner:extension>
+</annotation>
+<listOfReactants>
+<speciesReference metaid="CDMT00001" species="s2">
+<annotation>
+<celldesigner:extension>
+<celldesigner:alias>sa2</celldesigner:alias>
+</celldesigner:extension>
+</annotation>
+</speciesReference>
+</listOfReactants>
+<listOfProducts>
+<speciesReference metaid="CDMT00002" species="s1">
+<annotation>
+<celldesigner:extension>
+<celldesigner:alias>sa1</celldesigner:alias>
+</celldesigner:extension>
+</annotation>
+</speciesReference>
+</listOfProducts>
+</reaction>
+</listOfReactions>
+</model>
+</sbml>
diff --git a/converter-CellDesigner/testFiles/invalid/modulation_reaction.xml b/converter-CellDesigner/testFiles/reactions/modification_reaction/modulation.xml
similarity index 80%
rename from converter-CellDesigner/testFiles/invalid/modulation_reaction.xml
rename to converter-CellDesigner/testFiles/reactions/modification_reaction/modulation.xml
index 29e202c7bd7505fcd676d6dc915c5b73694760b8..bf023f95f2b62feb7c20e00d10d6af8017b873c0 100644
--- a/converter-CellDesigner/testFiles/invalid/modulation_reaction.xml
+++ b/converter-CellDesigner/testFiles/reactions/modification_reaction/modulation.xml
@@ -8,9 +8,9 @@
 <celldesigner:listOfCompartmentAliases/>
 <celldesigner:listOfComplexSpeciesAliases/>
 <celldesigner:listOfSpeciesAliases>
-<celldesigner:speciesAlias id="sa3" species="s3">
+<celldesigner:speciesAlias id="sa1" species="s1">
 <celldesigner:activity>inactive</celldesigner:activity>
-<celldesigner:bounds x="124.0" y="85.0" w="80.0" h="30.0"/>
+<celldesigner:bounds x="125.0" y="205.0" w="80.0" h="30.0"/>
 <celldesigner:font size="12"/>
 <celldesigner:view state="usual"/>
 <celldesigner:usualView>
@@ -27,16 +27,16 @@
 </celldesigner:briefView>
 <celldesigner:info state="empty" angle="-1.5707963267948966"/>
 </celldesigner:speciesAlias>
-<celldesigner:speciesAlias id="sa4" species="s4">
+<celldesigner:speciesAlias id="sa2" species="s2">
 <celldesigner:activity>inactive</celldesigner:activity>
-<celldesigner:bounds x="340.0" y="82.0" w="80.0" h="30.0"/>
+<celldesigner:bounds x="139.0" y="48.0" w="80.0" h="40.0"/>
 <celldesigner:font size="12"/>
 <celldesigner:view state="usual"/>
 <celldesigner:usualView>
 <celldesigner:innerPosition x="0.0" y="0.0"/>
-<celldesigner:boxSize width="80.0" height="30.0"/>
+<celldesigner:boxSize width="80.0" height="40.0"/>
 <celldesigner:singleLine width="1.0"/>
-<celldesigner:paint color="ffcc99ff" scheme="Color"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
 </celldesigner:usualView>
 <celldesigner:briefView>
 <celldesigner:innerPosition x="0.0" y="0.0"/>
@@ -48,7 +48,9 @@
 </celldesigner:speciesAlias>
 </celldesigner:listOfSpeciesAliases>
 <celldesigner:listOfGroups/>
-<celldesigner:listOfProteins/>
+<celldesigner:listOfProteins>
+<celldesigner:protein id="pr1" name="s2" type="GENERIC"/>
+</celldesigner:listOfProteins>
 <celldesigner:listOfGenes/>
 <celldesigner:listOfRNAs/>
 <celldesigner:listOfAntisenseRNAs/>
@@ -87,41 +89,41 @@
 <compartment metaid="default" id="default" size="1" units="volume"/>
 </listOfCompartments>
 <listOfSpecies>
-<species metaid="s3" id="s3" name="s3" compartment="default" initialAmount="0">
+<species metaid="s1" id="s1" name="s1" compartment="default" initialAmount="0">
 <annotation>
 <celldesigner:extension>
 <celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
 <celldesigner:speciesIdentity>
 <celldesigner:class>PHENOTYPE</celldesigner:class>
-<celldesigner:name>s3</celldesigner:name>
+<celldesigner:name>s1</celldesigner:name>
 </celldesigner:speciesIdentity>
 </celldesigner:extension>
 </annotation>
 </species>
-<species metaid="s4" id="s4" name="s4" compartment="default" initialAmount="0">
+<species metaid="s2" id="s2" name="s2" compartment="default" initialAmount="0">
 <annotation>
 <celldesigner:extension>
 <celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
 <celldesigner:speciesIdentity>
-<celldesigner:class>PHENOTYPE</celldesigner:class>
-<celldesigner:name>s4</celldesigner:name>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr1</celldesigner:proteinReference>
 </celldesigner:speciesIdentity>
 </celldesigner:extension>
 </annotation>
 </species>
 </listOfSpecies>
 <listOfReactions>
-<reaction metaid="re3" id="re3" reversible="false">
+<reaction metaid="re1" id="re1" reversible="false">
 <annotation>
 <celldesigner:extension>
 <celldesigner:reactionType>MODULATION</celldesigner:reactionType>
 <celldesigner:baseReactants>
-<celldesigner:baseReactant species="s3" alias="sa3">
+<celldesigner:baseReactant species="s2" alias="sa2">
 <celldesigner:linkAnchor position="INACTIVE"/>
 </celldesigner:baseReactant>
 </celldesigner:baseReactants>
 <celldesigner:baseProducts>
-<celldesigner:baseProduct species="s4" alias="sa4">
+<celldesigner:baseProduct species="s1" alias="sa1">
 <celldesigner:linkAnchor position="INACTIVE"/>
 </celldesigner:baseProduct>
 </celldesigner:baseProducts>
@@ -134,19 +136,19 @@
 </celldesigner:extension>
 </annotation>
 <listOfReactants>
-<speciesReference metaid="CDMT00008" species="s3">
+<speciesReference metaid="CDMT00001" species="s2">
 <annotation>
 <celldesigner:extension>
-<celldesigner:alias>sa3</celldesigner:alias>
+<celldesigner:alias>sa2</celldesigner:alias>
 </celldesigner:extension>
 </annotation>
 </speciesReference>
 </listOfReactants>
 <listOfProducts>
-<speciesReference metaid="CDMT00009" species="s4">
+<speciesReference metaid="CDMT00002" species="s1">
 <annotation>
 <celldesigner:extension>
-<celldesigner:alias>sa4</celldesigner:alias>
+<celldesigner:alias>sa1</celldesigner:alias>
 </celldesigner:extension>
 </annotation>
 </speciesReference>
diff --git a/converter-CellDesigner/testFiles/invalid/physical_stimulation_reaction.xml b/converter-CellDesigner/testFiles/reactions/modification_reaction/physical_stimulation.xml
similarity index 80%
rename from converter-CellDesigner/testFiles/invalid/physical_stimulation_reaction.xml
rename to converter-CellDesigner/testFiles/reactions/modification_reaction/physical_stimulation.xml
index afdff5128ae150e9f704beb04d2a64ae0eaa66d5..c993c4f91ddd0e80cd4cbb154acf03434b193b02 100644
--- a/converter-CellDesigner/testFiles/invalid/physical_stimulation_reaction.xml
+++ b/converter-CellDesigner/testFiles/reactions/modification_reaction/physical_stimulation.xml
@@ -8,9 +8,9 @@
 <celldesigner:listOfCompartmentAliases/>
 <celldesigner:listOfComplexSpeciesAliases/>
 <celldesigner:listOfSpeciesAliases>
-<celldesigner:speciesAlias id="sa3" species="s3">
+<celldesigner:speciesAlias id="sa1" species="s1">
 <celldesigner:activity>inactive</celldesigner:activity>
-<celldesigner:bounds x="124.0" y="85.0" w="80.0" h="30.0"/>
+<celldesigner:bounds x="125.0" y="205.0" w="80.0" h="30.0"/>
 <celldesigner:font size="12"/>
 <celldesigner:view state="usual"/>
 <celldesigner:usualView>
@@ -27,16 +27,16 @@
 </celldesigner:briefView>
 <celldesigner:info state="empty" angle="-1.5707963267948966"/>
 </celldesigner:speciesAlias>
-<celldesigner:speciesAlias id="sa4" species="s4">
+<celldesigner:speciesAlias id="sa2" species="s2">
 <celldesigner:activity>inactive</celldesigner:activity>
-<celldesigner:bounds x="340.0" y="82.0" w="80.0" h="30.0"/>
+<celldesigner:bounds x="139.0" y="48.0" w="80.0" h="40.0"/>
 <celldesigner:font size="12"/>
 <celldesigner:view state="usual"/>
 <celldesigner:usualView>
 <celldesigner:innerPosition x="0.0" y="0.0"/>
-<celldesigner:boxSize width="80.0" height="30.0"/>
+<celldesigner:boxSize width="80.0" height="40.0"/>
 <celldesigner:singleLine width="1.0"/>
-<celldesigner:paint color="ffcc99ff" scheme="Color"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
 </celldesigner:usualView>
 <celldesigner:briefView>
 <celldesigner:innerPosition x="0.0" y="0.0"/>
@@ -48,7 +48,9 @@
 </celldesigner:speciesAlias>
 </celldesigner:listOfSpeciesAliases>
 <celldesigner:listOfGroups/>
-<celldesigner:listOfProteins/>
+<celldesigner:listOfProteins>
+<celldesigner:protein id="pr1" name="s2" type="GENERIC"/>
+</celldesigner:listOfProteins>
 <celldesigner:listOfGenes/>
 <celldesigner:listOfRNAs/>
 <celldesigner:listOfAntisenseRNAs/>
@@ -87,41 +89,41 @@
 <compartment metaid="default" id="default" size="1" units="volume"/>
 </listOfCompartments>
 <listOfSpecies>
-<species metaid="s3" id="s3" name="s3" compartment="default" initialAmount="0">
+<species metaid="s1" id="s1" name="s1" compartment="default" initialAmount="0">
 <annotation>
 <celldesigner:extension>
 <celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
 <celldesigner:speciesIdentity>
 <celldesigner:class>PHENOTYPE</celldesigner:class>
-<celldesigner:name>s3</celldesigner:name>
+<celldesigner:name>s1</celldesigner:name>
 </celldesigner:speciesIdentity>
 </celldesigner:extension>
 </annotation>
 </species>
-<species metaid="s4" id="s4" name="s4" compartment="default" initialAmount="0">
+<species metaid="s2" id="s2" name="s2" compartment="default" initialAmount="0">
 <annotation>
 <celldesigner:extension>
 <celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
 <celldesigner:speciesIdentity>
-<celldesigner:class>PHENOTYPE</celldesigner:class>
-<celldesigner:name>s4</celldesigner:name>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr1</celldesigner:proteinReference>
 </celldesigner:speciesIdentity>
 </celldesigner:extension>
 </annotation>
 </species>
 </listOfSpecies>
 <listOfReactions>
-<reaction metaid="re3" id="re3" reversible="false">
+<reaction metaid="re1" id="re1" reversible="false">
 <annotation>
 <celldesigner:extension>
 <celldesigner:reactionType>PHYSICAL_STIMULATION</celldesigner:reactionType>
 <celldesigner:baseReactants>
-<celldesigner:baseReactant species="s3" alias="sa3">
+<celldesigner:baseReactant species="s2" alias="sa2">
 <celldesigner:linkAnchor position="INACTIVE"/>
 </celldesigner:baseReactant>
 </celldesigner:baseReactants>
 <celldesigner:baseProducts>
-<celldesigner:baseProduct species="s4" alias="sa4">
+<celldesigner:baseProduct species="s1" alias="sa1">
 <celldesigner:linkAnchor position="INACTIVE"/>
 </celldesigner:baseProduct>
 </celldesigner:baseProducts>
@@ -134,19 +136,19 @@
 </celldesigner:extension>
 </annotation>
 <listOfReactants>
-<speciesReference metaid="CDMT00008" species="s3">
+<speciesReference metaid="CDMT00001" species="s2">
 <annotation>
 <celldesigner:extension>
-<celldesigner:alias>sa3</celldesigner:alias>
+<celldesigner:alias>sa2</celldesigner:alias>
 </celldesigner:extension>
 </annotation>
 </speciesReference>
 </listOfReactants>
 <listOfProducts>
-<speciesReference metaid="CDMT00009" species="s4">
+<speciesReference metaid="CDMT00002" species="s1">
 <annotation>
 <celldesigner:extension>
-<celldesigner:alias>sa4</celldesigner:alias>
+<celldesigner:alias>sa1</celldesigner:alias>
 </celldesigner:extension>
 </annotation>
 </speciesReference>
diff --git a/converter-CellDesigner/testFiles/invalid/inhibition_reaction.xml b/converter-CellDesigner/testFiles/reactions/modification_reaction/trigger.xml
similarity index 79%
rename from converter-CellDesigner/testFiles/invalid/inhibition_reaction.xml
rename to converter-CellDesigner/testFiles/reactions/modification_reaction/trigger.xml
index 4f86186a56af1c19bf33113da713c6896f4481f5..8ba709b833c09f177b05e75b30dee46227343ad1 100644
--- a/converter-CellDesigner/testFiles/invalid/inhibition_reaction.xml
+++ b/converter-CellDesigner/testFiles/reactions/modification_reaction/trigger.xml
@@ -8,9 +8,9 @@
 <celldesigner:listOfCompartmentAliases/>
 <celldesigner:listOfComplexSpeciesAliases/>
 <celldesigner:listOfSpeciesAliases>
-<celldesigner:speciesAlias id="sa3" species="s3">
+<celldesigner:speciesAlias id="sa1" species="s1">
 <celldesigner:activity>inactive</celldesigner:activity>
-<celldesigner:bounds x="124.0" y="85.0" w="80.0" h="30.0"/>
+<celldesigner:bounds x="125.0" y="205.0" w="80.0" h="30.0"/>
 <celldesigner:font size="12"/>
 <celldesigner:view state="usual"/>
 <celldesigner:usualView>
@@ -27,16 +27,16 @@
 </celldesigner:briefView>
 <celldesigner:info state="empty" angle="-1.5707963267948966"/>
 </celldesigner:speciesAlias>
-<celldesigner:speciesAlias id="sa4" species="s4">
+<celldesigner:speciesAlias id="sa2" species="s2">
 <celldesigner:activity>inactive</celldesigner:activity>
-<celldesigner:bounds x="340.0" y="82.0" w="80.0" h="30.0"/>
+<celldesigner:bounds x="139.0" y="48.0" w="80.0" h="40.0"/>
 <celldesigner:font size="12"/>
 <celldesigner:view state="usual"/>
 <celldesigner:usualView>
 <celldesigner:innerPosition x="0.0" y="0.0"/>
-<celldesigner:boxSize width="80.0" height="30.0"/>
+<celldesigner:boxSize width="80.0" height="40.0"/>
 <celldesigner:singleLine width="1.0"/>
-<celldesigner:paint color="ffcc99ff" scheme="Color"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
 </celldesigner:usualView>
 <celldesigner:briefView>
 <celldesigner:innerPosition x="0.0" y="0.0"/>
@@ -48,7 +48,9 @@
 </celldesigner:speciesAlias>
 </celldesigner:listOfSpeciesAliases>
 <celldesigner:listOfGroups/>
-<celldesigner:listOfProteins/>
+<celldesigner:listOfProteins>
+<celldesigner:protein id="pr1" name="s2" type="GENERIC"/>
+</celldesigner:listOfProteins>
 <celldesigner:listOfGenes/>
 <celldesigner:listOfRNAs/>
 <celldesigner:listOfAntisenseRNAs/>
@@ -87,41 +89,41 @@
 <compartment metaid="default" id="default" size="1" units="volume"/>
 </listOfCompartments>
 <listOfSpecies>
-<species metaid="s3" id="s3" name="s3" compartment="default" initialAmount="0">
+<species metaid="s1" id="s1" name="s1" compartment="default" initialAmount="0">
 <annotation>
 <celldesigner:extension>
 <celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
 <celldesigner:speciesIdentity>
 <celldesigner:class>PHENOTYPE</celldesigner:class>
-<celldesigner:name>s3</celldesigner:name>
+<celldesigner:name>s1</celldesigner:name>
 </celldesigner:speciesIdentity>
 </celldesigner:extension>
 </annotation>
 </species>
-<species metaid="s4" id="s4" name="s4" compartment="default" initialAmount="0">
+<species metaid="s2" id="s2" name="s2" compartment="default" initialAmount="0">
 <annotation>
 <celldesigner:extension>
 <celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
 <celldesigner:speciesIdentity>
-<celldesigner:class>PHENOTYPE</celldesigner:class>
-<celldesigner:name>s4</celldesigner:name>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr1</celldesigner:proteinReference>
 </celldesigner:speciesIdentity>
 </celldesigner:extension>
 </annotation>
 </species>
 </listOfSpecies>
 <listOfReactions>
-<reaction metaid="re3" id="re3" reversible="false">
+<reaction metaid="re1" id="re1" reversible="false">
 <annotation>
 <celldesigner:extension>
-<celldesigner:reactionType>INHIBITION</celldesigner:reactionType>
+<celldesigner:reactionType>TRIGGER</celldesigner:reactionType>
 <celldesigner:baseReactants>
-<celldesigner:baseReactant species="s3" alias="sa3">
+<celldesigner:baseReactant species="s2" alias="sa2">
 <celldesigner:linkAnchor position="INACTIVE"/>
 </celldesigner:baseReactant>
 </celldesigner:baseReactants>
 <celldesigner:baseProducts>
-<celldesigner:baseProduct species="s4" alias="sa4">
+<celldesigner:baseProduct species="s1" alias="sa1">
 <celldesigner:linkAnchor position="INACTIVE"/>
 </celldesigner:baseProduct>
 </celldesigner:baseProducts>
@@ -134,19 +136,19 @@
 </celldesigner:extension>
 </annotation>
 <listOfReactants>
-<speciesReference metaid="CDMT00008" species="s3">
+<speciesReference metaid="CDMT00001" species="s2">
 <annotation>
 <celldesigner:extension>
-<celldesigner:alias>sa3</celldesigner:alias>
+<celldesigner:alias>sa2</celldesigner:alias>
 </celldesigner:extension>
 </annotation>
 </speciesReference>
 </listOfReactants>
 <listOfProducts>
-<speciesReference metaid="CDMT00009" species="s4">
+<speciesReference metaid="CDMT00002" species="s1">
 <annotation>
 <celldesigner:extension>
-<celldesigner:alias>sa4</celldesigner:alias>
+<celldesigner:alias>sa1</celldesigner:alias>
 </celldesigner:extension>
 </annotation>
 </speciesReference>
diff --git a/converter-CellDesigner/testFiles/invalid/unknown_catalysis_reaction.xml b/converter-CellDesigner/testFiles/reactions/modification_reaction/unknown_catalysis.xml
similarity index 80%
rename from converter-CellDesigner/testFiles/invalid/unknown_catalysis_reaction.xml
rename to converter-CellDesigner/testFiles/reactions/modification_reaction/unknown_catalysis.xml
index ab49047d48110ea7f179e0a516422baa981acd9c..0c47dc498fa10638f836fb44c614770faf55420d 100644
--- a/converter-CellDesigner/testFiles/invalid/unknown_catalysis_reaction.xml
+++ b/converter-CellDesigner/testFiles/reactions/modification_reaction/unknown_catalysis.xml
@@ -8,9 +8,9 @@
 <celldesigner:listOfCompartmentAliases/>
 <celldesigner:listOfComplexSpeciesAliases/>
 <celldesigner:listOfSpeciesAliases>
-<celldesigner:speciesAlias id="sa3" species="s3">
+<celldesigner:speciesAlias id="sa1" species="s1">
 <celldesigner:activity>inactive</celldesigner:activity>
-<celldesigner:bounds x="124.0" y="85.0" w="80.0" h="30.0"/>
+<celldesigner:bounds x="125.0" y="205.0" w="80.0" h="30.0"/>
 <celldesigner:font size="12"/>
 <celldesigner:view state="usual"/>
 <celldesigner:usualView>
@@ -27,16 +27,16 @@
 </celldesigner:briefView>
 <celldesigner:info state="empty" angle="-1.5707963267948966"/>
 </celldesigner:speciesAlias>
-<celldesigner:speciesAlias id="sa4" species="s4">
+<celldesigner:speciesAlias id="sa2" species="s2">
 <celldesigner:activity>inactive</celldesigner:activity>
-<celldesigner:bounds x="340.0" y="82.0" w="80.0" h="30.0"/>
+<celldesigner:bounds x="139.0" y="48.0" w="80.0" h="40.0"/>
 <celldesigner:font size="12"/>
 <celldesigner:view state="usual"/>
 <celldesigner:usualView>
 <celldesigner:innerPosition x="0.0" y="0.0"/>
-<celldesigner:boxSize width="80.0" height="30.0"/>
+<celldesigner:boxSize width="80.0" height="40.0"/>
 <celldesigner:singleLine width="1.0"/>
-<celldesigner:paint color="ffcc99ff" scheme="Color"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
 </celldesigner:usualView>
 <celldesigner:briefView>
 <celldesigner:innerPosition x="0.0" y="0.0"/>
@@ -48,7 +48,9 @@
 </celldesigner:speciesAlias>
 </celldesigner:listOfSpeciesAliases>
 <celldesigner:listOfGroups/>
-<celldesigner:listOfProteins/>
+<celldesigner:listOfProteins>
+<celldesigner:protein id="pr1" name="s2" type="GENERIC"/>
+</celldesigner:listOfProteins>
 <celldesigner:listOfGenes/>
 <celldesigner:listOfRNAs/>
 <celldesigner:listOfAntisenseRNAs/>
@@ -87,41 +89,41 @@
 <compartment metaid="default" id="default" size="1" units="volume"/>
 </listOfCompartments>
 <listOfSpecies>
-<species metaid="s3" id="s3" name="s3" compartment="default" initialAmount="0">
+<species metaid="s1" id="s1" name="s1" compartment="default" initialAmount="0">
 <annotation>
 <celldesigner:extension>
 <celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
 <celldesigner:speciesIdentity>
 <celldesigner:class>PHENOTYPE</celldesigner:class>
-<celldesigner:name>s3</celldesigner:name>
+<celldesigner:name>s1</celldesigner:name>
 </celldesigner:speciesIdentity>
 </celldesigner:extension>
 </annotation>
 </species>
-<species metaid="s4" id="s4" name="s4" compartment="default" initialAmount="0">
+<species metaid="s2" id="s2" name="s2" compartment="default" initialAmount="0">
 <annotation>
 <celldesigner:extension>
 <celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
 <celldesigner:speciesIdentity>
-<celldesigner:class>PHENOTYPE</celldesigner:class>
-<celldesigner:name>s4</celldesigner:name>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr1</celldesigner:proteinReference>
 </celldesigner:speciesIdentity>
 </celldesigner:extension>
 </annotation>
 </species>
 </listOfSpecies>
 <listOfReactions>
-<reaction metaid="re3" id="re3" reversible="false">
+<reaction metaid="re1" id="re1" reversible="false">
 <annotation>
 <celldesigner:extension>
 <celldesigner:reactionType>UNKNOWN_CATALYSIS</celldesigner:reactionType>
 <celldesigner:baseReactants>
-<celldesigner:baseReactant species="s3" alias="sa3">
+<celldesigner:baseReactant species="s2" alias="sa2">
 <celldesigner:linkAnchor position="INACTIVE"/>
 </celldesigner:baseReactant>
 </celldesigner:baseReactants>
 <celldesigner:baseProducts>
-<celldesigner:baseProduct species="s4" alias="sa4">
+<celldesigner:baseProduct species="s1" alias="sa1">
 <celldesigner:linkAnchor position="INACTIVE"/>
 </celldesigner:baseProduct>
 </celldesigner:baseProducts>
@@ -134,19 +136,19 @@
 </celldesigner:extension>
 </annotation>
 <listOfReactants>
-<speciesReference metaid="CDMT00008" species="s3">
+<speciesReference metaid="CDMT00001" species="s2">
 <annotation>
 <celldesigner:extension>
-<celldesigner:alias>sa3</celldesigner:alias>
+<celldesigner:alias>sa2</celldesigner:alias>
 </celldesigner:extension>
 </annotation>
 </speciesReference>
 </listOfReactants>
 <listOfProducts>
-<speciesReference metaid="CDMT00009" species="s4">
+<speciesReference metaid="CDMT00002" species="s1">
 <annotation>
 <celldesigner:extension>
-<celldesigner:alias>sa4</celldesigner:alias>
+<celldesigner:alias>sa1</celldesigner:alias>
 </celldesigner:extension>
 </annotation>
 </speciesReference>
diff --git a/converter-CellDesigner/testFiles/reactions/modification_reaction/unknown_inhibition.xml b/converter-CellDesigner/testFiles/reactions/modification_reaction/unknown_inhibition.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ff2a9e5b4423f723a35eccd055da5994bbce0af2
--- /dev/null
+++ b/converter-CellDesigner/testFiles/reactions/modification_reaction/unknown_inhibition.xml
@@ -0,0 +1,159 @@
+<?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:speciesAlias id="sa1" species="s1">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="125.0" y="205.0" w="80.0" h="30.0"/>
+<celldesigner:font size="12"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="30.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffcc99ff" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="0.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa2" species="s2">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="139.0" y="48.0" w="80.0" h="40.0"/>
+<celldesigner:font size="12"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="40.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="0.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:speciesAlias>
+</celldesigner:listOfSpeciesAliases>
+<celldesigner:listOfGroups/>
+<celldesigner:listOfProteins>
+<celldesigner:protein id="pr1" name="s2" type="GENERIC"/>
+</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="CDMT00003" kind="mole"/>
+</listOfUnits>
+</unitDefinition>
+<unitDefinition metaid="volume" id="volume" name="volume">
+<listOfUnits>
+<unit metaid="CDMT00004" kind="litre"/>
+</listOfUnits>
+</unitDefinition>
+<unitDefinition metaid="area" id="area" name="area">
+<listOfUnits>
+<unit metaid="CDMT00005" kind="metre" exponent="2"/>
+</listOfUnits>
+</unitDefinition>
+<unitDefinition metaid="length" id="length" name="length">
+<listOfUnits>
+<unit metaid="CDMT00006" kind="metre"/>
+</listOfUnits>
+</unitDefinition>
+<unitDefinition metaid="time" id="time" name="time">
+<listOfUnits>
+<unit metaid="CDMT00007" kind="second"/>
+</listOfUnits>
+</unitDefinition>
+</listOfUnitDefinitions>
+<listOfCompartments>
+<compartment metaid="default" id="default" size="1" units="volume"/>
+</listOfCompartments>
+<listOfSpecies>
+<species metaid="s1" id="s1" name="s1" compartment="default" initialAmount="0">
+<annotation>
+<celldesigner:extension>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>PHENOTYPE</celldesigner:class>
+<celldesigner:name>s1</celldesigner:name>
+</celldesigner:speciesIdentity>
+</celldesigner:extension>
+</annotation>
+</species>
+<species metaid="s2" id="s2" name="s2" compartment="default" initialAmount="0">
+<annotation>
+<celldesigner:extension>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr1</celldesigner:proteinReference>
+</celldesigner:speciesIdentity>
+</celldesigner:extension>
+</annotation>
+</species>
+</listOfSpecies>
+<listOfReactions>
+<reaction metaid="re1" id="re1" reversible="false">
+<annotation>
+<celldesigner:extension>
+<celldesigner:reactionType>UNKNOWN_INHIBITION</celldesigner:reactionType>
+<celldesigner:baseReactants>
+<celldesigner:baseReactant species="s2" alias="sa2">
+<celldesigner:linkAnchor position="INACTIVE"/>
+</celldesigner:baseReactant>
+</celldesigner:baseReactants>
+<celldesigner:baseProducts>
+<celldesigner:baseProduct species="s1" alias="sa1">
+<celldesigner:linkAnchor position="INACTIVE"/>
+</celldesigner:baseProduct>
+</celldesigner:baseProducts>
+<celldesigner:connectScheme connectPolicy="direct">
+<celldesigner:listOfLineDirection>
+<celldesigner:lineDirection index="0" value="unknown"/>
+</celldesigner:listOfLineDirection>
+</celldesigner:connectScheme>
+<celldesigner:line width="1.0" color="ff000000"/>
+</celldesigner:extension>
+</annotation>
+<listOfReactants>
+<speciesReference metaid="CDMT00001" species="s2">
+<annotation>
+<celldesigner:extension>
+<celldesigner:alias>sa2</celldesigner:alias>
+</celldesigner:extension>
+</annotation>
+</speciesReference>
+</listOfReactants>
+<listOfProducts>
+<speciesReference metaid="CDMT00002" species="s1">
+<annotation>
+<celldesigner:extension>
+<celldesigner:alias>sa1</celldesigner:alias>
+</celldesigner:extension>
+</annotation>
+</speciesReference>
+</listOfProducts>
+</reaction>
+</listOfReactions>
+</model>
+</sbml>
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/reaction/type/CatalysisReaction.java b/model/src/main/java/lcsb/mapviewer/model/map/reaction/type/CatalysisReaction.java
new file mode 100644
index 0000000000000000000000000000000000000000..a226aeed7afb929d05c59533673433d4294a27ba
--- /dev/null
+++ b/model/src/main/java/lcsb/mapviewer/model/map/reaction/type/CatalysisReaction.java
@@ -0,0 +1,67 @@
+package lcsb.mapviewer.model.map.reaction.type;
+
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+
+import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.model.map.reaction.Reaction;
+
+/**
+ * This class defines a standard CellDesigner catalysis reaction.
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+@Entity
+@DiscriminatorValue("CATALYSIS_REACTION")
+public class CatalysisReaction extends Reaction implements SimpleReactionInterface, ModifierReactionNotation {
+
+	/**
+	 * 
+	 */
+	private static final long	serialVersionUID	= 1L;
+
+	/**
+	 * Default constructor.
+	 */
+	public CatalysisReaction() {
+		super();
+	}
+
+	/**
+	 * Constructor that copies data from the parameter given in the argument.
+	 * 
+	 * @param result
+	 *          parent reaction from which we copy data
+	 */
+	public CatalysisReaction(Reaction result) {
+		super(result);
+		if (result.getProducts().size() < 1) {
+			throw new InvalidArgumentException("Reaction cannot be transformed to " + getStringType() + ": number of products must be greater than 0");
+		}
+		if (result.getReactants().size() < 1) {
+			throw new InvalidArgumentException("Reaction cannot be transformed to " + getStringType() + ": number of reactants must be greater than 0");
+		}
+	}
+
+	@Override
+	public String getStringType() {
+		return "Catalysis";
+	}
+
+	@Override
+	public ReactionRect getReactionRect() {
+		return null;
+	}
+
+	@Override
+	public CatalysisReaction copy() {
+		if (this.getClass() == CatalysisReaction.class) {
+			return new CatalysisReaction(this);
+		} else {
+			throw new NotImplementedException("Method copy() should be overriden in class " + this.getClass());
+		}
+	}
+
+}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/reaction/type/InhibitionReaction.java b/model/src/main/java/lcsb/mapviewer/model/map/reaction/type/InhibitionReaction.java
new file mode 100644
index 0000000000000000000000000000000000000000..f44a73ee55b9df8afcf7d7dc4938438b42d75c77
--- /dev/null
+++ b/model/src/main/java/lcsb/mapviewer/model/map/reaction/type/InhibitionReaction.java
@@ -0,0 +1,67 @@
+package lcsb.mapviewer.model.map.reaction.type;
+
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+
+import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.model.map.reaction.Reaction;
+
+/**
+ * This class defines a standard CellDesigner inhibition reaction.
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+@Entity
+@DiscriminatorValue("INHIBITION_REACTION")
+public class InhibitionReaction extends Reaction implements SimpleReactionInterface, ModifierReactionNotation {
+
+	/**
+	 * 
+	 */
+	private static final long	serialVersionUID	= 1L;
+
+	/**
+	 * Default constructor.
+	 */
+	public InhibitionReaction() {
+		super();
+	}
+
+	/**
+	 * Constructor that copies data from the parameter given in the argument.
+	 * 
+	 * @param result
+	 *          parent reaction from which we copy data
+	 */
+	public InhibitionReaction(Reaction result) {
+		super(result);
+		if (result.getProducts().size() < 1) {
+			throw new InvalidArgumentException("Reaction cannot be transformed to " + getStringType() + ": number of products must be greater than 0");
+		}
+		if (result.getReactants().size() < 1) {
+			throw new InvalidArgumentException("Reaction cannot be transformed to " + getStringType() + ": number of reactants must be greater than 0");
+		}
+	}
+
+	@Override
+	public String getStringType() {
+		return "Inhibition";
+	}
+
+	@Override
+	public ReactionRect getReactionRect() {
+		return null;
+	}
+
+	@Override
+	public InhibitionReaction copy() {
+		if (this.getClass() == InhibitionReaction.class) {
+			return new InhibitionReaction(this);
+		} else {
+			throw new NotImplementedException("Method copy() should be overriden in class " + this.getClass());
+		}
+	}
+
+}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/reaction/type/ModifierReactionNotation.java b/model/src/main/java/lcsb/mapviewer/model/map/reaction/type/ModifierReactionNotation.java
new file mode 100644
index 0000000000000000000000000000000000000000..1dcafec54cb8e179a882be3d6af32cd710cacdad
--- /dev/null
+++ b/model/src/main/java/lcsb/mapviewer/model/map/reaction/type/ModifierReactionNotation.java
@@ -0,0 +1,15 @@
+package lcsb.mapviewer.model.map.reaction.type;
+
+import lcsb.mapviewer.model.map.species.Phenotype;
+
+/**
+ * Interface used for marking {@link lcsb.mapviewer.model.map.reaction.Reaction
+ * Reaction} extensions that implements something that should be modifier but is
+ * a reaction to {@link Phenotype}.
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+public interface ModifierReactionNotation {
+
+}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/reaction/type/ModulationReaction.java b/model/src/main/java/lcsb/mapviewer/model/map/reaction/type/ModulationReaction.java
new file mode 100644
index 0000000000000000000000000000000000000000..7c007cf6148705cbac8efaf8e9271bad3fcc1d63
--- /dev/null
+++ b/model/src/main/java/lcsb/mapviewer/model/map/reaction/type/ModulationReaction.java
@@ -0,0 +1,67 @@
+package lcsb.mapviewer.model.map.reaction.type;
+
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+
+import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.model.map.reaction.Reaction;
+
+/**
+ * This class defines a standard CellDesigner modulation reaction.
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+@Entity
+@DiscriminatorValue("MODULATION_REACTION")
+public class ModulationReaction extends Reaction implements SimpleReactionInterface, ModifierReactionNotation {
+
+	/**
+	 * 
+	 */
+	private static final long	serialVersionUID	= 1L;
+
+	/**
+	 * Default constructor.
+	 */
+	public ModulationReaction() {
+		super();
+	}
+
+	/**
+	 * Constructor that copies data from the parameter given in the argument.
+	 * 
+	 * @param result
+	 *          parent reaction from which we copy data
+	 */
+	public ModulationReaction(Reaction result) {
+		super(result);
+		if (result.getProducts().size() < 1) {
+			throw new InvalidArgumentException("Reaction cannot be transformed to " + getStringType() + ": number of products must be greater than 0");
+		}
+		if (result.getReactants().size() < 1) {
+			throw new InvalidArgumentException("Reaction cannot be transformed to " + getStringType() + ": number of reactants must be greater than 0");
+		}
+	}
+
+	@Override
+	public String getStringType() {
+		return "Modulation";
+	}
+
+	@Override
+	public ReactionRect getReactionRect() {
+		return null;
+	}
+
+	@Override
+	public ModulationReaction copy() {
+		if (this.getClass() == ModulationReaction.class) {
+			return new ModulationReaction(this);
+		} else {
+			throw new NotImplementedException("Method copy() should be overriden in class " + this.getClass());
+		}
+	}
+
+}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/reaction/type/PhysicalStimulationReaction.java b/model/src/main/java/lcsb/mapviewer/model/map/reaction/type/PhysicalStimulationReaction.java
new file mode 100644
index 0000000000000000000000000000000000000000..99a5b46e136ef6d80b7050aa3eb6b52fcace414d
--- /dev/null
+++ b/model/src/main/java/lcsb/mapviewer/model/map/reaction/type/PhysicalStimulationReaction.java
@@ -0,0 +1,67 @@
+package lcsb.mapviewer.model.map.reaction.type;
+
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+
+import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.model.map.reaction.Reaction;
+
+/**
+ * This class defines a standard CellDesigner physical stimulation reaction.
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+@Entity
+@DiscriminatorValue("PHYSICAL_STIMULATION_REACTION")
+public class PhysicalStimulationReaction extends Reaction implements SimpleReactionInterface, ModifierReactionNotation {
+
+	/**
+	 * 
+	 */
+	private static final long	serialVersionUID	= 1L;
+
+	/**
+	 * Default constructor.
+	 */
+	public PhysicalStimulationReaction() {
+		super();
+	}
+
+	/**
+	 * Constructor that copies data from the parameter given in the argument.
+	 * 
+	 * @param result
+	 *          parent reaction from which we copy data
+	 */
+	public PhysicalStimulationReaction(Reaction result) {
+		super(result);
+		if (result.getProducts().size() < 1) {
+			throw new InvalidArgumentException("Reaction cannot be transformed to " + getStringType() + ": number of products must be greater than 0");
+		}
+		if (result.getReactants().size() < 1) {
+			throw new InvalidArgumentException("Reaction cannot be transformed to " + getStringType() + ": number of reactants must be greater than 0");
+		}
+	}
+
+	@Override
+	public String getStringType() {
+		return "Physical stimulation";
+	}
+
+	@Override
+	public ReactionRect getReactionRect() {
+		return null;
+	}
+
+	@Override
+	public PhysicalStimulationReaction copy() {
+		if (this.getClass() == PhysicalStimulationReaction.class) {
+			return new PhysicalStimulationReaction(this);
+		} else {
+			throw new NotImplementedException("Method copy() should be overriden in class " + this.getClass());
+		}
+	}
+
+}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/reaction/type/ReducedNotation.java b/model/src/main/java/lcsb/mapviewer/model/map/reaction/type/ReducedNotation.java
index 56d5895f2f41e027c3be4775177ca0d257d06a08..f0b5da8973baf18f36c3565b28193beb0c800bd9 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/reaction/type/ReducedNotation.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/reaction/type/ReducedNotation.java
@@ -1,6 +1,7 @@
 package lcsb.mapviewer.model.map.reaction.type;
 
 /**
+ * 
  * Interface used for marking {@link lcsb.mapviewer.model.map.reaction.Reaction
  * Reaction} extensions that implements reduced notation in CellDesigner. These
  * classes should have more than one reactant and product and cannot have any
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/reaction/type/TriggerReaction.java b/model/src/main/java/lcsb/mapviewer/model/map/reaction/type/TriggerReaction.java
new file mode 100644
index 0000000000000000000000000000000000000000..ca7575dde62ab9453b56139eeb20951c2f81a293
--- /dev/null
+++ b/model/src/main/java/lcsb/mapviewer/model/map/reaction/type/TriggerReaction.java
@@ -0,0 +1,67 @@
+package lcsb.mapviewer.model.map.reaction.type;
+
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+
+import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.model.map.reaction.Reaction;
+
+/**
+ * This class defines a standard CellDesigner trigger reaction.
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+@Entity
+@DiscriminatorValue("TRIGGER_REACTION")
+public class TriggerReaction extends Reaction implements SimpleReactionInterface, ModifierReactionNotation {
+
+	/**
+	 * 
+	 */
+	private static final long	serialVersionUID	= 1L;
+
+	/**
+	 * Default constructor.
+	 */
+	public TriggerReaction() {
+		super();
+	}
+
+	/**
+	 * Constructor that copies data from the parameter given in the argument.
+	 * 
+	 * @param result
+	 *          parent reaction from which we copy data
+	 */
+	public TriggerReaction(Reaction result) {
+		super(result);
+		if (result.getProducts().size() < 1) {
+			throw new InvalidArgumentException("Reaction cannot be transformed to " + getStringType() + ": number of products must be greater than 0");
+		}
+		if (result.getReactants().size() < 1) {
+			throw new InvalidArgumentException("Reaction cannot be transformed to " + getStringType() + ": number of reactants must be greater than 0");
+		}
+	}
+
+	@Override
+	public String getStringType() {
+		return "Trigger";
+	}
+
+	@Override
+	public ReactionRect getReactionRect() {
+		return null;
+	}
+
+	@Override
+	public TriggerReaction copy() {
+		if (this.getClass() == TriggerReaction.class) {
+			return new TriggerReaction(this);
+		} else {
+			throw new NotImplementedException("Method copy() should be overriden in class " + this.getClass());
+		}
+	}
+
+}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/reaction/type/UnknownCatalysisReaction.java b/model/src/main/java/lcsb/mapviewer/model/map/reaction/type/UnknownCatalysisReaction.java
new file mode 100644
index 0000000000000000000000000000000000000000..bce08d8bc1e538101d2642192ac789054575c0e5
--- /dev/null
+++ b/model/src/main/java/lcsb/mapviewer/model/map/reaction/type/UnknownCatalysisReaction.java
@@ -0,0 +1,67 @@
+package lcsb.mapviewer.model.map.reaction.type;
+
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+
+import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.model.map.reaction.Reaction;
+
+/**
+ * This class defines a standard CellDesigner unknown catalysis reaction.
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+@Entity
+@DiscriminatorValue("UNKNOWN_CATALYSIS_REACTION")
+public class UnknownCatalysisReaction extends Reaction implements SimpleReactionInterface, ModifierReactionNotation {
+
+	/**
+	 * 
+	 */
+	private static final long	serialVersionUID	= 1L;
+
+	/**
+	 * Default constructor.
+	 */
+	public UnknownCatalysisReaction() {
+		super();
+	}
+
+	/**
+	 * Constructor that copies data from the parameter given in the argument.
+	 * 
+	 * @param result
+	 *          parent reaction from which we copy data
+	 */
+	public UnknownCatalysisReaction(Reaction result) {
+		super(result);
+		if (result.getProducts().size() < 1) {
+			throw new InvalidArgumentException("Reaction cannot be transformed to " + getStringType() + ": number of products must be greater than 0");
+		}
+		if (result.getReactants().size() < 1) {
+			throw new InvalidArgumentException("Reaction cannot be transformed to " + getStringType() + ": number of reactants must be greater than 0");
+		}
+	}
+
+	@Override
+	public String getStringType() {
+		return "Unknown catalysis";
+	}
+
+	@Override
+	public ReactionRect getReactionRect() {
+		return null;
+	}
+
+	@Override
+	public UnknownCatalysisReaction copy() {
+		if (this.getClass() == UnknownCatalysisReaction.class) {
+			return new UnknownCatalysisReaction(this);
+		} else {
+			throw new NotImplementedException("Method copy() should be overriden in class " + this.getClass());
+		}
+	}
+
+}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/reaction/type/UnknownInhibitionReaction.java b/model/src/main/java/lcsb/mapviewer/model/map/reaction/type/UnknownInhibitionReaction.java
new file mode 100644
index 0000000000000000000000000000000000000000..42c4d6ad996d6e7d72bf913f513e1249e5b4dcbf
--- /dev/null
+++ b/model/src/main/java/lcsb/mapviewer/model/map/reaction/type/UnknownInhibitionReaction.java
@@ -0,0 +1,67 @@
+package lcsb.mapviewer.model.map.reaction.type;
+
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+
+import lcsb.mapviewer.common.exception.InvalidArgumentException;
+import lcsb.mapviewer.common.exception.NotImplementedException;
+import lcsb.mapviewer.model.map.reaction.Reaction;
+
+/**
+ * This class defines a standard CellDesigner unknown inhibition reaction.
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+@Entity
+@DiscriminatorValue("UNKNOWN_INHIBITION_REACTION")
+public class UnknownInhibitionReaction extends Reaction implements SimpleReactionInterface, ModifierReactionNotation {
+
+	/**
+	 * 
+	 */
+	private static final long	serialVersionUID	= 1L;
+
+	/**
+	 * Default constructor.
+	 */
+	public UnknownInhibitionReaction() {
+		super();
+	}
+
+	/**
+	 * Constructor that copies data from the parameter given in the argument.
+	 * 
+	 * @param result
+	 *          parent reaction from which we copy data
+	 */
+	public UnknownInhibitionReaction(Reaction result) {
+		super(result);
+		if (result.getProducts().size() < 1) {
+			throw new InvalidArgumentException("Reaction cannot be transformed to " + getStringType() + ": number of products must be greater than 0");
+		}
+		if (result.getReactants().size() < 1) {
+			throw new InvalidArgumentException("Reaction cannot be transformed to " + getStringType() + ": number of reactants must be greater than 0");
+		}
+	}
+
+	@Override
+	public String getStringType() {
+		return "Unknown inhibition";
+	}
+
+	@Override
+	public ReactionRect getReactionRect() {
+		return null;
+	}
+
+	@Override
+	public UnknownInhibitionReaction copy() {
+		if (this.getClass() == UnknownInhibitionReaction.class) {
+			return new UnknownInhibitionReaction(this);
+		} else {
+			throw new NotImplementedException("Method copy() should be overriden in class " + this.getClass());
+		}
+	}
+
+}