diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/AbstractBuilding.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/AbstractBuilding.java
index ca95600e83d55024182ed26f09800edf6aedef2f..66a14b0784e2f74e16bdec0d9aa11bd1baf4d607 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/AbstractBuilding.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/AbstractBuilding.java
@@ -56,7 +56,8 @@ public abstract class AbstractBuilding extends CityObject {
 	private final List<Installation> buildingInstallations = new ArrayList<>(2);
 	private final List<BoundarySurface> boundarySurfaceList = new ArrayList<>();
 	private final List<BuildingRoom> buildingRooms = new ArrayList<>();
-	private final List<AbstractBuildingSubdivision> buildingSubdivisions = new ArrayList<>();
+	private final List<Storey> buildingStoreys = new ArrayList<>();
+	private final List<BuildingUnit> buildingUnits = new ArrayList<>();
 	private final List<BuildingRoomFurniture> buildingRoomFurnitureList = new ArrayList<>();
 	private org.citygml4j.core.model.building.AbstractBuilding ab;
 
@@ -102,8 +103,11 @@ public abstract class AbstractBuilding extends CityObject {
 		for (BuildingRoomFurniture bfr : buildingRoomFurnitureList) {
 			bfr.unsetGmlGeometries();
 		}
-		for (AbstractBuildingSubdivision abs : buildingSubdivisions) {
-			abs.unsetGmlGeometries();
+		for (Storey storey : buildingStoreys) {
+			storey.unsetGmlGeometries();
+		}
+		for (BuildingUnit bu : buildingUnits) {
+			bu.unsetGmlGeometries();
 		}
 	}
 
@@ -130,8 +134,11 @@ public abstract class AbstractBuilding extends CityObject {
 		for (BuildingRoomFurniture bfr : buildingRoomFurnitureList) {
 			bfr.reCreateGeometries(factory, config);
 		}
-		for (AbstractBuildingSubdivision abs : buildingSubdivisions) {
-			abs.reCreateGeometries(factory, config);
+		for (Storey storey : buildingStoreys) {
+			storey.reCreateGeometries(factory, config);
+		}
+		for (BuildingUnit bu : buildingUnits) {
+			bu.reCreateGeometries(factory, config);
 		}
 	}
 
@@ -208,8 +215,11 @@ public abstract class AbstractBuilding extends CityObject {
 		for (BuildingRoomFurniture bfr : buildingRoomFurnitureList) {
 			bfr.accept(c);
 		}
-		for (AbstractBuildingSubdivision abs : buildingSubdivisions) {
-			abs.accept(c);
+		for (Storey storey : buildingStoreys) {
+			storey.accept(c);
+		}
+		for (BuildingUnit bu : buildingUnits) {
+			bu.accept(c);
 		}
 	}
 
@@ -228,8 +238,11 @@ public abstract class AbstractBuilding extends CityObject {
 		for (BuildingRoomFurniture bfr : buildingRoomFurnitureList) {
 			bfr.collectContainedErrors(errors);
 		}
-		for (AbstractBuildingSubdivision abs : buildingSubdivisions) {
-			abs.collectContainedErrors(errors);
+		for (Storey storey : buildingStoreys) {
+			storey.collectContainedErrors(errors);
+		}
+		for (BuildingUnit bu : buildingUnits) {
+			bu.collectContainedErrors(errors);
 		}
 	}
 
@@ -248,8 +261,11 @@ public abstract class AbstractBuilding extends CityObject {
 		for (BuildingRoomFurniture bfr : buildingRoomFurnitureList) {
 			bfr.clearAllContainedCheckResults();
 		}
-		for (AbstractBuildingSubdivision abs : buildingSubdivisions) {
-			abs.clearAllContainedCheckResults();
+		for (Storey storey : buildingStoreys) {
+			storey.clearAllContainedCheckResults();
+		}
+		for (BuildingUnit bu : buildingUnits) {
+			bu.clearAllContainedCheckResults();
 		}
 	}
 
@@ -279,8 +295,13 @@ public abstract class AbstractBuilding extends CityObject {
 				return true;
 			}
 		}
-		for (AbstractBuildingSubdivision abs : buildingSubdivisions) {
-			if (abs.containsError(checkIdentifier)) {
+		for (Storey storey : buildingStoreys) {
+			if (storey.containsError(checkIdentifier)) {
+				return true;
+			}
+		}
+		for (BuildingUnit bu : buildingUnits) {
+			if (bu.containsError(checkIdentifier)) {
 				return true;
 			}
 		}
@@ -313,8 +334,13 @@ public abstract class AbstractBuilding extends CityObject {
 				return true;
 			}
 		}
-		for (AbstractBuildingSubdivision abs : buildingSubdivisions) {
-			if (abs.containsAnyError()) {
+		for (Storey storey : buildingStoreys) {
+			if (storey.containsAnyError()) {
+				return true;
+			}
+		}
+		for (BuildingUnit bu : buildingUnits) {
+			if (bu.containsAnyError()) {
 				return true;
 			}
 		}
@@ -345,8 +371,12 @@ public abstract class AbstractBuilding extends CityObject {
 		roomFurniture.setParent(this);
 	}
 
-	public void addAbstractBuildingSubdivision(AbstractBuildingSubdivision abs) {
-		buildingSubdivisions.add(abs);
+	public void addStorey(Storey storey) {
+		buildingStoreys.add(storey);
+	}
+
+	public void addBuildingUnit(BuildingUnit buildingUnit) {
+		buildingUnits.add(buildingUnit);
 	}
 
 	public void setGmlObject(org.citygml4j.core.model.building.AbstractBuilding ab) {
@@ -365,8 +395,12 @@ public abstract class AbstractBuilding extends CityObject {
 		return buildingRoomFurnitureList;
 	}
 
-	public List<AbstractBuildingSubdivision> getBuildingSubdivisions() {
-		return buildingSubdivisions;
+	public List<Storey> getBuildingStoreys() {
+		return buildingStoreys;
+	}
+
+	public List<BuildingUnit> getBuildingUnits() {
+		return buildingUnits;
 	}
 
 	@Override
@@ -384,8 +418,11 @@ public abstract class AbstractBuilding extends CityObject {
 		for (BuildingRoomFurniture bfr : buildingRoomFurnitureList) {
 			bfr.prepareForChecking();
 		}
-		for (AbstractBuildingSubdivision abs : buildingSubdivisions) {
-			abs.prepareForChecking();
+		for (Storey storey : buildingStoreys) {
+			storey.prepareForChecking();
+		}
+		for (BuildingUnit bu : buildingUnits) {
+			bu.prepareForChecking();
 		}
 	}
 	
@@ -404,8 +441,11 @@ public abstract class AbstractBuilding extends CityObject {
 		for (BuildingRoomFurniture bfr : buildingRoomFurnitureList) {
 			bfr.clearMetaInformation();
 		}
-		for (AbstractBuildingSubdivision abs : buildingSubdivisions) {
-			abs.clearMetaInformation();
+		for (Storey storey : buildingStoreys) {
+			storey.clearMetaInformation();
+		}
+		for (BuildingUnit bu : buildingUnits) {
+			bu.clearMetaInformation();
 		}
 	}
 	
@@ -416,7 +456,8 @@ public abstract class AbstractBuilding extends CityObject {
 		handler.addInstance(buildingInstallations);
 		handler.addInstance(buildingRooms);
 		handler.addInstance(buildingRoomFurnitureList);
-		handler.addInstance(buildingSubdivisions);
+		handler.addInstance(buildingStoreys);
+		handler.addInstance(buildingUnits);
 	}
 	
 	@Override
@@ -435,8 +476,11 @@ public abstract class AbstractBuilding extends CityObject {
 		for (BuildingRoomFurniture originalBFR : originalAb.buildingRoomFurnitureList) {
 			buildingRoomFurnitureList.add(handler.getCopyInstance(originalBFR));
 		}
-		for (AbstractBuildingSubdivision originalBSub : originalAb.buildingSubdivisions) {
-			buildingSubdivisions.add(handler.getCopyInstance(originalBSub));
+		for (Storey originalBStoreys : originalAb.buildingStoreys) {
+			buildingStoreys.add(handler.getCopyInstance(originalBStoreys));
+		}
+		for (BuildingUnit originalBun : originalAb.buildingUnits) {
+			buildingUnits.add(handler.getCopyInstance(originalBun));
 		}
 		ab = originalAb.ab;
 	}
diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/mapper/citygml3/Citygml3FeatureMapper.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/mapper/citygml3/Citygml3FeatureMapper.java
index 4094f5b35df67ec5296b110644dc0ddc48d97254..3b394c190b2dee04b755ca3ef9ab1fd8109082c3 100644
--- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/mapper/citygml3/Citygml3FeatureMapper.java
+++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/mapper/citygml3/Citygml3FeatureMapper.java
@@ -41,6 +41,8 @@ import org.citygml4j.core.model.bridge.BridgePart;
 import org.citygml4j.core.model.bridge.BridgePartProperty;
 import org.citygml4j.core.model.building.*;
 import org.citygml4j.core.model.building.BuildingFurniture;
+import org.citygml4j.core.model.building.BuildingUnit;
+import org.citygml4j.core.model.building.Storey;
 import org.citygml4j.core.model.construction.AbstractConstruction;
 import org.citygml4j.core.model.core.AbstractCityObject;
 import org.citygml4j.core.model.core.AbstractFeatureWithLifespan;
@@ -605,6 +607,22 @@ public class Citygml3FeatureMapper extends ObjectWalker {
 			cdBuilding.addBuildingRoom(br);
 		}
 
+		for(AbstractBuildingSubdivisionProperty abs : gmlAb.getBuildingSubdivisions()) {
+			var gmlABS = abs.getObject();
+			if (gmlABS == null) {
+				continue;
+			}
+			if (gmlABS instanceof Storey gmlStorey) {
+				de.hft.stuttgart.citydoctor2.datastructure.Storey storey = mapBuildingStorey(gmlStorey);
+				cdBuilding.addStorey(storey);
+			}
+			else if (gmlABS instanceof BuildingUnit gmlBU){
+				de.hft.stuttgart.citydoctor2.datastructure.BuildingUnit bu = mapBuildingUnit(gmlBU);
+				cdBuilding.addBuildingUnit(bu);
+			}
+		}
+
+
 		SurfaceMapper surfaceMapper = new SurfaceMapper(polygonMap, references, vertexMap, config);
 		for (AbstractSpaceBoundaryProperty surfaceProp : gmlAb.getBoundaries()) {
 			if (!surfaceProp.isSetObject()) {
@@ -711,6 +729,54 @@ public class Citygml3FeatureMapper extends ObjectWalker {
 
 	}
 
+	private de.hft.stuttgart.citydoctor2.datastructure.Storey mapBuildingStorey(Storey gmlStorey){
+		de.hft.stuttgart.citydoctor2.datastructure.Storey storey = new de.hft.stuttgart.citydoctor2.datastructure.Storey();
+		storey.setGmlObject(gmlStorey);
+		mapAbstractSpace(gmlStorey, storey);
+		storey.unsetGmlGeometries();
+		SurfaceMapper surfaceMapper = new SurfaceMapper(polygonMap, references, vertexMap, config);
+		for (AbstractSpaceBoundaryProperty surfaceProp : gmlStorey.getBoundaries()) {
+			if (!surfaceProp.isSetObject()) {
+				continue;
+			}
+			AbstractSpaceBoundary surface = surfaceProp.getObject();
+			surface.accept(surfaceMapper);
+		}
+		for (BoundarySurface bs : surfaceMapper.getSurfaces()) {
+			storey.addBoundarySurface(bs);
+			for (Geometry geom : bs.getGeometries()) {
+				for (Polygon p : geom.getPolygons()) {
+					p.setPartOfSurface(bs);
+				}
+			}
+		}
+		return storey;
+	}
+
+	private de.hft.stuttgart.citydoctor2.datastructure.BuildingUnit mapBuildingUnit(BuildingUnit gmlBU){
+		de.hft.stuttgart.citydoctor2.datastructure.BuildingUnit bu = new de.hft.stuttgart.citydoctor2.datastructure.BuildingUnit();
+		bu.setGmlObject(gmlBU);
+		mapAbstractSpace(gmlBU, bu);
+		bu.unsetGmlGeometries();
+		SurfaceMapper surfaceMapper = new SurfaceMapper(polygonMap, references, vertexMap, config);
+		for (AbstractSpaceBoundaryProperty surfaceProp : gmlBU.getBoundaries()) {
+			if (!surfaceProp.isSetObject()) {
+				continue;
+			}
+			AbstractSpaceBoundary surface = surfaceProp.getObject();
+			surface.accept(surfaceMapper);
+		}
+		for (BoundarySurface bs : surfaceMapper.getSurfaces()) {
+			bu.addBoundarySurface(bs);
+			for (Geometry geom : bs.getGeometries()) {
+				for (Polygon p : geom.getPolygons()) {
+					p.setPartOfSurface(bs);
+				}
+			}
+		}
+		return bu;
+	}
+
 	private void updatePartOfSurface(AbstractBuilding cdBuilding, SurfaceMapper surfaceMapper) {
 		for (BoundarySurface bs : surfaceMapper.getSurfaces()) {
 			cdBuilding.addBoundarySurface(bs);
diff --git a/CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/CityDoctorController.java b/CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/CityDoctorController.java
index 0a0fb478c29146be3b962c0f89f4b65f534027ad..50e773bacebf6e05a207bd157787724725b9e55f 100644
--- a/CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/CityDoctorController.java
+++ b/CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/CityDoctorController.java
@@ -433,6 +433,8 @@ public class CityDoctorController {
             createBuildingInstallationNodes(b, item);
             createBuildingRoomNodes(b, item);
             createBuildingFurnitureNodes(b, item);
+            createBuildingStoreyNodes(b, item);
+            createBuildingUnitNodes(b, item);
             createBuildingPartNodes(b, item);
         }
     }
@@ -541,6 +543,43 @@ public class CityDoctorController {
 
     }
 
+    private void createBuildingStoreyNodes(Building ab, TreeItem<Renderable> root){
+        List<Storey> storeys = ab.getBuildingStoreys();
+        if (storeys.isEmpty()) {
+            return;
+        }
+        AllStoreysNode allSNode = new AllStoreysNode(storeys);
+        TreeItem<Renderable> allSNodeTextItem = new TreeItem<>(allSNode);
+        root.getChildren().add(allSNodeTextItem);
+        for (Storey storey : storeys) {
+            StoreyNode storeyNode = new StoreyNode(storey);
+            TreeItem<Renderable> storeyNodeTextItem = new TreeItem<>(storeyNode);
+            storeyNodeTextItem.setExpanded(true);
+            allSNodeTextItem.getChildren().add(storeyNodeTextItem);
+            createGeometryNodes(storey, storeyNodeTextItem);
+            createBoundarySurfaceNodes(storey.getBoundarySurfaces(), storeyNodeTextItem);
+        }
+    }
+
+
+    public void createBuildingUnitNodes(Building ab, TreeItem<Renderable> root) {
+        List<BuildingUnit> buildingUnits = ab.getBuildingUnits();
+        if (buildingUnits.isEmpty()) {
+            return;
+        }
+        AllBuildingUnitsNode allSNode = new AllBuildingUnitsNode(buildingUnits);
+        TreeItem<Renderable> allSNodeTextItem = new TreeItem<>(allSNode);
+        root.getChildren().add(allSNodeTextItem);
+        for (BuildingUnit buildingUnit : buildingUnits) {
+            BuildingUnitNode buildingUnitNode = new BuildingUnitNode(buildingUnit);
+            TreeItem<Renderable> storeyNodeTextItem = new TreeItem<>(buildingUnitNode);
+            storeyNodeTextItem.setExpanded(true);
+            allSNodeTextItem.getChildren().add(storeyNodeTextItem);
+            createGeometryNodes(buildingUnit, storeyNodeTextItem);
+            createBoundarySurfaceNodes(buildingUnit.getBoundarySurfaces(), storeyNodeTextItem);
+        }
+    }
+
     private void createBuildingFurnitureNodes(Building ab, TreeItem<Renderable> root) {
         createFurnitureNodes(ab.getBuildingRoomFurnitureList(), root);
     }
diff --git a/CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/Renderer.java b/CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/Renderer.java
index c152b4a16781fed28b4c5dc450b3f5aacf4f81a0..fe246e572ad6bd341898a1ee5ae379cea626c44a 100644
--- a/CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/Renderer.java
+++ b/CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/Renderer.java
@@ -288,6 +288,56 @@ public class Renderer {
 		return polygons;
 	}
 
+	public void render(Storey storey){
+		refresher = () -> {
+			Set<ConcretePolygon> setupStoreyPolygons = setupStoreyPolygons(storey);
+			mainWindow.zoomOutForBoundingBox(BoundingBox.of(setupStoreyPolygons));
+			render(setupStoreyPolygons);
+			Platform.runLater(() -> {
+				errorUpdater = () -> displayErrors(storey);
+				errorUpdater.run();
+			});
+		};
+		refresher.run();
+	}
+
+	public Set<ConcretePolygon> setupStoreyPolygons(Storey storey) {
+		Set<ConcretePolygon> polygons = new HashSet<>();
+		addPolygons(storey, polygons);
+		for (BoundarySurface bs : storey.getBoundarySurfaces()) {
+			addPolygons(bs, polygons);
+			for (Opening op : bs.getOpenings()) {
+				addPolygons(op, polygons);
+			}
+		}
+		return polygons;
+	}
+
+	public void render(BuildingUnit buildingUnit){
+		refresher = () -> {
+			Set<ConcretePolygon> setupBuildingUnitPolgons = setupBuildingUnitPolygons(buildingUnit);
+			mainWindow.zoomOutForBoundingBox(BoundingBox.of(setupBuildingUnitPolgons));
+			render(setupBuildingUnitPolgons);
+			Platform.runLater(() -> {
+				errorUpdater = () -> displayErrors(buildingUnit);
+				errorUpdater.run();
+			});
+		};
+		refresher.run();
+	}
+
+	public Set<ConcretePolygon> setupBuildingUnitPolygons(BuildingUnit buildingUnit) {
+		Set<ConcretePolygon> polygons = new HashSet<>();
+		addPolygons(buildingUnit, polygons);
+		for (BoundarySurface bs : buildingUnit.getBoundarySurfaces()) {
+			addPolygons(bs, polygons);
+			for (Opening op : bs.getOpenings()) {
+				addPolygons(op, polygons);
+			}
+		}
+		return polygons;
+	}
+
 	public void render(BridgeObject bridge) {
 		refresher = () -> {
 			Set<ConcretePolygon> setupBridgePolygons = setupBridgePolygons(bridge);
diff --git a/CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/AllBuildingUnitsNode.java b/CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/AllBuildingUnitsNode.java
new file mode 100644
index 0000000000000000000000000000000000000000..e91e9600b300d7b40eba5c7a48bc094506d64dff
--- /dev/null
+++ b/CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/AllBuildingUnitsNode.java
@@ -0,0 +1,46 @@
+package de.hft.stuttgart.citydoctor2.gui.tree;
+
+import de.hft.stuttgart.citydoctor2.datastructure.BuildingUnit;
+import de.hft.stuttgart.citydoctor2.gui.CheckStatus;
+import de.hft.stuttgart.citydoctor2.gui.Renderer;
+
+import java.util.List;
+
+public class AllBuildingUnitsNode extends Renderable{
+
+    private final List<BuildingUnit> buildingUnits;
+
+    public AllBuildingUnitsNode(List<BuildingUnit> buildingUnits) {
+        this.buildingUnits = buildingUnits;
+    }
+
+    @Override
+    public String getText() {
+        return "Building Units";
+    }
+
+    @Override
+    public void visit(Renderer renderer) {
+        renderer.clearCurrentRender();
+    }
+
+    @Override
+    public void refreshTextColor() {
+        boolean wasChecked = false;
+        for (BuildingUnit buildingUnit : buildingUnits) {
+            if (buildingUnit.isValidated()) {
+                wasChecked = true;
+                if (buildingUnit.containsAnyError()) {
+                    setStatus(CheckStatus.ERROR);
+                    return;
+                }
+            }
+        }
+        if (wasChecked) {
+            setStatus(CheckStatus.OK);
+        } else {
+            setStatus(CheckStatus.NOT_CHECKED);
+        }
+    }
+
+}
diff --git a/CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/AllStoreysNode.java b/CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/AllStoreysNode.java
new file mode 100644
index 0000000000000000000000000000000000000000..9a2df0777e834dc1a3d22c31e12711ac8052a802
--- /dev/null
+++ b/CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/AllStoreysNode.java
@@ -0,0 +1,46 @@
+package de.hft.stuttgart.citydoctor2.gui.tree;
+
+import de.hft.stuttgart.citydoctor2.datastructure.Storey;
+import de.hft.stuttgart.citydoctor2.gui.CheckStatus;
+import de.hft.stuttgart.citydoctor2.gui.Renderer;
+
+import java.util.List;
+
+public class AllStoreysNode extends Renderable{
+
+    private final List<Storey> storeys;
+
+    public AllStoreysNode(List<Storey> storeys) {
+        this.storeys = storeys;
+    }
+
+    @Override
+    public String getText() {
+        return "Building Storeys";
+    }
+
+    @Override
+    public void visit(Renderer renderer) {
+        renderer.clearCurrentRender();
+    }
+
+    @Override
+    public void refreshTextColor() {
+        boolean wasChecked = false;
+        for (Storey storey : storeys) {
+            if (storey.isValidated()) {
+                wasChecked = true;
+                if (storey.containsAnyError()) {
+                    setStatus(CheckStatus.ERROR);
+                    return;
+                }
+            }
+        }
+        if (wasChecked) {
+            setStatus(CheckStatus.OK);
+        } else {
+            setStatus(CheckStatus.NOT_CHECKED);
+        }
+    }
+
+}
diff --git a/CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/BuildingUnitNode.java b/CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/BuildingUnitNode.java
new file mode 100644
index 0000000000000000000000000000000000000000..805b7503a7ca69501555564feb55d2edee826e8f
--- /dev/null
+++ b/CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/BuildingUnitNode.java
@@ -0,0 +1,38 @@
+package de.hft.stuttgart.citydoctor2.gui.tree;
+
+import de.hft.stuttgart.citydoctor2.datastructure.BuildingUnit;
+import de.hft.stuttgart.citydoctor2.gui.CheckStatus;
+import de.hft.stuttgart.citydoctor2.gui.Renderer;
+
+public class BuildingUnitNode extends Renderable{
+
+    private final BuildingUnit buildingUnit;
+
+    public BuildingUnitNode(BuildingUnit buildingUnit) {
+        this.buildingUnit = buildingUnit;
+    }
+
+    @Override
+    public String getText() {
+        return buildingUnit.getGmlId().getGmlString();
+    }
+
+
+    @Override
+    public void visit(Renderer renderer) {
+        renderer.render(buildingUnit);
+    }
+
+    @Override
+    public void refreshTextColor() {
+        if (!buildingUnit.isValidated()) {
+            setStatus(CheckStatus.NOT_CHECKED);
+        } else if (buildingUnit.containsAnyError()) {
+            setStatus(CheckStatus.ERROR);
+        } else {
+            setStatus(CheckStatus.OK);
+        }
+    }
+
+
+}
diff --git a/CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/StoreyNode.java b/CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/StoreyNode.java
new file mode 100644
index 0000000000000000000000000000000000000000..c0b0fe0ba052bc83610415044b90213ed49d00b6
--- /dev/null
+++ b/CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/StoreyNode.java
@@ -0,0 +1,37 @@
+package de.hft.stuttgart.citydoctor2.gui.tree;
+
+import de.hft.stuttgart.citydoctor2.datastructure.Storey;
+import de.hft.stuttgart.citydoctor2.gui.CheckStatus;
+import de.hft.stuttgart.citydoctor2.gui.Renderer;
+
+public class StoreyNode extends Renderable{
+
+    private final Storey storey;
+
+    public StoreyNode(Storey storey) {
+        this.storey = storey;
+    }
+
+    @Override
+    public String getText() {
+        return storey.getGmlId().getGmlString();
+    }
+
+
+    @Override
+    public void visit(Renderer renderer) {
+        renderer.render(storey);
+    }
+
+    @Override
+    public void refreshTextColor() {
+        if (!storey.isValidated()) {
+            setStatus(CheckStatus.NOT_CHECKED);
+        } else if (storey.containsAnyError()) {
+            setStatus(CheckStatus.ERROR);
+        } else {
+            setStatus(CheckStatus.OK);
+        }
+    }
+
+}