diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/adapter/types/RingSelfIntersectionErrorAdapter.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/adapter/types/RingSelfIntersectionErrorAdapter.java
index 0c6121819b9cd491caaad4fb5854d3d6307ff251..30513366af8b6b0e56898cffeb17b616faa85f41 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/adapter/types/RingSelfIntersectionErrorAdapter.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/adapter/types/RingSelfIntersectionErrorAdapter.java
@@ -53,10 +53,6 @@ public class RingSelfIntersectionErrorAdapter extends AbstractRingErrorAdapter<R
 	public void writeChildElements(RingSelfIntersectionError object, Namespaces namespaces, XMLWriter writer)
 			throws ObjectSerializeException, XMLWriteException {
 		super.writeChildElements(object, namespaces, writer);
-		if (object.getType() != null) {
-			writer.writeElement(
-					Element.of(QualityADEModule.NAMESPACE_URI, "type").addTextContent(object.getType().toString()));
-		}
 		if (object.getEdge1() != null) {
 			writer.writeElementUsingSerializer(Element.of(QualityADEModule.NAMESPACE_URI, "edge1"), object.getEdge1(),
 					EdgePropertyAdapter.class, namespaces);
@@ -73,5 +69,9 @@ public class RingSelfIntersectionErrorAdapter extends AbstractRingErrorAdapter<R
 			writer.writeElementUsingSerializer(Element.of(QualityADEModule.NAMESPACE_URI, "vertex2"),
 					object.getVertex2(), DirectPositionAdapter.class, namespaces);
 		}
+		if (object.getType() != null) {
+			writer.writeElement(
+					Element.of(QualityADEModule.NAMESPACE_URI, "type").addTextContent(object.getType().toString()));
+		}
 	}
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/enums/RingSelfIntType.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/enums/RingSelfIntType.java
index d6d5b83afe899f7939c7855622008f586d93b07d..e544927720bf0bb9be40f9facca3791c20cd88d2 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/enums/RingSelfIntType.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/enums/RingSelfIntType.java
@@ -16,5 +16,5 @@
 package de.hft.stuttgart.quality.model.enums;
 
 public enum RingSelfIntType {
-	DUPLICATE_POINT, POINT_TOUCHES_EDGE, EDGE_INTERSECTS_EDGE
+	EDGE_INTERSECTION, VERTEX_TOUCHES_EDGE, DUPLICATE_POINT, DEGENERATED_RING
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/AbstractError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/AbstractError.java
index 8d06b533ade8849679d8eee457a90d183401c509..f5675b0d32c128a779d52d4aa757470f95eec482 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/AbstractError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/AbstractError.java
@@ -20,9 +20,15 @@ import java.io.Serial;
 import org.citygml4j.core.model.ade.ADEObject;
 import org.xmlobjects.gml.model.GMLObject;
 
+import de.hft.stuttgart.quality.model.walker.ValidationErrorVisitor;
+
 public abstract class AbstractError extends GMLObject implements ADEObject {
 
     @Serial
     private static final long serialVersionUID = 4456303926951620441L;
-
+    
+    public void accept(ValidationErrorVisitor visitor) {
+    	visitor.visit(this);
+    }
+    
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/AbstractGeometryError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/AbstractGeometryError.java
index 58234e2f6250ff83e5511917b684847c06e88493..4e5203db5b695543faaa62d41ab845d220e6cfd6 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/AbstractGeometryError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/AbstractGeometryError.java
@@ -17,9 +17,17 @@ package de.hft.stuttgart.quality.model.types;
 
 import java.io.Serial;
 
+import de.hft.stuttgart.quality.model.walker.ValidationErrorVisitor;
+
 public abstract class AbstractGeometryError extends AbstractError {
 
     @Serial
     private static final long serialVersionUID = 5584980708521134866L;
+    
+    @Override
+    public void accept(ValidationErrorVisitor visitor) {
+    	super.accept(visitor);
+    	visitor.visit(this);
+    }
 
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/AbstractPolygonError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/AbstractPolygonError.java
index 47d3c46448e5d8f3f0cb4ae82751b1cf4e35dca9..bcf898cd3a5cbecb231483cc9d532ae3427666a9 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/AbstractPolygonError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/AbstractPolygonError.java
@@ -17,6 +17,8 @@ package de.hft.stuttgart.quality.model.types;
 
 import java.io.Serial;
 
+import de.hft.stuttgart.quality.model.walker.ValidationErrorVisitor;
+
 public abstract class AbstractPolygonError extends AbstractGeometryError {
 
     @Serial
@@ -31,5 +33,11 @@ public abstract class AbstractPolygonError extends AbstractGeometryError {
 	public void setPolygonId(String polygonId) {
 		this.polygonId = polygonId;
 	}
+	
+	@Override
+	public void accept(ValidationErrorVisitor visitor) {
+		super.accept(visitor);
+		visitor.visit(this);
+	}
 
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/AbstractRingError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/AbstractRingError.java
index 41f9f90d3ed3764670570b5ef2dda295d6ff817f..84255f41ad67cb79a4c5316013c16db5099d2de7 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/AbstractRingError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/AbstractRingError.java
@@ -17,6 +17,8 @@ package de.hft.stuttgart.quality.model.types;
 
 import java.io.Serial;
 
+import de.hft.stuttgart.quality.model.walker.ValidationErrorVisitor;
+
 public abstract class AbstractRingError extends AbstractGeometryError {
 
     @Serial
@@ -31,5 +33,11 @@ public abstract class AbstractRingError extends AbstractGeometryError {
 	public void setLinearRingId(String linearRingId) {
 		this.linearRingId = linearRingId;
 	}
+	
+	@Override
+	public void accept(ValidationErrorVisitor visitor) {
+		super.accept(visitor);
+		visitor.visit(this);
+	}
 
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/AbstractSemanticError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/AbstractSemanticError.java
index 8a2bc67d973636f6eef5df29a0d0b253772a0e55..3018482ed4beaf86283c69961d48d97f86721364 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/AbstractSemanticError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/AbstractSemanticError.java
@@ -17,9 +17,17 @@ package de.hft.stuttgart.quality.model.types;
 
 import java.io.Serial;
 
+import de.hft.stuttgart.quality.model.walker.ValidationErrorVisitor;
+
 public abstract class AbstractSemanticError extends AbstractError {
 
-    @Serial
-    private static final long serialVersionUID = 3754322190455789991L;
+	@Serial
+	private static final long serialVersionUID = 3754322190455789991L;
+
+	@Override
+	public void accept(ValidationErrorVisitor visitor) {
+		super.accept(visitor);
+		visitor.visit(this);
+	}
 
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/AbstractSolidError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/AbstractSolidError.java
index 3c326b5a8e8fa84808bc9aaab1530bb708267d71..cb9362f286c9bd56cbe1eb6f0aafc06705500c85 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/AbstractSolidError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/AbstractSolidError.java
@@ -17,12 +17,14 @@ package de.hft.stuttgart.quality.model.types;
 
 import java.io.Serial;
 
+import de.hft.stuttgart.quality.model.walker.ValidationErrorVisitor;
+
 public abstract class AbstractSolidError extends AbstractGeometryError {
 
-    @Serial
-    private static final long serialVersionUID = 8616094562996823088L;
-    
-    private String geometryId;
+	@Serial
+	private static final long serialVersionUID = 8616094562996823088L;
+
+	private String geometryId;
 
 	public String getGeometryId() {
 		return geometryId;
@@ -32,4 +34,10 @@ public abstract class AbstractSolidError extends AbstractGeometryError {
 		this.geometryId = geometryId;
 	}
 
+	@Override
+	public void accept(ValidationErrorVisitor visitor) {
+		super.accept(visitor);
+		visitor.visit(this);
+	}
+
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/AllPolygonsOrientedWrongError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/AllPolygonsOrientedWrongError.java
index f3634a15353e7883c05da303ece9b1f589d7aa37..bccf290db4883a441bc88ecd0799ec9e6755ec8b 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/AllPolygonsOrientedWrongError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/AllPolygonsOrientedWrongError.java
@@ -17,9 +17,17 @@ package de.hft.stuttgart.quality.model.types;
 
 import java.io.Serial;
 
+import de.hft.stuttgart.quality.model.walker.ValidationErrorVisitor;
+
 public class AllPolygonsOrientedWrongError extends AbstractSolidError {
 
     @Serial
     private static final long serialVersionUID = 4295306777217062184L;
+    
+    @Override
+    public void accept(ValidationErrorVisitor visitor) {
+    	super.accept(visitor);
+    	visitor.visit(this);
+    }
 
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/ConsecutivePointsSameError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/ConsecutivePointsSameError.java
index a45e30910722e93d0b77488b151a9cc2e2c217fc..7b8a0a1e997dbf050ca0b3bcd5714da4baad688c 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/ConsecutivePointsSameError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/ConsecutivePointsSameError.java
@@ -19,6 +19,8 @@ import java.io.Serial;
 
 import org.xmlobjects.gml.model.geometry.DirectPosition;
 
+import de.hft.stuttgart.quality.model.walker.ValidationErrorVisitor;
+
 public class ConsecutivePointsSameError extends AbstractRingError {
 
 	@Serial
@@ -42,6 +44,12 @@ public class ConsecutivePointsSameError extends AbstractRingError {
 	public void setVertex2(DirectPosition vertex2) {
 		this.vertex2 = asChild(vertex2);
 	}
+	
+	@Override
+	public void accept(ValidationErrorVisitor visitor) {
+		super.accept(visitor);
+		visitor.visit(this);
+	}
 
 	@Override
 	public String toString() {
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/HoleOutsideError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/HoleOutsideError.java
index fafdb46e7072a0402bb143ad5ca84565eaeb6439..6c6f199f871a28aa412f79cd5f72a5dcc9387d33 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/HoleOutsideError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/HoleOutsideError.java
@@ -17,6 +17,8 @@ package de.hft.stuttgart.quality.model.types;
 
 import java.io.Serial;
 
+import de.hft.stuttgart.quality.model.walker.ValidationErrorVisitor;
+
 public class HoleOutsideError extends AbstractPolygonError {
 
 	@Serial
@@ -31,6 +33,12 @@ public class HoleOutsideError extends AbstractPolygonError {
 	public void setLinearRingId(String linearRingId) {
 		this.linearRingId = linearRingId;
 	}
+	
+	@Override
+	public void accept(ValidationErrorVisitor visitor) {
+		super.accept(visitor);
+		visitor.visit(this);
+	}
 
 	@Override
 	public String toString() {
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/InnerRingsNestedError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/InnerRingsNestedError.java
index e03aaba66681ce392267e754ede5ad4a3e4c66d3..658f20986550bce2d22a708602f27edeb2e2d636 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/InnerRingsNestedError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/InnerRingsNestedError.java
@@ -17,6 +17,8 @@ package de.hft.stuttgart.quality.model.types;
 
 import java.io.Serial;
 
+import de.hft.stuttgart.quality.model.walker.ValidationErrorVisitor;
+
 public class InnerRingsNestedError extends AbstractPolygonError {
 
 	@Serial
@@ -40,6 +42,12 @@ public class InnerRingsNestedError extends AbstractPolygonError {
 	public void setLinearRingId2(String linearRingId2) {
 		this.linearRingId2 = linearRingId2;
 	}
+	
+	@Override
+	public void accept(ValidationErrorVisitor visitor) {
+		super.accept(visitor);
+		visitor.visit(this);
+	}
 
 	@Override
 	public String toString() {
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/InteriorDisconnectedError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/InteriorDisconnectedError.java
index b9f782e84a6ed192e41617635616f5042cebef2e..f750cd88523aa608749f14aed006be79957347ea 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/InteriorDisconnectedError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/InteriorDisconnectedError.java
@@ -17,7 +17,16 @@ package de.hft.stuttgart.quality.model.types;
 
 import java.io.Serial;
 
+import de.hft.stuttgart.quality.model.walker.ValidationErrorVisitor;
+
 public class InteriorDisconnectedError extends AbstractPolygonError {
+	
+	
+	@Override
+	public void accept(ValidationErrorVisitor visitor) {
+		super.accept(visitor);
+		visitor.visit(this);
+	}
 
     @Serial
     private static final long serialVersionUID = 8270468563578479182L;
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/IntersectingRingsError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/IntersectingRingsError.java
index 02c1efe4cc8aab39465864dacb48fb224dda840c..6ec183c4cafda9bd139d12cb8c73801ab6caeca6 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/IntersectingRingsError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/IntersectingRingsError.java
@@ -17,6 +17,8 @@ package de.hft.stuttgart.quality.model.types;
 
 import java.io.Serial;
 
+import de.hft.stuttgart.quality.model.walker.ValidationErrorVisitor;
+
 public class IntersectingRingsError extends AbstractPolygonError {
 
 	@Serial
@@ -40,6 +42,12 @@ public class IntersectingRingsError extends AbstractPolygonError {
 	public void setLinearRingId2(String linearRingId2) {
 		this.linearRingId2 = linearRingId2;
 	}
+	
+	@Override
+	public void accept(ValidationErrorVisitor visitor) {
+		super.accept(visitor);
+		visitor.visit(this);
+	}
 
 	@Override
 	public String toString() {
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/MultipleComponentsError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/MultipleComponentsError.java
index c07804c540b6bc18ced007085ba87d76d1625209..ee3b280b32bbd2e8632c58f8d51a1327cec203ef 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/MultipleComponentsError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/MultipleComponentsError.java
@@ -21,6 +21,7 @@ import java.util.List;
 import org.xmlobjects.model.ChildList;
 
 import de.hft.stuttgart.quality.model.properties.PolygonIdListProperty;
+import de.hft.stuttgart.quality.model.walker.ValidationErrorVisitor;
 
 public class MultipleComponentsError extends AbstractSolidError {
 
@@ -35,6 +36,12 @@ public class MultipleComponentsError extends AbstractSolidError {
 		}
 		return components;
 	}
+	
+	@Override
+	public void accept(ValidationErrorVisitor visitor) {
+		super.accept(visitor);
+		visitor.visit(this);
+	}
 
 	public void setComponents(List<PolygonIdListProperty> edges) {
 		this.components = asChild(edges);
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/NonManifoldEdgeError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/NonManifoldEdgeError.java
index b38562cacc6dee99ed5a61e7d704a2899e265c05..bb43f2e62960f6007021a9240a3029c2f36fdf64 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/NonManifoldEdgeError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/NonManifoldEdgeError.java
@@ -18,6 +18,7 @@ package de.hft.stuttgart.quality.model.types;
 import java.io.Serial;
 
 import de.hft.stuttgart.quality.model.properties.EdgeListProperty;
+import de.hft.stuttgart.quality.model.walker.ValidationErrorVisitor;
 
 public class NonManifoldEdgeError extends AbstractSolidError {
 
@@ -29,6 +30,12 @@ public class NonManifoldEdgeError extends AbstractSolidError {
 	public EdgeListProperty getEdges() {
 		return edges;
 	}
+	
+	@Override
+	public void accept(ValidationErrorVisitor visitor) {
+		super.accept(visitor);
+		visitor.visit(this);
+	}
 
 	public void setEdges(EdgeListProperty edges) {
 		this.edges = asChild(edges);
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/NonManifoldVertexError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/NonManifoldVertexError.java
index 36a758c30896d24b95b4a63b21b9ac09db605576..0d8d6fe6cf67d87e61d41bded0a1e1a1156a8d4e 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/NonManifoldVertexError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/NonManifoldVertexError.java
@@ -19,6 +19,8 @@ import java.io.Serial;
 
 import org.xmlobjects.gml.model.geometry.DirectPosition;
 
+import de.hft.stuttgart.quality.model.walker.ValidationErrorVisitor;
+
 public class NonManifoldVertexError extends AbstractSolidError {
 
     @Serial
@@ -33,5 +35,11 @@ public class NonManifoldVertexError extends AbstractSolidError {
 	public void setVertex(DirectPosition vertex) {
 		this.vertex = asChild(vertex);
 	}
+	
+	@Override
+	public void accept(ValidationErrorVisitor visitor) {
+		super.accept(visitor);
+		visitor.visit(this);
+	}
 
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/OrientationRingsSameError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/OrientationRingsSameError.java
index 287ad7a836438944b881a85b45c4aea3ec219420..1856639ded66fb9293579178cefe706bef67eb6a 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/OrientationRingsSameError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/OrientationRingsSameError.java
@@ -17,6 +17,8 @@ package de.hft.stuttgart.quality.model.types;
 
 import java.io.Serial;
 
+import de.hft.stuttgart.quality.model.walker.ValidationErrorVisitor;
+
 public class OrientationRingsSameError extends AbstractPolygonError {
 
 	@Serial
@@ -31,5 +33,11 @@ public class OrientationRingsSameError extends AbstractPolygonError {
 	public void setLinearRing(String linearRing) {
 		this.linearRing = linearRing;
 	}
+	
+	@Override
+	public void accept(ValidationErrorVisitor visitor) {
+		super.accept(visitor);
+		visitor.visit(this);
+	}
 
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/PlanarDistancePlaneError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/PlanarDistancePlaneError.java
index ae0b3bb3e87c22e08ffddfeb2bfd909fe860ec60..4e1c85989a4cbc867891e3214f5fe718a94d53c4 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/PlanarDistancePlaneError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/PlanarDistancePlaneError.java
@@ -20,6 +20,8 @@ import java.io.Serial;
 import org.xmlobjects.gml.model.geometry.DirectPosition;
 import org.xmlobjects.gml.model.measures.Length;
 
+import de.hft.stuttgart.quality.model.walker.ValidationErrorVisitor;
+
 public class PlanarDistancePlaneError extends AbstractPolygonError {
 
 	@Serial
@@ -43,6 +45,12 @@ public class PlanarDistancePlaneError extends AbstractPolygonError {
 	public void setDistance(Length distance) {
 		this.distance = asChild(distance);
 	}
+	
+	@Override
+	public void accept(ValidationErrorVisitor visitor) {
+		super.accept(visitor);
+		visitor.visit(this);
+	}
 
 	@Override
 	public String toString() {
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/PlanarNormalsDeviationError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/PlanarNormalsDeviationError.java
index 7f19339577bf0241d0744a06d7292a0ccc3f8459..c93fdce1dabcdf5bfcdf5a1a25496811362746ed 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/PlanarNormalsDeviationError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/PlanarNormalsDeviationError.java
@@ -19,6 +19,8 @@ import java.io.Serial;
 
 import org.xmlobjects.gml.model.measures.Angle;
 
+import de.hft.stuttgart.quality.model.walker.ValidationErrorVisitor;
+
 public class PlanarNormalsDeviationError extends AbstractPolygonError {
 
 	@Serial
@@ -33,5 +35,11 @@ public class PlanarNormalsDeviationError extends AbstractPolygonError {
 	public void setDeviation(Angle deviation) {
 		this.deviation = asChild(deviation);
 	}
+	
+	@Override
+	public void accept(ValidationErrorVisitor visitor) {
+		super.accept(visitor);
+		visitor.visit(this);
+	}
 
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/PolygonWrongOrientationError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/PolygonWrongOrientationError.java
index 6df9ef17f23af6d9086aa51b5bcbee905024c864..f6ed58d461e8f393b236e4b7ebc08e62e2ac960b 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/PolygonWrongOrientationError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/PolygonWrongOrientationError.java
@@ -18,6 +18,7 @@ package de.hft.stuttgart.quality.model.types;
 import java.io.Serial;
 
 import de.hft.stuttgart.quality.model.properties.EdgeListProperty;
+import de.hft.stuttgart.quality.model.walker.ValidationErrorVisitor;
 
 public class PolygonWrongOrientationError extends AbstractSolidError {
 
@@ -33,5 +34,11 @@ public class PolygonWrongOrientationError extends AbstractSolidError {
 	public void setEdges(EdgeListProperty edges) {
 		this.edges = edges;
 	}
+	
+	@Override
+	public void accept(ValidationErrorVisitor visitor) {
+		super.accept(visitor);
+		visitor.visit(this);
+	}
 
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/RingNotClosedError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/RingNotClosedError.java
index faf44a2d02e331cde2bfd2170c3c862cd2448ae1..7805c3a453144af789d7e5f1c8c17d8bd9897c8f 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/RingNotClosedError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/RingNotClosedError.java
@@ -17,7 +17,15 @@ package de.hft.stuttgart.quality.model.types;
 
 import java.io.Serial;
 
+import de.hft.stuttgart.quality.model.walker.ValidationErrorVisitor;
+
 public class RingNotClosedError extends AbstractRingError {
+	
+	@Override
+	public void accept(ValidationErrorVisitor visitor) {
+		super.accept(visitor);
+		visitor.visit(this);
+	}
 
     @Serial
     private static final long serialVersionUID = 3327214274004406000L;
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/RingSelfIntersectionError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/RingSelfIntersectionError.java
index 240d47ff8b6feabfc18d5052a3753fd6bb75246a..3fc1189bf63ae3751d068fe71a95ce1bee0af7f3 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/RingSelfIntersectionError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/RingSelfIntersectionError.java
@@ -21,6 +21,7 @@ import org.xmlobjects.gml.model.geometry.DirectPosition;
 
 import de.hft.stuttgart.quality.model.enums.RingSelfIntType;
 import de.hft.stuttgart.quality.model.properties.EdgeProperty;
+import de.hft.stuttgart.quality.model.walker.ValidationErrorVisitor;
 
 public class RingSelfIntersectionError extends AbstractRingError {
 
@@ -72,6 +73,12 @@ public class RingSelfIntersectionError extends AbstractRingError {
 	public void setVertex2(DirectPosition vertex2) {
 		this.vertex2 = asChild(vertex2);
 	}
+	
+	@Override
+	public void accept(ValidationErrorVisitor visitor) {
+		super.accept(visitor);
+		visitor.visit(this);
+	}
 
 	@Override
 	public String toString() {
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/RingTooFewPointsError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/RingTooFewPointsError.java
index c8866b7ee1f4572f27ed6ecf2d0be77325c22276..1f415566f0adabcf0d3705f67ec1ee9971be4798 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/RingTooFewPointsError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/RingTooFewPointsError.java
@@ -17,7 +17,15 @@ package de.hft.stuttgart.quality.model.types;
 
 import java.io.Serial;
 
+import de.hft.stuttgart.quality.model.walker.ValidationErrorVisitor;
+
 public class RingTooFewPointsError extends AbstractRingError {
+	
+	@Override
+	public void accept(ValidationErrorVisitor visitor) {
+		super.accept(visitor);
+		visitor.visit(this);
+	}
 
     @Serial
     private static final long serialVersionUID = 8057350098649982235L;
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SemanticAttributeMissingError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SemanticAttributeMissingError.java
index 45ddcdb338a30eab39098a9590fcf215ce382c65..3475d425f39abcab8339b3767ac1a90a30496a8d 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SemanticAttributeMissingError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SemanticAttributeMissingError.java
@@ -17,6 +17,8 @@ package de.hft.stuttgart.quality.model.types;
 
 import java.io.Serial;
 
+import de.hft.stuttgart.quality.model.walker.ValidationErrorVisitor;
+
 public class SemanticAttributeMissingError extends AbstractSemanticError {
 
 	@Serial
@@ -49,5 +51,11 @@ public class SemanticAttributeMissingError extends AbstractSemanticError {
 	public void setGeneric(boolean generic) {
 		this.generic = generic;
 	}
+	
+	@Override
+	public void accept(ValidationErrorVisitor visitor) {
+		super.accept(visitor);
+		visitor.visit(this);
+	}
 
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SemanticAttributeWrongValueError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SemanticAttributeWrongValueError.java
index 2564a49706cf67146ddb3788de5c1a70ef09e5c0..d0d0206296f932bed611631e8bb78a24a24f387f 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SemanticAttributeWrongValueError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SemanticAttributeWrongValueError.java
@@ -17,6 +17,8 @@ package de.hft.stuttgart.quality.model.types;
 
 import java.io.Serial;
 
+import de.hft.stuttgart.quality.model.walker.ValidationErrorVisitor;
+
 public class SemanticAttributeWrongValueError extends AbstractSemanticError {
 
     @Serial
@@ -49,5 +51,10 @@ public class SemanticAttributeWrongValueError extends AbstractSemanticError {
 	public void setGeneric(boolean generic) {
 		this.generic = generic;
 	}
+	@Override
+	public void accept(ValidationErrorVisitor visitor) {
+		super.accept(visitor);
+		visitor.visit(this);
+	}
 
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SolidNotClosedError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SolidNotClosedError.java
index 2e6e6e997cfdddbd8c4ce2d11b75e358e6f27a96..4e1c3d9b46ee060f68493ebda72d511c8cb4990a 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SolidNotClosedError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SolidNotClosedError.java
@@ -18,6 +18,7 @@ package de.hft.stuttgart.quality.model.types;
 import java.io.Serial;
 
 import de.hft.stuttgart.quality.model.properties.EdgeListProperty;
+import de.hft.stuttgart.quality.model.walker.ValidationErrorVisitor;
 
 public class SolidNotClosedError extends AbstractSolidError {
 
@@ -33,5 +34,11 @@ public class SolidNotClosedError extends AbstractSolidError {
 	public void setEdges(EdgeListProperty edges) {
 		this.edges = asChild(edges);
 	}
+	
+	@Override
+	public void accept(ValidationErrorVisitor visitor) {
+		super.accept(visitor);
+		visitor.visit(this);
+	}
 
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SolidSelfIntersectionError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SolidSelfIntersectionError.java
index 8ab15387e77b811ea64d233aa2ed60b955381afb..799e90a9124630199cfbebb0b64a1f4a5ef2d35f 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SolidSelfIntersectionError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SolidSelfIntersectionError.java
@@ -17,6 +17,8 @@ package de.hft.stuttgart.quality.model.types;
 
 import java.io.Serial;
 
+import de.hft.stuttgart.quality.model.walker.ValidationErrorVisitor;
+
 public class SolidSelfIntersectionError extends AbstractSolidError {
 
 	@Serial
@@ -40,5 +42,11 @@ public class SolidSelfIntersectionError extends AbstractSolidError {
 	public void setPolygonId2(String polygonId2) {
 		this.polygonId2 = polygonId2;
 	}
+	
+	@Override
+	public void accept(ValidationErrorVisitor visitor) {
+		super.accept(visitor);
+		visitor.visit(this);
+	}
 
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SolidTooFewPolygonsError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SolidTooFewPolygonsError.java
index f3deedec4a1e665c833831e224c8321773186851..3ee2e16bd12b6bc82db94cdedef5806205edb334 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SolidTooFewPolygonsError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SolidTooFewPolygonsError.java
@@ -17,7 +17,15 @@ package de.hft.stuttgart.quality.model.types;
 
 import java.io.Serial;
 
+import de.hft.stuttgart.quality.model.walker.ValidationErrorVisitor;
+
 public class SolidTooFewPolygonsError extends AbstractSolidError {
+	
+	@Override
+	public void accept(ValidationErrorVisitor visitor) {
+		super.accept(visitor);
+		visitor.visit(this);
+	}
 
     @Serial
     private static final long serialVersionUID = 1987841643971824973L;
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/ValidationResult.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/ValidationResult.java
index 308ddb21a3d4574cdc84c3c090d69ecca98c5d11..e795e5f10eb2ddbc47bca2eac10ba72be91a0c0f 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/ValidationResult.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/ValidationResult.java
@@ -25,6 +25,7 @@ import org.xmlobjects.model.ChildList;
 
 import de.hft.stuttgart.quality.model.enums.ResultType;
 import de.hft.stuttgart.quality.model.properties.AbstractErrorProperty;
+import de.hft.stuttgart.quality.model.walker.ValidationErrorVisitor;
 
 public class ValidationResult extends GMLObject implements ADEObject {
 
@@ -61,5 +62,14 @@ public class ValidationResult extends GMLObject implements ADEObject {
 	public void setResultType(ResultType resultType) {
 		this.resultType = resultType;
 	}
+	
+	public void accept(ValidationErrorVisitor visitor) {
+		for (AbstractErrorProperty errorProp : errors) {
+			if (errorProp.getObject() == null) {
+				continue;
+			}
+			errorProp.getObject().accept(visitor);
+		}
+	}
 
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/walker/ValidationErrorVisitor.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/walker/ValidationErrorVisitor.java
new file mode 100644
index 0000000000000000000000000000000000000000..e125575a78f1b0977dd5d526c7a69aa7b4ed3d18
--- /dev/null
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/walker/ValidationErrorVisitor.java
@@ -0,0 +1,156 @@
+/*-
+ * Copyright 2022 Hochschule für Technik Stuttgart
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package de.hft.stuttgart.quality.model.walker;
+
+import de.hft.stuttgart.quality.model.types.AbstractError;
+import de.hft.stuttgart.quality.model.types.AbstractGeometryError;
+import de.hft.stuttgart.quality.model.types.AbstractPolygonError;
+import de.hft.stuttgart.quality.model.types.AbstractRingError;
+import de.hft.stuttgart.quality.model.types.AbstractSemanticError;
+import de.hft.stuttgart.quality.model.types.AbstractSolidError;
+import de.hft.stuttgart.quality.model.types.AllPolygonsOrientedWrongError;
+import de.hft.stuttgart.quality.model.types.ConsecutivePointsSameError;
+import de.hft.stuttgart.quality.model.types.HoleOutsideError;
+import de.hft.stuttgart.quality.model.types.InnerRingsNestedError;
+import de.hft.stuttgart.quality.model.types.InteriorDisconnectedError;
+import de.hft.stuttgart.quality.model.types.IntersectingRingsError;
+import de.hft.stuttgart.quality.model.types.MultipleComponentsError;
+import de.hft.stuttgart.quality.model.types.NonManifoldEdgeError;
+import de.hft.stuttgart.quality.model.types.NonManifoldVertexError;
+import de.hft.stuttgart.quality.model.types.OrientationRingsSameError;
+import de.hft.stuttgart.quality.model.types.PlanarDistancePlaneError;
+import de.hft.stuttgart.quality.model.types.PlanarNormalsDeviationError;
+import de.hft.stuttgart.quality.model.types.PolygonWrongOrientationError;
+import de.hft.stuttgart.quality.model.types.RingNotClosedError;
+import de.hft.stuttgart.quality.model.types.RingSelfIntersectionError;
+import de.hft.stuttgart.quality.model.types.RingTooFewPointsError;
+import de.hft.stuttgart.quality.model.types.SemanticAttributeMissingError;
+import de.hft.stuttgart.quality.model.types.SemanticAttributeWrongValueError;
+import de.hft.stuttgart.quality.model.types.SolidNotClosedError;
+import de.hft.stuttgart.quality.model.types.SolidSelfIntersectionError;
+import de.hft.stuttgart.quality.model.types.SolidTooFewPolygonsError;
+
+public interface ValidationErrorVisitor {
+	
+	default void visit(AbstractError err) {
+		
+	}
+	
+	default void visit(AbstractGeometryError err) {
+		
+	}
+	
+	default void visit(AbstractPolygonError err) {
+		
+	}
+	
+	default void visit(AbstractRingError err) {
+		
+	}
+	
+	default void visit(AbstractSemanticError err) {
+		
+	}
+	
+	default void visit(AbstractSolidError err) {
+		
+	}
+	
+	default void visit(AllPolygonsOrientedWrongError err) {
+		
+	}
+	
+	default void visit(ConsecutivePointsSameError err) {
+		
+	}
+	
+	default void visit(HoleOutsideError err) {
+		
+	}
+	
+	default void visit(InnerRingsNestedError err) {
+		
+	}
+	
+	default void visit(IntersectingRingsError err) {
+		
+	}
+	
+	default void visit(InteriorDisconnectedError err) {
+		
+	}
+	
+	default void visit(MultipleComponentsError err) {
+		
+	}
+	
+	default void visit(NonManifoldEdgeError err) {
+		
+	}
+	
+	default void visit(NonManifoldVertexError err) {
+		
+	}
+	
+	default void visit(OrientationRingsSameError err) {
+		
+	}
+	
+	default void visit(PlanarDistancePlaneError err) {
+		
+	}
+	
+	default void visit(PlanarNormalsDeviationError err) {
+		
+	}
+	
+	default void visit(PolygonWrongOrientationError err) {
+		
+	}
+	
+	default void visit(RingNotClosedError err) {
+		
+	}
+	
+	default void visit(RingSelfIntersectionError err) {
+		
+	}
+	
+	default void visit(RingTooFewPointsError err) {
+		
+	}
+	
+	default void visit(SemanticAttributeMissingError err) {
+		
+	}
+	
+	default void visit(SemanticAttributeWrongValueError err) {
+		
+	}
+	
+	default void visit(SolidNotClosedError err) {
+		
+	}
+	
+	default void visit(SolidSelfIntersectionError err) {
+		
+	}
+	
+	default void visit(SolidTooFewPolygonsError err) {
+		
+	}
+	
+}
diff --git a/citygml4j-quality-ade/src/main/resources/qualityAde.xsd b/citygml4j-quality-ade/src/main/resources/qualityAde.xsd
index 31d1e643f50ec2f0b28bcdd46e90da009c9629b4..0362e46c4c05e506b0bcfa717c2e7737306e4c26 100644
--- a/citygml4j-quality-ade/src/main/resources/qualityAde.xsd
+++ b/citygml4j-quality-ade/src/main/resources/qualityAde.xsd
@@ -327,11 +327,11 @@
     <complexContent>
       <extension base="qual:AbstractRingErrorType">
         <sequence>
-          <element name="type" type="string"/>
           <element minOccurs="0" name="edge1" type="qual:EdgePropertyType"/>
           <element minOccurs="0" name="edge2" type="qual:EdgePropertyType"/>
-          <element name="vertex1" type="gml:DirectPositionType"/>
+          <element minOccurs="0" name="vertex1" type="gml:DirectPositionType"/>
           <element minOccurs="0" name="vertex2" type="gml:DirectPositionType"/>
+          <element name="type" type="qual:RingSelfIntersectionTypeType"/>
         </sequence>
       </extension>
     </complexContent>
@@ -550,6 +550,14 @@
       <enumeration value="NOT_CHECKED"/>
     </restriction>
   </simpleType>
+  <simpleType name="RingSelfIntersectionTypeType">
+    <restriction base="string">
+      <enumeration value="EDGE_INTERSECTION"/>
+      <enumeration value="VERTEX_TOUCHES_EDGE"/>
+      <enumeration value="DUPLICATE_POINT"/>
+      <enumeration value="DEGENERATED_RING"/>
+    </restriction>
+  </simpleType>
   <element name="SE_ATTRIBUTE_MISSING" substitutionGroup="qual:AbstractSemanticError" type="qual:SE_ATTRIBUTE_MISSINGType"/>
   <complexType name="SE_ATTRIBUTE_MISSINGType">
     <complexContent>
diff --git a/citygml4j-quality-ade/src/test/java/de/hft/stuttgart/quality/QualityAdeTests.java b/citygml4j-quality-ade/src/test/java/de/hft/stuttgart/quality/QualityAdeTests.java
index aaae63065771ebf1ab7ea576c11f3479a09d96a4..ac3fdfd012179a3e71badebb450a8a7d61a580ab 100644
--- a/citygml4j-quality-ade/src/test/java/de/hft/stuttgart/quality/QualityAdeTests.java
+++ b/citygml4j-quality-ade/src/test/java/de/hft/stuttgart/quality/QualityAdeTests.java
@@ -15,7 +15,6 @@
  */
 package de.hft.stuttgart.quality;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.ByteArrayInputStream;
@@ -23,8 +22,6 @@ import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
-import java.nio.file.Path;
-import java.nio.file.Paths;
 import java.time.ZonedDateTime;
 import java.util.ArrayList;
 import java.util.List;
@@ -43,17 +40,12 @@ import org.citygml4j.core.ade.ADERegistry;
 import org.citygml4j.core.model.CityGMLVersion;
 import org.citygml4j.core.model.building.Building;
 import org.citygml4j.core.model.core.AbstractCityObjectProperty;
-import org.citygml4j.core.model.core.AbstractFeature;
 import org.citygml4j.core.model.core.AbstractFeatureProperty;
 import org.citygml4j.core.model.core.CityModel;
 import org.citygml4j.core.util.CityGMLConstants;
 import org.citygml4j.xml.CityGMLContext;
 import org.citygml4j.xml.CityGMLContextException;
 import org.citygml4j.xml.module.citygml.CoreModule;
-import org.citygml4j.xml.reader.ChunkOptions;
-import org.citygml4j.xml.reader.CityGMLInputFactory;
-import org.citygml4j.xml.reader.CityGMLReadException;
-import org.citygml4j.xml.reader.CityGMLReader;
 import org.citygml4j.xml.schema.CityGMLSchemaHandler;
 import org.citygml4j.xml.writer.CityGMLOutputFactory;
 import org.citygml4j.xml.writer.CityGMLWriteException;
@@ -141,26 +133,6 @@ class QualityAdeTests {
 		ADERegistry.getInstance().loadADE(new QualityADEContext());
 	}
 
-	@Test
-	void testReadingModel() throws CityGMLContextException, CityGMLReadException {
-		CityGMLContext context = CityGMLContext.newInstance();
-
-		CityGMLInputFactory in = context.createCityGMLInputFactory()
-				.withChunking(ChunkOptions.chunkByProperties(chunkProperties).skipCityModel(false));
-
-		Path file = Paths.get("src/test/resources/SimpleSolid_Error_QualityADE.gml");
-
-		try (CityGMLReader reader = in.createCityGMLReader(file)) {
-			while (reader.hasNext()) {
-				AbstractFeature feature = reader.next();
-				if (feature instanceof Building) {
-					List<CityObjectProperties> adeProperties = feature.getADEProperties(CityObjectProperties.class);
-					assertEquals(1, adeProperties.size());
-				}
-			}
-		}
-	}
-
 	@Test
 	void testAllPolygonsOrientedWrong() throws ADEException, CityGMLContextException, CityGMLWriteException,
 			SAXException, IOException, SchemaHandlerException {
@@ -399,7 +371,7 @@ class QualityAdeTests {
 		edge.setTo(new DirectPosition(5, 6, 7));
 		err.setEdge1(new EdgeProperty(edge));
 		err.setEdge2(new EdgeProperty(edge));
-		err.setType(RingSelfIntType.EDGE_INTERSECTS_EDGE);
+		err.setType(RingSelfIntType.EDGE_INTERSECTION);
 		err.setVertex1(new DirectPosition(1, 2, 3));
 		res.getErrors().add(new AbstractErrorProperty(err));
 
diff --git a/citygml4j-quality-ade/src/test/resources/SimpleSolid_Error_QualityADE.gml b/citygml4j-quality-ade/src/test/resources/SimpleSolid_Error_QualityADE.gml
index 26300b9cd97dc2039f1c04109b4eeb5e685e2d92..c62b3696ce8c77b6cc5530708a763a3745b0ee71 100644
--- a/citygml4j-quality-ade/src/test/resources/SimpleSolid_Error_QualityADE.gml
+++ b/citygml4j-quality-ade/src/test/resources/SimpleSolid_Error_QualityADE.gml
@@ -12,6 +12,14 @@
 		referenziert CityGML 2.0 linear ring _Simple_BD.1_PG.6_LR.1 beinhaltet zwei aufeinander folgende Punkte, die identisch sind. 
 		10.5.2017 Author: V. Coors, HFT Stuttgart Lizenz: -->
 
+    <gml:name>Building-Unit-House</gml:name>
+    <gml:boundedBy>
+        <gml:Envelope srsDimension="3" srsName="urn:adv:crs:ETRS89_UTM32*DE_DHHN92_NH">
+            <gml:lowerCorner srsDimension="3">457841 5439082 111 </gml:lowerCorner>
+            <gml:upperCorner srsDimension="3">457854 5439093 121 </gml:upperCorner>
+        </gml:Envelope>
+    </gml:boundedBy>  
+
 	<core:cityObjectMember>
 		<bldg:Building gml:id="_Simple_BD.1">
 			<qual:validationResult>
@@ -24,7 +32,7 @@
 							<qual:vertex2>11.5 10.0 4.5</qual:vertex2>
 						</qual:GE_R_CONSECUTIVE_POINTS_SAME>
 					</qual:error>
-					<qual:resultType>OK</qual:resultType>
+					<qual:resultType>ERROR</qual:resultType>
 				</qual:ValidationResult>
 			</qual:validationResult>
 			<bldg:lod2Solid>