diff --git a/de.prob.units/src/de/prob/units/problems/IncorrectUnitDefinitionMarker.java b/de.prob.units/src/de/prob/units/problems/IncorrectUnitDefinitionMarker.java
new file mode 100644
index 0000000000000000000000000000000000000000..d7f4e0e209b07a5e6672438eb9fb9ead979ee746
--- /dev/null
+++ b/de.prob.units/src/de/prob/units/problems/IncorrectUnitDefinitionMarker.java
@@ -0,0 +1,35 @@
+package de.prob.units.problems;
+
+import org.eclipse.core.resources.IMarker;
+import org.rodinp.core.IRodinProblem;
+
+import de.prob.units.Activator;
+
+public class IncorrectUnitDefinitionMarker implements IRodinProblem {
+
+	private final String message;
+	private final int severity = IMarker.SEVERITY_ERROR;
+	public static final String ERROR_CODE = Activator.PLUGIN_ID + "."
+			+ "incorrectUnitDefinition";
+
+	public IncorrectUnitDefinitionMarker(String cstOrVar) {
+		this.message = "Incorrect Unit Definition on Constant/Variable "
+				+ cstOrVar;
+	}
+
+	@Override
+	public String getErrorCode() {
+		return ERROR_CODE;
+	}
+
+	@Override
+	public String getLocalizedMessage(Object[] arg0) {
+		return message;
+	}
+
+	@Override
+	public int getSeverity() {
+		return severity;
+	}
+
+}
diff --git a/de.prob.units/src/de/prob/units/problems/MultipleUnitsInferredMarker.java b/de.prob.units/src/de/prob/units/problems/MultipleUnitsInferredMarker.java
index 571d91aaaba3071d01ff7a8a3f86fd4daf7e24b3..3daaa97a0666685bec7b28970fa324f98cafe30c 100644
--- a/de.prob.units/src/de/prob/units/problems/MultipleUnitsInferredMarker.java
+++ b/de.prob.units/src/de/prob/units/problems/MultipleUnitsInferredMarker.java
@@ -1,19 +1,21 @@
 package de.prob.units.problems;
 
