diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/Check.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/Check.java
index ef0d73f23726c915e9c845c71ddaf4a9f00babf2..66d2c5ccd7037d4ad7f8b86346265e47e073cf14 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/Check.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/Check.java
@@ -18,6 +18,8 @@
  */
 package de.hft.stuttgart.citydoctor2.check;
 
+import java.lang.reflect.Method;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
@@ -61,10 +63,19 @@ import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
  */
 public abstract class Check {
 
-	private CheckId id;
+	private List<Class<Checkable>> applicableToClasses = new ArrayList<>(2);
 
-	public Check(CheckId id) {
-		this.id = id;
+	@SuppressWarnings("unchecked")
+	public Check() {
+		Method[] declaredMethods = getClass().getDeclaredMethods();
+		for (Method m : declaredMethods) {
+			if ("check".equals(m.getName())) {
+				Class<?>[] parameterTypes = m.getParameterTypes();
+				if (parameterTypes.length == 1 && Checkable.class.isAssignableFrom(parameterTypes[0])) {
+					applicableToClasses.add((Class<Checkable>) parameterTypes[0]);
+				}
+			}
+		}
 	}
 
 	/**
@@ -72,7 +83,9 @@ public abstract class Check {
 	 * 
 	 * @return a list of classes which the check applies to
 	 */
-	public abstract List<Class<? extends Checkable>> getApplicableToClasses();
+	public List<Class<Checkable>> getApplicableToClasses() {
+		return applicableToClasses;
+	}
 
 	/**
 	 * A list of dependencies which the check depends on. Each of those dependencies
@@ -90,9 +103,7 @@ public abstract class Check {
 	 * 
 	 * @return the check id.
 	 */
-	public CheckId getCheckId() {
-		return id;
-	}
+	public abstract CheckId getCheckId();
 
 	/**
 	 * Getter for the check type.
@@ -123,10 +134,10 @@ public abstract class Check {
 			boolean hasError = c.containsError(dependencyCheck);
 			if (hasError) {
 				// check whether a result was already inserted
-				if (!c.hasDependencyNotMetError(id)) {
+				if (!c.hasDependencyNotMetError(getCheckId())) {
 					// insert dependency error
 					CheckError err = new DependenciesNotMetError(dependencyCheck);
-					CheckResult cr = new CheckResult(this.id, ResultStatus.DEPENDENCIES_NOT_MET, err);
+					CheckResult cr = new CheckResult(getCheckId(), ResultStatus.DEPENDENCIES_NOT_MET, err);
 					c.addCheckResult(cr);
 				}
 				return false;
@@ -306,7 +317,7 @@ public abstract class Check {
 
 	@Override
 	public String toString() {
-		return "Check [id=" + id + "]";
+		return "Check [id=" + getCheckId() + "]";
 	}
 
 	/**
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/CheckError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/CheckError.java
index 7d18f99652c060fd8e39c43b5d3c858d496eac1b..756e347c96c69e6a6727cca2ef17e497efff43e3 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/CheckError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/CheckError.java
@@ -19,7 +19,6 @@
 package de.hft.stuttgart.citydoctor2.check;
 
 import java.io.Serializable;
-import java.util.Objects;
 
 import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 
@@ -32,56 +31,29 @@ import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
  * @author Matthias Betz
  *
  */
-public abstract class CheckError implements Serializable {
+public interface CheckError extends Serializable {
 
-	private static final long serialVersionUID = -4428235366383090704L;
-	
-	private ErrorType type;
-	private ErrorId id;
-	private GmlElement feature;
-
-	/**
-	 * Necessary information for every error type needs to be provided in this
-	 * constructor.
-	 * 
-	 * @param id      the error id (not null)
-	 * @param type    the error type (not null)
-	 * @param feature element in which the error occurred
-	 */
-	public CheckError(ErrorId id, ErrorType type, GmlElement feature) {
-		Objects.requireNonNull(id, "id may not be null");
-		Objects.requireNonNull(type, "type may not be null");
-		this.type = type;
-		this.id = id;
-		this.feature = feature;
-	}
 
 	/**
 	 * Getter for the error type
 	 * 
 	 * @return the error type
 	 */
-	public ErrorType getType() {
-		return type;
-	}
+	public ErrorType getType();
 
 	/**
 	 * Getter for the error id
 	 * 
 	 * @return the error id
 	 */
-	public ErrorId getErrorId() {
-		return id;
-	}
+	public ErrorId getErrorId();
 
 	/**
 	 * The gml feature in which the error occured
 	 * 
 	 * @return the gml feature
 	 */
-	public GmlElement getFeature() {
-		return feature;
-	}
+	public GmlElement getFeature();
 
 	/**
 	 * A general visitor will have a look at this error. Visitor pattern.
@@ -89,7 +61,7 @@ public abstract class CheckError implements Serializable {
 	 * @param errorVisitor the visitor, call {@link ErrorVisitor#visit(CheckError)})
 	 *                     on this.
 	 */
-	public abstract void accept(ErrorVisitor errorVisitor);
+	public void accept(ErrorVisitor errorVisitor);
 
 	/**
 	 * Visitor pattern for the healing methods. Call
@@ -100,7 +72,7 @@ public abstract class CheckError implements Serializable {
 	 * @param l      a modification listener when a healing method changes something
 	 * @return true if the healing method changed something in the model
 	 */
-	public abstract boolean accept(HealingMethod method, ModificationListener l);
+	public boolean accept(HealingMethod method, ModificationListener l);
 
 	/**
 	 * This method functions as interface to various reporting places. The
@@ -109,6 +81,6 @@ public abstract class CheckError implements Serializable {
 	 * 
 	 * @param report
 	 */
-	public abstract void report(ErrorReport report);
+	public void report(ErrorReport report);
 
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/CheckId.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/CheckId.java
index 61f5b3cafd3e2f70d0aca4afcac50f88d511e8d0..1fac3387e9b3beab32bc0e5dcf17f2b223e8b0d9 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/CheckId.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/CheckId.java
@@ -9,7 +9,7 @@
  *  (at your option) any later version.
  *
  *  CityDoctor2 is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  but WITHOUT ANY WARRANTY); without even the implied warranty of
  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *  GNU Lesser General Public License for more details.
  *
@@ -18,57 +18,81 @@
  */
 package de.hft.stuttgart.citydoctor2.check;
 
-import java.util.Collections;
-import java.util.Map;
-import java.util.TreeMap;
+import java.io.Serializable;
 
-public enum CheckId {
+public class CheckId implements Serializable {
 
-	C_GE_R_TOO_FEW_POINTS("C_GE_R_TOO_FEW_POINTS"), C_GE_R_NOT_CLOSED("C_GE_R_NOT_CLOSED"),
-	C_GE_S_MULTIPLE_CONNECTED_COMPONENTS("C_GE_S_MULTIPLE_CONNECTED_COMPONENTS"),
-	C_GE_R_DUPLICATE_POINT("C_GE_R_DUPLICATE_POINT"), C_GE_R_SELF_INTERSECTION("C_GE_R_SELF_INTERSECTION"),
-	C_GE_P_INTERIOR_DISCONNECTED("C_GE_P_INTERIOR_DISCONNECTED"),
-	C_GE_P_INTERSECTING_RINGS("C_GE_P_INTERSECTING_RINGS"), C_GE_P_NON_PLANAR("C_GE_P_NON_PLANAR"),
-	C_GE_S_TOO_FEW_POLYGONS("C_GE_S_TOO_FEW_POLYGONS"), NULL_AREA("C_GE_R_NULL_AREA"),
-	C_GE_S_NOT_CLOSED("C_GE_S_NOT_CLOSED"), C_GE_S_NON_MANIFOLD_EDGE("C_GE_S_NON_MANIFOLD_EDGE"),
-	C_GE_S_POLYGON_WRONG_ORIENTATION("C_GE_S_POLYGON_WRONG_ORIENTATION"),
-	C_GE_S_ALL_POLYGONS_WRONG_ORIENTATION("C_GE_S_ALL_POLYGONS_WRONG_ORIENTATION"),
-	C_GE_S_NON_MANIFOLD_VERTEX("C_GE_S_NON_MANIFOLD_VERTEX"), C_GE_S_SELF_INTERSECTION("C_GE_S_SELF_INTERSECTION"),
-	C_GE_P_HOLE_OUTSIDE("C_GE_P_HOLE_OUTSIDE"), C_GE_P_ORIENTATION_RINGS_SAME("C_GE_P_ORIENTATION_RINGS_SAME"),
-	C_GE_P_INNER_RINGS_NESTED("C_GE_P_INNER_RINGS_NESTED"), IS_CEILING("IS_CEILING"),
-	C_SEM_F_MISSING_ID("C_SEM_F_MISSING_ID"), C_SEM_BS_NOT_CEILING("C_SEM_BS_NOT_CEILING"),
-	C_SEM_BS_NOT_FLOOR("C_SEM_BS_NOT_FLOOR"), C_SEM_BS_NOT_GROUND("C_SEM_BS_NOT_GROUND"),
-	C_SEM_BS_GROUND_NOT_FRAGMENTED("C_SEM_BS_GROUND_NOT_FRAGMENTED"), C_SEM_BS_IS_WALL("C_SEM_BS_IS_WALL"),
-	C_SEM_SCHEMATRON("C_SEM_SCHEMATRON"), C_SEM_BS_ROOF_NOT_FRAGMENTED("C_SEM_BS_ROOF_NOT_FRAGMENTED");
+	private static final long serialVersionUID = -6267337828874296004L;
+	
+	public static final CheckId C_GE_R_TOO_FEW_POINTS = new CheckId("C_GE_R_TOO_FEW_POINTS");
+	public static final CheckId C_GE_R_NOT_CLOSED = new CheckId("C_GE_R_NOT_CLOSED");
+	public static final CheckId C_GE_S_MULTIPLE_CONNECTED_COMPONENTS = new CheckId(
+			"C_GE_S_MULTIPLE_CONNECTED_COMPONENTS");
+	public static final CheckId C_GE_R_DUPLICATE_POINT = new CheckId("C_GE_R_DUPLICATE_POINT");
+	public static final CheckId C_GE_R_SELF_INTERSECTION = new CheckId("C_GE_R_SELF_INTERSECTION");
+	public static final CheckId C_GE_P_INTERIOR_DISCONNECTED = new CheckId("C_GE_P_INTERIOR_DISCONNECTED");
+	public static final CheckId C_GE_P_INTERSECTING_RINGS = new CheckId("C_GE_P_INTERSECTING_RINGS");
+	public static final CheckId C_GE_P_NON_PLANAR = new CheckId("C_GE_P_NON_PLANAR");
+	public static final CheckId C_GE_S_TOO_FEW_POLYGONS = new CheckId("C_GE_S_TOO_FEW_POLYGONS");
+	public static final CheckId C_GE_R_NULL_AREA = new CheckId("C_GE_R_NULL_AREA");
+	public static final CheckId C_GE_S_NON_MANIFOLD_EDGE = new CheckId("C_GE_S_NON_MANIFOLD_EDGE");
+	public static final CheckId C_GE_S_POLYGON_WRONG_ORIENTATION = new CheckId("C_GE_S_POLYGON_WRONG_ORIENTATION");
+	public static final CheckId C_GE_S_ALL_POLYGONS_WRONG_ORIENTATION = new CheckId(
+			"C_GE_S_ALL_POLYGONS_WRONG_ORIENTATION");
+	public static final CheckId C_GE_S_NON_MANIFOLD_VERTEX = new CheckId("C_GE_S_NON_MANIFOLD_VERTEX");
+	public static final CheckId C_GE_S_SELF_INTERSECTION = new CheckId("C_GE_S_SELF_INTERSECTION");
+	public static final CheckId C_GE_P_HOLE_OUTSIDE = new CheckId("C_GE_P_HOLE_OUTSIDE");
+	public static final CheckId IS_CEILING = new CheckId("IS_CEILING");
+	public static final CheckId C_GE_P_INNER_RINGS_NESTED = new CheckId("C_GE_P_INNER_RINGS_NESTED");
+	public static final CheckId C_SEM_BS_NOT_CEILING = new CheckId("C_SEM_BS_NOT_CEILING");
+	public static final CheckId C_SEM_BS_NOT_FLOOR = new CheckId("C_SEM_BS_NOT_FLOOR");
+	public static final CheckId C_SEM_BS_NOT_GROUND = new CheckId("C_SEM_BS_NOT_GROUND");
+	public static final CheckId C_SEM_F_MISSING_ID = new CheckId("C_SEM_F_MISSING_ID");
+	public static final CheckId C_SEM_BS_GROUND_NOT_FRAGMENTED = new CheckId("C_SEM_BS_GROUND_NOT_FRAGMENTED");
+	public static final CheckId C_SEM_BS_IS_WALL = new CheckId("C_SEM_BS_IS_WALL");
+	public static final CheckId C_SEM_SCHEMATRON = new CheckId("C_SEM_SCHEMATRON");
+	public static final CheckId C_SEM_BS_ROOF_NOT_FRAGMENTED = new CheckId("C_SEM_BS_ROOF_NOT_FRAGMENTED");
+	public static final CheckId C_GE_S_NOT_CLOSED = new CheckId("C_GE_S_NOT_CLOSED");
+	public static final CheckId C_GE_P_ORIENTATION_RINGS_SAME = new CheckId("C_GE_P_ORIENTATION_RINGS_SAME");
+	
+	private String name;
 
-	private static final Map<String, CheckId> ENUM_MAP;
-
-	static {
-		Map<String, CheckId> map = new TreeMap<>();
-		for (CheckId instance : CheckId.values()) {
-			map.put(instance.toString().toUpperCase(), instance);
-		}
-		ENUM_MAP = Collections.unmodifiableMap(map);
+	public CheckId(String name) {
+		this.name = name;
+	}
+	
+	public String getName() {
+		return name;
+	}
+	
+	@Override
+	public int hashCode() {
+		final int prime = 31;
+		int result = 1;
+		result = prime * result + ((name == null) ? 0 : name.hashCode());
+		return result;
 	}
 
-	private String id;
-
-	private CheckId(String id) {
-		this.id = id;
+	@Override
+	public boolean equals(Object obj) {
+		if (this == obj)
+			return true;
+		if (obj == null)
+			return false;
+		if (getClass() != obj.getClass())
+			return false;
+		CheckId other = (CheckId) obj;
+		if (name == null) {
+			if (other.name != null)
+				return false;
+		} else if (!name.equals(other.name))
+			return false;
+		return true;
 	}
 
 	@Override
 	public String toString() {
-		return id;
+		return name;
 	}
 
-	/**
-	 * Converts a String to a check id if possible.
-	 * 
-	 * @param checkName the string representation of a check
-	 * @return the check id or null if not found.
-	 */
-	public static CheckId getIdForName(String checkName) {
-		return ENUM_MAP.get(checkName.toUpperCase());
-	}
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/Checkable.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/Checkable.java
index fa3be69f0d7c62cb1eedfbfea98d487b529aed15..f53e78b7a29767c99d2566e22eebf3703b711f9a 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/Checkable.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/Checkable.java
@@ -19,7 +19,7 @@
 package de.hft.stuttgart.citydoctor2.check;
 
 import java.io.Serializable;
-import java.util.EnumMap;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -40,7 +40,7 @@ public abstract class Checkable implements Serializable {
 
 	private static final Logger logger = LogManager.getLogger(Checkable.class);
 
-	private EnumMap<CheckId, CheckResult> checkResults = new EnumMap<>(CheckId.class);
+	private Map<CheckId, CheckResult> checkResults = new HashMap<>();
 	private boolean isValidated = false;
 
 	protected void setValidated(boolean validated) {
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/ErrorId.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/ErrorId.java
index e9735ebb3a93d85582913c51bc4aa509f324d4be..f0238847c7602a3831becff424244ecb3c150c23 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/ErrorId.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/ErrorId.java
@@ -18,6 +18,8 @@
  */
 package de.hft.stuttgart.citydoctor2.check;
 
+import java.io.Serializable;
+
 /**
  * The error ids of all checks and their respective name, which is used in
  * reports and GUI
@@ -25,30 +27,75 @@ package de.hft.stuttgart.citydoctor2.check;
  * @author Matthias Betz
  *
  */
-public enum ErrorId {
-
-	DEPENDENCIES_NOT_MET("Dependencies_not_met"), UNKNOWN_ERROR("Unknown_error"), GE_R_NOT_CLOSED("GE_R_NOT_CLOSED"),
-	GE_S_MULTIPLE_CONNECTED_COMPONENTS("GE_S_MULTIPLE_CONNECTED_COMPONENTS"),
-	GE_R_CONSECUTIVE_POINTS_SAME("GE_R_CONSECUTIVE_POINTS_SAME"), GE_R_SELF_INTERSECTION("GE_R_SELF_INTERSECTION"),
-	GE_S_POLYGON_WRONG_ORIENTATION("GE_S_POLYGON_WRONG_ORIENTATION"),
-	GE_S_ALL_POLYGONS_WRONG_ORIENTATION("GE_S_ALL_POLYGONS_WRONG_ORIENTATION"), GE_P_HOLE_OUTSIDE("GE_P_HOLE_OUTSIDE"),
-	GE_P_INTERIOR_DISCONNECTED("GE_P_INTERIOR_DISCONNECTED"), GE_S_NON_MANIFOLD_VERTEX("GE_S_NON_MANIFOLD_VERTEX"),
-	GE_P_INNER_RINGS_NESTED("GE_P_INNER_RINGS_NESTED"), GE_R_NULL_AREA("GE_R_NULL_AREA"),
-	GE_R_TOO_FEW_POINTS("GE_R_TOO_FEW_POINTS"), GE_S_NON_MANIFOLD_EDGE("GE_S_NON_MANIFOLD_EDGE"),
-	GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION("GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION"),
-	GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE("GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE"),
-	GE_P_ORIENTATION_RINGS_SAME("GE_P_ORIENTATION_RINGS_SAME"), GE_P_INTERSECTING_RINGS("GE_P_INTERSECTION_RINGS"),
-	GE_S_NOT_CLOSED("GE_S_NOT_CLOSED"), GE_S_SELF_INTERSECTION("GE_S_SELF_INTERSECTION"),
-	GE_S_TOO_FEW_POLYGONS("GE_S_TOO_FEW_POLYGONS"), SEM_F_MISSING_ID("SEM_F_MISSING_GML_ID"),
-	SEM_BS_NOT_CEILING("SEM_BS_NOT_CEILING"), SEM_BS_NOT_WALL("SEM_BS_NOT_WALL"), SEM_BS_NOT_FLOOR("SEM_BS_NOT_FLOOR"),
-	SEM_BS_NOT_GROUND("SEM_BS_NOT_GROUND"), SEM_SCHEMATRON_ERROR("SEM_SCHEMATRON_ERROR"), SEM_BS_UNFRAGMENTED("SEM_BS_UNFRAGMENTED"), GE_P_TINY_EDGE("GE_P_TINY_EDGE");
+public class ErrorId implements Serializable {
+	
+	private static final long serialVersionUID = -2598466667746276560L;
+	
+	public static final ErrorId DEPENDENCIES_NOT_MET = new ErrorId("Dependencies_not_met");
+	public static final ErrorId UNKNOWN_ERROR = new ErrorId("Unknown_error");
+	public static final ErrorId GE_R_NOT_CLOSED = new ErrorId("GE_R_NOT_CLOSED");
+	public static final ErrorId GE_S_MULTIPLE_CONNECTED_COMPONENTS = new ErrorId("GE_S_MULTIPLE_CONNECTED_COMPONENTS");
+	public static final ErrorId GE_R_CONSECUTIVE_POINTS_SAME = new ErrorId("GE_R_CONSECUTIVE_POINTS_SAME");
+	public static final ErrorId GE_R_SELF_INTERSECTION = new ErrorId("GE_R_SELF_INTERSECTION");
+	public static final ErrorId GE_S_POLYGON_WRONG_ORIENTATION = new ErrorId("GE_S_POLYGON_WRONG_ORIENTATION");
+	public static final ErrorId GE_S_ALL_POLYGONS_WRONG_ORIENTATION = new ErrorId(
+			"GE_S_ALL_POLYGONS_WRONG_ORIENTATION");
+	public static final ErrorId GE_P_HOLE_OUTSIDE = new ErrorId("GE_P_HOLE_OUTSIDE");
+	public static final ErrorId GE_P_INTERIOR_DISCONNECTED = new ErrorId("GE_P_INTERIOR_DISCONNECTED");
+	public static final ErrorId GE_S_NON_MANIFOLD_VERTEX = new ErrorId("GE_S_NON_MANIFOLD_VERTEX");
+	public static final ErrorId GE_P_INNER_RINGS_NESTED = new ErrorId("GE_P_INNER_RINGS_NESTED");
+	public static final ErrorId GE_R_NULL_AREA = new ErrorId("GE_R_NULL_AREA");
+	public static final ErrorId GE_R_TOO_FEW_POINTS = new ErrorId("GE_R_TOO_FEW_POINTS");
+	public static final ErrorId GE_S_NON_MANIFOLD_EDGE = new ErrorId("GE_S_NON_MANIFOLD_EDGE");
+	public static final ErrorId GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION = new ErrorId(
+			"GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION");
+	public static final ErrorId GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE = new ErrorId(
+			"GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE");
+	public static final ErrorId GE_P_INTERSECTING_RINGS = new ErrorId("GE_P_INTERSECTING_RINGS");
+	public static final ErrorId GE_S_SELF_INTERSECTION = new ErrorId("GE_S_SELF_INTERSECTION");
+	public static final ErrorId GE_P_ORIENTATION_RINGS_SAME = new ErrorId("GE_P_ORIENTATION_RINGS_SAME");
+	public static final ErrorId GE_S_NOT_CLOSED = new ErrorId("GE_S_NOT_CLOSED");
+	public static final ErrorId GE_S_TOO_FEW_POLYGONS = new ErrorId("GE_S_TOO_FEW_POLYGONS");
+	public static final ErrorId SEM_F_MISSING_ID = new ErrorId("SEM_F_MISSING_ID");
+	public static final ErrorId SEM_BS_NOT_CEILING = new ErrorId("SEM_BS_NOT_CEILING");
+	public static final ErrorId SEM_BS_NOT_WALL = new ErrorId("SEM_BS_NOT_WALL");
+	public static final ErrorId SEM_BS_NOT_FLOOR = new ErrorId("SEM_BS_NOT_FLOOR");
+	public static final ErrorId SEM_BS_NOT_GROUND = new ErrorId("SEM_BS_NOT_GROUND");
+	public static final ErrorId SEM_SCHEMATRON_ERROR = new ErrorId("SEM_SCHEMATRON_ERROR");
+	public static final ErrorId SEM_BS_UNFRAGMENTED = new ErrorId("SEM_BS_UNFRAGMENTED");
+	public static final ErrorId GE_P_TINY_EDGE = new ErrorId("GE_P_TINY_EDGE");
 
 	private String name;
 
-	private ErrorId(String name) {
+	public ErrorId(String name) {
 		this.name = name;
 	}
 
+	@Override
+	public int hashCode() {
+		final int prime = 31;
+		int result = 1;
+		result = prime * result + ((name == null) ? 0 : name.hashCode());
+		return result;
+	}
+
+	@Override
+	public boolean equals(Object obj) {
+		if (this == obj)
+			return true;
+		if (obj == null)
+			return false;
+		if (getClass() != obj.getClass())
+			return false;
+		ErrorId other = (ErrorId) obj;
+		if (name == null) {
+			if (other.name != null)
+				return false;
+		} else if (!name.equals(other.name))
+			return false;
+		return true;
+	}
+
 	@Override
 	public String toString() {
 		return name;
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/AllPolygonsWrongOrientationError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/AllPolygonsWrongOrientationError.java
index 627e26783b8a48558d27db01ad9aef607c489992..455f0f8fc65e79a20ff923d801a54c76f68aa4f7 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/AllPolygonsWrongOrientationError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/AllPolygonsWrongOrientationError.java
@@ -26,6 +26,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
 import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
 import de.hft.stuttgart.citydoctor2.datastructure.Geometry;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 
 /**
  * Error when all polygons are oriented wrong.
@@ -33,14 +34,13 @@ import de.hft.stuttgart.citydoctor2.datastructure.Geometry;
  * @author Matthias Betz
  *
  */
-public class AllPolygonsWrongOrientationError extends CheckError {
+public class AllPolygonsWrongOrientationError implements CheckError {
 
 	private static final long serialVersionUID = 2263993313732858840L;
 	
 	private Geometry geom;
 
 	public AllPolygonsWrongOrientationError(Geometry geom) {
-		super(ErrorId.GE_S_ALL_POLYGONS_WRONG_ORIENTATION, ErrorType.ERROR, geom);
 		this.geom = geom;
 	}
 
@@ -68,4 +68,19 @@ public class AllPolygonsWrongOrientationError extends CheckError {
 		report.add(geom);
 	}
 
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.GE_S_ALL_POLYGONS_WRONG_ORIENTATION;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return getGeometry();
+	}
+
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/ConsecutivePointSameError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/ConsecutivePointSameError.java
index 624e736fca88a51401c8b62bcd8b07757617cf37..687e128c6d652a9386331d3095a6414bc14bb3f1 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/ConsecutivePointSameError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/ConsecutivePointSameError.java
@@ -25,6 +25,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType;
 import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
 import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
 import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
 
@@ -35,7 +36,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
  * @author Matthias Betz
  *
  */
-public class ConsecutivePointSameError extends CheckError {
+public class ConsecutivePointSameError implements CheckError {
 
 	private static final long serialVersionUID = -6355935751554777494L;
 	
@@ -44,7 +45,6 @@ public class ConsecutivePointSameError extends CheckError {
 	private Vertex p2;
 
 	public ConsecutivePointSameError(LinearRing lr, Vertex p1, Vertex p2) {
-		super(ErrorId.GE_R_CONSECUTIVE_POINTS_SAME, ErrorType.ERROR, lr);
 		this.lr = lr;
 		this.p1 = p1;
 		this.p2 = p2;
@@ -83,4 +83,19 @@ public class ConsecutivePointSameError extends CheckError {
 		report.add("duplicate point 1", p1);
 		report.add("duplicate point 2", p2);
 	}
+
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.GE_R_CONSECUTIVE_POINTS_SAME;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return getRing();
+	}
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/DependenciesNotMetError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/DependenciesNotMetError.java
index 8c523e7e356740e3d807cd0e2678b162eceae89e..c7f9bb6a3a6c2aff58431f9b54ab70b1e0c8f941 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/DependenciesNotMetError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/DependenciesNotMetError.java
@@ -26,6 +26,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType;
 import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
 import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 
 /**
  * When a check checks if it can be executed but one or more dependency has
@@ -36,14 +37,13 @@ import de.hft.stuttgart.citydoctor2.check.ModificationListener;
  * @author Matthias Betz
  *
  */
-public class DependenciesNotMetError extends CheckError {
+public class DependenciesNotMetError implements CheckError {
 
 	private static final long serialVersionUID = -851655185949574160L;
 	
 	private CheckId dependency;
 
 	public DependenciesNotMetError(CheckId dependency) {
-		super(ErrorId.DEPENDENCIES_NOT_MET, ErrorType.ERROR, null);
 		this.dependency = dependency;
 	}
 
@@ -70,4 +70,19 @@ public class DependenciesNotMetError extends CheckError {
 	public void report(ErrorReport report) {
 		report.add("dependency", dependency.toString());
 	}
+
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.DEPENDENCIES_NOT_MET;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return null;
+	}
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/MultipleConnectedComponentsError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/MultipleConnectedComponentsError.java
index bab719100a67837de1cfd353248e643fd5d56a64..1c8bea3106d4ad1966d2e4703cee072c616446e3 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/MultipleConnectedComponentsError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/MultipleConnectedComponentsError.java
@@ -28,6 +28,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
 import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
 import de.hft.stuttgart.citydoctor2.datastructure.Geometry;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
 
 /**
@@ -37,7 +38,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
  * @author Matthias Betz
  *
  */
-public class MultipleConnectedComponentsError extends CheckError {
+public class MultipleConnectedComponentsError implements CheckError {
 
 	private static final long serialVersionUID = 2152069835068857036L;
 	
@@ -45,7 +46,6 @@ public class MultipleConnectedComponentsError extends CheckError {
 	private List<List<Polygon>> components;
 
 	public MultipleConnectedComponentsError(Geometry geom, List<List<Polygon>> components) {
-		super(ErrorId.GE_S_MULTIPLE_CONNECTED_COMPONENTS, ErrorType.ERROR, geom);
 		this.geom = geom;
 		this.components = components;
 	}
@@ -81,4 +81,19 @@ public class MultipleConnectedComponentsError extends CheckError {
 	public String toString() {
 		return "MultipleConnectedComponentsError [geom=" + geom + ", components=" + components + "]";
 	}
+
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.GE_S_MULTIPLE_CONNECTED_COMPONENTS;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return getGeometry();
+	}
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NestedRingError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NestedRingError.java
index e95d8038df89d4d42d02bac66961c69fd8ad52b6..e3473422c67f4b185bb6a5e681acae37329b4b4f 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NestedRingError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NestedRingError.java
@@ -25,6 +25,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType;
 import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
 import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
 import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
 
@@ -34,7 +35,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
  * @author Matthias Betz
  *
  */
-public class NestedRingError extends CheckError {
+public class NestedRingError implements CheckError {
 
 	private static final long serialVersionUID = -3396113374745830193L;
 	
@@ -43,7 +44,6 @@ public class NestedRingError extends CheckError {
 	private LinearRing withinRing;
 
 	public NestedRingError(Polygon p, LinearRing innerRing, LinearRing withinRing) {
-		super(ErrorId.GE_P_INNER_RINGS_NESTED, ErrorType.ERROR, p);
 		this.p = p;
 		this.innerRing = innerRing;
 		this.withinRing = withinRing;
@@ -81,4 +81,19 @@ public class NestedRingError extends CheckError {
 	public String toString() {
 		return "NestedRingError [p=" + p + ", innerRing=" + innerRing + "]";
 	}
+
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.GE_P_INNER_RINGS_NESTED;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return getPolygon();
+	}
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonManifoldEdgeError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonManifoldEdgeError.java
index 39645d2150fb1b4370dec0991145a7c78a78b684..53561947311d130b6350be4980ac50539068931c 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonManifoldEdgeError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonManifoldEdgeError.java
@@ -29,6 +29,7 @@ import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
 import de.hft.stuttgart.citydoctor2.datastructure.Edge;
 import de.hft.stuttgart.citydoctor2.datastructure.Geometry;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 
 /**
  * If an edge is an edge in 3 or more polygons this error is created.
@@ -36,7 +37,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Geometry;
  * @author Matthias Betz
  *
  */
-public class NonManifoldEdgeError extends CheckError {
+public class NonManifoldEdgeError implements CheckError {
 
 	private static final long serialVersionUID = -6742948557014332402L;
 	
@@ -44,7 +45,6 @@ public class NonManifoldEdgeError extends CheckError {
 	private Geometry geom;
 
 	public NonManifoldEdgeError(Geometry geom, List<Edge> edges) {
-		super(ErrorId.GE_S_NON_MANIFOLD_EDGE, ErrorType.ERROR, geom);
 		this.edges = edges;
 		this.geom = geom;
 	}
@@ -79,4 +79,19 @@ public class NonManifoldEdgeError extends CheckError {
 	public String toString() {
 		return "ManifoldEdgeError [edges=" + edges + ", geom=" + geom + "]";
 	}
+
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.GE_S_NON_MANIFOLD_EDGE;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return getGeometry();
+	}
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonManifoldVertexError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonManifoldVertexError.java
index cf5a809cae24c75530f296dd1c65b837ce2925f7..84c01753837ab135ed6d47c990d5e0367c353f90 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonManifoldVertexError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonManifoldVertexError.java
@@ -28,6 +28,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
 import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
 import de.hft.stuttgart.citydoctor2.datastructure.Geometry;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
 import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
 
@@ -38,7 +39,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
  * @author Matthias Betz
  *
  */
-public class NonManifoldVertexError extends CheckError {
+public class NonManifoldVertexError implements CheckError {
 
 	private static final long serialVersionUID = -3915669943428175777L;
 	
@@ -47,7 +48,6 @@ public class NonManifoldVertexError extends CheckError {
 	private Vertex v;
 
 	public NonManifoldVertexError(Geometry geom, List<List<Polygon>> components, Vertex v) {
-		super(ErrorId.GE_S_NON_MANIFOLD_VERTEX, ErrorType.ERROR, geom);
 		this.geom = geom;
 		this.components = components;
 		this.v = v;
@@ -94,4 +94,19 @@ public class NonManifoldVertexError extends CheckError {
 		return "NonManifoldVertexError [components=" + components + ", geom=" + geom + ", v=" + v + "]";
 	}
 
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.GE_S_NON_MANIFOLD_VERTEX;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return getGeometry();
+	}
+
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonPlanarPolygonDistancePlaneError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonPlanarPolygonDistancePlaneError.java
index 94913d77fdfd606c8e5ea625b917adfeaacd4877..3e3fc27cdf32a9111fe5423d62979a9741c9f3f4 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonPlanarPolygonDistancePlaneError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonPlanarPolygonDistancePlaneError.java
@@ -25,6 +25,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType;
 import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
 import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
 import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
 import de.hft.stuttgart.citydoctor2.math.Plane;
@@ -37,7 +38,7 @@ import de.hft.stuttgart.citydoctor2.utils.Localization;
  * @author Matthias Betz
  *
  */
-public class NonPlanarPolygonDistancePlaneError extends CheckError {
+public class NonPlanarPolygonDistancePlaneError implements CheckError {
 
 	private static final long serialVersionUID = -3504364055236383519L;
 	
@@ -47,7 +48,6 @@ public class NonPlanarPolygonDistancePlaneError extends CheckError {
 	private Plane plane;
 
 	public NonPlanarPolygonDistancePlaneError(Polygon p, double distance, Vertex v, Plane plane) {
-		super(ErrorId.GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE, ErrorType.ERROR, p);
 		this.p = p;
 		this.distance = distance;
 		this.v = v;
@@ -91,4 +91,19 @@ public class NonPlanarPolygonDistancePlaneError extends CheckError {
 	public String toString() {
 		return "DistanceError [p=" + p + ", distance=" + distance + ", v=" + v + ", plane=" + plane + "]";
 	}
+
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return getPolygon();
+	}
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonPlanarPolygonNormalsDeviation.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonPlanarPolygonNormalsDeviation.java
index 30e036b33ee6a794000a8555715ae50b10f13e1b..e77bee1869f4b2e9a1c6f0c40aa0f8e45f706e47 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonPlanarPolygonNormalsDeviation.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonPlanarPolygonNormalsDeviation.java
@@ -25,6 +25,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType;
 import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
 import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
 
 /**
@@ -34,7 +35,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
  * @author Matthias Betz
  *
  */
-public class NonPlanarPolygonNormalsDeviation extends CheckError {
+public class NonPlanarPolygonNormalsDeviation implements CheckError {
 
 	private static final long serialVersionUID = 69073161885265794L;
 	
@@ -42,7 +43,6 @@ public class NonPlanarPolygonNormalsDeviation extends CheckError {
 	private double deviation;
 
 	public NonPlanarPolygonNormalsDeviation(Polygon p, double deviation) {
-		super(ErrorId.GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION, ErrorType.ERROR, p);
 		this.p = p;
 		this.deviation = deviation;
 	}
@@ -75,4 +75,19 @@ public class NonPlanarPolygonNormalsDeviation extends CheckError {
 	public String toString() {
 		return "NormalDeviationError [p=" + p + ", deviation=" + deviation + "]";
 	}
+
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return getPolygon();
+	}
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotCeilingError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotCeilingError.java
index 8d6aeb1ffdfba8fe6225af02e632dab8e3909ee7..4ed6bea9be3872e7e88b8f87b6d50a8d91692b62 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotCeilingError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotCeilingError.java
@@ -26,6 +26,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
 import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
 import de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
 
 /**
@@ -35,7 +36,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
  * @author Matthias Betz
  *
  */
-public class NotCeilingError extends CheckError {
+public class NotCeilingError implements CheckError {
 
 	private static final long serialVersionUID = 6725904270389419696L;
 	
@@ -43,7 +44,6 @@ public class NotCeilingError extends CheckError {
 	private Polygon p;
 
 	public NotCeilingError(BoundarySurface bs, Polygon p) {
-		super(ErrorId.SEM_BS_NOT_CEILING, ErrorType.WARNING, bs);
 		surface = bs;
 		this.p = p;
 	}
@@ -72,4 +72,19 @@ public class NotCeilingError extends CheckError {
 		report.add(surface);
 	}
 
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.SEM_BS_NOT_CEILING;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return getPolygon();
+	}
+
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotFloorError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotFloorError.java
index 991bfbc962ada85377b5e07df0c71dbcad1c3337..1b8198f1a8148f34037dcad01d074995fbf40fdb 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotFloorError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotFloorError.java
@@ -26,6 +26,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
 import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
 import de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
 
 /**
@@ -34,7 +35,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
  * @author Matthias Betz
  *
  */
-public class NotFloorError extends CheckError {
+public class NotFloorError implements CheckError {
 
 	private static final long serialVersionUID = -3193557053834977449L;
 	
@@ -42,7 +43,6 @@ public class NotFloorError extends CheckError {
 	private Polygon p;
 
 	public NotFloorError(BoundarySurface bs, Polygon p) {
-		super(ErrorId.SEM_BS_NOT_FLOOR, ErrorType.WARNING, bs);
 		surface = bs;
 		this.p = p;
 	}
@@ -70,4 +70,19 @@ public class NotFloorError extends CheckError {
 		report.add(p);
 	}
 
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.SEM_BS_NOT_FLOOR;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return getPolygon();
+	}
+
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotGroundError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotGroundError.java
index ec646685e15ee12ee2d9ad735c6a44f5d417ab6b..b810a6f7a04f21b90b3d76c910e3a77561214f54 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotGroundError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotGroundError.java
@@ -26,6 +26,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
 import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
 import de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
 
 /**
@@ -35,7 +36,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
  * @author Matthias Betz
  *
  */
-public class NotGroundError extends CheckError {
+public class NotGroundError implements CheckError {
 
 	private static final long serialVersionUID = 8793224454858861221L;
 	
@@ -43,7 +44,6 @@ public class NotGroundError extends CheckError {
 	private Polygon p;
 
 	public NotGroundError(BoundarySurface bs, Polygon p) {
-		super(ErrorId.SEM_BS_NOT_GROUND, ErrorType.WARNING, bs);
 		surface = bs;
 		this.p = p;
 	}
@@ -72,4 +72,19 @@ public class NotGroundError extends CheckError {
 		report.add(surface);
 	}
 
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.SEM_BS_NOT_GROUND;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return getPolygon();
+	}
+
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotWallError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotWallError.java
index 1bb2aa689164a4132829f15b75e38e18af6808d5..44a3efa741fe553639fd034f3b2ecc6d218220aa 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotWallError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotWallError.java
@@ -26,6 +26,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
 import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
 import de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
 import de.hft.stuttgart.citydoctor2.math.Vector3d;
 
@@ -35,7 +36,7 @@ import de.hft.stuttgart.citydoctor2.math.Vector3d;
  * @author Matthias Betz
  *
  */
-public class NotWallError extends CheckError {
+public class NotWallError implements CheckError {
 
 	private static final long serialVersionUID = 406429139625558232L;
 	
@@ -44,7 +45,6 @@ public class NotWallError extends CheckError {
 	private Vector3d normal;
 
 	public NotWallError(BoundarySurface bs, Polygon p, Vector3d normal) {
-		super(ErrorId.SEM_BS_NOT_WALL, ErrorType.WARNING, bs);
 		surface = bs;
 		this.p = p;
 		this.normal = normal;
@@ -75,4 +75,19 @@ public class NotWallError extends CheckError {
 		report.add("normal", normal);
 	}
 
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.SEM_BS_NOT_WALL;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return getPolygon();
+	}
+
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NullAreaError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NullAreaError.java
index 3e3438bdeda2db93e348b8b319af5515eaca3658..e0bf8d9b5824f89b8270b3cefdb2e05db7c5f143 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NullAreaError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NullAreaError.java
@@ -25,6 +25,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType;
 import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
 import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
 
 /**
@@ -33,14 +34,13 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
  * @author Matthias Betz
  *
  */
-public class NullAreaError extends CheckError {
+public class NullAreaError implements CheckError {
 
 	private static final long serialVersionUID = 1358910429039553687L;
 	
 	private LinearRing lr;
 
 	public NullAreaError(LinearRing lr) {
-		super(ErrorId.GE_R_NULL_AREA, ErrorType.ERROR, lr);
 		this.lr = lr;
 	}
 
@@ -67,4 +67,19 @@ public class NullAreaError extends CheckError {
 	public String toString() {
 		return "NullAreaError [lr=" + lr + "]";
 	}
+
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.GE_R_NULL_AREA;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return getRing();
+	}
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PointTouchesEdgeError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PointTouchesEdgeError.java
index 2695ce1cc42f06d886cc3a591a76163b352c91da..a50f87a3c89e4d5ed5f7f268b7fc92058bc797a9 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PointTouchesEdgeError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PointTouchesEdgeError.java
@@ -26,6 +26,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
 import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
 import de.hft.stuttgart.citydoctor2.datastructure.Edge;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
 import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
 
@@ -36,7 +37,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
  * @author Matthias Betz
  *
  */
-public class PointTouchesEdgeError extends CheckError {
+public class PointTouchesEdgeError implements CheckError {
 
 	private static final long serialVersionUID = 3277456707271748954L;
 	
@@ -45,7 +46,6 @@ public class PointTouchesEdgeError extends CheckError {
 	private Vertex v;
 
 	public PointTouchesEdgeError(LinearRing lr, Edge e, Vertex v) {
-		super(ErrorId.GE_R_SELF_INTERSECTION, ErrorType.ERROR, lr);
 		this.lr = lr;
 		this.e = e;
 		this.v = v;
@@ -86,4 +86,19 @@ public class PointTouchesEdgeError extends CheckError {
 		return "PointTouchesEdgeError [lr=" + lr + ", e=" + e + ", v=" + v + "]";
 	}
 
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.GE_R_SELF_INTERSECTION;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return getRing();
+	}
+
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonHoleOutsideError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonHoleOutsideError.java
index f46064b7480756106747e1b6b87b9f20f252da44..13506ede91a5d03165e8c9ffc5a94881c10b502a 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonHoleOutsideError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonHoleOutsideError.java
@@ -27,6 +27,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType;
 import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
 import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
 import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
 
@@ -37,7 +38,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
  * @author Matthias Betz
  *
  */
-public class PolygonHoleOutsideError extends CheckError {
+public class PolygonHoleOutsideError implements CheckError {
 
 	private static final long serialVersionUID = -4522153084655775231L;
 	
@@ -45,7 +46,6 @@ public class PolygonHoleOutsideError extends CheckError {
 	private Polygon p;
 
 	public PolygonHoleOutsideError(Polygon p, List<LinearRing> holesOutside) {
-		super(ErrorId.GE_P_HOLE_OUTSIDE, ErrorType.ERROR, p);
 		this.p = p;
 		this.holesOutside = holesOutside;
 	}
@@ -80,4 +80,19 @@ public class PolygonHoleOutsideError extends CheckError {
 	public String toString() {
 		return "HoleOutsideError [holesOutside=" + holesOutside + ", p=" + p + "]";
 	}
+
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.GE_P_HOLE_OUTSIDE;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return getPolygon();
+	}
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonInteriorDisconnectedError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonInteriorDisconnectedError.java
index f4f786890db85fc8b7609916558485ed2a3e833e..47fa5c91ab484ad718690304599057e46bf4bc10 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonInteriorDisconnectedError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonInteriorDisconnectedError.java
@@ -27,6 +27,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType;
 import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
 import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
 import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
 
@@ -37,7 +38,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
  * @author Matthias Betz
  *
  */
-public class PolygonInteriorDisconnectedError extends CheckError {
+public class PolygonInteriorDisconnectedError implements CheckError {
 
 	private static final long serialVersionUID = 511849016699842395L;
 	
@@ -45,7 +46,6 @@ public class PolygonInteriorDisconnectedError extends CheckError {
 	private List<LinearRing> connectedRings;
 
 	public PolygonInteriorDisconnectedError(Polygon p, List<LinearRing> connectedRings) {
-		super(ErrorId.GE_P_INTERIOR_DISCONNECTED, ErrorType.ERROR, p);
 		this.p = p;
 		this.connectedRings = connectedRings;
 	}
@@ -81,4 +81,19 @@ public class PolygonInteriorDisconnectedError extends CheckError {
 	public String toString() {
 		return "InteriorDisconnectedError [p=" + p + ", connectedRings=" + connectedRings + "]";
 	}
+
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.GE_P_INTERIOR_DISCONNECTED;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return getPolygon();
+	}
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonIntersectingRingsError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonIntersectingRingsError.java
index aa28919227138649310584c3f358bfb7c5841103..a23581f7bcfd52ff39c3e205996516f5dd74aa91 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonIntersectingRingsError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonIntersectingRingsError.java
@@ -25,6 +25,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType;
 import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
 import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
 import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
 import de.hft.stuttgart.citydoctor2.utils.SerializablePair;
@@ -36,7 +37,7 @@ import de.hft.stuttgart.citydoctor2.utils.SerializablePair;
  * @author Matthias Betz
  *
  */
-public class PolygonIntersectingRingsError extends CheckError {
+public class PolygonIntersectingRingsError implements CheckError {
 
 	private static final long serialVersionUID = -7043521697085991901L;
 	
@@ -44,7 +45,6 @@ public class PolygonIntersectingRingsError extends CheckError {
 	private SerializablePair<LinearRing, LinearRing> intersectingRings;
 
 	public PolygonIntersectingRingsError(Polygon p, SerializablePair<LinearRing, LinearRing> intersectingRings) {
-		super(ErrorId.GE_P_INTERSECTING_RINGS, ErrorType.ERROR, p);
 		this.p = p;
 		this.intersectingRings = intersectingRings;
 	}
@@ -78,4 +78,19 @@ public class PolygonIntersectingRingsError extends CheckError {
 	public String toString() {
 		return "PolygonSelfIntError [p=" + p + ", intersectingRings=" + intersectingRings + "]";
 	}
+
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.GE_P_INTERSECTING_RINGS;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return getPolygon();
+	}
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonSameOrientationError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonSameOrientationError.java
index 4e06e8a8ca53df3707e641793852a829061ea57f..fd4d6ecd9f6516a870036632d8ee1797a5bba6c0 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonSameOrientationError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonSameOrientationError.java
@@ -25,6 +25,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType;
 import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
 import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
 import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
 
@@ -35,7 +36,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
  * @author Matthias Betz
  *
  */
-public class PolygonSameOrientationError extends CheckError {
+public class PolygonSameOrientationError implements CheckError {
 
 	private static final long serialVersionUID = -6192337889977667459L;
 	
@@ -43,7 +44,6 @@ public class PolygonSameOrientationError extends CheckError {
 	private LinearRing innerRing;
 
 	public PolygonSameOrientationError(Polygon p, LinearRing inner) {
-		super(ErrorId.GE_P_ORIENTATION_RINGS_SAME, ErrorType.ERROR, p);
 		this.p = p;
 		this.innerRing = inner;
 	}
@@ -76,4 +76,19 @@ public class PolygonSameOrientationError extends CheckError {
 	public String toString() {
 		return "SameOrientationError [p=" + p + ", innerRing=" + innerRing + "]";
 	}
+
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.GE_P_ORIENTATION_RINGS_SAME;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return getPolygon();
+	}
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonWrongOrientationError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonWrongOrientationError.java
index adf5dc574ccebf1aee07dfdd2a088002d6c4327e..7c6ad0025d17a653a2d966b5a90fa5ec6005496c 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonWrongOrientationError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonWrongOrientationError.java
@@ -31,6 +31,7 @@ import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
 import de.hft.stuttgart.citydoctor2.datastructure.Edge;
 import de.hft.stuttgart.citydoctor2.datastructure.Geometry;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
 
 /**
@@ -41,7 +42,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
  * @author Matthias Betz
  *
  */
-public class PolygonWrongOrientationError extends CheckError {
+public class PolygonWrongOrientationError implements CheckError {
 
 	private static final long serialVersionUID = -3006643655816847097L;
 	
@@ -49,7 +50,6 @@ public class PolygonWrongOrientationError extends CheckError {
 	private Geometry g;
 
 	public PolygonWrongOrientationError(Geometry g, List<Edge> edges) {
-		super(ErrorId.GE_S_POLYGON_WRONG_ORIENTATION, ErrorType.ERROR, g);
 		this.edges = edges;
 		this.g = g;
 	}
@@ -86,4 +86,19 @@ public class PolygonWrongOrientationError extends CheckError {
 	public String toString() {
 		return "PolygonWrongOrientationError [edges=" + edges + ", g=" + g + "]";
 	}
+
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.GE_S_POLYGON_WRONG_ORIENTATION;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return getGeometry();
+	}
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingDuplicatePointError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingDuplicatePointError.java
index d710e489eba466c3ad644768ab0471415533a146..03df78e6dd36514e6f8052df081a35b3db1d9cc9 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingDuplicatePointError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingDuplicatePointError.java
@@ -25,6 +25,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType;
 import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
 import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
 import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
 
@@ -35,7 +36,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
  * @author Matthias Betz
  *
  */
-public class RingDuplicatePointError extends CheckError {
+public class RingDuplicatePointError implements CheckError {
 
 	private static final long serialVersionUID = 7208982075173209953L;
 	
@@ -44,7 +45,6 @@ public class RingDuplicatePointError extends CheckError {
 	private Vertex v2;
 
 	public RingDuplicatePointError(LinearRing r, Vertex v1, Vertex v2) {
-		super(ErrorId.GE_R_SELF_INTERSECTION, ErrorType.ERROR, r);
 		this.r = r;
 		this.v1 = v1;
 		this.v2 = v2;
@@ -84,4 +84,19 @@ public class RingDuplicatePointError extends CheckError {
 		return "DuplicatePointError [r=" + r + ", v1=" + v1 + ", v2=" + v2 + "]";
 	}
 
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.GE_R_SELF_INTERSECTION;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return getRing();
+	}
+
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingEdgeIntersectionError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingEdgeIntersectionError.java
index 0992c3516d235b4a903604b2b89680f0c69decec..1be0e9a89dcf2352a406cecd8ba1e7db92d7f92a 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingEdgeIntersectionError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingEdgeIntersectionError.java
@@ -26,6 +26,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
 import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
 import de.hft.stuttgart.citydoctor2.datastructure.Edge;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
 import de.hft.stuttgart.citydoctor2.math.Vector3d;
 
@@ -36,7 +37,7 @@ import de.hft.stuttgart.citydoctor2.math.Vector3d;
  * @author Matthias Betz
  *
  */
-public class RingEdgeIntersectionError extends CheckError {
+public class RingEdgeIntersectionError implements CheckError {
 
 	private static final long serialVersionUID = 4923311259469198172L;
 
@@ -46,7 +47,6 @@ public class RingEdgeIntersectionError extends CheckError {
 	private LinearRing lr;
 
 	public RingEdgeIntersectionError(LinearRing lr, Edge e1, Edge e2, Vector3d intersection) {
-		super(ErrorId.GE_R_SELF_INTERSECTION, ErrorType.ERROR, lr);
 		if (e1 == null || e2 == null || lr == null || intersection == null) {
 			throw new IllegalArgumentException("Parameters may not be null");
 		}
@@ -96,4 +96,19 @@ public class RingEdgeIntersectionError extends CheckError {
 		return "EdgeIntersectionError [e1=" + e1 + ", e2=" + e2 + ", intersection=" + intersection + ", lr=" + lr + "]";
 	}
 
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.GE_R_SELF_INTERSECTION;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return getRing();
+	}
+
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingNotClosedError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingNotClosedError.java
index 5e2c07d5687c81ed1c6668ef09882aab5f0ae189..a29542230df6529d2a2c236872c9f646ff2d8d0b 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingNotClosedError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingNotClosedError.java
@@ -25,6 +25,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType;
 import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
 import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
 
 /**
@@ -34,14 +35,13 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
  * @author Matthias Betz
  *
  */
-public class RingNotClosedError extends CheckError {
+public class RingNotClosedError implements CheckError {
 
 	private static final long serialVersionUID = 2554099996830579201L;
 	
 	private LinearRing ring;
 
 	public RingNotClosedError(LinearRing ring) {
-		super(ErrorId.GE_R_NOT_CLOSED, ErrorType.ERROR, ring);
 		this.ring = ring;
 	}
 
@@ -68,4 +68,19 @@ public class RingNotClosedError extends CheckError {
 	public String toString() {
 		return "RingNotClosedError [ring=" + ring + "]";
 	}
+
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.GE_R_NOT_CLOSED;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return getRing();
+	}
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingTooFewPointsError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingTooFewPointsError.java
index 41df5974e8d0c281b590b79e3e34252dc8dc07e2..b7a08a726bf9d7c800e7ecef67ae99aee8b56898 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingTooFewPointsError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingTooFewPointsError.java
@@ -25,6 +25,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType;
 import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
 import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
 
 /**
@@ -33,14 +34,13 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
  * @author Matthias Betz
  *
  */
-public class RingTooFewPointsError extends CheckError {
+public class RingTooFewPointsError implements CheckError {
 
 	private static final long serialVersionUID = 7207518573842743261L;
 	
 	private LinearRing lr;
 
 	public RingTooFewPointsError(LinearRing lr) {
-		super(ErrorId.GE_R_TOO_FEW_POINTS, ErrorType.ERROR, lr);
 		this.lr = lr;
 	}
 
@@ -67,4 +67,19 @@ public class RingTooFewPointsError extends CheckError {
 	public String toString() {
 		return "TooFewPointsError [lr=" + lr + "]";
 	}
+
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.GE_R_TOO_FEW_POINTS;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return getRing();
+	}
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SchematronError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SchematronError.java
index b9a17a9d03ea3b3e7f39886051fe84b2a63aba7d..e682d3fe87d77c16fb7728ba6c21e8a261091ce7 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SchematronError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SchematronError.java
@@ -25,15 +25,15 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType;
 import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
 import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 
-public class SchematronError extends CheckError {
+public class SchematronError implements CheckError {
 	
 	private static final long serialVersionUID = -2964084500589868928L;
 	
 	private String text;
 	
 	public SchematronError(String text) {
-		super(ErrorId.SEM_SCHEMATRON_ERROR, ErrorType.ERROR, null);
 		this.text = text;
 	}
 
@@ -61,4 +61,19 @@ public class SchematronError extends CheckError {
 		return text;
 	}
 
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.SEM_SCHEMATRON_ERROR;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return null;
+	}
+
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SolidNotClosedError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SolidNotClosedError.java
index 78ac4af853072c62eac2c9e9982dafae39a1819d..f0e7152c95082a5bbb6f69fcc5e35cfd99d868e0 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SolidNotClosedError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SolidNotClosedError.java
@@ -29,6 +29,7 @@ import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
 import de.hft.stuttgart.citydoctor2.datastructure.Edge;
 import de.hft.stuttgart.citydoctor2.datastructure.Geometry;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 
 /**
  * If a geometry has holes in it, it results in edges being traversed only once.
@@ -37,7 +38,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Geometry;
  * @author Matthias Betz
  *
  */
-public class SolidNotClosedError extends CheckError {
+public class SolidNotClosedError implements CheckError {
 
 	private static final long serialVersionUID = 8256385219885788891L;
 	
@@ -45,7 +46,6 @@ public class SolidNotClosedError extends CheckError {
 	private Geometry g;
 
 	public SolidNotClosedError(Geometry g, List<Edge> errorEdges) {
-		super(ErrorId.GE_S_NOT_CLOSED, ErrorType.ERROR, g);
 		this.errorEdges = errorEdges;
 		this.g = g;
 	}
@@ -78,4 +78,19 @@ public class SolidNotClosedError extends CheckError {
 	public String toString() {
 		return "SolidNotClosedError [errorEdges=" + errorEdges + ", g=" + g + "]";
 	}
+
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.GE_S_NOT_CLOSED;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return getGeometry();
+	}
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SolidSelfIntError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SolidSelfIntError.java
index 0b29cb2bf483f811d6b516892d0d01d1721ba11c..63cc91c0b2ca99958c3f86dbfb5dc8b7c25f66b2 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SolidSelfIntError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SolidSelfIntError.java
@@ -28,6 +28,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
 import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
 import de.hft.stuttgart.citydoctor2.datastructure.Geometry;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 import de.hft.stuttgart.citydoctor2.utils.PolygonIntersection;
 
 /**
@@ -36,7 +37,7 @@ import de.hft.stuttgart.citydoctor2.utils.PolygonIntersection;
  * @author Matthias Betz
  *
  */
-public class SolidSelfIntError extends CheckError {
+public class SolidSelfIntError implements CheckError {
 
 	private static final long serialVersionUID = -4479936555545861422L;
 	
@@ -45,7 +46,6 @@ public class SolidSelfIntError extends CheckError {
 	private List<PolygonIntersection> intersections;
 
 	public SolidSelfIntError(Geometry g, List<PolygonIntersection> intersections) {
-		super(ErrorId.GE_S_SELF_INTERSECTION, ErrorType.ERROR, g);
 		this.g = g;
 		this.intersections = intersections;
 	}
@@ -77,4 +77,19 @@ public class SolidSelfIntError extends CheckError {
 	public String toString() {
 		return "SolidSelfIntError [g=" + g + ", intersection=" + intersections + "]";
 	}
+
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.GE_S_SELF_INTERSECTION;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return getGeometry();
+	}
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SurfaceUnfragmentedError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SurfaceUnfragmentedError.java
index 9ca015e48477c28f5f893d781a72fbd96e794cb2..55d02c6d25f16724fb77c5f954dc6470b3f1670e 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SurfaceUnfragmentedError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SurfaceUnfragmentedError.java
@@ -26,6 +26,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
 import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
 import de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 
 /**
  * Container object for an unfragmented error
@@ -33,7 +34,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface;
  * @author Matthias Betz
  *
  */
-public class SurfaceUnfragmentedError extends CheckError {
+public class SurfaceUnfragmentedError implements CheckError {
 
 	private static final long serialVersionUID = 3146243879393474196L;
 	
@@ -41,7 +42,6 @@ public class SurfaceUnfragmentedError extends CheckError {
 	private double angleDeviation;
 
 	public SurfaceUnfragmentedError(BoundarySurface bs, double angleDerivation) {
-		super(ErrorId.SEM_BS_UNFRAGMENTED, ErrorType.ERROR, bs);
 		this.bs = bs;
 		this.angleDeviation = angleDerivation;
 	}
@@ -70,4 +70,19 @@ public class SurfaceUnfragmentedError extends CheckError {
 		report.add("angleDerivation", angleDeviation);
 	}
 
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.SEM_BS_UNFRAGMENTED;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return getBoundarySurface();
+	}
+
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/TinyEdgeError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/TinyEdgeError.java
index 41ffd8bcfd5e16f6ce41252efd756b230ce19428..45f5860b63f7ad01a66f4db5854a54a20f368451 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/TinyEdgeError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/TinyEdgeError.java
@@ -25,21 +25,21 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType;
 import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
 import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
 
-public class TinyEdgeError extends CheckError {
+public class TinyEdgeError implements CheckError {
 
-	/**
-	 * 
-	 */
 	private static final long serialVersionUID = 865493182529055651L;
 
+	private Polygon p;
+	
 	public TinyEdgeError(Polygon p) {
-		super(ErrorId.GE_P_TINY_EDGE, ErrorType.ERROR, p);
+		this.p = p;
 	}
 	
 	public Polygon getPolygon() {
-		return (Polygon) getFeature();
+		return p;
 	}
 
 	@Override
@@ -56,5 +56,20 @@ public class TinyEdgeError extends CheckError {
 	public void report(ErrorReport report) {
 		report.add(getPolygon());
 	}
+
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.GE_P_TINY_EDGE;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return getPolygon();
+	}
 	
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/TooFewPolygonsError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/TooFewPolygonsError.java
index 13c01e1293f8724b420f4712be217bfd109500c2..3b65d139ba36e7f2eaac71ee569dac000f6c58ce 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/TooFewPolygonsError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/TooFewPolygonsError.java
@@ -26,6 +26,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
 import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
 import de.hft.stuttgart.citydoctor2.datastructure.Geometry;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 
 /**
  * When a geometry has less than 4 polygons, it cannot form a valid solid.
@@ -33,14 +34,13 @@ import de.hft.stuttgart.citydoctor2.datastructure.Geometry;
  * @author Matthias Betz
  *
  */
-public class TooFewPolygonsError extends CheckError {
+public class TooFewPolygonsError implements CheckError {
 
 	private static final long serialVersionUID = 5800732409355221678L;
 	
 	private Geometry g;
 
 	public TooFewPolygonsError(Geometry g) {
-		super(ErrorId.GE_S_TOO_FEW_POLYGONS, ErrorType.ERROR, g);
 		this.g = g;
 	}
 
@@ -68,4 +68,19 @@ public class TooFewPolygonsError extends CheckError {
 	public String toString() {
 		return "TooFewPolygonsError [g=" + g + "]";
 	}
+
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.GE_S_TOO_FEW_POLYGONS;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return getGeometry();
+	}
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/UnknownCheckError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/UnknownCheckError.java
index 8c160f3f9b6b1fffb2aaf63c24423a4b44151ed3..e583cc5fc738d6dabda33ff85bbbe4bfcf5069b3 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/UnknownCheckError.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/UnknownCheckError.java
@@ -28,6 +28,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType;
 import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
 import de.hft.stuttgart.citydoctor2.check.HealingMethod;
 import de.hft.stuttgart.citydoctor2.check.ModificationListener;
+import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
 
 /**
  * This error is created when an unexpected exception is thrown by the code.
@@ -35,7 +36,7 @@ import de.hft.stuttgart.citydoctor2.check.ModificationListener;
  * @author Matthias Betz
  *
  */
-public class UnknownCheckError extends CheckError {
+public class UnknownCheckError implements CheckError {
 
 	private static final long serialVersionUID = -6554097632341055596L;
 	
@@ -44,7 +45,6 @@ public class UnknownCheckError extends CheckError {
 	private CheckId checkId;
 
 	public UnknownCheckError(Checkable c, Exception e, Check check) {
-		super(ErrorId.UNKNOWN_ERROR, ErrorType.ERROR, null);
 		this.c = c;
 		this.e = e;
 		checkId = check.getCheckId();
@@ -83,4 +83,19 @@ public class UnknownCheckError extends CheckError {
 	public String toString() {
 		return "UnknownCheckError [c=" + c + ", e=" + e + "]";
 	}
+
+	@Override
+	public ErrorType getType() {
+		return ErrorType.ERROR;
+	}
+
+	@Override
+	public ErrorId getErrorId() {
+		return ErrorId.UNKNOWN_ERROR;
+	}
+
+	@Override
+	public GmlElement getFeature() {
+		return null;
+	}
 }
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/Vertex.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/Vertex.java
index b1730d404f6a4fb5e11dd07b8831e6b1de28c75d..3c28df77ccd2e0a098acfce66c760fcdf7a19ba6 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/Vertex.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/Vertex.java
@@ -73,6 +73,9 @@ public class Vertex extends Vector3d {
 	}
 
 	public Set<LinearRing> getAdjacentRings(Geometry geom) {
+		if (adjacentRings == null) {
+			return Collections.emptySet();
+		}
 		for (SerializablePair<Geometry, HashSet<LinearRing>> adjacency : adjacentRings) {
 			if (adjacency.getValue0() == geom) {
 				if (neighbors == null || neighbors.isEmpty()) {
@@ -91,6 +94,9 @@ public class Vertex extends Vector3d {
 	}
 
 	void addAdjacentRing(LinearRing ring, Geometry geom) {
+		if (adjacentRings == null) {
+			adjacentRings = new ArrayList<>(2);
+		}
 		findAdjacentRingsForGeometry(geom).add(ring);
 	}
 
@@ -122,6 +128,9 @@ public class Vertex extends Vector3d {
 	}
 
 	public Set<Polygon> getAdjacentPolygons(Geometry geom) {
+		if (adjacentRings == null) {
+			return Collections.emptySet();
+		}
 		for (SerializablePair<Geometry, HashSet<LinearRing>> adjecency : adjacentRings) {
 			if (adjecency.getValue0() == geom) {
 				Set<Polygon> polygons = new HashSet<>();
@@ -163,6 +172,9 @@ public class Vertex extends Vector3d {
 	}
 
 	public void clearAdjacentRings(Geometry geometry) {
+		if (adjacentRings == null) {
+			return;
+		}
 		findAdjacentRingsForGeometry(geometry).clear();
 	}
 
@@ -202,6 +214,6 @@ public class Vertex extends Vector3d {
 	 * Remove all adjacent rings from this vertex, ignoring geometry association
 	 */
 	void clearAdjacentRings() {
-		adjacentRings = new ArrayList<>(2);
+		adjacentRings = null;
 	}
 }
diff --git a/CityDoctorParent/CityDoctorValidation/pom.xml b/CityDoctorParent/CityDoctorValidation/pom.xml
index 54a4c5afcfb1aff7f9c17c461744ebc3ff78b861..f9c22c36c02f2648ef60ddf536f396581ea48bb8 100644
--- a/CityDoctorParent/CityDoctorValidation/pom.xml
+++ b/CityDoctorParent/CityDoctorValidation/pom.xml
@@ -19,7 +19,6 @@
 			<groupId>de.hft.stuttgart</groupId>
 			<artifactId>CityDoctorCheckResult</artifactId>
 		</dependency>
-
 		<dependency>
 			<groupId>net.sf.saxon</groupId>
 			<artifactId>Saxon-HE</artifactId>
@@ -67,17 +66,6 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-jar-plugin</artifactId>
 				<version>3.2.0</version>
-				<configuration>
-					<archive>
-						<manifest>
-							<addClasspath>true</addClasspath>
-							<classpathPrefix>libs/</classpathPrefix>
-							<mainClass>
-								de.hft.stuttgart.citydoctor2.CityDoctorValidation
-							</mainClass>
-						</manifest>
-					</archive>
-				</configuration>
 			</plugin>
 			<plugin>
 				<artifactId>maven-assembly-plugin</artifactId>
diff --git a/CityDoctorParent/CityDoctorValidation/src/assembly/start.bat b/CityDoctorParent/CityDoctorValidation/src/assembly/start.bat
index d846eaf12f9adbf10db41141c70f141d8ed10b61..be1476f93431ac8f554f879d46cc8ce136ab5ef9 100644
--- a/CityDoctorParent/CityDoctorValidation/src/assembly/start.bat
+++ b/CityDoctorParent/CityDoctorValidation/src/assembly/start.bat
@@ -1,2 +1,2 @@
-java -jar ${project.artifactId}-${project.version}.jar -in REKaiserwall.gml -config testConfigWithStreaming.yml -xmlReport output.xml
+java -classpath libs/*;plugins/*;${project.artifactId}-${project.version}.jar de.hft.stuttgart.citydoctor2.CityDoctorValidation -in REKaiserwall.gml -config testConfigWithStreaming.yml -xmlReport output.xml
 pause
\ No newline at end of file
diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/check/ValidationConfiguration.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/check/ValidationConfiguration.java
index 2097d02424ba5e5258991631aa352827ddc7d264..35fbe42c794824fa680a2123e4eb673efe617f68 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/check/ValidationConfiguration.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/check/ValidationConfiguration.java
@@ -26,7 +26,6 @@ import java.io.FileWriter;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.Serializable;
-import java.util.EnumMap;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -82,7 +81,7 @@ public class ValidationConfiguration implements Serializable {
 
 	public static ValidationConfiguration loadStandardValidationConfig() {
 		ValidationConfiguration config = new ValidationConfiguration();
-		config.checks = new EnumMap<>(CheckId.class);
+		config.checks = new HashMap<>();
 		for (CheckPrototype c : Checks.getCheckPrototypes()) {
 			CheckConfiguration cConfig = new CheckConfiguration();
 			cConfig.setEnabled(true);
@@ -144,7 +143,7 @@ public class ValidationConfiguration implements Serializable {
 
 	public Map<CheckId, CheckConfiguration> getChecks() {
 		if (checks == null) {
-			checks = new EnumMap<>(CheckId.class);
+			checks = new HashMap<>();
 		}
 		return checks;
 	}
diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/CheckContainer.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/CheckContainer.java
index af875d30427a7d8f2f2cd3e79d0264c00c98c409..e60d8ec13dea80c9cfc96d8bbeaf62098086d736 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/CheckContainer.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/CheckContainer.java
@@ -66,7 +66,6 @@ public class CheckContainer extends Check {
 	private final Check check;
 
 	public CheckContainer(Check check) {
-		super(null);
 		this.check = check;
 	}
 
@@ -81,7 +80,7 @@ public class CheckContainer extends Check {
 	}
 
 	@Override
-	public List<Class<? extends Checkable>> getApplicableToClasses() {
+	public List<Class<Checkable>> getApplicableToClasses() {
 		return check.getApplicableToClasses();
 	}
 
diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/Checks.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/Checks.java
index 6d1507525355190036040f3afcc4718abacf0ec6..cbae54fd03436c3afc344c491fe7a0880a9224a1 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/Checks.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/Checks.java
@@ -19,29 +19,30 @@
 package de.hft.stuttgart.citydoctor2.checks;
 
 import java.util.ArrayList;
-import java.util.EnumMap;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.ServiceLoader;
 
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
 import de.hft.stuttgart.citydoctor2.check.Check;
 import de.hft.stuttgart.citydoctor2.check.CheckId;
-import de.hft.stuttgart.citydoctor2.checks.geometry.RingNotClosedCheck;
-import de.hft.stuttgart.citydoctor2.checks.geometry.MultipleConnectedComponentCheck;
 import de.hft.stuttgart.citydoctor2.checks.geometry.DuplicatePointsCheck;
-import de.hft.stuttgart.citydoctor2.checks.geometry.PolygonWrongOrientationCheck;
 import de.hft.stuttgart.citydoctor2.checks.geometry.FaceOutCheck;
 import de.hft.stuttgart.citydoctor2.checks.geometry.HoleOutsideCheck;
 import de.hft.stuttgart.citydoctor2.checks.geometry.InteriorDisconnectedCheck;
 import de.hft.stuttgart.citydoctor2.checks.geometry.ManifoldVertexCheck;
+import de.hft.stuttgart.citydoctor2.checks.geometry.MultipleConnectedComponentCheck;
 import de.hft.stuttgart.citydoctor2.checks.geometry.NestedRingsCheck;
-import de.hft.stuttgart.citydoctor2.checks.geometry.NumPointsCheck;
 import de.hft.stuttgart.citydoctor2.checks.geometry.NonManifoldEdgeCheck;
+import de.hft.stuttgart.citydoctor2.checks.geometry.NumPointsCheck;
 import de.hft.stuttgart.citydoctor2.checks.geometry.PlanarCheck;
-import de.hft.stuttgart.citydoctor2.checks.geometry.PolygonSameOrientationCheck;
 import de.hft.stuttgart.citydoctor2.checks.geometry.PolygonIntersectingRingsCheck;
+import de.hft.stuttgart.citydoctor2.checks.geometry.PolygonSameOrientationCheck;
+import de.hft.stuttgart.citydoctor2.checks.geometry.PolygonWrongOrientationCheck;
+import de.hft.stuttgart.citydoctor2.checks.geometry.RingNotClosedCheck;
 import de.hft.stuttgart.citydoctor2.checks.geometry.RingSelfIntCheck;
 import de.hft.stuttgart.citydoctor2.checks.geometry.SolidNotClosedCheck;
 import de.hft.stuttgart.citydoctor2.checks.geometry.SolidSelfIntCheck;
@@ -71,7 +72,7 @@ public class Checks {
 
 	static {
 		checkPrototypes = new ArrayList<>();
-		prototypeMap = new EnumMap<>(CheckId.class);
+		prototypeMap = new HashMap<>();
 
 		// add new checks here
 		publish(new NumPointsCheck());
@@ -99,6 +100,12 @@ public class Checks {
 		publish(new IsCeilingCheck());
 		publish(new IsGroundCheck());
 		publish(new RoofSurfaceUnfragmentedCheck());
+		
+		// load checks from service loader
+		ServiceLoader<Check> checkLoader = ServiceLoader.load(Check.class);
+		for (Check c : checkLoader) {
+			publish(c);
+		}
 	}
 
 	/**
@@ -106,7 +113,7 @@ public class Checks {
 	 * this container. Access the checks with {@link Checks#getCheckForId(CheckId)}.
 	 */
 	public Checks() {
-		checkMap = new EnumMap<>(CheckId.class);
+		checkMap = new HashMap<>();
 
 		for (CheckPrototype proto : checkPrototypes) {
 			Check check = proto.createCheck();
diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/DuplicatePointsCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/DuplicatePointsCheck.java
index 7836e9ccb26572964797936a15febbf68743bf54..d564b8365d7611e56aa2127d526100f61bac4f9b 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/DuplicatePointsCheck.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/DuplicatePointsCheck.java
@@ -52,7 +52,6 @@ public class DuplicatePointsCheck extends Check {
 	private static final String EPSILON_NAME = "minVertexDistance";
 
 	private static final List<CheckId> dependencies;
-	private static final List<Class<? extends Checkable>> applicableToClasses;
 
 	static {
 		ArrayList<CheckId> deps = new ArrayList<>();
@@ -62,8 +61,6 @@ public class DuplicatePointsCheck extends Check {
 
 		ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
 		classes.add(LinearRing.class);
-		applicableToClasses = Collections.unmodifiableList(classes);
-
 	}
 
 	private double epsilon = 0.0001;
@@ -78,20 +75,11 @@ public class DuplicatePointsCheck extends Check {
 		}
 	}
 
-	public DuplicatePointsCheck() {
-		super(CheckId.C_GE_R_DUPLICATE_POINT);
-	}
-
 	@Override
 	public List<CheckId> getDependencies() {
 		return dependencies;
 	}
 
-	@Override
-	public List<Class<? extends Checkable>> getApplicableToClasses() {
-		return applicableToClasses;
-	}
-
 	@Override
 	public void check(LinearRing lr) {
 		List<Vertex> pointList = lr.getVertices();
@@ -137,4 +125,9 @@ public class DuplicatePointsCheck extends Check {
 		return new DuplicatePointsCheck();
 	}
 
+	@Override
+	public CheckId getCheckId() {
+		return CheckId.C_GE_R_DUPLICATE_POINT;
+	}
+
 }
diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/FaceOutCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/FaceOutCheck.java
index c1d8fb719da89529627d59a258b836a4dca56714..00799cd3200d6f2d96c3355678954fc388aaf43c 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/FaceOutCheck.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/FaceOutCheck.java
@@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
 import de.hft.stuttgart.citydoctor2.check.CheckId;
 import de.hft.stuttgart.citydoctor2.check.CheckResult;
 import de.hft.stuttgart.citydoctor2.check.CheckType;
-import de.hft.stuttgart.citydoctor2.check.Checkable;
 import de.hft.stuttgart.citydoctor2.check.ResultStatus;
 import de.hft.stuttgart.citydoctor2.check.error.AllPolygonsWrongOrientationError;
 import de.hft.stuttgart.citydoctor2.datastructure.Geometry;
@@ -46,7 +45,6 @@ import de.hft.stuttgart.citydoctor2.tesselation.TesselatedPolygon;
 public class FaceOutCheck extends Check {
 
 	private static final List<CheckId> dependencies;
-	private static final List<Class<? extends Checkable>> applicableToClasses;
 
 	static {
 		ArrayList<CheckId> deps = new ArrayList<>();
@@ -65,14 +63,6 @@ public class FaceOutCheck extends Check {
 		deps.add(CheckId.C_GE_S_SELF_INTERSECTION);
 
 		dependencies = Collections.unmodifiableList(deps);
-
-		ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
-		classes.add(Geometry.class);
-		applicableToClasses = Collections.unmodifiableList(classes);
-	}
-
-	public FaceOutCheck() {
-		super(CheckId.C_GE_S_ALL_POLYGONS_WRONG_ORIENTATION);
 	}
 
 	@Override
@@ -182,11 +172,6 @@ public class FaceOutCheck extends Check {
 		return dependencies;
 	}
 
-	@Override
-	public List<Class<? extends Checkable>> getApplicableToClasses() {
-		return applicableToClasses;
-	}
-
 	@Override
 	public CheckType getType() {
 		return CheckType.GEOMETRY;
@@ -197,4 +182,9 @@ public class FaceOutCheck extends Check {
 		return new FaceOutCheck();
 	}
 
+	@Override
+	public CheckId getCheckId() {
+		return CheckId.C_GE_S_ALL_POLYGONS_WRONG_ORIENTATION;
+	}
+
 }
diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/HoleOutsideCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/HoleOutsideCheck.java
index e00b6ef5aec750beb2519eb101991bc4241de061..68f60a14186571f533a6cdb89a503e8eb108bb24 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/HoleOutsideCheck.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/HoleOutsideCheck.java
@@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
 import de.hft.stuttgart.citydoctor2.check.CheckId;
 import de.hft.stuttgart.citydoctor2.check.CheckResult;
 import de.hft.stuttgart.citydoctor2.check.CheckType;
-import de.hft.stuttgart.citydoctor2.check.Checkable;
 import de.hft.stuttgart.citydoctor2.check.ResultStatus;
 import de.hft.stuttgart.citydoctor2.check.error.PolygonHoleOutsideError;
 import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
@@ -37,7 +36,6 @@ import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
 public class HoleOutsideCheck extends Check {
 
 	private static final List<CheckId> dependencies;
-	private static final List<Class<? extends Checkable>> applicableToClasses;
 
 	static {
 		ArrayList<CheckId> deps = new ArrayList<>();
@@ -48,16 +46,8 @@ public class HoleOutsideCheck extends Check {
 		deps.add(CheckId.C_GE_P_NON_PLANAR);
 		deps.add(CheckId.C_GE_P_ORIENTATION_RINGS_SAME);
 		dependencies = Collections.unmodifiableList(deps);
-
-		ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
-		classes.add(Polygon.class);
-		applicableToClasses = Collections.unmodifiableList(classes);
 	}
 	
-	public HoleOutsideCheck() {
-		super(CheckId.C_GE_P_HOLE_OUTSIDE);
-	}
-
 	@Override
 	public void check(Polygon p) {
 		List<LinearRing> holesOutside = new ArrayList<>();
@@ -85,11 +75,6 @@ public class HoleOutsideCheck extends Check {
 		}
 	}
 
-	@Override
-	public List<Class<? extends Checkable>> getApplicableToClasses() {
-		return applicableToClasses;
-	}
-
 	@Override
 	public List<CheckId> getDependencies() {
 		return dependencies;
@@ -104,4 +89,9 @@ public class HoleOutsideCheck extends Check {
 	public Check createNewInstance() {
 		return new HoleOutsideCheck();
 	}
+
+	@Override
+	public CheckId getCheckId() {
+		return CheckId.C_GE_P_HOLE_OUTSIDE;
+	}
 }
diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/InteriorDisconnectedCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/InteriorDisconnectedCheck.java
index aaa0e14bdab53d34a7d0bb40e133efff3b1ab1fb..e659b8589809ed821e1d65611bf5c6680860333e 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/InteriorDisconnectedCheck.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/InteriorDisconnectedCheck.java
@@ -29,7 +29,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
 import de.hft.stuttgart.citydoctor2.check.CheckId;
 import de.hft.stuttgart.citydoctor2.check.CheckResult;
 import de.hft.stuttgart.citydoctor2.check.CheckType;
-import de.hft.stuttgart.citydoctor2.check.Checkable;
 import de.hft.stuttgart.citydoctor2.check.DefaultParameter;
 import de.hft.stuttgart.citydoctor2.check.ResultStatus;
 import de.hft.stuttgart.citydoctor2.check.Unit;
@@ -46,7 +45,6 @@ public class InteriorDisconnectedCheck extends Check {
 	private static final String EPSILON_NAME = "Epsilon";
 	
 	private static final List<CheckId> dependencies;
-	private static final List<Class<? extends Checkable>> applicableToClasses;
 	private static final List<DefaultParameter> defaultParameters;
 	
 	static {
@@ -58,10 +56,6 @@ public class InteriorDisconnectedCheck extends Check {
 		deps.add(CheckId.C_GE_P_NON_PLANAR);
 		dependencies = Collections.unmodifiableList(deps);
 
-		ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
-		classes.add(Polygon.class);
-		applicableToClasses = Collections.unmodifiableList(classes);
-		
 		ArrayList<DefaultParameter> defaultParameter = new ArrayList<>();
 		defaultParameter.add(new DefaultParameter(EPSILON_NAME, "0.0001", Unit.METER));
 		defaultParameters = Collections.unmodifiableList(defaultParameter);
@@ -79,10 +73,6 @@ public class InteriorDisconnectedCheck extends Check {
 		}
 	}
 	
-	public InteriorDisconnectedCheck() {
-		super(CheckId.C_GE_P_INTERIOR_DISCONNECTED);
-	}
-	
 	@Override
 	public void check(Polygon p) {
 		if (p.getInnerRings().isEmpty()) {
@@ -175,11 +165,6 @@ public class InteriorDisconnectedCheck extends Check {
 		return defaultParameters;
 	}
 
-	@Override
-	public List<Class<? extends Checkable>> getApplicableToClasses() {
-		return applicableToClasses;
-	}
-	
 	@Override
 	public List<CheckId> getDependencies() {
 		return dependencies;
@@ -194,4 +179,9 @@ public class InteriorDisconnectedCheck extends Check {
 	public Check createNewInstance() {
 		return new InteriorDisconnectedCheck();
 	}
+
+	@Override
+	public CheckId getCheckId() {
+		return CheckId.C_GE_P_INTERIOR_DISCONNECTED;
+	}
 }
diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/ManifoldVertexCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/ManifoldVertexCheck.java
index 75fec3f3942d29d1d1d188b43da6511b615ac628..5a2c1c928e266b5b6c1d420ed6686ff069a78ed4 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/ManifoldVertexCheck.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/ManifoldVertexCheck.java
@@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
 import de.hft.stuttgart.citydoctor2.check.CheckId;
 import de.hft.stuttgart.citydoctor2.check.CheckResult;
 import de.hft.stuttgart.citydoctor2.check.CheckType;
-import de.hft.stuttgart.citydoctor2.check.Checkable;
 import de.hft.stuttgart.citydoctor2.check.ResultStatus;
 import de.hft.stuttgart.citydoctor2.check.error.NonManifoldVertexError;
 import de.hft.stuttgart.citydoctor2.datastructure.Edge;
@@ -47,7 +46,6 @@ import de.hft.stuttgart.citydoctor2.math.graph.PolygonGraph;
 public class ManifoldVertexCheck extends Check {
 
 	private static final List<CheckId> dependencies;
-	private static final List<Class<? extends Checkable>> applicableToClasses;
 
 	static {
 		ArrayList<CheckId> deps = new ArrayList<>();
@@ -64,15 +62,8 @@ public class ManifoldVertexCheck extends Check {
 		
 		dependencies = Collections.unmodifiableList(deps);
 
-		ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
-		classes.add(Geometry.class);
-		applicableToClasses = Collections.unmodifiableList(classes);
 	}
 	
-	public ManifoldVertexCheck() {
-		super(CheckId.C_GE_S_NON_MANIFOLD_VERTEX);
-	}
-
 	@Override
 	public void check(Geometry geom) {
 		// only for solids
@@ -102,11 +93,6 @@ public class ManifoldVertexCheck extends Check {
 		return dependencies;
 	}
 
-	@Override
-	public List<Class<? extends Checkable>> getApplicableToClasses() {
-		return applicableToClasses;
-	}
-
 	@Override
 	public CheckType getType() {
 		return CheckType.GEOMETRY;
@@ -116,4 +102,9 @@ public class ManifoldVertexCheck extends Check {
 	public Check createNewInstance() {
 		return new ManifoldVertexCheck();
 	}
+
+	@Override
+	public CheckId getCheckId() {
+		return CheckId.C_GE_S_NON_MANIFOLD_VERTEX;
+	}
 }
diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/MultipleConnectedComponentCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/MultipleConnectedComponentCheck.java
index fffd7617645a519140de1835646a2424ab6d6f90..0caf422718a704e99ffbd5eaa1c16eca38b8406f 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/MultipleConnectedComponentCheck.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/MultipleConnectedComponentCheck.java
@@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
 import de.hft.stuttgart.citydoctor2.check.CheckId;
 import de.hft.stuttgart.citydoctor2.check.CheckResult;
 import de.hft.stuttgart.citydoctor2.check.CheckType;
-import de.hft.stuttgart.citydoctor2.check.Checkable;
 import de.hft.stuttgart.citydoctor2.check.ResultStatus;
 import de.hft.stuttgart.citydoctor2.check.error.MultipleConnectedComponentsError;
 import de.hft.stuttgart.citydoctor2.datastructure.Geometry;
@@ -45,7 +44,6 @@ import de.hft.stuttgart.citydoctor2.math.graph.PolygonGraph;
 public class MultipleConnectedComponentCheck extends Check {
 
 	private static final List<CheckId> dependencies;
-	private static final List<Class<? extends Checkable>> applicableToClasses;
 
 	static {
 		ArrayList<CheckId> deps = new ArrayList<>();
@@ -59,16 +57,8 @@ public class MultipleConnectedComponentCheck extends Check {
 		deps.add(CheckId.C_GE_S_TOO_FEW_POLYGONS);
 		
 		dependencies = Collections.unmodifiableList(deps);
-
-		ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
-		classes.add(Geometry.class);
-		applicableToClasses = Collections.unmodifiableList(classes);
 	}
 	
-	public MultipleConnectedComponentCheck() {
-		super(CheckId.C_GE_S_MULTIPLE_CONNECTED_COMPONENTS);
-	}
-
 	@Override
 	public void check(Geometry g) {
 		// only for solids
@@ -97,11 +87,6 @@ public class MultipleConnectedComponentCheck extends Check {
 		return dependencies;
 	}
 
-	@Override
-	public List<Class<? extends Checkable>> getApplicableToClasses() {
-		return applicableToClasses;
-	}
-
 	@Override
 	public CheckType getType() {
 		return CheckType.GEOMETRY;
@@ -111,4 +96,9 @@ public class MultipleConnectedComponentCheck extends Check {
 	public Check createNewInstance() {
 		return new MultipleConnectedComponentCheck();
 	}
+
+	@Override
+	public CheckId getCheckId() {
+		return CheckId.C_GE_S_MULTIPLE_CONNECTED_COMPONENTS;
+	}
 }
diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NestedRingsCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NestedRingsCheck.java
index 44dccbee78b018bbca9b9ba9c250379232e21a19..7d5f9cc388ae96c6eb091513776b21a733c413a2 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NestedRingsCheck.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NestedRingsCheck.java
@@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
 import de.hft.stuttgart.citydoctor2.check.CheckId;
 import de.hft.stuttgart.citydoctor2.check.CheckResult;
 import de.hft.stuttgart.citydoctor2.check.CheckType;
-import de.hft.stuttgart.citydoctor2.check.Checkable;
 import de.hft.stuttgart.citydoctor2.check.ResultStatus;
 import de.hft.stuttgart.citydoctor2.check.error.NestedRingError;
 import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
@@ -37,7 +36,6 @@ import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
 public class NestedRingsCheck extends Check {
 	
 	private static final List<CheckId> dependencies;
-	private static final List<Class<? extends Checkable>> applicableToClasses;
 
 	static {
 		ArrayList<CheckId> deps = new ArrayList<>();
@@ -48,14 +46,6 @@ public class NestedRingsCheck extends Check {
 		deps.add(CheckId.C_GE_P_NON_PLANAR);
 		deps.add(CheckId.C_GE_P_ORIENTATION_RINGS_SAME);
 		dependencies = Collections.unmodifiableList(deps);
-
-		ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
-		classes.add(Polygon.class);
-		applicableToClasses = Collections.unmodifiableList(classes);
-	}
-	
-	public NestedRingsCheck() {
-		super(CheckId.C_GE_P_INNER_RINGS_NESTED);
 	}
 	
 	@Override
@@ -91,11 +81,6 @@ public class NestedRingsCheck extends Check {
 		return isInside;
 	}
 
-	@Override
-	public List<Class<? extends Checkable>> getApplicableToClasses() {
-		return applicableToClasses;
-	}
-	
 	@Override
 	public List<CheckId> getDependencies() {
 		return dependencies;
@@ -111,4 +96,9 @@ public class NestedRingsCheck extends Check {
 		return new NestedRingsCheck();
 	}
 
+	@Override
+	public CheckId getCheckId() {
+		return CheckId.C_GE_P_INNER_RINGS_NESTED;
+	}
+
 }
diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NonManifoldEdgeCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NonManifoldEdgeCheck.java
index fdaea689992eb1abb4d5daadba3c3a476992da3d..2f634d42d8d93ab0bd94b30f16997fb184136e36 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NonManifoldEdgeCheck.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NonManifoldEdgeCheck.java
@@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
 import de.hft.stuttgart.citydoctor2.check.CheckId;
 import de.hft.stuttgart.citydoctor2.check.CheckResult;
 import de.hft.stuttgart.citydoctor2.check.CheckType;
-import de.hft.stuttgart.citydoctor2.check.Checkable;
 import de.hft.stuttgart.citydoctor2.check.ResultStatus;
 import de.hft.stuttgart.citydoctor2.check.error.NonManifoldEdgeError;
 import de.hft.stuttgart.citydoctor2.datastructure.Edge;
@@ -44,7 +43,6 @@ import de.hft.stuttgart.citydoctor2.datastructure.GeometryType;
 public class NonManifoldEdgeCheck extends Check {
 
 	private static final List<CheckId> dependencies;
-	private static final List<Class<? extends Checkable>> applicableToClasses;
 
 	static {
 		ArrayList<CheckId> deps = new ArrayList<>();
@@ -57,14 +55,6 @@ public class NonManifoldEdgeCheck extends Check {
 		deps.add(CheckId.C_GE_P_NON_PLANAR);
 		deps.add(CheckId.C_GE_S_TOO_FEW_POLYGONS);
 		dependencies = Collections.unmodifiableList(deps);
-
-		ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
-		classes.add(Geometry.class);
-		applicableToClasses = Collections.unmodifiableList(classes);
-	}
-	
-	public NonManifoldEdgeCheck() {
-		super(CheckId.C_GE_S_NON_MANIFOLD_EDGE);
 	}
 	
 	@Override
@@ -96,11 +86,6 @@ public class NonManifoldEdgeCheck extends Check {
 		return dependencies;
 	}
 
-	@Override
-	public List<Class<? extends Checkable>> getApplicableToClasses() {
-		return applicableToClasses;
-	}
-
 	@Override
 	public CheckType getType() {
 		return CheckType.GEOMETRY;
@@ -110,4 +95,9 @@ public class NonManifoldEdgeCheck extends Check {
 	public Check createNewInstance() {
 		return new NonManifoldEdgeCheck();
 	}
+
+	@Override
+	public CheckId getCheckId() {
+		return CheckId.C_GE_S_NON_MANIFOLD_EDGE;
+	}
 }
diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NullAreaCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NullAreaCheck.java
index 26e3ee31ff2304519d6484dacb8ff1fbf3a43add..8f3a2c40c8878b18315adceaa8d021d758e86957 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NullAreaCheck.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NullAreaCheck.java
@@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.Check;
 import de.hft.stuttgart.citydoctor2.check.CheckId;
 import de.hft.stuttgart.citydoctor2.check.CheckResult;
 import de.hft.stuttgart.citydoctor2.check.CheckType;
-import de.hft.stuttgart.citydoctor2.check.Checkable;
 import de.hft.stuttgart.citydoctor2.check.DefaultParameter;
 import de.hft.stuttgart.citydoctor2.check.ResultStatus;
 import de.hft.stuttgart.citydoctor2.check.Unit;
@@ -46,7 +45,6 @@ public class NullAreaCheck extends Check {
 	private static final String DELTA_NAME = "delta";
 	
 	private static final List<CheckId> dependencies;
-	private static final List<Class<? extends Checkable>> applicableToClasses;
 	private static final List<DefaultParameter> defaultParameters;
 
 	static {
@@ -55,10 +53,6 @@ public class NullAreaCheck extends Check {
 		deps.add(CheckId.C_GE_R_NOT_CLOSED);
 		deps.add(CheckId.C_GE_R_DUPLICATE_POINT);
 		dependencies = Collections.unmodifiableList(deps);
-
-		ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
-		classes.add(LinearRing.class);
-		applicableToClasses = Collections.unmodifiableList(classes);
 		
 		ArrayList<DefaultParameter> defParameters = new ArrayList<>();
 		defParameters.add(new DefaultParameter(DELTA_NAME, "0.0001", Unit.SQUARE_METER));
@@ -67,11 +61,6 @@ public class NullAreaCheck extends Check {
 	
 	private double delta = 0.0001;
 	
-	public NullAreaCheck() {
-		super(CheckId.NULL_AREA);
-	}
-
-	
 	@Override
 	public void init(Map<String, String> parameters, ParserConfiguration config) {
 		if (parameters.containsKey(DELTA_NAME)) {
@@ -123,12 +112,6 @@ public class NullAreaCheck extends Check {
 		return dependencies;
 	}
 
-	@Override
-	public List<Class<? extends Checkable>> getApplicableToClasses() {
-		return applicableToClasses;
-	}
-	
-
 	@Override
 	public CheckType getType() {
 		return CheckType.GEOMETRY;
@@ -140,4 +123,9 @@ public class NullAreaCheck extends Check {
 		return new NullAreaCheck();
 	}
 
+	@Override
+	public CheckId getCheckId() {
+		return CheckId.C_GE_R_NULL_AREA;
+	}
+
 }
diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NumPointsCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NumPointsCheck.java
index b894c21174a5dcfa93cf517a2809fdae03a636e0..f2e7cbe8b0754eefcef7e4c53231b6cbfac1a96d 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NumPointsCheck.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NumPointsCheck.java
@@ -29,7 +29,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
 import de.hft.stuttgart.citydoctor2.check.CheckId;
 import de.hft.stuttgart.citydoctor2.check.CheckResult;
 import de.hft.stuttgart.citydoctor2.check.CheckType;
-import de.hft.stuttgart.citydoctor2.check.Checkable;
 import de.hft.stuttgart.citydoctor2.check.ResultStatus;
 import de.hft.stuttgart.citydoctor2.check.error.RingTooFewPointsError;
 import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
@@ -47,23 +46,14 @@ import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
  */
 public class NumPointsCheck extends Check {
 
-	private static final List<Class<? extends Checkable>> applicableToClasses;
 	private static final List<CheckId> dependencies;
 
 	static {
-		ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
-		classes.add(LinearRing.class);
-		applicableToClasses = Collections.unmodifiableList(classes);
-		
 		ArrayList<CheckId> temp = new ArrayList<>();
 		temp.add(CheckId.C_GE_R_NOT_CLOSED);
 		dependencies = Collections.unmodifiableList(temp);
 	}
 	
-	public NumPointsCheck() {
-		super(CheckId.C_GE_R_TOO_FEW_POINTS);
-	}
-
 	/**
 	 * checks if every linear ring has at least 3 distinct points
 	 */
@@ -101,12 +91,6 @@ public class NumPointsCheck extends Check {
 		lr.addCheckResult(cr);
 	}
 	
-
-	@Override
-	public List<Class<? extends Checkable>> getApplicableToClasses() {
-		return applicableToClasses;
-	}
-	
 	@Override
 	public List<CheckId> getDependencies() {
 		return dependencies;
@@ -121,4 +105,9 @@ public class NumPointsCheck extends Check {
 	public Check createNewInstance() {
 		return new NumPointsCheck();
 	}
+
+	@Override
+	public CheckId getCheckId() {
+		return CheckId.C_GE_R_TOO_FEW_POINTS;
+	}
 }
diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PlanarCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PlanarCheck.java
index 3e0e2c7a9ae780597cb1d04a1f0a7c1111413291..bd0801a37b2ec3b445cc1cf70fe391b3979e7bd6 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PlanarCheck.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PlanarCheck.java
@@ -29,7 +29,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
 import de.hft.stuttgart.citydoctor2.check.CheckId;
 import de.hft.stuttgart.citydoctor2.check.CheckResult;
 import de.hft.stuttgart.citydoctor2.check.CheckType;
-import de.hft.stuttgart.citydoctor2.check.Checkable;
 import de.hft.stuttgart.citydoctor2.check.DefaultParameter;
 import de.hft.stuttgart.citydoctor2.check.ResultStatus;
 import de.hft.stuttgart.citydoctor2.check.Unit;
@@ -63,7 +62,6 @@ public class PlanarCheck extends Check {
 	private static final String TINY_EDGE_TOLERANCE = "tinyEdgeTolerance";
 
 	private static final List<CheckId> dependencies;
-	private static final List<Class<? extends Checkable>> applicableToClasses;
 	private static final List<DefaultParameter> defaultParameters;
 
 	static {
@@ -74,10 +72,6 @@ public class PlanarCheck extends Check {
 		deps.add(CheckId.C_GE_R_SELF_INTERSECTION);
 		dependencies = Collections.unmodifiableList(deps);
 
-		ArrayList<Class<? extends Checkable>> classes = new ArrayList<>(1);
-		classes.add(Polygon.class);
-		applicableToClasses = Collections.unmodifiableList(classes);
-
 		ArrayList<DefaultParameter> defParameters = new ArrayList<>(3);
 		defParameters.add(new DefaultParameter(TYPE, DISTANCE, Unit.NONE));
 		defParameters.add(new DefaultParameter(DISTANCE_TOLERANCE, "0.01", Unit.METER));
@@ -93,10 +87,6 @@ public class PlanarCheck extends Check {
 	private double delta = 0.01;
 	private double tinyEdgeTolerance = 0.00000;
 
-	public PlanarCheck() {
-		super(CheckId.C_GE_P_NON_PLANAR);
-	}
-
 	@Override
 	public void init(Map<String, String> parameters, ParserConfiguration config) {
 		if (parameters.containsKey(TYPE)) {
@@ -253,11 +243,6 @@ public class PlanarCheck extends Check {
 		return false;
 	}
 
-	@Override
-	public List<Class<? extends Checkable>> getApplicableToClasses() {
-		return applicableToClasses;
-	}
-
 	@Override
 	public List<CheckId> getDependencies() {
 		return dependencies;
@@ -272,4 +257,9 @@ public class PlanarCheck extends Check {
 	public Check createNewInstance() {
 		return new PlanarCheck();
 	}
+
+	@Override
+	public CheckId getCheckId() {
+		return CheckId.C_GE_P_NON_PLANAR;
+	}
 }
diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PolygonIntersectingRingsCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PolygonIntersectingRingsCheck.java
index d15f34fb6c82013db18578a0b42e72841e545366..9eb7c24ff7e746ef9a546ee1e834fbc6a2f36b81 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PolygonIntersectingRingsCheck.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PolygonIntersectingRingsCheck.java
@@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
 import de.hft.stuttgart.citydoctor2.check.CheckId;
 import de.hft.stuttgart.citydoctor2.check.CheckResult;
 import de.hft.stuttgart.citydoctor2.check.CheckType;
-import de.hft.stuttgart.citydoctor2.check.Checkable;
 import de.hft.stuttgart.citydoctor2.check.ResultStatus;
 import de.hft.stuttgart.citydoctor2.check.error.PolygonIntersectingRingsError;
 import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
@@ -43,7 +42,6 @@ public class PolygonIntersectingRingsCheck extends Check {
 	
 
 	private static final List<CheckId> dependencies;
-	private static final List<Class<? extends Checkable>> applicableToClasses;
 	
 	static {
 		ArrayList<CheckId> deps = new ArrayList<>();
@@ -55,16 +53,8 @@ public class PolygonIntersectingRingsCheck extends Check {
 		deps.add(CheckId.C_GE_P_HOLE_OUTSIDE);
 		deps.add(CheckId.C_GE_P_INNER_RINGS_NESTED);
 		dependencies = Collections.unmodifiableList(deps);
-
-		ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
-		classes.add(Polygon.class);
-		applicableToClasses = Collections.unmodifiableList(classes);
 	}
 	
-	public PolygonIntersectingRingsCheck() {
-		super(CheckId.C_GE_P_INTERSECTING_RINGS);
-	}
-
 	@Override
 	public void check(Polygon p) {
 		if (p.getInnerRings().isEmpty()) {
@@ -128,11 +118,6 @@ public class PolygonIntersectingRingsCheck extends Check {
 		return false;
 	}
 
-	@Override
-	public List<Class<? extends Checkable>> getApplicableToClasses() {
-		return applicableToClasses;
-	}
-	
 	@Override
 	public List<CheckId> getDependencies() {
 		return dependencies;
@@ -147,4 +132,9 @@ public class PolygonIntersectingRingsCheck extends Check {
 	public Check createNewInstance() {
 		return new PolygonIntersectingRingsCheck();
 	}
+
+	@Override
+	public CheckId getCheckId() {
+		return CheckId.C_GE_P_INTERSECTING_RINGS;
+	}
 }
diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PolygonSameOrientationCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PolygonSameOrientationCheck.java
index d5bc2066b85ac0e086cad1702d041e36d358f263..7257585efbe6f275644c7945af9f49b11495952d 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PolygonSameOrientationCheck.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PolygonSameOrientationCheck.java
@@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
 import de.hft.stuttgart.citydoctor2.check.CheckId;
 import de.hft.stuttgart.citydoctor2.check.CheckResult;
 import de.hft.stuttgart.citydoctor2.check.CheckType;
-import de.hft.stuttgart.citydoctor2.check.Checkable;
 import de.hft.stuttgart.citydoctor2.check.ResultStatus;
 import de.hft.stuttgart.citydoctor2.check.error.PolygonSameOrientationError;
 import de.hft.stuttgart.citydoctor2.checks.util.Orientation;
@@ -39,7 +38,6 @@ import de.hft.stuttgart.citydoctor2.math.Ring2d;
 public class PolygonSameOrientationCheck extends Check {
 	
 	private static final List<CheckId> dependencies;
-	private static final List<Class<? extends Checkable>> applicableToClasses;
 
 	static {
 		ArrayList<CheckId> deps = new ArrayList<>();
@@ -49,14 +47,6 @@ public class PolygonSameOrientationCheck extends Check {
 		deps.add(CheckId.C_GE_R_SELF_INTERSECTION);
 		deps.add(CheckId.C_GE_P_NON_PLANAR);
 		dependencies = Collections.unmodifiableList(deps);
-
-		ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
-		classes.add(Polygon.class);
-		applicableToClasses = Collections.unmodifiableList(classes);
-	}
-	
-	public PolygonSameOrientationCheck() {
-		super(CheckId.C_GE_P_ORIENTATION_RINGS_SAME);
 	}
 	
 	@Override
@@ -84,11 +74,6 @@ public class PolygonSameOrientationCheck extends Check {
 
 	}
 
-	@Override
-	public List<Class<? extends Checkable>> getApplicableToClasses() {
-		return applicableToClasses;
-	}
-	
 	@Override
 	public List<CheckId> getDependencies() {
 		return dependencies;
@@ -104,4 +89,9 @@ public class PolygonSameOrientationCheck extends Check {
 		return new PolygonSameOrientationCheck();
 	}
 
+	@Override
+	public CheckId getCheckId() {
+		return CheckId.C_GE_P_ORIENTATION_RINGS_SAME;
+	}
+
 }
diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PolygonWrongOrientationCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PolygonWrongOrientationCheck.java
index 89ed425d71c6d147b5c234c3e500dc2e80239578..c0e8fd9a2f4a1aa3808513ae84bf575f2fdfc158 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PolygonWrongOrientationCheck.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PolygonWrongOrientationCheck.java
@@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
 import de.hft.stuttgart.citydoctor2.check.CheckId;
 import de.hft.stuttgart.citydoctor2.check.CheckResult;
 import de.hft.stuttgart.citydoctor2.check.CheckType;
-import de.hft.stuttgart.citydoctor2.check.Checkable;
 import de.hft.stuttgart.citydoctor2.check.ResultStatus;
 import de.hft.stuttgart.citydoctor2.check.error.PolygonWrongOrientationError;
 import de.hft.stuttgart.citydoctor2.datastructure.Edge;
@@ -43,7 +42,6 @@ public class PolygonWrongOrientationCheck extends Check {
 
 
 	private static final List<CheckId> dependencies;
-	private static final List<Class<? extends Checkable>> applicableToClasses;
 	
 	static {
 		ArrayList<CheckId> deps = new ArrayList<>();
@@ -58,14 +56,6 @@ public class PolygonWrongOrientationCheck extends Check {
 		deps.add(CheckId.C_GE_S_NOT_CLOSED);
 		deps.add(CheckId.C_GE_S_NON_MANIFOLD_EDGE);
 		dependencies = Collections.unmodifiableList(deps);
-
-		ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
-		classes.add(Geometry.class);
-		applicableToClasses = Collections.unmodifiableList(classes);
-	}
-	
-	public PolygonWrongOrientationCheck() {
-		super(CheckId.C_GE_S_POLYGON_WRONG_ORIENTATION);
 	}
 	
 	@Override
@@ -96,11 +86,6 @@ public class PolygonWrongOrientationCheck extends Check {
 		return dependencies;
 	}
 	
-	@Override
-	public List<Class<? extends Checkable>> getApplicableToClasses() {
-		return applicableToClasses;
-	}
-
 	@Override
 	public CheckType getType() {
 		return CheckType.GEOMETRY;
@@ -110,4 +95,9 @@ public class PolygonWrongOrientationCheck extends Check {
 	public Check createNewInstance() {
 		return new PolygonWrongOrientationCheck();
 	}
+
+	@Override
+	public CheckId getCheckId() {
+		return CheckId.C_GE_S_POLYGON_WRONG_ORIENTATION;
+	}
 }
\ No newline at end of file
diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/RingNotClosedCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/RingNotClosedCheck.java
index 21279bcfd22aaabc7ae6f534246b70b8844221b0..156af281fc8e7f67002339754fff52d4e42bef5c 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/RingNotClosedCheck.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/RingNotClosedCheck.java
@@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
 import de.hft.stuttgart.citydoctor2.check.CheckId;
 import de.hft.stuttgart.citydoctor2.check.CheckResult;
 import de.hft.stuttgart.citydoctor2.check.CheckType;
-import de.hft.stuttgart.citydoctor2.check.Checkable;
 import de.hft.stuttgart.citydoctor2.check.ResultStatus;
 import de.hft.stuttgart.citydoctor2.check.error.RingNotClosedError;
 import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
@@ -43,19 +42,10 @@ import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
 public class RingNotClosedCheck extends Check {
 
 	private static final List<CheckId> dependencies;
-	private static final List<Class<? extends Checkable>> applicableToClasses;
 
 	static {
 		ArrayList<CheckId> deps = new ArrayList<>();
 		dependencies = Collections.unmodifiableList(deps);
-		
-		ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
-		classes.add(LinearRing.class);
-		applicableToClasses = Collections.unmodifiableList(classes);
-	}
-	
-	public RingNotClosedCheck() {
-		super(CheckId.C_GE_R_NOT_CLOSED);
 	}
 	
 	@Override
@@ -63,11 +53,6 @@ public class RingNotClosedCheck extends Check {
 		return dependencies;
 	}
 	
-	@Override
-	public List<Class<? extends Checkable>> getApplicableToClasses() {
-		return applicableToClasses;
-	}
-
 	@Override
 	public void check(LinearRing lr) {
 		Vertex first = lr.getVertices().get(0);
@@ -92,4 +77,9 @@ public class RingNotClosedCheck extends Check {
 	public Check createNewInstance() {
 		return new RingNotClosedCheck();
 	}
+
+	@Override
+	public CheckId getCheckId() {
+		return CheckId.C_GE_R_NOT_CLOSED;
+	}
 }
diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/RingSelfIntCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/RingSelfIntCheck.java
index f62c3cf61788ba5967726935cf341234c433db95..a3e49ebfdba85d019a323cde98a61845b57e2498 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/RingSelfIntCheck.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/RingSelfIntCheck.java
@@ -28,10 +28,9 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
 import de.hft.stuttgart.citydoctor2.check.CheckId;
 import de.hft.stuttgart.citydoctor2.check.CheckResult;
 import de.hft.stuttgart.citydoctor2.check.CheckType;
-import de.hft.stuttgart.citydoctor2.check.Checkable;
 import de.hft.stuttgart.citydoctor2.check.ResultStatus;
-import de.hft.stuttgart.citydoctor2.check.error.RingEdgeIntersectionError;
 import de.hft.stuttgart.citydoctor2.check.error.PointTouchesEdgeError;
+import de.hft.stuttgart.citydoctor2.check.error.RingEdgeIntersectionError;
 import de.hft.stuttgart.citydoctor2.datastructure.Edge;
 import de.hft.stuttgart.citydoctor2.datastructure.Geometry;
 import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
@@ -46,7 +45,6 @@ public class RingSelfIntCheck extends Check {
 
 	
 	private static final List<CheckId> dependencies;
-	private static final List<Class<? extends Checkable>> applicableToClasses;
 
 	
 	static {
@@ -55,19 +53,10 @@ public class RingSelfIntCheck extends Check {
 		deps.add(CheckId.C_GE_R_NOT_CLOSED);
 		deps.add(CheckId.C_GE_R_DUPLICATE_POINT);
 		dependencies = Collections.unmodifiableList(deps);
-
-		ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
-		classes.add(LinearRing.class);
-		applicableToClasses = Collections.unmodifiableList(classes);
-
 	}
 
 	private double epsilon = 0.0001;
 
-	public RingSelfIntCheck() {
-		super(CheckId.C_GE_R_SELF_INTERSECTION);
-	}
-
 	@Override
 	public void init(Map<String, String> parameters, ParserConfiguration config) {
 		String epsilonString = parameters.get(EPSILON_NAME);
@@ -151,11 +140,6 @@ public class RingSelfIntCheck extends Check {
 		return dependencies;
 	}
 
-	@Override
-	public List<Class<? extends Checkable>> getApplicableToClasses() {
-		return applicableToClasses;
-	}
-	
 	@Override
 	public CheckType getType() {
 		return CheckType.GEOMETRY;
@@ -165,4 +149,9 @@ public class RingSelfIntCheck extends Check {
 	public Check createNewInstance() {
 		return new RingSelfIntCheck();
 	}
+
+	@Override
+	public CheckId getCheckId() {
+		return CheckId.C_GE_R_SELF_INTERSECTION;
+	}
 }
diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/SolidNotClosedCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/SolidNotClosedCheck.java
index 6e996f244d9d2c990808c3241e4010375f0191af..2239d9459280456ffc13f02cd5a21eae320315d2 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/SolidNotClosedCheck.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/SolidNotClosedCheck.java
@@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
 import de.hft.stuttgart.citydoctor2.check.CheckId;
 import de.hft.stuttgart.citydoctor2.check.CheckResult;
 import de.hft.stuttgart.citydoctor2.check.CheckType;
-import de.hft.stuttgart.citydoctor2.check.Checkable;
 import de.hft.stuttgart.citydoctor2.check.ResultStatus;
 import de.hft.stuttgart.citydoctor2.check.error.SolidNotClosedError;
 import de.hft.stuttgart.citydoctor2.datastructure.Edge;
@@ -44,7 +43,6 @@ import de.hft.stuttgart.citydoctor2.datastructure.GeometryType;
 public class SolidNotClosedCheck extends Check {
 
 	private static final List<CheckId> dependencies;
-	private static final List<Class<? extends Checkable>> applicableToClasses;
 
 	static {
 		ArrayList<CheckId> deps = new ArrayList<>();
@@ -58,16 +56,8 @@ public class SolidNotClosedCheck extends Check {
 		deps.add(CheckId.C_GE_S_TOO_FEW_POLYGONS);
 		
 		dependencies = Collections.unmodifiableList(deps);
-
-		ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
-		classes.add(Geometry.class);
-		applicableToClasses = Collections.unmodifiableList(classes);
 	}
 
-	public SolidNotClosedCheck() {
-		super(CheckId.C_GE_S_NOT_CLOSED);
-	}
-	
 	@Override
 	public void check(Geometry g) {
 		// only for solids
@@ -98,11 +88,6 @@ public class SolidNotClosedCheck extends Check {
 		return dependencies;
 	}
 
-	@Override
-	public List<Class<? extends Checkable>> getApplicableToClasses() {
-		return applicableToClasses;
-	}
-
 	@Override
 	public CheckType getType() {
 		return CheckType.GEOMETRY;
@@ -112,4 +97,9 @@ public class SolidNotClosedCheck extends Check {
 	public Check createNewInstance() {
 		return new SolidNotClosedCheck();
 	}
+
+	@Override
+	public CheckId getCheckId() {
+		return CheckId.C_GE_S_NOT_CLOSED;
+	}
 }
diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/SolidSelfIntCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/SolidSelfIntCheck.java
index 5878d8a3b8ea0807e376f3380868aa34403ade25..ed5f7d065fef919c7dd54a91455f896e47be60d6 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/SolidSelfIntCheck.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/SolidSelfIntCheck.java
@@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
 import de.hft.stuttgart.citydoctor2.check.CheckId;
 import de.hft.stuttgart.citydoctor2.check.CheckResult;
 import de.hft.stuttgart.citydoctor2.check.CheckType;
-import de.hft.stuttgart.citydoctor2.check.Checkable;
 import de.hft.stuttgart.citydoctor2.check.GeometrySelfIntersection;
 import de.hft.stuttgart.citydoctor2.check.ResultStatus;
 import de.hft.stuttgart.citydoctor2.check.error.SolidSelfIntError;
@@ -45,7 +44,6 @@ import de.hft.stuttgart.citydoctor2.utils.PolygonIntersection;
 public class SolidSelfIntCheck extends Check {
 
 	private static final List<CheckId> dependencies;
-	private static final List<Class<? extends Checkable>> applicableToClasses;
 
 	static {
 		ArrayList<CheckId> deps = new ArrayList<>();
@@ -66,14 +64,6 @@ public class SolidSelfIntCheck extends Check {
 		deps.add(CheckId.C_GE_S_NON_MANIFOLD_EDGE);
 		deps.add(CheckId.C_GE_S_NON_MANIFOLD_VERTEX);
 		deps.add(CheckId.C_GE_S_POLYGON_WRONG_ORIENTATION);
-
-		ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
-		classes.add(Geometry.class);
-		applicableToClasses = Collections.unmodifiableList(classes);
-	}
-
-	public SolidSelfIntCheck() {
-		super(CheckId.C_GE_S_SELF_INTERSECTION);
 	}
 
 	@Override
@@ -104,11 +94,6 @@ public class SolidSelfIntCheck extends Check {
 		return cr;
 	}
 
-	@Override
-	public List<Class<? extends Checkable>> getApplicableToClasses() {
-		return applicableToClasses;
-	}
-
 	@Override
 	public List<CheckId> getDependencies() {
 		return dependencies;
@@ -123,4 +108,9 @@ public class SolidSelfIntCheck extends Check {
 	public Check createNewInstance() {
 		return new SolidSelfIntCheck();
 	}
+
+	@Override
+	public CheckId getCheckId() {
+		return CheckId.C_GE_S_SELF_INTERSECTION;
+	}
 }
diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/TooFewPolygonsCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/TooFewPolygonsCheck.java
index 778cd2621d6a9c5579255a5def7c4685f4d1f5a1..f2ea49e5c169825705af3bb0da494118c8d2f145 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/TooFewPolygonsCheck.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/TooFewPolygonsCheck.java
@@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
 import de.hft.stuttgart.citydoctor2.check.CheckId;
 import de.hft.stuttgart.citydoctor2.check.CheckResult;
 import de.hft.stuttgart.citydoctor2.check.CheckType;
-import de.hft.stuttgart.citydoctor2.check.Checkable;
 import de.hft.stuttgart.citydoctor2.check.ResultStatus;
 import de.hft.stuttgart.citydoctor2.check.error.TooFewPolygonsError;
 import de.hft.stuttgart.citydoctor2.datastructure.Geometry;
@@ -41,7 +40,6 @@ import de.hft.stuttgart.citydoctor2.datastructure.GeometryType;
 public class TooFewPolygonsCheck extends Check {
 
 	private static final List<CheckId> dependencies;
-	private static final List<Class<? extends Checkable>> applicableToClasses;
 
 	static {
 		ArrayList<CheckId> deps = new ArrayList<>();
@@ -54,16 +52,8 @@ public class TooFewPolygonsCheck extends Check {
 		deps.add(CheckId.C_GE_P_NON_PLANAR);
 		
 		dependencies = Collections.unmodifiableList(deps);
-
-		ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
-		classes.add(Geometry.class);
-		applicableToClasses = Collections.unmodifiableList(classes);
 	}
 	
-	public TooFewPolygonsCheck() {
-		super(CheckId.C_GE_S_TOO_FEW_POLYGONS);
-	}
-
 	/**
 	 * This method does the main check whether the solid have at least 4 faces or
 	 * not.
@@ -93,11 +83,6 @@ public class TooFewPolygonsCheck extends Check {
 		return dependencies;
 	}
 
-	@Override
-	public List<Class<? extends Checkable>> getApplicableToClasses() {
-		return applicableToClasses;
-	}
-
 	@Override
 	public CheckType getType() {
 		return CheckType.GEOMETRY;
@@ -107,4 +92,9 @@ public class TooFewPolygonsCheck extends Check {
 	public Check createNewInstance() {
 		return new TooFewPolygonsCheck();
 	}
+
+	@Override
+	public CheckId getCheckId() {
+		return CheckId.C_GE_S_TOO_FEW_POLYGONS;
+	}
 }
diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/GroundSurfaceUnfragmented.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/GroundSurfaceUnfragmented.java
index f58ca417b31ab3f61940aed681226bc10ae392f6..55bcad728d5ebd9cf4f7a2b8b649b60812af1f5a 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/GroundSurfaceUnfragmented.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/GroundSurfaceUnfragmented.java
@@ -26,7 +26,6 @@ import de.hft.stuttgart.citydoctor2.check.Check;
 import de.hft.stuttgart.citydoctor2.check.CheckId;
 import de.hft.stuttgart.citydoctor2.check.CheckResult;
 import de.hft.stuttgart.citydoctor2.check.CheckType;
-import de.hft.stuttgart.citydoctor2.check.Checkable;
 import de.hft.stuttgart.citydoctor2.check.ResultStatus;
 import de.hft.stuttgart.citydoctor2.checks.util.UnfragmentedCheck;
 import de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface;
@@ -41,20 +40,11 @@ import de.hft.stuttgart.citydoctor2.datastructure.BoundarySurfaceType;
 public class GroundSurfaceUnfragmented extends Check {
 
 	private static final List<CheckId> dependencies;
-	private static final List<Class<? extends Checkable>> applicableToClasses;
 
 	static {
 		ArrayList<CheckId> deps = new ArrayList<>();
 		deps.add(CheckId.C_GE_R_TOO_FEW_POINTS);
 		dependencies = Collections.unmodifiableList(deps);
-
-		ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
-		classes.add(BoundarySurface.class);
-		applicableToClasses = Collections.unmodifiableList(classes);
-	}
-
-	public GroundSurfaceUnfragmented() {
-		super(CheckId.C_SEM_BS_GROUND_NOT_FRAGMENTED);
 	}
 
 	@Override
@@ -77,11 +67,6 @@ public class GroundSurfaceUnfragmented extends Check {
 		return dependencies;
 	}
 
-	@Override
-	public List<Class<? extends Checkable>> getApplicableToClasses() {
-		return applicableToClasses;
-	}
-
 	@Override
 	public CheckType getType() {
 		return CheckType.SEMANTIC;
@@ -92,4 +77,9 @@ public class GroundSurfaceUnfragmented extends Check {
 		return new GroundSurfaceUnfragmented();
 	}
 
+	@Override
+	public CheckId getCheckId() {
+		return CheckId.C_SEM_BS_GROUND_NOT_FRAGMENTED;
+	}
+
 }
diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsCeilingCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsCeilingCheck.java
index 202aa5bcd26a003678ed6fe4d2ef1f55276b10b5..c825c04b401dfaa6e73f340fdaf594c0fe7eaa83 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsCeilingCheck.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsCeilingCheck.java
@@ -26,7 +26,6 @@ import de.hft.stuttgart.citydoctor2.check.Check;
 import de.hft.stuttgart.citydoctor2.check.CheckId;
 import de.hft.stuttgart.citydoctor2.check.CheckResult;
 import de.hft.stuttgart.citydoctor2.check.CheckType;
-import de.hft.stuttgart.citydoctor2.check.Checkable;
 import de.hft.stuttgart.citydoctor2.check.ResultStatus;
 import de.hft.stuttgart.citydoctor2.check.error.NotCeilingError;
 import de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface;
@@ -44,7 +43,6 @@ import de.hft.stuttgart.citydoctor2.math.Vector3d;
  */
 public class IsCeilingCheck extends Check {
 	
-	private static final List<Class<? extends Checkable>> applicableToClasses;
 	private static final List<CheckId> dependencies;
 	
 	static {
@@ -55,14 +53,6 @@ public class IsCeilingCheck extends Check {
 		deps.add(CheckId.C_GE_R_SELF_INTERSECTION);
 		deps.add(CheckId.C_GE_P_NON_PLANAR);
 		dependencies = Collections.unmodifiableList(deps);
-		
-		ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
-		classes.add(BoundarySurface.class);
-		applicableToClasses = Collections.unmodifiableList(classes);
-	}
-	
-	public IsCeilingCheck() {
-		super(CheckId.C_SEM_BS_NOT_CEILING);
 	}
 	
 	@Override
@@ -86,11 +76,6 @@ public class IsCeilingCheck extends Check {
 		bs.addCheckResult(cr);
 	}
 
-	@Override
-	public List<Class<? extends Checkable>> getApplicableToClasses() {
-		return applicableToClasses;
-	}
-	
 	@Override
 	public List<CheckId> getDependencies() {
 		return dependencies;
@@ -106,4 +91,9 @@ public class IsCeilingCheck extends Check {
 		return new IsCeilingCheck();
 	}
 
+	@Override
+	public CheckId getCheckId() {
+		return CheckId.C_SEM_BS_NOT_CEILING;
+	}
+
 }
diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsFloorCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsFloorCheck.java
index ac09d8a0700247e8c6b05b79dd4063c2c9d8cce2..e2e0017fd6e235adeb5f257c8ce911e0d41ed1c7 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsFloorCheck.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsFloorCheck.java
@@ -26,7 +26,6 @@ import de.hft.stuttgart.citydoctor2.check.Check;
 import de.hft.stuttgart.citydoctor2.check.CheckId;
 import de.hft.stuttgart.citydoctor2.check.CheckResult;
 import de.hft.stuttgart.citydoctor2.check.CheckType;
-import de.hft.stuttgart.citydoctor2.check.Checkable;
 import de.hft.stuttgart.citydoctor2.check.ResultStatus;
 import de.hft.stuttgart.citydoctor2.check.error.NotFloorError;
 import de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface;
@@ -45,7 +44,6 @@ import de.hft.stuttgart.citydoctor2.math.Vector3d;
  */
 public class IsFloorCheck extends Check {
 	
-	private static final List<Class<? extends Checkable>> applicableToClasses;
 	private static final List<CheckId> dependencies;
 	
 	static {
@@ -56,14 +54,6 @@ public class IsFloorCheck extends Check {
 		deps.add(CheckId.C_GE_R_SELF_INTERSECTION);
 		deps.add(CheckId.C_GE_P_NON_PLANAR);
 		dependencies = Collections.unmodifiableList(deps);
-
-		ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
-		classes.add(BoundarySurface.class);
-		applicableToClasses = Collections.unmodifiableList(classes);
-	}
-	
-	public IsFloorCheck() {
-		super(CheckId.C_SEM_BS_NOT_FLOOR);
 	}
 	
 	@Override
@@ -92,11 +82,6 @@ public class IsFloorCheck extends Check {
 		return dependencies;
 	}
 	
-	@Override
-	public List<Class<? extends Checkable>> getApplicableToClasses() {
-		return applicableToClasses;
-	}
-
 	@Override
 	public CheckType getType() {
 		return CheckType.SEMANTIC;
@@ -107,4 +92,9 @@ public class IsFloorCheck extends Check {
 		return new IsFloorCheck();
 	}
 
+	@Override
+	public CheckId getCheckId() {
+		return CheckId.C_SEM_BS_NOT_FLOOR;
+	}
+
 }
diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsGroundCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsGroundCheck.java
index 8e7f6f7e6c80d182a88407f372789c3a43831813..0d4e46fe261551e203a13ff356c58427cd1939e3 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsGroundCheck.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsGroundCheck.java
@@ -26,7 +26,6 @@ import de.hft.stuttgart.citydoctor2.check.Check;
 import de.hft.stuttgart.citydoctor2.check.CheckId;
 import de.hft.stuttgart.citydoctor2.check.CheckResult;
 import de.hft.stuttgart.citydoctor2.check.CheckType;
-import de.hft.stuttgart.citydoctor2.check.Checkable;
 import de.hft.stuttgart.citydoctor2.check.ResultStatus;
 import de.hft.stuttgart.citydoctor2.check.error.NotGroundError;
 import de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface;
@@ -44,7 +43,6 @@ import de.hft.stuttgart.citydoctor2.math.Vector3d;
  */
 public class IsGroundCheck extends Check {
 	
-	private static final List<Class<? extends Checkable>> applicableToClasses;
 	private static final List<CheckId> dependencies;
 	
 	static {
@@ -55,14 +53,6 @@ public class IsGroundCheck extends Check {
 		deps.add(CheckId.C_GE_R_SELF_INTERSECTION);
 		deps.add(CheckId.C_GE_P_NON_PLANAR);
 		dependencies = Collections.unmodifiableList(deps);
-
-		ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
-		classes.add(BoundarySurface.class);
-		applicableToClasses = Collections.unmodifiableList(classes);
-	}
-	
-	public IsGroundCheck() {
-		super(CheckId.C_SEM_BS_NOT_GROUND);
 	}
 	
 	@Override
@@ -86,11 +76,6 @@ public class IsGroundCheck extends Check {
 		bs.addCheckResult(cr);
 	}
 
-	@Override
-	public List<Class<? extends Checkable>> getApplicableToClasses() {
-		return applicableToClasses;
-	}
-	
 	@Override
 	public List<CheckId> getDependencies() {
 		return dependencies;
@@ -105,4 +90,9 @@ public class IsGroundCheck extends Check {
 	public Check createNewInstance() {
 		return new IsGroundCheck();
 	}
+
+	@Override
+	public CheckId getCheckId() {
+		return CheckId.C_SEM_BS_NOT_GROUND;
+	}
 }
diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsWallCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsWallCheck.java
index e99f934bd2aa65748b9832a34d1d9fcd9be472e8..85437c59efb7778b1306475203d870440c05c690 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsWallCheck.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsWallCheck.java
@@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.Check;
 import de.hft.stuttgart.citydoctor2.check.CheckId;
 import de.hft.stuttgart.citydoctor2.check.CheckResult;
 import de.hft.stuttgart.citydoctor2.check.CheckType;
-import de.hft.stuttgart.citydoctor2.check.Checkable;
 import de.hft.stuttgart.citydoctor2.check.DefaultParameter;
 import de.hft.stuttgart.citydoctor2.check.ResultStatus;
 import de.hft.stuttgart.citydoctor2.check.Unit;
@@ -52,7 +51,6 @@ public class IsWallCheck extends Check {
 	private static final String LOWER_ANGLE_NAME = "lowerAngle";
 	private static final String UPPER_ANGLE_NAME = "upperAngle";
 
-	private static final List<Class<? extends Checkable>> applicableToClasses;
 	private static final List<CheckId> dependencies;
 	private static final List<DefaultParameter> defaultParameters;
 
@@ -65,10 +63,6 @@ public class IsWallCheck extends Check {
 		deps.add(CheckId.C_GE_P_NON_PLANAR);
 		dependencies = Collections.unmodifiableList(deps);
 		
-		ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
-		classes.add(BoundarySurface.class);
-		applicableToClasses = Collections.unmodifiableList(classes);
-		
 		ArrayList<DefaultParameter> defParameters = new ArrayList<>(3);
 		defParameters.add(new DefaultParameter(LOWER_ANGLE_NAME, "45", Unit.DEGREE));
 		defParameters.add(new DefaultParameter(UPPER_ANGLE_NAME, "135", Unit.DEGREE));
@@ -84,10 +78,6 @@ public class IsWallCheck extends Check {
 	private double lowerAngleCos = Math.cos(45 * Math.PI / 180);
 	private double upperAngleCos = Math.cos(135 * Math.PI / 180);
 	
-	public IsWallCheck() {
-		super(CheckId.C_SEM_BS_IS_WALL);
-	}
-	
 	@Override
 	public void init(Map<String, String> params, ParserConfiguration config) {
 		String lowerAngleString = params.get(LOWER_ANGLE_NAME);
@@ -137,11 +127,6 @@ public class IsWallCheck extends Check {
 		bs.addCheckResult(cr);
 	}
 
-	@Override
-	public List<Class<? extends Checkable>> getApplicableToClasses() {
-		return applicableToClasses;
-	}
-	
 	@Override
 	public List<CheckId> getDependencies() {
 		return dependencies;
@@ -162,4 +147,9 @@ public class IsWallCheck extends Check {
 		return new IsWallCheck();
 	}
 
+	@Override
+	public CheckId getCheckId() {
+		return CheckId.C_SEM_BS_IS_WALL;
+	}
+
 }
diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/RoofSurfaceUnfragmentedCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/RoofSurfaceUnfragmentedCheck.java
index 60d0fd8520f3b0ec2ad180ac7c8052026bed1db5..692ed2ee4f0839641c9b67d5b157d5452327c57c 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/RoofSurfaceUnfragmentedCheck.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/RoofSurfaceUnfragmentedCheck.java
@@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.Check;
 import de.hft.stuttgart.citydoctor2.check.CheckId;
 import de.hft.stuttgart.citydoctor2.check.CheckResult;
 import de.hft.stuttgart.citydoctor2.check.CheckType;
-import de.hft.stuttgart.citydoctor2.check.Checkable;
 import de.hft.stuttgart.citydoctor2.check.DefaultParameter;
 import de.hft.stuttgart.citydoctor2.check.Unit;
 import de.hft.stuttgart.citydoctor2.checks.util.UnfragmentedCheck;
@@ -44,7 +43,6 @@ import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
 public class RoofSurfaceUnfragmentedCheck extends Check {
 
 	private static final List<CheckId> dependencies;
-	private static final List<Class<? extends Checkable>> applicableToClasses;
 	private static final List<DefaultParameter> defaultParameters;
 
 	private static final String MAX_ANGLE_DEVIATION = "maxAngleDeviation";
@@ -63,14 +61,6 @@ public class RoofSurfaceUnfragmentedCheck extends Check {
 		deps.add(CheckId.C_GE_R_SELF_INTERSECTION);
 		deps.add(CheckId.C_GE_P_NON_PLANAR);
 		dependencies = Collections.unmodifiableList(deps);
-
-		ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
-		classes.add(BoundarySurface.class);
-		applicableToClasses = Collections.unmodifiableList(classes);
-	}
-
-	public RoofSurfaceUnfragmentedCheck() {
-		super(CheckId.C_SEM_BS_ROOF_NOT_FRAGMENTED);
 	}
 
 	@Override
@@ -97,11 +87,6 @@ public class RoofSurfaceUnfragmentedCheck extends Check {
 		return dependencies;
 	}
 
-	@Override
-	public List<Class<? extends Checkable>> getApplicableToClasses() {
-		return applicableToClasses;
-	}
-
 	@Override
 	public List<DefaultParameter> getDefaultParameter() {
 		return defaultParameters;
@@ -117,4 +102,9 @@ public class RoofSurfaceUnfragmentedCheck extends Check {
 		return new RoofSurfaceUnfragmentedCheck();
 	}
 
+	@Override
+	public CheckId getCheckId() {
+		return CheckId.C_SEM_BS_ROOF_NOT_FRAGMENTED;
+	}
+
 }
diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/reporting/pdf/PdfStreamReporter.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/reporting/pdf/PdfStreamReporter.java
index efa73c8cd1f2bec92a7ef51c229f05d497e5b1ce..0b72d2d165675eb6621dc3dc7eb1fdb1c7a47533 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/reporting/pdf/PdfStreamReporter.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/reporting/pdf/PdfStreamReporter.java
@@ -21,7 +21,6 @@ package de.hft.stuttgart.citydoctor2.reporting.pdf;
 import java.io.OutputStream;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.EnumMap;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -113,7 +112,7 @@ public class PdfStreamReporter implements StreamReporter {
 	public PdfStreamReporter(OutputStream pdfOutputFile, String fileName, ValidationConfiguration config,
 			String logoPath) {
 		this.config = config;
-		errorStatistics = new EnumMap<>(ErrorId.class);
+		errorStatistics = new HashMap<>();
 		outFile = pdfOutputFile;
 		report = new PdfReport(logoPath);
 		report.writeSourceFileName(fileName);
diff --git a/CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/checks/CheckContainerTest.java b/CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/checks/CheckContainerTest.java
index 05a10fb57861fe70906e45393162166f6c565479..be6ff0a7c5ff3e541d4883f349b9cee68adbf124 100644
--- a/CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/checks/CheckContainerTest.java
+++ b/CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/checks/CheckContainerTest.java
@@ -20,15 +20,12 @@ package de.hft.stuttgart.citydoctor2.checks;
 
 import static org.junit.Assert.assertEquals;
 
-import java.util.List;
-
 import org.junit.Test;
 
 import de.hft.stuttgart.citydoctor2.check.Check;
 import de.hft.stuttgart.citydoctor2.check.CheckId;
 import de.hft.stuttgart.citydoctor2.check.CheckResult;
 import de.hft.stuttgart.citydoctor2.check.CheckType;
-import de.hft.stuttgart.citydoctor2.check.Checkable;
 import de.hft.stuttgart.citydoctor2.check.ErrorId;
 import de.hft.stuttgart.citydoctor2.check.ResultStatus;
 import de.hft.stuttgart.citydoctor2.datastructure.AbstractBuilding;
@@ -38,13 +35,8 @@ public class CheckContainerTest {
 
 	@Test
 	public void testExceptionCheck() {
-		Check c = new Check(CheckId.C_GE_P_HOLE_OUTSIDE) {
+		Check c = new Check() {
 
-			@Override
-			public List<Class<? extends Checkable>> getApplicableToClasses() {
-				return null;
-			}
-			
 			@Override
 			public void check(AbstractBuilding ab) {
 				throw new RuntimeException();
@@ -59,6 +51,11 @@ public class CheckContainerTest {
 			public Check createNewInstance() {
 				return null;
 			}
+
+			@Override
+			public CheckId getCheckId() {
+				return CheckId.C_GE_P_HOLE_OUTSIDE;
+			}
 			
 		};
 		CheckContainer cc = new CheckContainer(c);
diff --git a/CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/systemtest/NonManifoldEdgeSystemTest.java b/CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/systemtest/NonManifoldEdgeSystemTest.java
index 9528e5088ea087556652d59a49cde0b20c71fb10..f5a5885afba3ab1e7395a8b13f981fb76671afa4 100644
--- a/CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/systemtest/NonManifoldEdgeSystemTest.java
+++ b/CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/systemtest/NonManifoldEdgeSystemTest.java
@@ -21,7 +21,6 @@ package de.hft.stuttgart.citydoctor2.systemtest;
 import static org.junit.Assert.assertEquals;
 
 import java.io.IOException;
-import java.util.EnumMap;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -53,7 +52,7 @@ public class NonManifoldEdgeSystemTest {
 
 	@Test
 	public void testNonManifoldEdge2() throws CityGmlParseException, IOException, InvalidGmlFileException {
-		Map<CheckId, Map<String, String>> paramMap = new EnumMap<>(CheckId.class);
+		Map<CheckId, Map<String, String>> paramMap = new HashMap<>();
 		Map<String, String> parameter = new HashMap<>();
 		parameter.put("distanceTolerance", "0.1");
 		paramMap.put(CheckId.C_GE_P_NON_PLANAR, parameter);
diff --git a/CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/systemtest/PlanarTest.java b/CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/systemtest/PlanarTest.java
index 7230df5eae40e455043e3369a292f2dcf00f681d..24199737d5efc5bd79e0b71b1f15ceeff2defa87 100644
--- a/CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/systemtest/PlanarTest.java
+++ b/CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/systemtest/PlanarTest.java
@@ -21,7 +21,6 @@ package de.hft.stuttgart.citydoctor2.systemtest;
 import static org.junit.Assert.assertEquals;
 
 import java.io.IOException;
-import java.util.EnumMap;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -35,9 +34,9 @@ import de.hft.stuttgart.citydoctor2.check.ResultStatus;
 import de.hft.stuttgart.citydoctor2.datastructure.CityDoctorModel;
 import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
 import de.hft.stuttgart.citydoctor2.parser.CityGmlParseException;
-import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
 import de.hft.stuttgart.citydoctor2.parser.CityGmlParser;
 import de.hft.stuttgart.citydoctor2.parser.InvalidGmlFileException;
+import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
 
 /**
  * 
@@ -114,7 +113,7 @@ public class PlanarTest {
 	
 	@Test
 	public void testPlanarPolygon4() throws CityGmlParseException, IOException, InvalidGmlFileException {
-		Map<CheckId, Map<String, String>> paramMap = new EnumMap<>(CheckId.class);
+		Map<CheckId, Map<String, String>> paramMap = new HashMap<>();
 		Map<String, String> parameter = new HashMap<>();
 		parameter.put("distanceTolerance", "0.01");
 		paramMap.put(CheckId.C_GE_P_NON_PLANAR, parameter);
@@ -127,7 +126,7 @@ public class PlanarTest {
 	
 	@Test
 	public void testPlanarPolygon5() throws CityGmlParseException, IOException, InvalidGmlFileException {
-		Map<CheckId, Map<String, String>> paramMap = new EnumMap<>(CheckId.class);
+		Map<CheckId, Map<String, String>> paramMap = new HashMap<>();
 		Map<String, String> parameter = new HashMap<>();
 		parameter.put("type", "distance");
 		parameter.put("distanceTolerance", "0.5");
@@ -140,7 +139,7 @@ public class PlanarTest {
 	
 	@Test
 	public void testPlanarPolygon6() throws CityGmlParseException, IOException, InvalidGmlFileException {
-		Map<CheckId, Map<String, String>> paramMap = new EnumMap<>(CheckId.class);
+		Map<CheckId, Map<String, String>> paramMap = new HashMap<>();
 		Map<String, String> parameter = new HashMap<>();
 		parameter.put("type", "both");
 		paramMap.put(CheckId.C_GE_P_NON_PLANAR, parameter);