diff --git a/citygml4j-quality-ade/pom.xml b/citygml4j-quality-ade/pom.xml
index 1474e69f04eb7cb763d15f9ea76c0ff767f7efe5..4c65c090ee5cdc7c243476c2c97a1108c03674f7 100644
--- a/citygml4j-quality-ade/pom.xml
+++ b/citygml4j-quality-ade/pom.xml
@@ -4,7 +4,7 @@
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>de.hft.stuttgart</groupId>
 	<artifactId>citygml4j-quality-ade</artifactId>
-	<version>0.1.2</version>
+	<version>0.1.3</version>
 
 	<properties>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/QualityADEContext.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/QualityADEContext.java
index aef857c77a4e8234b75b1255058b14208a206536..f1e7d58cdf742678cc3a8ed408f4cbc331ef53a0 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/QualityADEContext.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/QualityADEContext.java
@@ -28,7 +28,7 @@ import de.hft.stuttgart.quality.marshaller.QualityAdeUnmarshaller;
 
 public class QualityADEContext implements ADEContext {
 	
-	private final List<ADEModule> modules = Collections.singletonList(QualityADEModule.V0_1_2);
+	private final List<ADEModule> modules = Collections.singletonList(QualityADEModule.V0_1_3);
 
 	@Override
 	public List<ADEModule> getADEModules() {
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/QualityADEModule.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/QualityADEModule.java
index 3b1f54f6268e5e7c0d8fc5d728369e59143c069a..9270a2539ecc1c8915c3513663a16c15822639a3 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/QualityADEModule.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/QualityADEModule.java
@@ -17,8 +17,6 @@ package de.hft.stuttgart.quality;
 
 import java.net.URL;
 import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 
@@ -28,25 +26,16 @@ import org.citygml4j.model.gml.feature.AbstractFeature;
 import org.citygml4j.model.module.ade.ADEModule;
 import org.citygml4j.model.module.citygml.CityGMLVersion;
 
-import de.hft.stuttgart.quality.model.Validation;
-
 public class QualityADEModule extends ADEModule {
 
-	public static final String NAMESPACE_URI = "https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2";
+	public static final String NAMESPACE_URI = "https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3";
 
-	public static final QualityADEModule V0_1_2 = new QualityADEModule();
+	public static final QualityADEModule V0_1_3 = new QualityADEModule();
 	
-    private HashMap<String, Class<? extends AbstractFeature>> features;
-    private HashSet<String> featureProperties;
-
 	private static final long serialVersionUID = -8208579547274734280L;
 
 	public QualityADEModule() {
 		super(NAMESPACE_URI, "qual", CityGMLVersion.v2_0_0);
-		features = new HashMap<>();
-		features.put("validation", Validation.class);
-		
-		featureProperties = new HashSet<>();
 	}
 	
 	@Override
@@ -61,32 +50,27 @@ public class QualityADEModule extends ADEModule {
 
 	@Override
 	public boolean hasFeatureProperty(String name) {
-        return featureProperties.contains(name);
+		return false;
 	}
 
 	@Override
 	public boolean hasFeature(String name) {
-		return features.containsKey(name);
+		return false;
 	}
 
 	@Override
 	public Class<? extends AbstractFeature> getFeatureClass(String name) {
-		return features.get(name);
+		throw new IllegalStateException("No feature classes available");
 	}
 
 	@Override
 	public QName getFeatureName(Class<? extends AbstractFeature> featureClass) {
-        for (Map.Entry<String, Class<? extends AbstractFeature>> entry : features.entrySet()) {
-            if (entry.getValue() == featureClass)
-                return new QName(getNamespaceURI(), entry.getKey());
-        }
-
         return null;
 	}
 
 	@Override
 	public Map<String, Class<? extends AbstractFeature>> getFeatures() {
-		return Collections.unmodifiableMap(features);
+		return Collections.emptyMap();
 	}
 
 	@Override
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/AllPolygonsWrongOrientation.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/AllPolygonsWrongOrientation.java
index ebc2cc15afcd5318a6f3b3a0cfdb7bbac403e9b3..0b384b735f8fe70961198da21773642cac5ba538 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/AllPolygonsWrongOrientation.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/AllPolygonsWrongOrientation.java
@@ -16,30 +16,14 @@
 package de.hft.stuttgart.quality.model;
 
 import org.citygml4j.builder.copy.CopyBuilder;
-import org.citygml4j.model.citygml.ade.binding.ADEModelObject;
-import org.citygml4j.model.common.visitor.FeatureFunctor;
-import org.citygml4j.model.common.visitor.FeatureVisitor;
-import org.citygml4j.model.common.visitor.GMLFunctor;
-import org.citygml4j.model.common.visitor.GMLVisitor;
-import org.citygml4j.model.gml.feature.AbstractFeature;
 
-public class AllPolygonsWrongOrientation extends AbstractFeature implements ValidationError, ADEModelObject {
+public class AllPolygonsWrongOrientation extends SolidError {
 
 	private static final long serialVersionUID = 3817224755569965908L;
 
-	private String geometryId;
-
-	public void setGeometryId(String geometryId) {
-		this.geometryId = geometryId;
-	}
-
-	public String getGeometryId() {
-		return geometryId;
-	}
-
 	@Override
 	public String toString() {
-		return "AllPolygonsWrongOrientation [geometryId=" + geometryId + "]";
+		return "AllPolygonsWrongOrientation [geometryId=" + getGeometryId() + "]";
 	}
 
 	@Override
@@ -47,24 +31,4 @@ public class AllPolygonsWrongOrientation extends AbstractFeature implements Vali
 		return copyTo(new AllPolygonsWrongOrientation(), copyBuilder);
 	}
 
-	@Override
-	public void accept(FeatureVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(FeatureFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
-	@Override
-	public void accept(GMLVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(GMLFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/AttributeMissing.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/AttributeMissing.java
index 6d339fa0f27743419c7db343e41b293e9ba326bd..d3eee9bed63cb30bd106b769eb66035caabd90bb 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/AttributeMissing.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/AttributeMissing.java
@@ -16,14 +16,8 @@
 package de.hft.stuttgart.quality.model;
 
 import org.citygml4j.builder.copy.CopyBuilder;
-import org.citygml4j.model.citygml.ade.binding.ADEModelObject;
-import org.citygml4j.model.common.visitor.FeatureFunctor;
-import org.citygml4j.model.common.visitor.FeatureVisitor;
-import org.citygml4j.model.common.visitor.GMLFunctor;
-import org.citygml4j.model.common.visitor.GMLVisitor;
-import org.citygml4j.model.gml.feature.AbstractFeature;
 
-public class AttributeMissing extends AbstractFeature implements ValidationError, ADEModelObject {
+public class AttributeMissing extends SemanticError {
 
 	private static final long serialVersionUID = -5416574100733885169L;
 	
@@ -59,24 +53,4 @@ public class AttributeMissing extends AbstractFeature implements ValidationError
 	public Object copy(CopyBuilder copyBuilder) {
 		return copyTo(new AttributeWrongValue(), copyBuilder);
 	}
-
-	@Override
-	public void accept(FeatureVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(FeatureFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
-	@Override
-	public void accept(GMLVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(GMLFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/AttributeWrongValue.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/AttributeWrongValue.java
index 88167346fde8fc53f24888cad18d99a1fa3ddfdc..b8815593d489b0275de723801031126f4d85b7cb 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/AttributeWrongValue.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/AttributeWrongValue.java
@@ -16,14 +16,8 @@
 package de.hft.stuttgart.quality.model;
 
 import org.citygml4j.builder.copy.CopyBuilder;
-import org.citygml4j.model.citygml.ade.binding.ADEModelObject;
-import org.citygml4j.model.common.visitor.FeatureFunctor;
-import org.citygml4j.model.common.visitor.FeatureVisitor;
-import org.citygml4j.model.common.visitor.GMLFunctor;
-import org.citygml4j.model.common.visitor.GMLVisitor;
-import org.citygml4j.model.gml.feature.AbstractFeature;
 
-public class AttributeWrongValue extends AbstractFeature implements ValidationError, ADEModelObject {
+public class AttributeWrongValue extends SemanticError {
 	
 	private static final long serialVersionUID = -5650985861847806620L;
 	
@@ -65,24 +59,4 @@ public class AttributeWrongValue extends AbstractFeature implements ValidationEr
 	public Object copy(CopyBuilder copyBuilder) {
 		return copyTo(new AttributeWrongValue(), copyBuilder);
 	}
-
-	@Override
-	public void accept(FeatureVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(FeatureFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
-	@Override
-	public void accept(GMLVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(GMLFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/ChildObject.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/ChildObject.java
new file mode 100644
index 0000000000000000000000000000000000000000..39aec6d0c286a30c3526f2c39535f820a7cb9d17
--- /dev/null
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/ChildObject.java
@@ -0,0 +1,53 @@
+/*-
+ * Copyright 2020 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;
+
+import org.citygml4j.builder.copy.CopyBuilder;
+import org.citygml4j.model.citygml.ade.binding.ADEModelObject;
+import org.citygml4j.model.common.base.ModelObject;
+
+public abstract class ChildObject implements ADEModelObject {
+
+	private static final long serialVersionUID = 6726372382501963276L;
+	
+	private ModelObject parent;
+
+	@Override
+	public Object copyTo(Object target, CopyBuilder copyBuilder) {
+		return target;
+	}
+
+	@Override
+	public ModelObject getParent() {
+		return parent;
+	}
+
+	@Override
+	public void setParent(ModelObject parent) {
+		this.parent = parent;
+	}
+
+	@Override
+	public boolean isSetParent() {
+		return parent != null;
+	}
+
+	@Override
+	public void unsetParent() {
+		parent = null;
+	}
+
+}
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/ConsecutivePointsSame.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/ConsecutivePointsSame.java
index d4ce99e31d47cb552f0dc4fd29f7b74683d96918..91cb869ba018047a5f6232a27c9f86b7ba6d321d 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/ConsecutivePointsSame.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/ConsecutivePointsSame.java
@@ -16,26 +16,15 @@
 package de.hft.stuttgart.quality.model;
 
 import org.citygml4j.builder.copy.CopyBuilder;
-import org.citygml4j.model.citygml.ade.binding.ADEModelObject;
-import org.citygml4j.model.common.visitor.FeatureFunctor;
-import org.citygml4j.model.common.visitor.FeatureVisitor;
-import org.citygml4j.model.common.visitor.GMLFunctor;
-import org.citygml4j.model.common.visitor.GMLVisitor;
-import org.citygml4j.model.gml.feature.AbstractFeature;
 import org.citygml4j.model.gml.geometry.primitives.DirectPosition;
 
-public class ConsecutivePointsSame extends AbstractFeature implements ValidationError, ADEModelObject {
+public class ConsecutivePointsSame extends RingError {
 	
 	private static final long serialVersionUID = -838421312521561747L;
 	
-	private String linearRingId;
 	private DirectPosition vertex1;
 	private DirectPosition vertex2;
 	
-	public void setLinearRingId(String linearRingId) {
-		this.linearRingId = linearRingId;
-	}
-	
 	public void setVertex1(DirectPosition vertex1) {
 		this.vertex1 = vertex1;
 	}
@@ -43,11 +32,7 @@ public class ConsecutivePointsSame extends AbstractFeature implements Validation
 	public void setVertex2(DirectPosition vertex2) {
 		this.vertex2 = vertex2;
 	}
-	
-	public String getLinearRingId() {
-		return linearRingId;
-	}
-	
+
 	public DirectPosition getVertex1() {
 		return vertex1;
 	}
@@ -58,7 +43,7 @@ public class ConsecutivePointsSame extends AbstractFeature implements Validation
 
 	@Override
 	public String toString() {
-		return "ConsecutivePointsSame [linearRingId=" + linearRingId + ", vertex1=" + vertex1 + ", vertex2=" + vertex2
+		return "ConsecutivePointsSame [linearRingId=" + getLinearRingId() + ", vertex1=" + vertex1 + ", vertex2=" + vertex2
 				+ "]";
 	}
 
@@ -67,24 +52,4 @@ public class ConsecutivePointsSame extends AbstractFeature implements Validation
 		return copyTo(new ConsecutivePointsSame(), copyBuilder);
 	}
 
-	@Override
-	public void accept(FeatureVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(FeatureFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
-	@Override
-	public void accept(GMLVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(GMLFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/HoleOutside.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/HoleOutside.java
index 2547b7bbfa5ed7f0d94903ad8ddfa6d80c65cb79..4804bb024b25ed1c9859e4fea7ca9e87249ee556 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/HoleOutside.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/HoleOutside.java
@@ -16,63 +16,28 @@
 package de.hft.stuttgart.quality.model;
 
 import org.citygml4j.builder.copy.CopyBuilder;
-import org.citygml4j.model.citygml.ade.binding.ADEModelObject;
-import org.citygml4j.model.common.visitor.FeatureFunctor;
-import org.citygml4j.model.common.visitor.FeatureVisitor;
-import org.citygml4j.model.common.visitor.GMLFunctor;
-import org.citygml4j.model.common.visitor.GMLVisitor;
-import org.citygml4j.model.gml.feature.AbstractFeature;
 
-public class HoleOutside extends AbstractFeature implements ValidationError, ADEModelObject {
+public class HoleOutside extends PolygonError {
 
 	private static final long serialVersionUID = -3029497342950689843L;
 	
-	private String polygonId;
 	private String linearRingId;
 
-	public void setPolygonId(String polygonId) {
-		this.polygonId = polygonId;
-	}
-
 	public void setLinearRingId(String linearRingId) {
 		this.linearRingId = linearRingId;
 	}
 
-	public String getPolygonId() {
-		return polygonId;
-	}
-
 	public String getLinearRingId() {
 		return linearRingId;
 	}
 
 	@Override
 	public String toString() {
-		return "HoleOutside [polygonId=" + polygonId + ", linearRingId=" + linearRingId + "]";
+		return "HoleOutside [polygonId=" + getPolygonId() + ", linearRingId=" + linearRingId + "]";
 	}
 
 	@Override
 	public Object copy(CopyBuilder copyBuilder) {
 		return copyTo(new HoleOutside(), copyBuilder);
 	}
-
-	@Override
-	public void accept(FeatureVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(FeatureFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
-	@Override
-	public void accept(GMLVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(GMLFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/InnerRingsNested.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/InnerRingsNested.java
index dc9013ef10dc29dfe13b0247838afb8926af909b..b1f886d7fcf62c4f71f5755a7fe577d64dc33c52 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/InnerRingsNested.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/InnerRingsNested.java
@@ -16,25 +16,14 @@
 package de.hft.stuttgart.quality.model;
 
 import org.citygml4j.builder.copy.CopyBuilder;
-import org.citygml4j.model.citygml.ade.binding.ADEModelObject;
-import org.citygml4j.model.common.visitor.FeatureFunctor;
-import org.citygml4j.model.common.visitor.FeatureVisitor;
-import org.citygml4j.model.common.visitor.GMLFunctor;
-import org.citygml4j.model.common.visitor.GMLVisitor;
-import org.citygml4j.model.gml.feature.AbstractFeature;
 
-public class InnerRingsNested extends AbstractFeature implements ValidationError, ADEModelObject {
+public class InnerRingsNested extends PolygonError {
 
 	private static final long serialVersionUID = 2291087505629924993L;
-	
-	private String polygonId;
+
 	private String linearRingId1;
 	private String linearRingId2;
 
-	public void setPolygonId(String polygonId) {
-		this.polygonId = polygonId;
-	}
-
 	public void setLinearRingId1(String linearRingId1) {
 		this.linearRingId1 = linearRingId1;
 	}
@@ -43,10 +32,6 @@ public class InnerRingsNested extends AbstractFeature implements ValidationError
 		this.linearRingId2 = linearRingId2;
 	}
 
-	public String getPolygonId() {
-		return polygonId;
-	}
-
 	public String getLinearRingId1() {
 		return linearRingId1;
 	}
@@ -59,24 +44,4 @@ public class InnerRingsNested extends AbstractFeature implements ValidationError
 	public Object copy(CopyBuilder copyBuilder) {
 		return copyTo(new InnerRingsNested(), copyBuilder);
 	}
-
-	@Override
-	public void accept(FeatureVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(FeatureFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
-	@Override
-	public void accept(GMLVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(GMLFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/InteriorDisconnected.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/InteriorDisconnected.java
index dbaab2ec42f71ba401250b442027eba4bcc52065..64da8cc78e1e5768201a0023646424b86b7c4ba2 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/InteriorDisconnected.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/InteriorDisconnected.java
@@ -16,54 +16,18 @@
 package de.hft.stuttgart.quality.model;
 
 import org.citygml4j.builder.copy.CopyBuilder;
-import org.citygml4j.model.citygml.ade.binding.ADEModelObject;
-import org.citygml4j.model.common.visitor.FeatureFunctor;
-import org.citygml4j.model.common.visitor.FeatureVisitor;
-import org.citygml4j.model.common.visitor.GMLFunctor;
-import org.citygml4j.model.common.visitor.GMLVisitor;
-import org.citygml4j.model.gml.feature.AbstractFeature;
 
-public class InteriorDisconnected extends AbstractFeature implements ValidationError, ADEModelObject {
+public class InteriorDisconnected extends PolygonError {
 
 	private static final long serialVersionUID = 8443642232356795359L;
 	
-	private String polygonId;
-	
-	public void setPolygonId(String polygonId) {
-		this.polygonId = polygonId;
-	}
-	
-	public String getPolygonId() {
-		return polygonId;
-	}
-
 	@Override
 	public String toString() {
-		return "InteriorDisconnected [polygonId=" + polygonId + "]";
+		return "InteriorDisconnected [polygonId=" + getPolygonId() + "]";
 	}
 
 	@Override
 	public Object copy(CopyBuilder copyBuilder) {
 		return copyTo(new InteriorDisconnected(), copyBuilder);
 	}
-
-	@Override
-	public void accept(FeatureVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(FeatureFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
-	@Override
-	public void accept(GMLVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(GMLFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/IntersectingRings.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/IntersectingRings.java
index 518d65f6b211084de1ff662c33909a0336aeda7e..cab11d6863e2f21adb27a9367d1b44f7a3ed1a27 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/IntersectingRings.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/IntersectingRings.java
@@ -16,25 +16,14 @@
 package de.hft.stuttgart.quality.model;
 
 import org.citygml4j.builder.copy.CopyBuilder;
-import org.citygml4j.model.citygml.ade.binding.ADEModelObject;
-import org.citygml4j.model.common.visitor.FeatureFunctor;
-import org.citygml4j.model.common.visitor.FeatureVisitor;
-import org.citygml4j.model.common.visitor.GMLFunctor;
-import org.citygml4j.model.common.visitor.GMLVisitor;
-import org.citygml4j.model.gml.feature.AbstractFeature;
 
-public class IntersectingRings extends AbstractFeature implements ValidationError, ADEModelObject {
+public class IntersectingRings extends PolygonError {
 
 	private static final long serialVersionUID = 7668529369582991408L;
 	
-	private String polygonId;
 	private String linearRingId1;
 	private String linearRingId2;
 
-	public void setPolygonId(String polygonId) {
-		this.polygonId = polygonId;
-	}
-
 	public void setLinearRingId1(String linearRingId1) {
 		this.linearRingId1 = linearRingId1;
 	}
@@ -43,10 +32,6 @@ public class IntersectingRings extends AbstractFeature implements ValidationErro
 		this.linearRingId2 = linearRingId2;
 	}
 
-	public String getPolygonId() {
-		return polygonId;
-	}
-
 	public String getLinearRingId1() {
 		return linearRingId1;
 	}
@@ -57,7 +42,7 @@ public class IntersectingRings extends AbstractFeature implements ValidationErro
 
 	@Override
 	public String toString() {
-		return "IntersectingRings [polygonId=" + polygonId + ", linearRingId1=" + linearRingId1 + ", linearRingId2="
+		return "IntersectingRings [polygonId=" + getPolygonId() + ", linearRingId1=" + linearRingId1 + ", linearRingId2="
 				+ linearRingId2 + "]";
 	}
 
@@ -65,24 +50,4 @@ public class IntersectingRings extends AbstractFeature implements ValidationErro
 	public Object copy(CopyBuilder copyBuilder) {
 		return copyTo(new IntersectingRings(), copyBuilder);
 	}
-
-	@Override
-	public void accept(FeatureVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(FeatureFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
-	@Override
-	public void accept(GMLVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(GMLFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/MultipleConnectedComponents.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/MultipleConnectedComponents.java
index 087995c1b06f4cd363c968a75f44e142917518a6..c69d6a165db71bb2c1aff9c41fb27b8375799b3d 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/MultipleConnectedComponents.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/MultipleConnectedComponents.java
@@ -19,31 +19,15 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.citygml4j.builder.copy.CopyBuilder;
-import org.citygml4j.model.citygml.ade.binding.ADEModelObject;
-import org.citygml4j.model.common.visitor.FeatureFunctor;
-import org.citygml4j.model.common.visitor.FeatureVisitor;
-import org.citygml4j.model.common.visitor.GMLFunctor;
-import org.citygml4j.model.common.visitor.GMLVisitor;
-import org.citygml4j.model.gml.feature.AbstractFeature;
 
 import de.hft.stuttgart.quality.model.jaxb.Component;
 
-public class MultipleConnectedComponents extends AbstractFeature implements ValidationError, ADEModelObject {
+public class MultipleConnectedComponents extends SolidError {
 
 	private static final long serialVersionUID = -4199420154182053060L;
 
-	private String geometryId;
-	
 	private List<Component> components;
 	
-	public void setGeometryId(String geometryId) {
-		this.geometryId = geometryId;
-	}
-	
-	public String getGeometryId() {
-		return geometryId;
-	}
-	
 	public boolean isSetComponents() {
 		return components != null && !components.isEmpty();
 	}
@@ -60,23 +44,4 @@ public class MultipleConnectedComponents extends AbstractFeature implements Vali
 		return copyTo(new MultipleConnectedComponents(), copyBuilder);
 	}
 
-	@Override
-	public void accept(FeatureVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(FeatureFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
-	@Override
-	public void accept(GMLVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(GMLFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/NonManifoldEdge.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/NonManifoldEdge.java
index 39f9ade1a948f79d23c27f28fd5144d05fa4057c..3d07d3111256a064a9de756ffd1870ef891da5c9 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/NonManifoldEdge.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/NonManifoldEdge.java
@@ -19,28 +19,13 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.citygml4j.builder.copy.CopyBuilder;
-import org.citygml4j.model.citygml.ade.binding.ADEModelObject;
-import org.citygml4j.model.common.visitor.FeatureFunctor;
-import org.citygml4j.model.common.visitor.FeatureVisitor;
-import org.citygml4j.model.common.visitor.GMLFunctor;
-import org.citygml4j.model.common.visitor.GMLVisitor;
-import org.citygml4j.model.gml.feature.AbstractFeature;
 
-public class NonManifoldEdge extends AbstractFeature implements ValidationError, ADEModelObject {
+public class NonManifoldEdge extends SolidError {
 
 	private static final long serialVersionUID = -4312748985706248178L;
 
-	private String geometryId;
 	private List<Edge> edges;
 
-	public String getGeometryId() {
-		return geometryId;
-	}
-
-	public void setGeometryId(String geometryId) {
-		this.geometryId = geometryId;
-	}
-
 	public boolean isSetEdges() {
 		return edges != null && !edges.isEmpty();
 	}
@@ -56,24 +41,4 @@ public class NonManifoldEdge extends AbstractFeature implements ValidationError,
 	public Object copy(CopyBuilder copyBuilder) {
 		return copyTo(new NonPlanarNormalsDeviation(), copyBuilder);
 	}
-
-	@Override
-	public void accept(FeatureVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(FeatureFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
-	@Override
-	public void accept(GMLVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(GMLFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/NonManifoldVertex.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/NonManifoldVertex.java
index 3b646c4793ab60b7da9dbd84847bd721daae9b01..b1d9b539a62db8f2c4cb86280b97692dff848ad9 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/NonManifoldVertex.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/NonManifoldVertex.java
@@ -16,65 +16,29 @@
 package de.hft.stuttgart.quality.model;
 
 import org.citygml4j.builder.copy.CopyBuilder;
-import org.citygml4j.model.citygml.ade.binding.ADEModelObject;
-import org.citygml4j.model.common.visitor.FeatureFunctor;
-import org.citygml4j.model.common.visitor.FeatureVisitor;
-import org.citygml4j.model.common.visitor.GMLFunctor;
-import org.citygml4j.model.common.visitor.GMLVisitor;
-import org.citygml4j.model.gml.feature.AbstractFeature;
 import org.citygml4j.model.gml.geometry.primitives.DirectPosition;
 
-public class NonManifoldVertex extends AbstractFeature implements ValidationError, ADEModelObject {
+public class NonManifoldVertex extends SolidError {
 
 	private static final long serialVersionUID = -3434116956866828127L;
 	
-	private String geometryId;
 	private DirectPosition vertex;
 
-	public void setGeometryId(String geometryId) {
-		this.geometryId = geometryId;
-	}
-
 	public void setVertex(DirectPosition vertex) {
 		this.vertex = vertex;
 	}
 
-	public String getGeometryId() {
-		return geometryId;
-	}
-
 	public DirectPosition getVertex() {
 		return vertex;
 	}
 
 	@Override
 	public String toString() {
-		return "NonManifoldVertex [geometryId=" + geometryId + ", vertex=" + vertex + "]";
+		return "NonManifoldVertex [geometryId=" + getGeometryId() + ", vertex=" + vertex + "]";
 	}
 
 	@Override
 	public Object copy(CopyBuilder copyBuilder) {
 		return copyTo(new NonManifoldVertex(), copyBuilder);
 	}
-
-	@Override
-	public void accept(FeatureVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(FeatureFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
-	@Override
-	public void accept(GMLVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(GMLFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/NonPlanarDistancePlane.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/NonPlanarDistancePlane.java
index 6612f5e8acb24422de9ab32bdf3cfd44df39e63d..fd0292fbc5e762e71c9367bdcead7515c629364e 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/NonPlanarDistancePlane.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/NonPlanarDistancePlane.java
@@ -16,26 +16,16 @@
 package de.hft.stuttgart.quality.model;
 
 import org.citygml4j.builder.copy.CopyBuilder;
-import org.citygml4j.model.citygml.ade.binding.ADEModelObject;
-import org.citygml4j.model.common.visitor.FeatureFunctor;
-import org.citygml4j.model.common.visitor.FeatureVisitor;
-import org.citygml4j.model.common.visitor.GMLFunctor;
-import org.citygml4j.model.common.visitor.GMLVisitor;
-import org.citygml4j.model.gml.feature.AbstractFeature;
 import org.citygml4j.model.gml.geometry.primitives.DirectPosition;
 import org.citygml4j.model.gml.measures.Length;
 
-public class NonPlanarDistancePlane extends AbstractFeature implements ValidationError, ADEModelObject {
+public class NonPlanarDistancePlane extends PolygonError {
 
 	private static final long serialVersionUID = -3428574131554438219L;
 	
-	private String polygonId;
 	private DirectPosition vertex;
 	private Length distance;
 
-	public void setPolygonId(String polygonId) {
-		this.polygonId = polygonId;
-	}
 
 	public void setVertex(DirectPosition vertex) {
 		this.vertex = vertex;
@@ -45,10 +35,6 @@ public class NonPlanarDistancePlane extends AbstractFeature implements Validatio
 		this.distance = distance;
 	}
 
-	public String getPolygonId() {
-		return polygonId;
-	}
-
 	public DirectPosition getVertex() {
 		return vertex;
 	}
@@ -59,31 +45,11 @@ public class NonPlanarDistancePlane extends AbstractFeature implements Validatio
 
 	@Override
 	public String toString() {
-		return "NonPlanarDistancePlane [polygonId=" + polygonId + ", vertex=" + vertex + ", distance=" + distance + "]";
+		return "NonPlanarDistancePlane [polygonId=" + getPolygonId() + ", vertex=" + vertex + ", distance=" + distance + "]";
 	}
 
 	@Override
 	public Object copy(CopyBuilder copyBuilder) {
 		return copyTo(new NonPlanarDistancePlane(), copyBuilder);
 	}
-
-	@Override
-	public void accept(FeatureVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(FeatureFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
-	@Override
-	public void accept(GMLVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(GMLFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/NonPlanarNormalsDeviation.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/NonPlanarNormalsDeviation.java
index 4fbf8d13065e2f089a02d5e92f49f9ecb92b2a3f..faa5a4f11ab035a8b0706cbb9783b2b9cec619f8 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/NonPlanarNormalsDeviation.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/NonPlanarNormalsDeviation.java
@@ -16,64 +16,29 @@
 package de.hft.stuttgart.quality.model;
 
 import org.citygml4j.builder.copy.CopyBuilder;
-import org.citygml4j.model.citygml.ade.binding.ADEModelObject;
-import org.citygml4j.model.common.visitor.FeatureFunctor;
-import org.citygml4j.model.common.visitor.FeatureVisitor;
-import org.citygml4j.model.common.visitor.GMLFunctor;
-import org.citygml4j.model.common.visitor.GMLVisitor;
-import org.citygml4j.model.gml.feature.AbstractFeature;
 import org.citygml4j.model.gml.measures.Angle;
 
-public class NonPlanarNormalsDeviation extends AbstractFeature implements ValidationError, ADEModelObject {
+public class NonPlanarNormalsDeviation extends PolygonError {
 
 	private static final long serialVersionUID = -8574024132334399550L;
 	
-	private String polygonId;
 	private Angle deviation;
 
-	public void setPolygonId(String polygonId) {
-		this.polygonId = polygonId;
-	}
-
 	public void setDeviation(Angle deviation) {
 		this.deviation = deviation;
 	}
 
-	public String getPolygonId() {
-		return polygonId;
-	}
-
 	public Angle getDeviation() {
 		return deviation;
 	}
 
 	@Override
 	public String toString() {
-		return "NonPlanarNormalsDeviation [polygonId=" + polygonId + ", deviation=" + deviation + "]";
+		return "NonPlanarNormalsDeviation [polygonId=" + getPolygonId() + ", deviation=" + deviation + "]";
 	}
 
 	@Override
 	public Object copy(CopyBuilder copyBuilder) {
 		return copyTo(new NonPlanarNormalsDeviation(), copyBuilder);
 	}
-
-	@Override
-	public void accept(FeatureVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(FeatureFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
-	@Override
-	public void accept(GMLVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(GMLFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/OrientationRingsSame.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/OrientationRingsSame.java
index 653153f4dba1d0d2c7d3acefa924d65508cff082..16ab55ead3b8e69e39f6f620439c592150f2071f 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/OrientationRingsSame.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/OrientationRingsSame.java
@@ -16,63 +16,28 @@
 package de.hft.stuttgart.quality.model;
 
 import org.citygml4j.builder.copy.CopyBuilder;
-import org.citygml4j.model.citygml.ade.binding.ADEModelObject;
-import org.citygml4j.model.common.visitor.FeatureFunctor;
-import org.citygml4j.model.common.visitor.FeatureVisitor;
-import org.citygml4j.model.common.visitor.GMLFunctor;
-import org.citygml4j.model.common.visitor.GMLVisitor;
-import org.citygml4j.model.gml.feature.AbstractFeature;
 
-public class OrientationRingsSame extends AbstractFeature implements ValidationError, ADEModelObject {
+public class OrientationRingsSame extends PolygonError {
 
 	private static final long serialVersionUID = -6983324580253488854L;
 	
-	private String polygonId;
 	private String linearRingId;
 
-	public void setPolygonId(String polygonId) {
-		this.polygonId = polygonId;
-	}
-
 	public void setLinearRingId(String linearRingId) {
 		this.linearRingId = linearRingId;
 	}
 
-	public String getPolygonId() {
-		return polygonId;
-	}
-
 	public String getLinearRingId() {
 		return linearRingId;
 	}
 
 	@Override
 	public String toString() {
-		return "OrientationRingsSame [polygonId=" + polygonId + ", linearRingId=" + linearRingId + "]";
+		return "OrientationRingsSame [polygonId=" + getPolygonId() + ", linearRingId=" + linearRingId + "]";
 	}
 
 	@Override
 	public Object copy(CopyBuilder copyBuilder) {
 		return copyTo(new OrientationRingsSame(), copyBuilder);
 	}
-
-	@Override
-	public void accept(FeatureVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(FeatureFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
-	@Override
-	public void accept(GMLVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(GMLFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/PolygonError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/PolygonError.java
new file mode 100644
index 0000000000000000000000000000000000000000..12e9c5eae238e1a222884df32594ab1372f4de11
--- /dev/null
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/PolygonError.java
@@ -0,0 +1,31 @@
+/*-
+ * Copyright 2020 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;
+
+public abstract class PolygonError extends ValidationError {
+
+	private static final long serialVersionUID = 4694297467768369526L;
+	
+	private String polygonId;
+
+	public void setPolygonId(String polygonId) {
+		this.polygonId = polygonId;
+	}
+
+	public String getPolygonId() {
+		return polygonId;
+	}
+}
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/PolygonWrongOrientation.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/PolygonWrongOrientation.java
index e5ff02048ce209ad11239b8a347a2a590614ef45..965491b5be2379387095650269b0ff213dac1bab 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/PolygonWrongOrientation.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/PolygonWrongOrientation.java
@@ -19,27 +19,12 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.citygml4j.builder.copy.CopyBuilder;
-import org.citygml4j.model.citygml.ade.binding.ADEModelObject;
-import org.citygml4j.model.common.visitor.FeatureFunctor;
-import org.citygml4j.model.common.visitor.FeatureVisitor;
-import org.citygml4j.model.common.visitor.GMLFunctor;
-import org.citygml4j.model.common.visitor.GMLVisitor;
-import org.citygml4j.model.gml.feature.AbstractFeature;
 
-public class PolygonWrongOrientation extends AbstractFeature implements ValidationError, ADEModelObject {
+public class PolygonWrongOrientation extends SolidError {
 
 	private static final long serialVersionUID = 1128689472694838648L;
 	
-	private String geometryId;
 	private List<Edge> edges;
-
-	public void setGeometryId(String geometryId) {
-		this.geometryId = geometryId;
-	}
-
-	public String getGeometryId() {
-		return geometryId;
-	}
 	
 	public boolean isSetEdges() {
 		return edges != null && !edges.isEmpty();
@@ -54,31 +39,11 @@ public class PolygonWrongOrientation extends AbstractFeature implements Validati
 
 	@Override
 	public String toString() {
-		return "PolygonWrongOrientation [geometryId=" + geometryId + ", edges=" + edges + "]";
+		return "PolygonWrongOrientation [geometryId=" + getGeometryId() + ", edges=" + edges + "]";
 	}
 
 	@Override
 	public Object copy(CopyBuilder copyBuilder) {
 		return copyTo(new PolygonWrongOrientation(), copyBuilder);
 	}
-
-	@Override
-	public void accept(FeatureVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(FeatureFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
-	@Override
-	public void accept(GMLVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(GMLFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/RingError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/RingError.java
new file mode 100644
index 0000000000000000000000000000000000000000..d17e5077910c25029d05929979e9f098609e59ab
--- /dev/null
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/RingError.java
@@ -0,0 +1,31 @@
+/*-
+ * Copyright 2020 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;
+
+public abstract class RingError extends ValidationError {
+
+	private static final long serialVersionUID = -8610600028811350500L;
+	
+	private String linearRingId;
+
+	public void setLinearRingId(String linearRingId) {
+		this.linearRingId = linearRingId;
+	}
+
+	public String getLinearRingId() {
+		return linearRingId;
+	}
+}
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/RingNotClosed.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/RingNotClosed.java
index 78603b2f9a61a8f21847e9cc83fc2c69e8e7f74c..4c52b24e2fadf1912c2290232eaea6032df58110 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/RingNotClosed.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/RingNotClosed.java
@@ -16,56 +16,18 @@
 package de.hft.stuttgart.quality.model;
 
 import org.citygml4j.builder.copy.CopyBuilder;
-import org.citygml4j.model.citygml.ade.binding.ADEModelObject;
-import org.citygml4j.model.common.visitor.FeatureFunctor;
-import org.citygml4j.model.common.visitor.FeatureVisitor;
-import org.citygml4j.model.common.visitor.GMLFunctor;
-import org.citygml4j.model.common.visitor.GMLVisitor;
-import org.citygml4j.model.gml.feature.AbstractFeature;
 
-public class RingNotClosed extends AbstractFeature implements ValidationError, ADEModelObject {
+public class RingNotClosed extends RingError {
 	
 	private static final long serialVersionUID = 5502668444088395535L;
 	
-	private String linearRingId;
-	
-	public void setLinearRingId(String linearRingId) {
-		this.linearRingId = linearRingId;
-	}
-	
-	public String getLinearRingId() {
-		return linearRingId;
-	}
-	
-
 	@Override
 	public String toString() {
-		return "RingNotClosed [linearRingId=" + linearRingId + "]";
+		return "RingNotClosed [linearRingId=" + getLinearRingId() + "]";
 	}
 
 	@Override
 	public Object copy(CopyBuilder copyBuilder) {
 		return copyTo(new RingNotClosed(), copyBuilder);
 	}
-
-	@Override
-	public void accept(FeatureVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(FeatureFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
-	@Override
-	public void accept(GMLVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(GMLFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/RingSelfIntersection.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/RingSelfIntersection.java
index cbb6fcea5aacb18da94df8df0bdcd7e5d8904394..fd11024ea0a336e5573fb1afacf04a75d968dcbe 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/RingSelfIntersection.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/RingSelfIntersection.java
@@ -16,31 +16,20 @@
 package de.hft.stuttgart.quality.model;
 
 import org.citygml4j.builder.copy.CopyBuilder;
-import org.citygml4j.model.citygml.ade.binding.ADEModelObject;
-import org.citygml4j.model.common.visitor.FeatureFunctor;
-import org.citygml4j.model.common.visitor.FeatureVisitor;
-import org.citygml4j.model.common.visitor.GMLFunctor;
-import org.citygml4j.model.common.visitor.GMLVisitor;
-import org.citygml4j.model.gml.feature.AbstractFeature;
 import org.citygml4j.model.gml.geometry.primitives.DirectPosition;
 
 import de.hft.stuttgart.quality.model.jaxb.RingSelfIntType;
 
-public class RingSelfIntersection extends AbstractFeature implements ValidationError, ADEModelObject {
+public class RingSelfIntersection extends RingError {
 
 	private static final long serialVersionUID = -4426615638983209222L;
 	
-	private String linearRingId;
 	private RingSelfIntType type;
 	private Edge edge1;
 	private Edge edge2;
 	private DirectPosition vertex1;
 	private DirectPosition vertex2;
 
-	public void setLinearRingId(String linearRingId) {
-		this.linearRingId = linearRingId;
-	}
-
 	public void setType(RingSelfIntType type) {
 		this.type = type;
 	}
@@ -61,10 +50,6 @@ public class RingSelfIntersection extends AbstractFeature implements ValidationE
 		this.vertex2 = vertex2;
 	}
 
-	public String getLinearRingId() {
-		return linearRingId;
-	}
-
 	public RingSelfIntType getType() {
 		return type;
 	}
@@ -87,7 +72,7 @@ public class RingSelfIntersection extends AbstractFeature implements ValidationE
 
 	@Override
 	public String toString() {
-		return "RingSelfIntersection [linearRingId=" + linearRingId + ", type=" + type + ", edge1=" + edge1 + ", edge2="
+		return "RingSelfIntersection [linearRingId=" + getLinearRingId() + ", type=" + type + ", edge1=" + edge1 + ", edge2="
 				+ edge2 + ", vertex1=" + vertex1 + ", vertex2=" + vertex2 + "]";
 	}
 
@@ -95,25 +80,4 @@ public class RingSelfIntersection extends AbstractFeature implements ValidationE
 	public Object copy(CopyBuilder copyBuilder) {
 		return copyTo(new RingSelfIntersection(), copyBuilder);
 	}
-
-	@Override
-	public void accept(FeatureVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(FeatureFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
-	@Override
-	public void accept(GMLVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(GMLFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/SemanticError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/SemanticError.java
new file mode 100644
index 0000000000000000000000000000000000000000..b2741c3cc8dd868a0b5725dc4074f05d241cd69a
--- /dev/null
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/SemanticError.java
@@ -0,0 +1,22 @@
+/*-
+ * Copyright 2020 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;
+
+public abstract class SemanticError extends ValidationError {
+
+	private static final long serialVersionUID = 8986289777859562928L;
+
+}
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/SolidError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/SolidError.java
new file mode 100644
index 0000000000000000000000000000000000000000..d20493c4cfb7d97553a8b140577626d29837bb4b
--- /dev/null
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/SolidError.java
@@ -0,0 +1,30 @@
+/*-
+ * Copyright 2020 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;
+
+public abstract class SolidError extends ValidationError {
+	private static final long serialVersionUID = 6430138970493794998L;
+	
+	private String geometryId;
+
+	public void setGeometryId(String geometryId) {
+		this.geometryId = geometryId;
+	}
+
+	public String getGeometryId() {
+		return geometryId;
+	}
+}
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/SolidNotClosed.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/SolidNotClosed.java
index b8e26c60e49de354b7ecab6b1189056c18e4edeb..71a9b13521997340c7e9b488cd54f5e7b7eda6b8 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/SolidNotClosed.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/SolidNotClosed.java
@@ -19,61 +19,26 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.citygml4j.builder.copy.CopyBuilder;
-import org.citygml4j.model.citygml.ade.binding.ADEModelObject;
-import org.citygml4j.model.common.visitor.FeatureFunctor;
-import org.citygml4j.model.common.visitor.FeatureVisitor;
-import org.citygml4j.model.common.visitor.GMLFunctor;
-import org.citygml4j.model.common.visitor.GMLVisitor;
-import org.citygml4j.model.gml.feature.AbstractFeature;
 
-public class SolidNotClosed extends AbstractFeature implements ValidationError, ADEModelObject {
+public class SolidNotClosed extends SolidError {
 
 	private static final long serialVersionUID = 4609395125395073697L;
-	
-	private String geometryId;
+
 	private List<Edge> edges;
-	
-	public void setGeometryId(String geometryId) {
-		this.geometryId = geometryId;
-	}
-	public String getGeometryId() {
-		return geometryId;
-	}
-	
+
 	public boolean isSetEdges() {
 		return edges != null && !edges.isEmpty();
 	}
-	
+
 	public List<Edge> getEdges() {
 		if (edges == null) {
 			edges = new ArrayList<>();
 		}
 		return edges;
 	}
-	
+
 	@Override
 	public Object copy(CopyBuilder copyBuilder) {
 		return copyTo(new SolidNotClosed(), copyBuilder);
 	}
-
-	@Override
-	public void accept(FeatureVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(FeatureFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
-	@Override
-	public void accept(GMLVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(GMLFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/SolidSelfIntersection.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/SolidSelfIntersection.java
index 664eeadf2f45650fafc0e8700d8a829d2442fe3c..423512c6a5910d0c63c5d9c073800f6d6a0adb47 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/SolidSelfIntersection.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/SolidSelfIntersection.java
@@ -16,29 +16,14 @@
 package de.hft.stuttgart.quality.model;
 
 import org.citygml4j.builder.copy.CopyBuilder;
-import org.citygml4j.model.citygml.ade.binding.ADEModelObject;
-import org.citygml4j.model.common.visitor.FeatureFunctor;
-import org.citygml4j.model.common.visitor.FeatureVisitor;
-import org.citygml4j.model.common.visitor.GMLFunctor;
-import org.citygml4j.model.common.visitor.GMLVisitor;
-import org.citygml4j.model.gml.feature.AbstractFeature;
 
-public class SolidSelfIntersection extends AbstractFeature implements ValidationError, ADEModelObject {
+public class SolidSelfIntersection extends SolidError {
 
 	private static final long serialVersionUID = 4086097021438848040L;
 
-	private String geometryId;
 	private String polygonId1;
 	private String polygonId2;
 
-	public String getGeometryId() {
-		return geometryId;
-	}
-
-	public void setGeometryId(String geometryId) {
-		this.geometryId = geometryId;
-	}
-
 	public String getPolygonId1() {
 		return polygonId1;
 	}
@@ -57,7 +42,7 @@ public class SolidSelfIntersection extends AbstractFeature implements Validation
 
 	@Override
 	public String toString() {
-		return "SolidSelfIntersection [geometryId=" + geometryId + ", polygonId1=" + polygonId1 + ", polygonId2="
+		return "SolidSelfIntersection [geometryId=" + getGeometryId() + ", polygonId1=" + polygonId1 + ", polygonId2="
 				+ polygonId2 + "]";
 	}
 
@@ -65,24 +50,4 @@ public class SolidSelfIntersection extends AbstractFeature implements Validation
 	public Object copy(CopyBuilder copyBuilder) {
 		return copyTo(new SolidSelfIntersection(), copyBuilder);
 	}
-
-	@Override
-	public void accept(FeatureVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(FeatureFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
-	@Override
-	public void accept(GMLVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(GMLFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/TooFewPoints.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/TooFewPoints.java
index 829a627d7a6188f9954d8de89eb08e30457fbf57..7e1272228341b9adb212f2b3af5066f349ffd51b 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/TooFewPoints.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/TooFewPoints.java
@@ -16,55 +16,18 @@
 package de.hft.stuttgart.quality.model;
 
 import org.citygml4j.builder.copy.CopyBuilder;
-import org.citygml4j.model.citygml.ade.binding.ADEModelObject;
-import org.citygml4j.model.common.visitor.FeatureFunctor;
-import org.citygml4j.model.common.visitor.FeatureVisitor;
-import org.citygml4j.model.common.visitor.GMLFunctor;
-import org.citygml4j.model.common.visitor.GMLVisitor;
-import org.citygml4j.model.gml.feature.AbstractFeature;
 
-public class TooFewPoints extends AbstractFeature implements ValidationError, ADEModelObject {
+public class TooFewPoints extends RingError {
 
 	private static final long serialVersionUID = -904319347280328865L;
 	
-	private String linearRingId;
-	
-	public void setLinearRingId(String linearRingId) {
-		this.linearRingId = linearRingId;
-	}
-	
-	public String getLinearRingId() {
-		return linearRingId;
-	}
-	
 	@Override
 	public String toString() {
-		return "TooFewPoints [linearRingId=" + linearRingId + "]";
+		return "TooFewPoints [linearRingId=" + getLinearRingId() + "]";
 	}
 
 	@Override
 	public Object copy(CopyBuilder copyBuilder) {
 		return copyTo(new TooFewPoints(), copyBuilder);
 	}
-
-	@Override
-	public void accept(FeatureVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(FeatureFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
-	@Override
-	public void accept(GMLVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(GMLFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/TooFewPolygons.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/TooFewPolygons.java
index 21fd99024d433fd8f3e71bb9c14bfe979c3df78f..19abc235bc8a9dacf4513b6cd6d8f498d3211688 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/TooFewPolygons.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/TooFewPolygons.java
@@ -16,55 +16,18 @@
 package de.hft.stuttgart.quality.model;
 
 import org.citygml4j.builder.copy.CopyBuilder;
-import org.citygml4j.model.citygml.ade.binding.ADEModelObject;
-import org.citygml4j.model.common.visitor.FeatureFunctor;
-import org.citygml4j.model.common.visitor.FeatureVisitor;
-import org.citygml4j.model.common.visitor.GMLFunctor;
-import org.citygml4j.model.common.visitor.GMLVisitor;
-import org.citygml4j.model.gml.feature.AbstractFeature;
 
-public class TooFewPolygons extends AbstractFeature implements ValidationError, ADEModelObject {
+public class TooFewPolygons extends SolidError {
 
 	private static final long serialVersionUID = -51591095439740599L;
 
-	private String geometryId;
-
-	public void setGeometryId(String geometryId) {
-		this.geometryId = geometryId;
-	}
-
-	public String getGeometryId() {
-		return geometryId;
-	}
-
 	@Override
 	public String toString() {
-		return "TooFewPolygons [geometryId=" + geometryId + "]";
+		return "TooFewPolygons [geometryId=" + getGeometryId() + "]";
 	}
 
 	@Override
 	public Object copy(CopyBuilder copyBuilder) {
 		return copyTo(new TooFewPolygons(), copyBuilder);
 	}
-
-	@Override
-	public void accept(FeatureVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(FeatureFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
-	@Override
-	public void accept(GMLVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(GMLFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/Validation.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/Validation.java
index bba251e18237a0e7a9a6e7d20250e7de0cd48890..2ee30ba0b6f0e4e9cb90aabf9fb996d27fffd63b 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/Validation.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/Validation.java
@@ -18,17 +18,11 @@ package de.hft.stuttgart.quality.model;
 import java.time.ZonedDateTime;
 
 import org.citygml4j.builder.copy.CopyBuilder;
-import org.citygml4j.model.citygml.ade.binding.ADEModelObject;
-import org.citygml4j.model.common.visitor.FeatureFunctor;
-import org.citygml4j.model.common.visitor.FeatureVisitor;
-import org.citygml4j.model.common.visitor.GMLFunctor;
-import org.citygml4j.model.common.visitor.GMLVisitor;
-import org.citygml4j.model.gml.feature.AbstractFeature;
 
 import de.hft.stuttgart.quality.model.jaxb.Statistics;
 import de.hft.stuttgart.quality.model.jaxb.ValidationPlan;
 
-public class Validation extends AbstractFeature implements ADEModelObject {
+public class Validation extends ChildObject {
 
 	private static final long serialVersionUID = 1738293574859506005L;
 	
@@ -82,7 +76,6 @@ public class Validation extends AbstractFeature implements ADEModelObject {
 		return validationDate;
 	}
 	
-	
 	public void setValidationSoftware(String validationSoftware) {
 		this.validationSoftware = validationSoftware;
 	}
@@ -90,24 +83,4 @@ public class Validation extends AbstractFeature implements ADEModelObject {
 	public String getValidationSoftware() {
 		return validationSoftware;
 	}
-
-	@Override
-	public void accept(FeatureVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(FeatureFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
-
-	@Override
-	public void accept(GMLVisitor visitor) {
-		visitor.visit(this);
-	}
-
-	@Override
-	public <T> T accept(GMLFunctor<T> visitor) {
-		return visitor.apply(this);
-	}
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/ValidationError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/ValidationError.java
index 8be6f353bdb453d40ad39c5495c0666756030222..a1b5a8e2faba36caba5ebc77e4c545f208573f2a 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/ValidationError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/ValidationError.java
@@ -15,8 +15,7 @@
  */
 package de.hft.stuttgart.quality.model;
 
-import org.citygml4j.model.citygml.ade.binding.ADEModelObject;
-
-public interface ValidationError extends ADEModelObject {
-
+public abstract class ValidationError extends ChildObject {
+	
+	private static final long serialVersionUID = -2995694676938108325L;
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/AllPolygonsWrongOrientationType.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/AllPolygonsWrongOrientationType.java
index afbdb5750babfeb467f6026e004f2eae0696474f..f582f221a54f4c970bf5b76adea520c74ffb8c7e 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/AllPolygonsWrongOrientationType.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/AllPolygonsWrongOrientationType.java
@@ -18,16 +18,6 @@ package de.hft.stuttgart.quality.model.jaxb;
 import javax.xml.bind.annotation.XmlRootElement;
 
 @XmlRootElement(name = "GE_S_ALL_POLYGONS_WRONG_ORIENTATION")
-public class AllPolygonsWrongOrientationType extends ValidationErrorType {
-
-	private String geometryId;
-
-	public void setGeometryId(String geometryId) {
-		this.geometryId = geometryId;
-	}
-
-	public String getGeometryId() {
-		return geometryId;
-	}
+public class AllPolygonsWrongOrientationType extends SolidErrorType {
 
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/AttributeMissingType.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/AttributeMissingType.java
index c2cbb61b0551b5bb2cae772af76428328b262f4a..ce13091d5f2c4ce991088f9e8c8c54039886fef9 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/AttributeMissingType.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/AttributeMissingType.java
@@ -18,7 +18,7 @@ package de.hft.stuttgart.quality.model.jaxb;
 import javax.xml.bind.annotation.XmlRootElement;
 
 @XmlRootElement(name = "SE_ATTRIBUTE_MISSING")
-public class AttributeMissingType extends ValidationErrorType {
+public class AttributeMissingType extends SemanticErrorType {
 	
 	private String childId;
 	private String attributeName;
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/AttributeWrongValueType.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/AttributeWrongValueType.java
index 6ea84b507655961fcd19c8d2eea67608b7e669ec..a3596b92ee5886aa065df1f5d9bee703e30b0f23 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/AttributeWrongValueType.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/AttributeWrongValueType.java
@@ -18,7 +18,7 @@ package de.hft.stuttgart.quality.model.jaxb;
 import javax.xml.bind.annotation.XmlRootElement;
 
 @XmlRootElement(name = "SE_ATTRIBUTE_WRONG_VALUE")
-public class AttributeWrongValueType extends ValidationErrorType {
+public class AttributeWrongValueType extends SemanticErrorType {
 
 	private String childId;
 	private String attributeName;
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/ConsecutivePointsSameType.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/ConsecutivePointsSameType.java
index 1de6be6b955b4c530a93c5ecf485d8af579d60b6..4a584f0c1612709bd7bb030f04a91edabdb83584 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/ConsecutivePointsSameType.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/ConsecutivePointsSameType.java
@@ -20,20 +20,11 @@ import javax.xml.bind.annotation.XmlRootElement;
 import net.opengis.gml.DirectPositionType;
 
 @XmlRootElement(name = "GE_R_CONSECUTIVE_POINTS_SAME")
-public class ConsecutivePointsSameType extends ValidationErrorType {
+public class ConsecutivePointsSameType extends RingErrorType {
 	
-	private String linearRingId;
 	private DirectPositionType vertex1;
 	private DirectPositionType vertex2;
 	
-	public String getLinearRingId() {
-		return linearRingId;
-	}
-	
-	public void setLinearRingId(String linearRingId) {
-		this.linearRingId = linearRingId;
-	}
-	
 	public void setVertex1(DirectPositionType vertex1) {
 		this.vertex1 = vertex1;
 	}
@@ -52,7 +43,7 @@ public class ConsecutivePointsSameType extends ValidationErrorType {
 
 	@Override
 	public String toString() {
-		return "ConsecutivePointsSameType [linearRingId=" + linearRingId + ", vertex1=" + vertex1 + ", vertex2=" + vertex2
+		return "ConsecutivePointsSameType [linearRingId=" + getLinearRingId() + ", vertex1=" + vertex1 + ", vertex2=" + vertex2
 				+ "]";
 	}
 
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/HoleOutsideType.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/HoleOutsideType.java
index ae7f8b4ed371224d0b0bf3b151e0baddc72515e7..17d09fcd42b57e81aa43045f7a962e5b61cd8e31 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/HoleOutsideType.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/HoleOutsideType.java
@@ -18,23 +18,14 @@ package de.hft.stuttgart.quality.model.jaxb;
 import javax.xml.bind.annotation.XmlRootElement;
 
 @XmlRootElement(name = "GE_P_HOLE_OUTSIDE")
-public class HoleOutsideType extends ValidationErrorType {
+public class HoleOutsideType extends PolygonErrorType {
 
-	private String polygonId;
 	private String linearRingId;
 
-	public void setPolygonId(String polygonId) {
-		this.polygonId = polygonId;
-	}
-
 	public void setLinearRingId(String linearRingId) {
 		this.linearRingId = linearRingId;
 	}
 
-	public String getPolygonId() {
-		return polygonId;
-	}
-
 	public String getLinearRingId() {
 		return linearRingId;
 	}
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/InnerRingsNestedType.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/InnerRingsNestedType.java
index 0c2438a464e994c215d98abdc463250e22ec7cc3..cce7ffe5a8163dce16e2727f41cb4f232841321e 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/InnerRingsNestedType.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/InnerRingsNestedType.java
@@ -18,16 +18,11 @@ package de.hft.stuttgart.quality.model.jaxb;
 import javax.xml.bind.annotation.XmlRootElement;
 
 @XmlRootElement(name = "GE_P_INNER_RINGS_NESTED")
-public class InnerRingsNestedType extends ValidationErrorType {
+public class InnerRingsNestedType extends PolygonErrorType {
 
-	private String polygonId;
 	private String linearRingId1;
 	private String linearRingId2;
 
-	public void setPolygonId(String polygonId) {
-		this.polygonId = polygonId;
-	}
-
 	public void setLinearRingId1(String linearRingId1) {
 		this.linearRingId1 = linearRingId1;
 	}
@@ -36,10 +31,6 @@ public class InnerRingsNestedType extends ValidationErrorType {
 		this.linearRingId2 = linearRingId2;
 	}
 
-	public String getPolygonId() {
-		return polygonId;
-	}
-
 	public String getLinearRingId1() {
 		return linearRingId1;
 	}
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/InteriorDisconnectedType.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/InteriorDisconnectedType.java
index 45642ab45fec5757049e5c20325f1515bdd1021e..a8daaf0c305b1f397a5236274dd752016f196039 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/InteriorDisconnectedType.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/InteriorDisconnectedType.java
@@ -18,16 +18,6 @@ package de.hft.stuttgart.quality.model.jaxb;
 import javax.xml.bind.annotation.XmlRootElement;
 
 @XmlRootElement(name = "GE_P_INTERIOR_DISCONNECTED")
-public class InteriorDisconnectedType extends ValidationErrorType {
-	
-	private String polygonId;
-	
-	public void setPolygonId(String polygonId) {
-		this.polygonId = polygonId;
-	}
-	
-	public String getPolygonId() {
-		return polygonId;
-	}
+public class InteriorDisconnectedType extends PolygonErrorType {
 
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/IntersectingRingsType.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/IntersectingRingsType.java
index 8f547dfb5d393c44a52d71867bdceac05ef951ac..7f47eef519d77e2d9938160a5a1e9732bad6502f 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/IntersectingRingsType.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/IntersectingRingsType.java
@@ -18,20 +18,11 @@ package de.hft.stuttgart.quality.model.jaxb;
 import javax.xml.bind.annotation.XmlRootElement;
 
 @XmlRootElement(name = "GE_P_INTERSECTING_RINGS")
-public class IntersectingRingsType extends ValidationErrorType {
+public class IntersectingRingsType extends PolygonErrorType {
 
-	private String polygonId;
 	private String linearRingId1;
 	private String linearRingId2;
 
-	public void setPolygonId(String polygonId) {
-		this.polygonId = polygonId;
-	}
-
-	public String getPolygonId() {
-		return polygonId;
-	}
-
 	public void setLinearRingId1(String linearRingId1) {
 		this.linearRingId1 = linearRingId1;
 	}
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/MultipleConnectedComponentsType.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/MultipleConnectedComponentsType.java
index 6d2e396a08d9ce6ac1334b7b2e5002a20f15acbe..0507eb04aa021306b9c2756c906de508850b730c 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/MultipleConnectedComponentsType.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/MultipleConnectedComponentsType.java
@@ -23,22 +23,12 @@ import javax.xml.bind.annotation.XmlElementWrapper;
 import javax.xml.bind.annotation.XmlRootElement;
 
 @XmlRootElement(name = "GE_S_MULTIPLE_CONNECTED_COMPONENTS")
-public class MultipleConnectedComponentsType extends ValidationErrorType {
-	
-	private String geometryId;
+public class MultipleConnectedComponentsType extends SolidErrorType {
 	
 	@XmlElementWrapper
 	@XmlElement(name = "component")
 	private List<Component> components;
 	
-	public void setGeometryId(String geometryId) {
-		this.geometryId = geometryId;
-	}
-	
-	public String getGeometryId() {
-		return geometryId;
-	}
-	
 	public boolean isSetComponents() {
 		return components != null && !components.isEmpty();
 	}
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/NonManifoldEdgeType.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/NonManifoldEdgeType.java
index cadaeff15b3362c5e1355ec86bacff4e3b2013bb..aac1ac8fe9a66c95ab27a81fc51f30e8285e6fc7 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/NonManifoldEdgeType.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/NonManifoldEdgeType.java
@@ -23,22 +23,12 @@ import javax.xml.bind.annotation.XmlElementWrapper;
 import javax.xml.bind.annotation.XmlRootElement;
 
 @XmlRootElement(name = "GE_S_NON_MANIFOLD_EDGE")
-public class NonManifoldEdgeType extends ValidationErrorType {
-
-	private String geometryId;
+public class NonManifoldEdgeType extends SolidErrorType {
 
 	@XmlElementWrapper
 	@XmlElement(name = "edge")
 	private List<EdgeType> edges;
 
-	public void setGeometryId(String geometryId) {
-		this.geometryId = geometryId;
-	}
-
-	public String getGeometryId() {
-		return geometryId;
-	}
-
 	public boolean isSetEdges() {
 		return edges != null && !edges.isEmpty();
 	}
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/NonManifoldVertexType.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/NonManifoldVertexType.java
index f286ed3d46292bac2c2020d5ad53d35473d3b6ce..7b8f3a277b86f4e28f128e5eff363f7c04cb274c 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/NonManifoldVertexType.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/NonManifoldVertexType.java
@@ -20,23 +20,14 @@ import javax.xml.bind.annotation.XmlRootElement;
 import net.opengis.gml.DirectPositionType;
 
 @XmlRootElement(name = "GE_S_NON_MANIFOLD_VERTEX")
-public class NonManifoldVertexType extends ValidationErrorType {
+public class NonManifoldVertexType extends SolidErrorType {
 
-	private String geometryId;
 	private DirectPositionType vertex;
 
-	public void setGeometryId(String geometryId) {
-		this.geometryId = geometryId;
-	}
-
 	public void setVertex(DirectPositionType vertex) {
 		this.vertex = vertex;
 	}
 
-	public String getGeometryId() {
-		return geometryId;
-	}
-
 	public DirectPositionType getVertex() {
 		return vertex;
 	}
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/NonPlanarDistancePlaneType.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/NonPlanarDistancePlaneType.java
index b7d17e7d0154bada4a5a214b02a501bdc6aa7ca5..4e3523b7385bda889276a616382a2cfd4808f1f2 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/NonPlanarDistancePlaneType.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/NonPlanarDistancePlaneType.java
@@ -21,16 +21,11 @@ import net.opengis.gml.DirectPositionType;
 import net.opengis.gml.LengthType;
 
 @XmlRootElement(name = "GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE")
-public class NonPlanarDistancePlaneType extends ValidationErrorType {
+public class NonPlanarDistancePlaneType extends PolygonErrorType {
 
-	private String polygonId;
 	private DirectPositionType vertex;
 	private LengthType distance;
 
-	public void setPolygonId(String polygonId) {
-		this.polygonId = polygonId;
-	}
-
 	public void setVertex(DirectPositionType vertex) {
 		this.vertex = vertex;
 	}
@@ -39,10 +34,6 @@ public class NonPlanarDistancePlaneType extends ValidationErrorType {
 		this.distance = distance;
 	}
 
-	public String getPolygonId() {
-		return polygonId;
-	}
-
 	public DirectPositionType getVertex() {
 		return vertex;
 	}
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/NonPlanarNormalsDeviationType.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/NonPlanarNormalsDeviationType.java
index 4dceda93c9b5a2aae20c6d88ddaa05c8e98ea70f..5471ad6b9a6d68c29bdc42ae0bc2bb18a5dba15c 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/NonPlanarNormalsDeviationType.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/NonPlanarNormalsDeviationType.java
@@ -20,23 +20,14 @@ import javax.xml.bind.annotation.XmlRootElement;
 import net.opengis.gml.AngleType;
 
 @XmlRootElement(name = "GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION")
-public class NonPlanarNormalsDeviationType extends ValidationErrorType {
+public class NonPlanarNormalsDeviationType extends PolygonErrorType {
 
-	private String polygonId;
 	private AngleType deviation;
 
-	public void setPolygonId(String polygonId) {
-		this.polygonId = polygonId;
-	}
-
 	public void setDeviation(AngleType deviation) {
 		this.deviation = deviation;
 	}
 
-	public String getPolygonId() {
-		return polygonId;
-	}
-
 	public AngleType getDeviation() {
 		return deviation;
 	}
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/OrientationRingsSameType.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/OrientationRingsSameType.java
index 6ac0a5844a68cdde8806c4ab07bedcacce8a478c..a625724ee85acdbc0001bfc45dbede07a820da75 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/OrientationRingsSameType.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/OrientationRingsSameType.java
@@ -18,23 +18,14 @@ package de.hft.stuttgart.quality.model.jaxb;
 import javax.xml.bind.annotation.XmlRootElement;
 
 @XmlRootElement(name = "GE_P_ORIENTATION_RINGS_SAME")
-public class OrientationRingsSameType extends ValidationErrorType {
+public class OrientationRingsSameType extends PolygonErrorType {
 
-	private String polygonId;
 	private String linearRingId;
 
-	public void setPolygonId(String polygonId) {
-		this.polygonId = polygonId;
-	}
-
 	public void setLinearRingId(String linearRingId) {
 		this.linearRingId = linearRingId;
 	}
 
-	public String getPolygonId() {
-		return polygonId;
-	}
-
 	public String getLinearRingId() {
 		return linearRingId;
 	}
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/PolygonErrorType.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/PolygonErrorType.java
new file mode 100644
index 0000000000000000000000000000000000000000..aec3160863ce571da00ad381232bbf062db5e664
--- /dev/null
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/PolygonErrorType.java
@@ -0,0 +1,37 @@
+/*-
+ * Copyright 2020 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.jaxb;
+
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlSeeAlso;
+
+@XmlSeeAlso({ InteriorDisconnectedType.class, IntersectingRingsType.class, HoleOutsideType.class,
+		InnerRingsNestedType.class, NonPlanarDistancePlaneType.class, NonPlanarNormalsDeviationType.class,
+		OrientationRingsSameType.class })
+
+@XmlRootElement(name = "PolygonError")
+public class PolygonErrorType extends ValidationErrorType {
+
+	private String polygonId;
+
+	public void setPolygonId(String polygonId) {
+		this.polygonId = polygonId;
+	}
+
+	public String getPolygonId() {
+		return polygonId;
+	}
+}
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/PolygonWrongOrientationType.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/PolygonWrongOrientationType.java
index d045ef21f608b9a666c4b1126b18cf756fb40d18..7cd6358290b1b0305ef903f97d0f9ac432546a67 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/PolygonWrongOrientationType.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/PolygonWrongOrientationType.java
@@ -23,22 +23,12 @@ import javax.xml.bind.annotation.XmlElementWrapper;
 import javax.xml.bind.annotation.XmlRootElement;
 
 @XmlRootElement(name = "GE_S_POLYGON_WRONG_ORIENTATION")
-public class PolygonWrongOrientationType extends ValidationErrorType {
-	
-	private String geometryId;
+public class PolygonWrongOrientationType extends SolidErrorType {
 	
 	@XmlElementWrapper
 	@XmlElement(name = "edge")
 	private List<EdgeType> edges;
 	
-	public void setGeometryId(String geometryId) {
-		this.geometryId = geometryId;
-	}
-	
-	public String getGeometryId() {
-		return geometryId;
-	}
-	
 	public boolean isSetEdges() {
 		return edges != null && !edges.isEmpty();
 	}
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/RingErrorType.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/RingErrorType.java
new file mode 100644
index 0000000000000000000000000000000000000000..90e7034c6d39a02dfedbeabe663f22fbd8a517c3
--- /dev/null
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/RingErrorType.java
@@ -0,0 +1,36 @@
+/*-
+ * Copyright 2020 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.jaxb;
+
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlSeeAlso;
+
+@XmlSeeAlso({ ConsecutivePointsSameType.class, RingNotClosedType.class, RingSelfIntersectionType.class,
+		TooFewPointsType.class })
+@XmlRootElement(name = "RingError")
+public class RingErrorType extends ValidationErrorType {
+
+	private String linearRingId;
+
+	public String getLinearRingId() {
+		return linearRingId;
+	}
+
+	public void setLinearRingId(String linearRingId) {
+		this.linearRingId = linearRingId;
+	}
+
+}
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/RingNotClosedType.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/RingNotClosedType.java
index 5194a40c9c4b3c573e4e1ee6abf2c7747d6c1010..e6b9e259a32fac9c22ffcdc8188c77948e4e3157 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/RingNotClosedType.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/RingNotClosedType.java
@@ -18,16 +18,6 @@ package de.hft.stuttgart.quality.model.jaxb;
 import javax.xml.bind.annotation.XmlRootElement;
 
 @XmlRootElement(name = "GE_R_NOT_CLOSED")
-public class RingNotClosedType extends ValidationErrorType {
-	
-	private String linearRingId;
-	
-	public void setLinearRingId(String linarRingId) {
-		this.linearRingId = linarRingId;
-	}
-	
-	public String getLinearRingId() {
-		return linearRingId;
-	}
+public class RingNotClosedType extends RingErrorType {
 
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/RingSelfIntersectionType.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/RingSelfIntersectionType.java
index 2c6d8bf08cd97fcd7762eed4446559d3181bb271..5e01f5933b5b6d61de7ea4c3295981d0c0165535 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/RingSelfIntersectionType.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/RingSelfIntersectionType.java
@@ -20,19 +20,14 @@ import javax.xml.bind.annotation.XmlRootElement;
 import net.opengis.gml.DirectPositionType;
 
 @XmlRootElement(name = "GE_R_SELF_INTERSECTION")
-public class RingSelfIntersectionType extends ValidationErrorType {
+public class RingSelfIntersectionType extends RingErrorType {
 
-	private String linearRingId;
 	private RingSelfIntType type;
 	private EdgeType edge1;
 	private EdgeType edge2;
 	private DirectPositionType vertex1;
 	private DirectPositionType vertex2;
 
-	public void setLinearRingId(String linearRingId) {
-		this.linearRingId = linearRingId;
-	}
-
 	public void setType(RingSelfIntType type) {
 		this.type = type;
 	}
@@ -53,10 +48,6 @@ public class RingSelfIntersectionType extends ValidationErrorType {
 		this.vertex2 = vertex2;
 	}
 
-	public String getLinearRingId() {
-		return linearRingId;
-	}
-
 	public RingSelfIntType getType() {
 		return type;
 	}
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/SemanticErrorType.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/SemanticErrorType.java
new file mode 100644
index 0000000000000000000000000000000000000000..da2e5a530e4a696fcc7864d16abd743554389a5e
--- /dev/null
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/SemanticErrorType.java
@@ -0,0 +1,25 @@
+/*-
+ * Copyright 2020 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.jaxb;
+
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlSeeAlso;
+
+@XmlSeeAlso({ AttributeWrongValueType.class, AttributeMissingType.class })
+@XmlRootElement(name = "SemanticError")
+public class SemanticErrorType extends ValidationErrorType {
+
+}
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/SolidErrorType.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/SolidErrorType.java
new file mode 100644
index 0000000000000000000000000000000000000000..ad57862b1f0a54141462549e57d86f0ac78c6f35
--- /dev/null
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/SolidErrorType.java
@@ -0,0 +1,37 @@
+/*-
+ * Copyright 2020 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.jaxb;
+
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlSeeAlso;
+
+@XmlSeeAlso({ SolidNotClosedType.class, AllPolygonsWrongOrientationType.class, PolygonWrongOrientationType.class,
+		NonManifoldVertexType.class, NonManifoldEdgeType.class, TooFewPolygonsType.class,
+		MultipleConnectedComponentsType.class, SolidSelfIntersectionType.class })
+@XmlRootElement(name = "SolidError")
+public class SolidErrorType extends ValidationErrorType {
+
+	private String geometryId;
+
+	public void setGeometryId(String geometryId) {
+		this.geometryId = geometryId;
+	}
+
+	public String getGeometryId() {
+		return geometryId;
+	}
+
+}
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/SolidNotClosedType.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/SolidNotClosedType.java
index 06f676e7ca32880057539354627858d18a173c95..b2f64ddc4481995952adb1d49608734837c22bf9 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/SolidNotClosedType.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/SolidNotClosedType.java
@@ -23,22 +23,12 @@ import javax.xml.bind.annotation.XmlElementWrapper;
 import javax.xml.bind.annotation.XmlRootElement;
 
 @XmlRootElement(name = "GE_S_NOT_CLOSED")
-public class SolidNotClosedType extends ValidationErrorType {
+public class SolidNotClosedType extends SolidErrorType {
 
-	private String geometryId;
-	
 	@XmlElementWrapper
 	@XmlElement(name = "edge")
 	private List<EdgeType> edges;
 
-	public void setGeometryId(String geometryId) {
-		this.geometryId = geometryId;
-	}
-
-	public String getGeometryId() {
-		return geometryId;
-	}
-
 	public boolean isSetEdges() {
 		return edges != null && !edges.isEmpty();
 	}
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/SolidSelfIntersectionType.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/SolidSelfIntersectionType.java
index de734a2e9749eade80a3839c13fa2d11855fda83..58e37bc4334f62f11b84c902332a51aedb1603cb 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/SolidSelfIntersectionType.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/SolidSelfIntersectionType.java
@@ -18,16 +18,11 @@ package de.hft.stuttgart.quality.model.jaxb;
 import javax.xml.bind.annotation.XmlRootElement;
 
 @XmlRootElement(name = "GE_S_SELF_INTERSECTION")
-public class SolidSelfIntersectionType extends ValidationErrorType {
+public class SolidSelfIntersectionType extends SolidErrorType {
 
-	private String geometryId;
 	private String polygonId1;
 	private String polygonId2;
 
-	public void setGeometryId(String geometryId) {
-		this.geometryId = geometryId;
-	}
-
 	public void setPolygonId1(String polygonId1) {
 		this.polygonId1 = polygonId1;
 	}
@@ -36,10 +31,6 @@ public class SolidSelfIntersectionType extends ValidationErrorType {
 		this.polygonId2 = polygonId2;
 	}
 
-	public String getGeometryId() {
-		return geometryId;
-	}
-
 	public String getPolygonId1() {
 		return polygonId1;
 	}
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/TooFewPointsType.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/TooFewPointsType.java
index 474a79e24f1e13481d387fd174c1311ed8dccec6..b790459367a25644ec613e7b651c17b6470e0186 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/TooFewPointsType.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/TooFewPointsType.java
@@ -18,46 +18,11 @@ package de.hft.stuttgart.quality.model.jaxb;
 import javax.xml.bind.annotation.XmlRootElement;
 
 @XmlRootElement(name = "GE_R_TOO_FEW_POINTS")
-public class TooFewPointsType extends ValidationErrorType {
-
-	private String linearRingId;
-
-	public void setLinearRingId(String linearRingId) {
-		this.linearRingId = linearRingId;
-	}
-
-	public String getLinearRingId() {
-		return linearRingId;
-	}
-
-	@Override
-	public int hashCode() {
-		final int prime = 31;
-		int result = 1;
-		result = prime * result + ((linearRingId == null) ? 0 : linearRingId.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;
-		TooFewPointsType other = (TooFewPointsType) obj;
-		if (linearRingId == null) {
-			if (other.linearRingId != null)
-				return false;
-		} else if (!linearRingId.equals(other.linearRingId))
-			return false;
-		return true;
-	}
+public class TooFewPointsType extends RingErrorType {
 
 	@Override
 	public String toString() {
-		return "TooFewPoints [linearRingId=" + linearRingId + "]";
+		return "TooFewPoints [linearRingId=" + getLinearRingId() + "]";
 	}
 
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/TooFewPolygonsType.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/TooFewPolygonsType.java
index 5a49a971e6581a537fcc03502bd156f6ec9f11db..0bac474ebe6f9766353e44ac4dfd0e2f5c590190 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/TooFewPolygonsType.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/TooFewPolygonsType.java
@@ -18,16 +18,6 @@ package de.hft.stuttgart.quality.model.jaxb;
 import javax.xml.bind.annotation.XmlRootElement;
 
 @XmlRootElement(name = "GE_S_TOO_FEW_POLYGONS")
-public class TooFewPolygonsType extends ValidationErrorType {
+public class TooFewPolygonsType extends SolidErrorType {
 	
-	private String geometryId;
-	
-	public void setGeometryId(String geometryId) {
-		this.geometryId = geometryId;
-	}
-	
-	public String getGeometryId() {
-		return geometryId;
-	}
-
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/ValidationErrorType.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/ValidationErrorType.java
index e2502f0326c806697c0d0d34b9a194556cbb893d..42aee33d30480eb925d7f58004cc21b0c46152b4 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/ValidationErrorType.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/ValidationErrorType.java
@@ -17,18 +17,12 @@ package de.hft.stuttgart.quality.model.jaxb;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlSeeAlso;
 
-import net.opengis.gml.AbstractFeatureType;
-
-@XmlSeeAlso({ ConsecutivePointsSameType.class, RingSelfIntersectionType.class, TooFewPointsType.class,
-		RingNotClosedType.class, InteriorDisconnectedType.class, IntersectingRingsType.class,
-		NonPlanarDistancePlaneType.class, InnerRingsNestedType.class, HoleOutsideType.class,
-		NonPlanarNormalsDeviationType.class, OrientationRingsSameType.class, AllPolygonsWrongOrientationType.class,
-		PolygonWrongOrientationType.class, NonManifoldVertexType.class, NonManifoldEdgeType.class,
-		SolidNotClosedType.class, TooFewPolygonsType.class, MultipleConnectedComponentsType.class,
-		AttributeWrongValueType.class, AttributeMissingType.class, SolidSelfIntersectionType.class })
+@XmlSeeAlso({ RingErrorType.class, PolygonErrorType.class, SolidErrorType.class, SemanticErrorType.class })
 @XmlAccessorType(XmlAccessType.FIELD)
-public abstract class ValidationErrorType extends AbstractFeatureType {
+@XmlRootElement(name = "ValidationError")
+public abstract class ValidationErrorType {
 
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/ValidationType.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/ValidationType.java
index 8aaaf3cb266dd33aed551d342669fd024c88c433..e8ef812dbbfe49ca1e2c7b4376716752ad3de550 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/ValidationType.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/ValidationType.java
@@ -21,10 +21,10 @@ import javax.xml.bind.annotation.XmlType;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import de.hft.stuttgart.quality.marshaller.ZonedDateTimeAdapter;
-import net.opengis.gml.AbstractFeatureType;
+import net.opengis.gml.AbstractGMLType;
 
 @XmlType(name = "validation")
-public class ValidationType extends AbstractFeatureType {
+public class ValidationType extends AbstractGMLType {
 
 	@XmlJavaTypeAdapter(ZonedDateTimeAdapter.class)
 	private ZonedDateTime validationDate;
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/package-info.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/package-info.java
index 075985f083293d3a4bc5cf0ad91cb904b075414d..a5e528883a207a8f4ecee41fe1561250baf32fe2 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/package-info.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/package-info.java
@@ -13,6 +13,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-@javax.xml.bind.annotation.XmlSchema(namespace = "https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED, xmlns = {
-		@javax.xml.bind.annotation.XmlNs(namespaceURI = "https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2", prefix = "qual") })
+@javax.xml.bind.annotation.XmlSchema(namespace = "https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED, xmlns = {
+		@javax.xml.bind.annotation.XmlNs(namespaceURI = "https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3", prefix = "qual") })
 package de.hft.stuttgart.quality.model.jaxb;
diff --git a/citygml4j-quality-ade/src/main/resources/qualityAde.xsd b/citygml4j-quality-ade/src/main/resources/qualityAde.xsd
index b104238ebc05bcd467f738a62eafaab559a0f788..0cb8f4fcc3c8b4c199aa1221fbf026a4f4e9d4a6 100644
--- a/citygml4j-quality-ade/src/main/resources/qualityAde.xsd
+++ b/citygml4j-quality-ade/src/main/resources/qualityAde.xsd
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <schema xmlns="http://www.w3.org/2001/XMLSchema"
-	xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2"
-	targetNamespace="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2"
+	xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3"
+	targetNamespace="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3"
 	xmlns:core="http://www.opengis.net/citygml/2.0"
 	xmlns:bldg="http://www.opengis.net/citygml/building/2.0"
 	xmlns:gml="http://www.opengis.net/gml" elementFormDefault="qualified"
@@ -45,34 +45,53 @@
 		</restriction>
 	</simpleType>
 
+	<complexType name="ValidationError">
+	</complexType>
+
+	<complexType name="RingError">
+		<complexContent>
+			<extension base="qual:ValidationError">
+				<sequence>
+					<element name="linearRingId" type="string" />
+				</sequence>
+			</extension>
+		</complexContent>
+	</complexType>
+
 	<complexType name="GE_R_CONSECUTIVE_POINTS_SAME">
 		<annotation>
 			<documentation>Consecutive point are the same</documentation>
 		</annotation>
-		<sequence>
-			<element name="linearRingId" type="string" />
-			<element name="vertex1" type="gml:DirectPositionType" />
-			<element name="vertex2" type="gml:DirectPositionType" />
-		</sequence>
+		<complexContent>
+			<extension base="qual:RingError">
+				<sequence>
+					<element name="vertex1" type="gml:DirectPositionType" />
+					<element name="vertex2" type="gml:DirectPositionType" />
+				</sequence>
+			</extension>
+		</complexContent>
 	</complexType>
 
 	<complexType name="GE_R_TOO_FEW_POINTS">
-		<sequence>
-			<element name="linearRingId" type="string" />
-		</sequence>
+		<complexContent>
+			<extension base="qual:RingError" />
+		</complexContent>
 	</complexType>
 
 	<complexType name="GE_R_SELF_INTERSECTION">
-		<sequence>
-			<element name="linearRingId" type="string" />
-			<element name="type" type="qual:ringSelfIntType" />
-			<element name="edge1" type="qual:edgeType" minOccurs="0" />
-			<element name="edge2" type="qual:edgeType" minOccurs="0" />
-			<element name="vertex1" type="gml:DirectPositionType"
-				minOccurs="0" />
-			<element name="vertex2" type="gml:DirectPositionType"
-				minOccurs="0" />
-		</sequence>
+		<complexContent>
+			<extension base="qual:RingError">
+				<sequence>
+					<element name="type" type="qual:ringSelfIntType" />
+					<element name="edge1" type="qual:edgeType" minOccurs="0" />
+					<element name="edge2" type="qual:edgeType" minOccurs="0" />
+					<element name="vertex1" type="gml:DirectPositionType"
+						minOccurs="0" />
+					<element name="vertex2" type="gml:DirectPositionType"
+						minOccurs="0" />
+				</sequence>
+			</extension>
+		</complexContent>
 	</complexType>
 
 	<simpleType name="ringSelfIntType">
@@ -91,66 +110,96 @@
 	</complexType>
 
 	<complexType name="GE_R_NOT_CLOSED">
-		<sequence>
-			<element name="linearRingId" type="string" />
-		</sequence>
+		<complexContent>
+			<extension base="qual:RingError" />
+		</complexContent>
 	</complexType>
 
-	<complexType name="GE_P_INTERIOR_DISCONNECTED">
+	<complexType name="PolygonError">
 		<sequence>
 			<element name="polygonId" type="string" />
 		</sequence>
 	</complexType>
 
+	<complexType name="GE_P_INTERIOR_DISCONNECTED">
+		<complexContent>
+			<extension base="qual:PolygonError" />
+		</complexContent>
+	</complexType>
+
 	<complexType name="GE_P_INTERSECTING_RINGS">
-		<sequence>
-			<element name="polygonId" type="string" />
-			<element name="linearRingId1" type="string" />
-			<element name="linearRingId2" type="string" />
-		</sequence>
+		<complexContent>
+			<extension base="qual:PolygonError">
+				<sequence>
+					<element name="linearRingId1" type="string" />
+					<element name="linearRingId2" type="string" />
+				</sequence>
+			</extension>
+		</complexContent>
 	</complexType>
 
 	<complexType name="GE_P_INNER_RINGS_NESTED">
-		<sequence>
-			<element name="polygonId" type="string" />
-			<element name="linearRingId1" type="string" />
-			<element name="linearRingId2" type="string" />
-		</sequence>
+		<complexContent>
+			<extension base="qual:PolygonError">
+				<sequence>
+					<element name="linearRingId1" type="string" />
+					<element name="linearRingId2" type="string" />
+				</sequence>
+			</extension>
+		</complexContent>
 	</complexType>
 
 	<complexType name="GE_P_HOLE_OUTSIDE">
-		<sequence>
-			<element name="polygonId" type="string" />
-			<element name="linearRingId" type="string" />
-		</sequence>
+		<complexContent>
+			<extension base="qual:PolygonError">
+				<sequence>
+					<element name="linearRingId" type="string" />
+				</sequence>
+			</extension>
+		</complexContent>
 	</complexType>
 
 	<complexType
 		name="GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION">
-		<sequence>
-			<element name="polygonId" type="string" />
-			<element name="deviation" type="gml:AngleType"></element>
-		</sequence>
+		<complexContent>
+			<extension base="qual:PolygonError">
+				<sequence>
+					<element name="deviation" type="gml:AngleType"></element>
+				</sequence>
+			</extension>
+		</complexContent>
 	</complexType>
 
 	<complexType name="GE_P_ORIENTATION_RINGS_SAME">
-		<sequence>
-			<element name="polygonId" type="string" />
-			<element name="linearRingId" type="string" />
-		</sequence>
+		<complexContent>
+			<extension base="qual:PolygonError">
+				<sequence>
+					<element name="linearRingId" type="string" />
+				</sequence>
+			</extension>
+		</complexContent>
 	</complexType>
 
-	<complexType name="GE_S_ALL_POLYGONS_WRONG_ORIENTATION">
+	<complexType name="SolidError">
 		<sequence>
 			<element name="geometryId" type="string" />
 		</sequence>
 	</complexType>
 
+	<complexType name="GE_S_ALL_POLYGONS_WRONG_ORIENTATION">
+		<complexContent>
+			<extension base="qual:SolidError" />
+		</complexContent>
+	</complexType>
+
 	<complexType name="GE_S_POLYGON_WRONG_ORIENTATION">
-		<sequence>
-			<element name="geometryId" type="string" />
-			<element name="edges" type="qual:EdgeList" />
-		</sequence>
+		<complexContent>
+			<extension base="qual:SolidError">
+				<sequence>
+					<element name="edges" type="qual:EdgeList" />
+				</sequence>
+			</extension>
+		</complexContent>
 	</complexType>
 
 	<complexType name="EdgeList">
@@ -161,45 +210,60 @@
 	</complexType>
 
 	<complexType name="GE_S_SELF_INTERSECTION">
-		<sequence>
-			<element name="geometryId" type="string" />
-			<element name="polygonId1" type="string" />
-			<element name="polygonId2" type="string" />
-		</sequence>
+		<complexContent>
+			<extension base="qual:SolidError">
+				<sequence>
+					<element name="polygonId1" type="string" />
+					<element name="polygonId2" type="string" />
+				</sequence>
+			</extension>
+		</complexContent>
 	</complexType>
 
 	<complexType name="GE_S_NON_MANIFOLD_VERTEX">
-		<sequence>
-			<element name="geometryId" type="string" />
-			<element name="vertex" type="gml:DirectPositionType" />
-		</sequence>
+		<complexContent>
+			<extension base="qual:SolidError">
+				<sequence>
+					<element name="vertex" type="gml:DirectPositionType" />
+				</sequence>
+			</extension>
+		</complexContent>
 	</complexType>
 
 	<complexType name="GE_S_NON_MANIFOLD_EDGE">
-		<sequence>
-			<element name="geometryId" type="string" />
-			<element name="edges" type="qual:EdgeList" />
-		</sequence>
+		<complexContent>
+			<extension base="qual:SolidError">
+				<sequence>
+					<element name="edges" type="qual:EdgeList" />
+				</sequence>
+			</extension>
+		</complexContent>
 	</complexType>
 
 	<complexType name="GE_S_NOT_CLOSED">
-		<sequence>
-			<element name="geometryId" type="string" />
-			<element name="edges" type="qual:EdgeList" />
-		</sequence>
+		<complexContent>
+			<extension base="qual:SolidError">
+				<sequence>
+					<element name="edges" type="qual:EdgeList" />
+				</sequence>
+			</extension>
+		</complexContent>
 	</complexType>
 
 	<complexType name="GE_S_TOO_FEW_POLYGONS">
-		<sequence>
-			<element name="geometryId" type="string" />
-		</sequence>
+		<complexContent>
+			<extension base="qual:SolidError" />
+		</complexContent>
 	</complexType>
 
 	<complexType name="GE_S_MULTIPLE_CONNECTED_COMPONENTS">
-		<sequence>
-			<element name="geometryId" type="string" />
-			<element name="components" type="qual:ComponentList" />
-		</sequence>
+		<complexContent>
+			<extension base="qual:SolidError">
+				<sequence>
+					<element name="components" type="qual:ComponentList" />
+				</sequence>
+			</extension>
+		</complexContent>
 	</complexType>
 
 	<complexType name="ComponentList">
@@ -221,27 +285,41 @@
 				regression plane
 			</documentation>
 		</annotation>
-		<sequence>
-			<element name="polygonId" type="string" />
-			<element name="vertex" type="gml:DirectPositionType" />
-			<element name="distance" type="gml:LengthType" />
-		</sequence>
+		<complexContent>
+			<extension base="qual:PolygonError">
+				<sequence>
+					<element name="vertex" type="gml:DirectPositionType" />
+					<element name="distance" type="gml:LengthType" />
+				</sequence>
+			</extension>
+		</complexContent>
+	</complexType>
+
+	<complexType name="SemanticError">
 	</complexType>
 
 	<complexType name="SE_ATTRIBUTE_WRONG_VALUE">
-		<sequence>
-			<element name="childId" type="string" minOccurs="0"/>
-			<element name="attributeName" type="string" />
-			<element name="generic" type="boolean" />
-		</sequence>
+		<complexContent>
+			<extension base="qual:SemanticError">
+				<sequence>
+					<element name="childId" type="string" minOccurs="0" />
+					<element name="attributeName" type="string" />
+					<element name="generic" type="boolean" />
+				</sequence>
+			</extension>
+		</complexContent>
 	</complexType>
 
 	<complexType name="SE_ATTRIBUTE_MISSING">
-		<sequence>
-			<element name="childId" type="string" minOccurs="0" />
-			<element name="attributeName" type="string" />
-			<element name="generic" type="boolean" />
-		</sequence>
+		<complexContent>
+			<extension base="qual:SemanticError">
+				<sequence>
+					<element name="childId" type="string" minOccurs="0" />
+					<element name="attributeName" type="string" />
+					<element name="generic" type="boolean" />
+				</sequence>
+			</extension>
+		</complexContent>
 	</complexType>
 
 	<complexType name="validationResultType">
@@ -311,8 +389,7 @@
 				type="qual:SE_ATTRIBUTE_WRONG_VALUE" minOccurs="0"
 				maxOccurs="unbounded" />
 			<element name="SE_ATTRIBUTE_MISSING"
-				type="qual:SE_ATTRIBUTE_MISSING" minOccurs="0"
-				maxOccurs="unbounded" />
+				type="qual:SE_ATTRIBUTE_MISSING" minOccurs="0" maxOccurs="unbounded" />
 		</sequence>
 		<attribute name="result" type="qual:result" />
 	</complexType>
@@ -491,7 +568,6 @@
 				statistics of a validation process
 			</documentation>
 		</annotation>
-		<!-- <complexContent> <extension base="gml:AbstractFeatureType"> -->
 		<sequence>
 			<element name="validationDate" type="dateTime" />
 			<element name="validationSoftware" type="string" />
@@ -500,6 +576,5 @@
 			<element name="statistics" type="qual:statisticsType"
 				maxOccurs="1" />
 		</sequence>
-		<!-- </extension> </complexContent> -->
 	</complexType>
 </schema>
\ No newline at end of file
diff --git a/citygml4j-quality-ade/src/test/resources/SimpleSolid_AllPolygonsWrongOrientation.gml b/citygml4j-quality-ade/src/test/resources/SimpleSolid_AllPolygonsWrongOrientation.gml
index 44d0c5d77fc70c1832455cfd7447a8f7b7dddfe1..0ef3a62b964b1cb63ee7ea7282c04e17591a93c7 100644
--- a/citygml4j-quality-ade/src/test/resources/SimpleSolid_AllPolygonsWrongOrientation.gml
+++ b/citygml4j-quality-ade/src/test/resources/SimpleSolid_AllPolygonsWrongOrientation.gml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2/qualityAde.xsd">
+<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3/qualityAde.xsd">
 
 <!--
 Einfaches Gebäude mit Grundriss 3m x 5m und Satteldach, Traufhöhe 3m, Firsthöhe 4,5m
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 a764003b5257e97a4b8e8ab1b7f2d9f4fb09e77f..3334930d3ee44c59205c842a1ee7bb28787681dd 100644
--- a/citygml4j-quality-ade/src/test/resources/SimpleSolid_Error_QualityADE.gml
+++ b/citygml4j-quality-ade/src/test/resources/SimpleSolid_Error_QualityADE.gml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2/qualityAde.xsd">
+<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3/qualityAde.xsd">
 
 <!--
 Einfaches Gebäude mit Grundriss 3m x 5m und Satteldach, Traufhöhe 3m, Firsthöhe 4,5m
diff --git a/citygml4j-quality-ade/src/test/resources/SimpleSolid_HoleOutside.gml b/citygml4j-quality-ade/src/test/resources/SimpleSolid_HoleOutside.gml
index fc63f7876b98e9c14495b2461395d6b121ee9cf8..6c3c99d0c3b531d001502e2049953cb2d66780fd 100644
--- a/citygml4j-quality-ade/src/test/resources/SimpleSolid_HoleOutside.gml
+++ b/citygml4j-quality-ade/src/test/resources/SimpleSolid_HoleOutside.gml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2/qualityAde.xsd">
+<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3/qualityAde.xsd">
 
 <!--
 Einfaches Gebäude mit Grundriss 3m x 5m und Satteldach, Traufhöhe 3m, Firsthöhe 4,5m
diff --git a/citygml4j-quality-ade/src/test/resources/SimpleSolid_InnerRingNested.gml b/citygml4j-quality-ade/src/test/resources/SimpleSolid_InnerRingNested.gml
index bdcebc9ee8c4460beeea4c3016a38befc0711128..71f5720d1bc66a13f5b822c61c4932aa717abf70 100644
--- a/citygml4j-quality-ade/src/test/resources/SimpleSolid_InnerRingNested.gml
+++ b/citygml4j-quality-ade/src/test/resources/SimpleSolid_InnerRingNested.gml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2/qualityAde.xsd">
+<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3/qualityAde.xsd">
 
 <!--
 Einfaches Gebäude mit Grundriss 3m x 5m und Satteldach, Traufhöhe 3m, Firsthöhe 4,5m
diff --git a/citygml4j-quality-ade/src/test/resources/SimpleSolid_InteriorDisconnected.gml b/citygml4j-quality-ade/src/test/resources/SimpleSolid_InteriorDisconnected.gml
index bdc2839f6b4e6ecb040023c9c964209db8cbe592..580a6efb54a44c95078331f21e0e6c9266738749 100644
--- a/citygml4j-quality-ade/src/test/resources/SimpleSolid_InteriorDisconnected.gml
+++ b/citygml4j-quality-ade/src/test/resources/SimpleSolid_InteriorDisconnected.gml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2/qualityAde.xsd">
+<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3/qualityAde.xsd">
 
 <!--
 Einfaches Gebäude mit Grundriss 3m x 5m und Satteldach, Traufhöhe 3m, Firsthöhe 4,5m
diff --git a/citygml4j-quality-ade/src/test/resources/SimpleSolid_IntersectingRings.gml b/citygml4j-quality-ade/src/test/resources/SimpleSolid_IntersectingRings.gml
index 42c7304769a4057279361f1756955bdcf90a5c90..4acb0908ce8c823d86610b189a68c157da7bc853 100644
--- a/citygml4j-quality-ade/src/test/resources/SimpleSolid_IntersectingRings.gml
+++ b/citygml4j-quality-ade/src/test/resources/SimpleSolid_IntersectingRings.gml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2/qualityAde.xsd">
+<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3/qualityAde.xsd">
 
 <!--
 Einfaches Gebäude mit Grundriss 3m x 5m und Satteldach, Traufhöhe 3m, Firsthöhe 4,5m
diff --git a/citygml4j-quality-ade/src/test/resources/SimpleSolid_MultipleConnectedComponents.gml b/citygml4j-quality-ade/src/test/resources/SimpleSolid_MultipleConnectedComponents.gml
index 2cebdd6941b3d7fae93926fbf5da825c5d4d8f83..87ae4d3964d2b434399cdd7b9864fceeba015adb 100644
--- a/citygml4j-quality-ade/src/test/resources/SimpleSolid_MultipleConnectedComponents.gml
+++ b/citygml4j-quality-ade/src/test/resources/SimpleSolid_MultipleConnectedComponents.gml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2/qualityAde.xsd">
+<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3/qualityAde.xsd">
 
 <!--
 Einfaches Gebäude mit Grundriss 3m x 5m und Satteldach, Traufhöhe 3m, Firsthöhe 4,5m
diff --git a/citygml4j-quality-ade/src/test/resources/SimpleSolid_NonManifoldEdge.gml b/citygml4j-quality-ade/src/test/resources/SimpleSolid_NonManifoldEdge.gml
index fafb47049a888e3256eb12bfb247528566eaa15a..c0c52b980e66b19d8e5e3bd5dbda2b55ed726e65 100644
--- a/citygml4j-quality-ade/src/test/resources/SimpleSolid_NonManifoldEdge.gml
+++ b/citygml4j-quality-ade/src/test/resources/SimpleSolid_NonManifoldEdge.gml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2/qualityAde.xsd">
+<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3/qualityAde.xsd">
 
 <!--
 Einfaches Gebäude mit Grundriss 3m x 5m und Satteldach, Traufhöhe 3m, Firsthöhe 4,5m
diff --git a/citygml4j-quality-ade/src/test/resources/SimpleSolid_NonManifoldVertex.gml b/citygml4j-quality-ade/src/test/resources/SimpleSolid_NonManifoldVertex.gml
index df2bd0ed1503f7f2d10b188363d98c463e9e2ae4..78ab1d33024611a5664300382bd170328bdd9082 100644
--- a/citygml4j-quality-ade/src/test/resources/SimpleSolid_NonManifoldVertex.gml
+++ b/citygml4j-quality-ade/src/test/resources/SimpleSolid_NonManifoldVertex.gml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2/qualityAde.xsd">
+<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3/qualityAde.xsd">
 
 <!--
 Einfaches Gebäude mit Grundriss 3m x 5m und Satteldach, Traufhöhe 3m, Firsthöhe 4,5m
diff --git a/citygml4j-quality-ade/src/test/resources/SimpleSolid_NonPlanarPolygonDistancePlane.gml b/citygml4j-quality-ade/src/test/resources/SimpleSolid_NonPlanarPolygonDistancePlane.gml
index 0c4c02b49cc72f0e1df9d4fd67a022113b345dab..df2c5d462a5f90240e89759dae219064e4a5f91d 100644
--- a/citygml4j-quality-ade/src/test/resources/SimpleSolid_NonPlanarPolygonDistancePlane.gml
+++ b/citygml4j-quality-ade/src/test/resources/SimpleSolid_NonPlanarPolygonDistancePlane.gml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2/qualityAde.xsd">
+<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3/qualityAde.xsd">
 
 <!--
 Einfaches Gebäude mit Grundriss 3m x 5m und Satteldach, Traufhöhe 3m, Firsthöhe 4,5m
diff --git a/citygml4j-quality-ade/src/test/resources/SimpleSolid_NonPlanarPolygonNormalsDeviation.gml b/citygml4j-quality-ade/src/test/resources/SimpleSolid_NonPlanarPolygonNormalsDeviation.gml
index 5d1996809a5238adcd6b8303024346b00e6f13d7..07af13edfd41f9c902dfa77e838649e46bb65364 100644
--- a/citygml4j-quality-ade/src/test/resources/SimpleSolid_NonPlanarPolygonNormalsDeviation.gml
+++ b/citygml4j-quality-ade/src/test/resources/SimpleSolid_NonPlanarPolygonNormalsDeviation.gml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2/qualityAde.xsd">
+<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3/qualityAde.xsd">
 
 <!--
 Einfaches Gebäude mit Grundriss 3m x 5m und Satteldach, Traufhöhe 3m, Firsthöhe 4,5m
diff --git a/citygml4j-quality-ade/src/test/resources/SimpleSolid_OrientationRingsSame.gml b/citygml4j-quality-ade/src/test/resources/SimpleSolid_OrientationRingsSame.gml
index d33120af8a5a4fdcc89264179524e4a5f921b1a9..a5dfffece245fbd7933775498c535044bf49271c 100644
--- a/citygml4j-quality-ade/src/test/resources/SimpleSolid_OrientationRingsSame.gml
+++ b/citygml4j-quality-ade/src/test/resources/SimpleSolid_OrientationRingsSame.gml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2/qualityAde.xsd">
+<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3/qualityAde.xsd">
 
 <!--
 Einfaches Gebäude mit Grundriss 3m x 5m und Satteldach, Traufhöhe 3m, Firsthöhe 4,5m
diff --git a/citygml4j-quality-ade/src/test/resources/SimpleSolid_PolygonWrongOrientation.gml b/citygml4j-quality-ade/src/test/resources/SimpleSolid_PolygonWrongOrientation.gml
index de653597cf5c9091bfc05bb118e038feb4e71caa..2ef9c8794665180a1f8d98fc3a9dd4aab00236da 100644
--- a/citygml4j-quality-ade/src/test/resources/SimpleSolid_PolygonWrongOrientation.gml
+++ b/citygml4j-quality-ade/src/test/resources/SimpleSolid_PolygonWrongOrientation.gml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2/qualityAde.xsd">
+<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3/qualityAde.xsd">
 
 <!--
 Einfaches Gebäude mit Grundriss 3m x 5m und Satteldach, Traufhöhe 3m, Firsthöhe 4,5m
diff --git a/citygml4j-quality-ade/src/test/resources/SimpleSolid_RingNotClosed.gml b/citygml4j-quality-ade/src/test/resources/SimpleSolid_RingNotClosed.gml
index c4808fdd9a13bc09edeffcc0ef04fa6659fdf403..f01906282f981e46b3146ce76cc3257858a69a8d 100644
--- a/citygml4j-quality-ade/src/test/resources/SimpleSolid_RingNotClosed.gml
+++ b/citygml4j-quality-ade/src/test/resources/SimpleSolid_RingNotClosed.gml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2/qualityAde.xsd">
+<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3/qualityAde.xsd">
 
 <!--
 Einfaches Gebäude mit Grundriss 3m x 5m und Satteldach, Traufhöhe 3m, Firsthöhe 4,5m
diff --git a/citygml4j-quality-ade/src/test/resources/SimpleSolid_RingSelfIntersection.gml b/citygml4j-quality-ade/src/test/resources/SimpleSolid_RingSelfIntersection.gml
index 510db18ddb36ce582992ec9edd82c43ab2922480..5b036f2ca8783e3b90e7b872a6630238731c5529 100644
--- a/citygml4j-quality-ade/src/test/resources/SimpleSolid_RingSelfIntersection.gml
+++ b/citygml4j-quality-ade/src/test/resources/SimpleSolid_RingSelfIntersection.gml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2/qualityAde.xsd">
+<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3/qualityAde.xsd">
 
 <!--
 Einfaches Gebäude mit Grundriss 3m x 5m und Satteldach, Traufhöhe 3m, Firsthöhe 4,5m
diff --git a/citygml4j-quality-ade/src/test/resources/SimpleSolid_SolidNotClosed.gml b/citygml4j-quality-ade/src/test/resources/SimpleSolid_SolidNotClosed.gml
index 6ccfc419876164b9a6535bbb36ec300660915092..9e1267269e03eb3acb3da7c2c1ffe5ac5960500e 100644
--- a/citygml4j-quality-ade/src/test/resources/SimpleSolid_SolidNotClosed.gml
+++ b/citygml4j-quality-ade/src/test/resources/SimpleSolid_SolidNotClosed.gml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2/qualityAde.xsd">
+<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3/qualityAde.xsd">
 
 <!--
 Einfaches Gebäude mit Grundriss 3m x 5m und Satteldach, Traufhöhe 3m, Firsthöhe 4,5m
diff --git a/citygml4j-quality-ade/src/test/resources/SimpleSolid_SolidSelfIntersection.gml b/citygml4j-quality-ade/src/test/resources/SimpleSolid_SolidSelfIntersection.gml
index 0bc7d6323212246d372adb0c2e408003d128d5d2..6d55c8adfb63d4423c953369d8ff5c810894d262 100644
--- a/citygml4j-quality-ade/src/test/resources/SimpleSolid_SolidSelfIntersection.gml
+++ b/citygml4j-quality-ade/src/test/resources/SimpleSolid_SolidSelfIntersection.gml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2/qualityAde.xsd">
+<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3/qualityAde.xsd">
 
 <!--
 Einfaches Gebäude mit Grundriss 3m x 5m und Satteldach, Traufhöhe 3m, Firsthöhe 4,5m
diff --git a/citygml4j-quality-ade/src/test/resources/SimpleSolid_TooFewPoints.gml b/citygml4j-quality-ade/src/test/resources/SimpleSolid_TooFewPoints.gml
index c74ad2bb2f5c030db23350d787c2bf7383324612..244901c92c5571a3fd3a5a9c15f65504235c7251 100644
--- a/citygml4j-quality-ade/src/test/resources/SimpleSolid_TooFewPoints.gml
+++ b/citygml4j-quality-ade/src/test/resources/SimpleSolid_TooFewPoints.gml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2/qualityAde.xsd">
+<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3/qualityAde.xsd">
 
 <!--
 Einfaches Gebäude mit Grundriss 3m x 5m und Satteldach, Traufhöhe 3m, Firsthöhe 4,5m
diff --git a/citygml4j-quality-ade/src/test/resources/SimpleSolid_TooFewPolygons.gml b/citygml4j-quality-ade/src/test/resources/SimpleSolid_TooFewPolygons.gml
index 4d89b0c731d8a86dfb19d4821c4fc2a4036863c3..af5412489646970541fa822d2524b385e6ff3116 100644
--- a/citygml4j-quality-ade/src/test/resources/SimpleSolid_TooFewPolygons.gml
+++ b/citygml4j-quality-ade/src/test/resources/SimpleSolid_TooFewPolygons.gml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.2/qualityAde.xsd">
+<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3/qualityAde.xsd">
 
 <!--
 Einfaches Gebäude mit Grundriss 3m x 5m und Satteldach, Traufhöhe 3m, Firsthöhe 4,5m
diff --git a/public/0.1.3/qualityAde.xsd b/public/0.1.3/qualityAde.xsd
new file mode 100644
index 0000000000000000000000000000000000000000..0cb8f4fcc3c8b4c199aa1221fbf026a4f4e9d4a6
--- /dev/null
+++ b/public/0.1.3/qualityAde.xsd
@@ -0,0 +1,580 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+	xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3"
+	targetNamespace="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.3"
+	xmlns:core="http://www.opengis.net/citygml/2.0"
+	xmlns:bldg="http://www.opengis.net/citygml/building/2.0"
+	xmlns:gml="http://www.opengis.net/gml" elementFormDefault="qualified"
+	version="1.0">
+	<import namespace="http://www.opengis.net/citygml/2.0"
+		schemaLocation="http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd" />
+	<import namespace="http://www.opengis.net/citygml/building/2.0"
+		schemaLocation="http://schemas.opengis.net/citygml/building/2.0/building.xsd" />
+	<import
+		namespace="http://www.opengis.net/citygml/appearance/2.0"
+		schemaLocation="http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd" />
+	<import namespace="http://www.opengis.net/citygml/generics/2.0"
+		schemaLocation="http://schemas.opengis.net/citygml/generics/2.0/generics.xsd" />
+	<import namespace="http://www.opengis.net/gml"
+		schemaLocation="http://schemas.opengis.net/gml/2.1.2/gml.xsd" />
+
+	<element name="validationResult"
+		type="qual:validationResultType"
+		substitutionGroup="core:_GenericApplicationPropertyOfCityObject" />
+
+	<simpleType name="result" final="restriction">
+		<annotation>
+			<documentation>Enumeration for status of check result</documentation>
+		</annotation>
+		<restriction base="string">
+			<enumeration value="ERROR">
+				<annotation>
+					<documentation>One or more errors were found</documentation>
+				</annotation>
+			</enumeration>
+			<enumeration value="NOT_CHECKED">
+				<annotation>
+					<documentation>Feature was not checked</documentation>
+				</annotation>
+			</enumeration>
+			<enumeration value="OK">
+				<annotation>
+					<documentation>No errors were found</documentation>
+				</annotation>
+			</enumeration>
+		</restriction>
+	</simpleType>
+
+	<complexType name="ValidationError">
+	</complexType>
+
+	<complexType name="RingError">
+		<complexContent>
+			<extension base="qual:ValidationError">
+				<sequence>
+					<element name="linearRingId" type="string" />
+				</sequence>
+			</extension>
+		</complexContent>
+	</complexType>
+
+	<complexType name="GE_R_CONSECUTIVE_POINTS_SAME">
+		<annotation>
+			<documentation>Consecutive point are the same</documentation>
+		</annotation>
+		<complexContent>
+			<extension base="qual:RingError">
+				<sequence>
+					<element name="vertex1" type="gml:DirectPositionType" />
+					<element name="vertex2" type="gml:DirectPositionType" />
+				</sequence>
+			</extension>
+		</complexContent>
+	</complexType>
+
+	<complexType name="GE_R_TOO_FEW_POINTS">
+		<complexContent>
+			<extension base="qual:RingError" />
+		</complexContent>
+	</complexType>
+
+	<complexType name="GE_R_SELF_INTERSECTION">
+		<complexContent>
+			<extension base="qual:RingError">
+				<sequence>
+					<element name="type" type="qual:ringSelfIntType" />
+					<element name="edge1" type="qual:edgeType" minOccurs="0" />
+					<element name="edge2" type="qual:edgeType" minOccurs="0" />
+					<element name="vertex1" type="gml:DirectPositionType"
+						minOccurs="0" />
+					<element name="vertex2" type="gml:DirectPositionType"
+						minOccurs="0" />
+				</sequence>
+			</extension>
+		</complexContent>
+	</complexType>
+
+	<simpleType name="ringSelfIntType">
+		<restriction base="string">
+			<enumeration value="DUPLICATE_POINT" />
+			<enumeration value="POINT_TOUCHES_EDGE" />
+			<enumeration value="EDGE_INTERSECTS_EDGE" />
+		</restriction>
+	</simpleType>
+
+	<complexType name="edgeType">
+		<sequence>
+			<element name="from" type="gml:DirectPositionType" />
+			<element name="to" type="gml:DirectPositionType" />
+		</sequence>
+	</complexType>
+
+	<complexType name="GE_R_NOT_CLOSED">
+		<complexContent>
+			<extension base="qual:RingError" />
+		</complexContent>
+	</complexType>
+
+	<complexType name="PolygonError">
+		<sequence>
+			<element name="polygonId" type="string" />
+		</sequence>
+	</complexType>
+
+	<complexType name="GE_P_INTERIOR_DISCONNECTED">
+		<complexContent>
+			<extension base="qual:PolygonError" />
+		</complexContent>
+	</complexType>
+
+	<complexType name="GE_P_INTERSECTING_RINGS">
+		<complexContent>
+			<extension base="qual:PolygonError">
+				<sequence>
+					<element name="linearRingId1" type="string" />
+					<element name="linearRingId2" type="string" />
+				</sequence>
+			</extension>
+		</complexContent>
+	</complexType>
+
+	<complexType name="GE_P_INNER_RINGS_NESTED">
+		<complexContent>
+			<extension base="qual:PolygonError">
+				<sequence>
+					<element name="linearRingId1" type="string" />
+					<element name="linearRingId2" type="string" />
+				</sequence>
+			</extension>
+		</complexContent>
+	</complexType>
+
+	<complexType name="GE_P_HOLE_OUTSIDE">
+		<complexContent>
+			<extension base="qual:PolygonError">
+				<sequence>
+					<element name="linearRingId" type="string" />
+				</sequence>
+			</extension>
+		</complexContent>
+	</complexType>
+
+	<complexType
+		name="GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION">
+		<complexContent>
+			<extension base="qual:PolygonError">
+				<sequence>
+					<element name="deviation" type="gml:AngleType"></element>
+				</sequence>
+			</extension>
+		</complexContent>
+	</complexType>
+
+	<complexType name="GE_P_ORIENTATION_RINGS_SAME">
+		<complexContent>
+			<extension base="qual:PolygonError">
+				<sequence>
+					<element name="linearRingId" type="string" />
+				</sequence>
+			</extension>
+		</complexContent>
+	</complexType>
+
+	<complexType name="SolidError">
+		<sequence>
+			<element name="geometryId" type="string" />
+		</sequence>
+	</complexType>
+
+	<complexType name="GE_S_ALL_POLYGONS_WRONG_ORIENTATION">
+		<complexContent>
+			<extension base="qual:SolidError" />
+		</complexContent>
+	</complexType>
+
+	<complexType name="GE_S_POLYGON_WRONG_ORIENTATION">
+		<complexContent>
+			<extension base="qual:SolidError">
+				<sequence>
+					<element name="edges" type="qual:EdgeList" />
+				</sequence>
+			</extension>
+		</complexContent>
+	</complexType>
+
+	<complexType name="EdgeList">
+		<sequence>
+			<element name="edge" type="qual:edgeType"
+				maxOccurs="unbounded" />
+		</sequence>
+	</complexType>
+
+	<complexType name="GE_S_SELF_INTERSECTION">
+		<complexContent>
+			<extension base="qual:SolidError">
+				<sequence>
+					<element name="polygonId1" type="string" />
+					<element name="polygonId2" type="string" />
+				</sequence>
+			</extension>
+		</complexContent>
+	</complexType>
+
+	<complexType name="GE_S_NON_MANIFOLD_VERTEX">
+		<complexContent>
+			<extension base="qual:SolidError">
+				<sequence>
+					<element name="vertex" type="gml:DirectPositionType" />
+				</sequence>
+			</extension>
+		</complexContent>
+	</complexType>
+
+	<complexType name="GE_S_NON_MANIFOLD_EDGE">
+		<complexContent>
+			<extension base="qual:SolidError">
+				<sequence>
+					<element name="edges" type="qual:EdgeList" />
+				</sequence>
+			</extension>
+		</complexContent>
+	</complexType>
+
+	<complexType name="GE_S_NOT_CLOSED">
+		<complexContent>
+			<extension base="qual:SolidError">
+				<sequence>
+					<element name="edges" type="qual:EdgeList" />
+				</sequence>
+			</extension>
+		</complexContent>
+	</complexType>
+
+	<complexType name="GE_S_TOO_FEW_POLYGONS">
+		<complexContent>
+			<extension base="qual:SolidError" />
+		</complexContent>
+	</complexType>
+
+	<complexType name="GE_S_MULTIPLE_CONNECTED_COMPONENTS">
+		<complexContent>
+			<extension base="qual:SolidError">
+				<sequence>
+					<element name="components" type="qual:ComponentList" />
+				</sequence>
+			</extension>
+		</complexContent>
+	</complexType>
+
+	<complexType name="ComponentList">
+		<sequence>
+			<element name="component" type="qual:componentType"
+				maxOccurs="unbounded" />
+		</sequence>
+	</complexType>
+
+	<complexType name="componentType">
+		<sequence>
+			<element name="polygonId" type="string" maxOccurs="unbounded" />
+		</sequence>
+	</complexType>
+
+	<complexType name="GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE">
+		<annotation>
+			<documentation>A planarity error with a point too far from the
+				regression plane
+			</documentation>
+		</annotation>
+		<complexContent>
+			<extension base="qual:PolygonError">
+				<sequence>
+					<element name="vertex" type="gml:DirectPositionType" />
+					<element name="distance" type="gml:LengthType" />
+				</sequence>
+			</extension>
+		</complexContent>
+	</complexType>
+
+	<complexType name="SemanticError">
+	</complexType>
+
+	<complexType name="SE_ATTRIBUTE_WRONG_VALUE">
+		<complexContent>
+			<extension base="qual:SemanticError">
+				<sequence>
+					<element name="childId" type="string" minOccurs="0" />
+					<element name="attributeName" type="string" />
+					<element name="generic" type="boolean" />
+				</sequence>
+			</extension>
+		</complexContent>
+	</complexType>
+
+	<complexType name="SE_ATTRIBUTE_MISSING">
+		<complexContent>
+			<extension base="qual:SemanticError">
+				<sequence>
+					<element name="childId" type="string" minOccurs="0" />
+					<element name="attributeName" type="string" />
+					<element name="generic" type="boolean" />
+				</sequence>
+			</extension>
+		</complexContent>
+	</complexType>
+
+	<complexType name="validationResultType">
+		<annotation>
+			<documentation>Data structure containing validation results for
+				features
+			</documentation>
+		</annotation>
+		<sequence>
+			<element name="GE_R_TOO_FEW_POINTS"
+				type="qual:GE_R_TOO_FEW_POINTS" minOccurs="0" maxOccurs="unbounded" />
+			<element name="GE_R_SELF_INTERSECTION"
+				type="qual:GE_R_SELF_INTERSECTION" minOccurs="0"
+				maxOccurs="unbounded" />
+			<element name="GE_R_NOT_CLOSED" type="qual:GE_R_NOT_CLOSED"
+				minOccurs="0" maxOccurs="unbounded" />
+			<element name="GE_R_CONSECUTIVE_POINTS_SAME"
+				type="qual:GE_R_CONSECUTIVE_POINTS_SAME" minOccurs="0"
+				maxOccurs="unbounded" />
+
+			<element name="GE_P_INTERIOR_DISCONNECTED"
+				type="qual:GE_P_INTERIOR_DISCONNECTED" minOccurs="0"
+				maxOccurs="unbounded" />
+			<element name="GE_P_INTERSECTING_RINGS"
+				type="qual:GE_P_INTERSECTING_RINGS" minOccurs="0"
+				maxOccurs="unbounded" />
+			<element name="GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE"
+				type="qual:GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE" minOccurs="0"
+				maxOccurs="unbounded" />
+			<element name="GE_P_INNER_RINGS_NESTED"
+				type="qual:GE_P_INNER_RINGS_NESTED" minOccurs="0"
+				maxOccurs="unbounded" />
+			<element name="GE_P_HOLE_OUTSIDE"
+				type="qual:GE_P_HOLE_OUTSIDE" minOccurs="0" maxOccurs="unbounded" />
+			<element name="GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION"
+				type="qual:GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION" minOccurs="0"
+				maxOccurs="unbounded" />
+			<element name="GE_P_ORIENTATION_RINGS_SAME"
+				type="qual:GE_P_ORIENTATION_RINGS_SAME" minOccurs="0"
+				maxOccurs="unbounded" />
+
+			<element name="GE_S_ALL_POLYGONS_WRONG_ORIENTATION"
+				type="qual:GE_S_ALL_POLYGONS_WRONG_ORIENTATION" minOccurs="0"
+				maxOccurs="unbounded" />
+			<element name="GE_S_POLYGON_WRONG_ORIENTATION"
+				type="qual:GE_S_POLYGON_WRONG_ORIENTATION" minOccurs="0"
+				maxOccurs="unbounded" />
+			<element name="GE_S_SELF_INTERSECTION"
+				type="qual:GE_S_SELF_INTERSECTION" minOccurs="0"
+				maxOccurs="unbounded" />
+			<element name="GE_S_NON_MANIFOLD_VERTEX"
+				type="qual:GE_S_NON_MANIFOLD_VERTEX" minOccurs="0"
+				maxOccurs="unbounded" />
+			<element name="GE_S_NON_MANIFOLD_EDGE"
+				type="qual:GE_S_NON_MANIFOLD_EDGE" minOccurs="0"
+				maxOccurs="unbounded" />
+			<element name="GE_S_NOT_CLOSED" type="qual:GE_S_NOT_CLOSED"
+				minOccurs="0" maxOccurs="unbounded" />
+			<element name="GE_S_TOO_FEW_POLYGONS"
+				type="qual:GE_S_TOO_FEW_POLYGONS" minOccurs="0"
+				maxOccurs="unbounded" />
+			<element name="GE_S_MULTIPLE_CONNECTED_COMPONENTS"
+				type="qual:GE_S_MULTIPLE_CONNECTED_COMPONENTS" minOccurs="0"
+				maxOccurs="unbounded" />
+
+			<element name="SE_ATTRIBUTE_WRONG_VALUE"
+				type="qual:SE_ATTRIBUTE_WRONG_VALUE" minOccurs="0"
+				maxOccurs="unbounded" />
+			<element name="SE_ATTRIBUTE_MISSING"
+				type="qual:SE_ATTRIBUTE_MISSING" minOccurs="0" maxOccurs="unbounded" />
+		</sequence>
+		<attribute name="result" type="qual:result" />
+	</complexType>
+
+	<simpleType name="requirementID" final="restriction">
+		<annotation>
+			<documentation>Enumeration for available requirements</documentation>
+		</annotation>
+		<restriction base="string">
+			<enumeration value="R_GE_R_TOO_FEW_POINTS" />
+			<enumeration value="R_GE_R_NOT_CLOSED" />
+			<enumeration value="R_GE_R_CONSECUTIVE_POINTS_SAME" />
+			<enumeration value="R_GE_R_SELF_INTERSECTION" />
+			<enumeration value="R_GE_P_NON_PLANAR" />
+			<enumeration value="R_GE_P_INTERIOR_DISCONNECTED" />
+			<enumeration value="R_GE_P_INTERSECTING_RINGS" />
+			<enumeration value="R_GE_P_HOLE_OUTSIDE" />
+			<enumeration value="R_GE_P_ORIENTATION_RINGS_SAME" />
+			<enumeration value="R_GE_P_INNER_RINGS_NESTED" />
+			<enumeration value="R_GE_S_TOO_FEW_POLYGONS" />
+			<enumeration value="R_GE_S_NOT_CLOSED" />
+			<enumeration value="R_GE_S_NON_MANIFOLD_EDGE" />
+			<enumeration value="R_GE_S_POLYGON_WRONG_ORIENTATION" />
+			<enumeration
+				value="R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION" />
+			<enumeration value="R_GE_S_NON_MANIFOLD_VERTEX" />
+			<enumeration value="R_GE_S_SELF_INTERSECTION" />
+			<enumeration value="R_GE_S_MULTIPLE_CONNECTED_COMPONENTS" />
+			<enumeration value="R_SE_ATTRIBUTES_EXISTING" />
+			<enumeration value="R_SE_ATTRIBUTES_CORRECT" />
+		</restriction>
+	</simpleType>
+
+	<complexType name="parameter">
+		<simpleContent>
+			<extension base="string">
+				<attribute name="name" type="string" use="required" />
+				<attribute name="uom" type="string" use="optional" />
+			</extension>
+		</simpleContent>
+	</complexType>
+
+	<complexType name="requirementType">
+		<annotation>
+			<documentation>Requirement structure for configuration purposes
+			</documentation>
+		</annotation>
+		<sequence>
+			<element name="parameter" type="qual:parameter" minOccurs="0"
+				maxOccurs="unbounded" />
+		</sequence>
+		<attribute name="name" type="qual:requirementID" />
+		<attribute name="enabled" type="boolean" />
+	</complexType>
+
+	<complexType name="validationPlanType">
+		<annotation>
+			<documentation>Validation plan structure containing information about
+				the parameters used to perform the checks
+			</documentation>
+		</annotation>
+		<sequence>
+			<element name="globalParameters"
+				type="qual:globalParameterType" />
+			<element name="requirement" type="qual:requirementType"
+				maxOccurs="unbounded" />
+			<element name="filter" type="qual:filterType" minOccurs="1"
+				maxOccurs="1" />
+		</sequence>
+	</complexType>
+
+	<complexType name="filterType">
+		<sequence>
+			<element name="checking" type="qual:featureType"
+				minOccurs="0" maxOccurs="unbounded" />
+		</sequence>
+	</complexType>
+
+	<simpleType name="featureType">
+		<restriction base="string">
+			<enumeration value="BUILDING"></enumeration>
+			<enumeration value="TRANSPORTATION"></enumeration>
+			<enumeration value="VEGETATION"></enumeration>
+			<enumeration value="BRIDGE"></enumeration>
+			<enumeration value="WATER"></enumeration>
+			<enumeration value="LAND"></enumeration>
+		</restriction>
+	</simpleType>
+
+	<complexType name="globalParameterType">
+		<sequence>
+			<element name="parameter" type="qual:parameter"
+				maxOccurs="unbounded" />
+		</sequence>
+	</complexType>
+
+	<complexType name="statisticsType">
+		<annotation>
+			<documentation>Statistics structure containing information about end
+				result of checking process
+			</documentation>
+		</annotation>
+		<sequence>
+			<element name="numErrorBuildings"
+				type="qual:featureStatistics" />
+			<element name="numErrorVegetation"
+				type="qual:featureStatistics" />
+			<element name="numErrorLandObjects"
+				type="qual:featureStatistics" />
+			<element name="numErrorBridgeObjects"
+				type="qual:featureStatistics" />
+			<element name="numErrorWaterObjects"
+				type="qual:featureStatistics" />
+			<element name="numErrorTransportation"
+				type="qual:featureStatistics" />
+			<element name="errorStatistics"
+				type="qual:errorStatisticsType" />
+		</sequence>
+	</complexType>
+
+	<complexType name="errorStatisticsType">
+		<sequence>
+			<element name="error" type="qual:errorType" minOccurs="0"
+				maxOccurs="unbounded" />
+		</sequence>
+	</complexType>
+
+	<complexType name="errorType">
+		<simpleContent>
+			<extension base="int">
+				<attribute name="name" type="qual:errorId"></attribute>
+			</extension>
+		</simpleContent>
+	</complexType>
+
+	<simpleType name="errorId">
+		<restriction base="string">
+			<enumeration value="GE_R_TOO_FEW_POINTS" />
+			<enumeration value="GE_R_NOT_CLOSED" />
+			<enumeration value="GE_R_CONSECUTIVE_POINTS_SAME" />
+			<enumeration value="GE_R_SELF_INTERSECTION" />
+			<enumeration value="GE_R_NOT_CLOSED" />
+			<enumeration value="GE_P_NON_PLANAR" />
+			<enumeration value="GE_P_INTERIOR_DISCONNECTED" />
+			<enumeration value="GE_P_INTERSECTING_RINGS" />
+			<enumeration value="GE_P_HOLE_OUTSIDE" />
+			<enumeration value="GE_P_ORIENTATION_RINGS_SAME" />
+			<enumeration value="GE_P_INNER_RINGS_NESTED" />
+			<enumeration value="GE_S_TOO_FEW_POLYGONS" />
+			<enumeration value="GE_S_NOT_CLOSED" />
+			<enumeration value="GE_S_NON_MANIFOLD_EDGE" />
+			<enumeration value="GE_S_POLYGON_WRONG_ORIENTATION" />
+			<enumeration value="GE_S_ALL_POLYGONS_WRONG_ORIENTATION" />
+			<enumeration value="GE_S_NON_MANIFOLD_VERTEX" />
+			<enumeration value="GE_S_SELF_INTERSECTION" />
+			<enumeration value="GE_S_MULTIPLE_CONNECTED_COMPONENTS" />
+			<enumeration value="SE_ATTRIBUTE_WRONG_VALUE" />
+			<enumeration value="SE_ATTRIBUTE_MISSING" />
+		</restriction>
+	</simpleType>
+
+	<complexType name="featureStatistics">
+		<simpleContent>
+			<extension base="int">
+				<attribute name="numChecked" type="int" />
+			</extension>
+		</simpleContent>
+	</complexType>
+
+	<element name="validation" type="qual:validationType"
+		substitutionGroup="core:_GenericApplicationPropertyOfCityModel" />
+
+	<complexType name="validationType">
+		<annotation>
+			<documentation>Data structure containing the validation plan and
+				statistics of a validation process
+			</documentation>
+		</annotation>
+		<sequence>
+			<element name="validationDate" type="dateTime" />
+			<element name="validationSoftware" type="string" />
+			<element name="validationPlan" type="qual:validationPlanType"
+				maxOccurs="1" />
+			<element name="statistics" type="qual:statisticsType"
+				maxOccurs="1" />
+		</sequence>
+	</complexType>
+</schema>
\ No newline at end of file