+import org.eclipse.core.resources.IMarker;
 import org.rodinp.core.IRodinProblem;
 
 import de.prob.units.Activator;
 
 public class MultipleUnitsInferredMarker implements IRodinProblem {
 
-	private String message;
-	private int severity;
+	private final String message;
+	private final int severity = IMarker.SEVERITY_ERROR;
+
 	public static final String ERROR_CODE = Activator.PLUGIN_ID + "."
 			+ "multipleUnitsInferred";
 
-	public MultipleUnitsInferredMarker(int severity, String message) {
-		this.severity = severity;
-		this.message = message;
+	public MultipleUnitsInferredMarker(String cstOrVar) {
+		this.message = "Multiple Units inferred for Constant/Variable "
+				+ cstOrVar;
 	}
 
 	@Override
diff --git a/de.prob.units/src/de/prob/units/problems/NoUnitInferredMarker.java b/de.prob.units/src/de/prob/units/problems/NoUnitInferredMarker.java
new file mode 100644
index 0000000000000000000000000000000000000000..8f011edccb79b26e67cd59da893354aa5d6a2830
--- /dev/null
+++ b/de.prob.units/src/de/prob/units/problems/NoUnitInferredMarker.java
@@ -0,0 +1,34 @@
+package de.prob.units.problems;
+
+import org.eclipse.core.resources.IMarker;
+import org.rodinp.core.IRodinProblem;
+
+import de.prob.units.Activator;
+
+public class NoUnitInferredMarker implements IRodinProblem {
+
+	private final String message;
+	private final int severity = IMarker.SEVERITY_WARNING;
+	public static final String ERROR_CODE = Activator.PLUGIN_ID + "."
+			+ "multipleUnitsInferred";
+
+	public NoUnitInferredMarker(String cstOrVar) {
+		this.message = "No Units inferred for Constant/Variable " + cstOrVar;
+	}
+
+	@Override
+	public String getErrorCode() {
+		return ERROR_CODE;
+	}
+
+	@Override
+	public String getLocalizedMessage(Object[] arg0) {
+		return message;
+	}
+
+	@Override
+	public int getSeverity() {
+		return severity;
+	}
+
+}
diff --git a/de.prob.units/src/de/prob/units/ui/StartUnitAnalysisHandler.java b/de.prob.units/src/de/prob/units/ui/StartUnitAnalysisHandler.java
index 441f24e67722f27c8152fd80a71729879eab11e6..549a56f902eea225bcde5ba825cc6b74d69111e7 100644
--- a/de.prob.units/src/de/prob/units/ui/StartUnitAnalysisHandler.java
+++ b/de.prob.units/src/de/prob/units/ui/StartUnitAnalysisHandler.java
@@ -59,7 +59,9 @@ import de.prob.prolog.term.ListPrologTerm;
 import de.prob.prolog.term.PrologTerm;
 import de.prob.units.pragmas.InferredUnitPragmaAttribute;
 import de.prob.units.pragmas.UnitPragmaAttribute;
+import de.prob.units.problems.IncorrectUnitDefinitionMarker;
 import de.prob.units.problems.MultipleUnitsInferredMarker;
+import de.prob.units.problems.NoUnitInferredMarker;
 
 public class StartUnitAnalysisHandler extends AbstractHandler implements
 		IHandler {
@@ -168,6 +170,14 @@ public class StartUnitAnalysisHandler extends AbstractHandler implements
 						.equals(MultipleUnitsInferredMarker.ERROR_CODE)) {
 					iMarker.delete();
 				}
+				if (iMarker.getAttribute(RodinMarkerUtil.ERROR_CODE, "")
+						.equals(IncorrectUnitDefinitionMarker.ERROR_CODE)) {
+					iMarker.delete();
+				}
+				if (iMarker.getAttribute(RodinMarkerUtil.ERROR_CODE, "")
+						.equals(NoUnitInferredMarker.ERROR_CODE)) {
+					iMarker.delete();
+				}
 			}
 
 		} catch (CoreException e1) {
@@ -256,18 +266,12 @@ public class StartUnitAnalysisHandler extends AbstractHandler implements
 					if (variables.get(variableName).startsWith("multiple")) {
 						var.createProblemMarker(
 								InferredUnitPragmaAttribute.ATTRIBUTE,
-								new MultipleUnitsInferredMarker(
-										IMarker.SEVERITY_ERROR,
-										"Multiple Units inferred for Variable "
-												+ variableName));
+								new MultipleUnitsInferredMarker(variableName));
 					}
 					if (variables.get(variableName).equals("unknown")) {
 						var.createProblemMarker(
 								InferredUnitPragmaAttribute.ATTRIBUTE,
-								new MultipleUnitsInferredMarker(
-										IMarker.SEVERITY_WARNING,
-										"No Units inferred for Variable "
-												+ variableName));
+								new NoUnitInferredMarker(variableName));
 					}
 				}
 
@@ -278,10 +282,7 @@ public class StartUnitAnalysisHandler extends AbstractHandler implements
 							.getAttributeValue(UnitPragmaAttribute.ATTRIBUTE))) {
 						var.createProblemMarker(
 								InferredUnitPragmaAttribute.ATTRIBUTE,
-								new MultipleUnitsInferredMarker(
-										IMarker.SEVERITY_ERROR,
-										"Incorrect Unit Definition on Variable "
-												+ variableName));
+								new IncorrectUnitDefinitionMarker(variableName));
 					}
 				}
 			}
@@ -306,18 +307,12 @@ public class StartUnitAnalysisHandler extends AbstractHandler implements
 					if (variables.get(constantName).equals("error")) {
 						cst.createProblemMarker(
 								InferredUnitPragmaAttribute.ATTRIBUTE,
-								new MultipleUnitsInferredMarker(
-										IMarker.SEVERITY_ERROR,
-										"Multiple Units inferred for Constant "
-												+ constantName));
+								new MultipleUnitsInferredMarker(constantName));
 					}
 					if (variables.get(constantName).equals("unknown")) {
 						cst.createProblemMarker(
 								InferredUnitPragmaAttribute.ATTRIBUTE,
-								new MultipleUnitsInferredMarker(
-										IMarker.SEVERITY_WARNING,
-										"No Units inferred for Constant "
-												+ constantName));
+								new IncorrectUnitDefinitionMarker(constantName));
 					}
 				}
 
@@ -328,10 +323,7 @@ public class StartUnitAnalysisHandler extends AbstractHandler implements
 							.getAttributeValue(UnitPragmaAttribute.ATTRIBUTE))) {
 						cst.createProblemMarker(
 								InferredUnitPragmaAttribute.ATTRIBUTE,
-								new MultipleUnitsInferredMarker(
-										IMarker.SEVERITY_ERROR,
-										"Incorrect Unit Definition on Constant "
-												+ constantName));
+								new MultipleUnitsInferredMarker(constantName));
 					}
 				}
 			}