diff --git a/src/main/java/eu/simstadt/regionchooser/fast_xml_parser/ConvexHullCalculator.java b/src/main/java/eu/simstadt/regionchooser/fast_xml_parser/ConvexHullCalculator.java
index 4e9e6b99cc3c46978cf12c61f9500854449d42c7..850bf385e2e9d811e6c32317c1e9f50df7e3f505 100644
--- a/src/main/java/eu/simstadt/regionchooser/fast_xml_parser/ConvexHullCalculator.java
+++ b/src/main/java/eu/simstadt/regionchooser/fast_xml_parser/ConvexHullCalculator.java
@@ -25,6 +25,10 @@
 {
 	private static final Logger LOGGER = Logger.getLogger(ConvexHullCalculator.class.getName());
 
+	private ConvexHullCalculator() {
+		throw new IllegalStateException("Utility class");
+	}
+
 	/**
 	 * Relatively fast method to extract a convex hull in WGS84 for any Citygml file for which CRS is known and whose
 	 * size is less than 2GB (VTD XML limitation). It iterates over every building, gets the bounding box as 4
@@ -92,7 +96,6 @@ public static void extractHullsForEveryCityGML(Path repository, Consumer<String>
 					try {
 						Path kmlPath = getHullPath(repository, gmlPath);
 						if (Files.exists(kmlPath)) {
-							//TODO: Check if size is the same as original. Recreate otherwise.
 							LOGGER.fine("Using cache from " + repository.relativize(kmlPath));
 							return new String(Files.readAllBytes(kmlPath), StandardCharsets.UTF_8);
 						} else {
@@ -101,8 +104,8 @@ public static void extractHullsForEveryCityGML(Path repository, Consumer<String>
 						}
 					} catch (IOException ex) {
 						ex.printStackTrace();
+						return null;
 					}
-					return null;
 				})
 				.filter(Objects::nonNull)
 				.forEach(hullKML -> {
@@ -190,6 +193,9 @@ public static String calculateConvexHullPlacemark(Path gmlPath, Path kmlPath, bo
 	 * folder and hides it. The '.cache' folder isn't specific to the project: every kml cache file is written inside the
 	 * same repository '.cache' folder.
 	 *
+	 * The original CityGML filesize is written in KML basename, in order to update the hull if the CityGML file is
+	 * modified, e.g. LoD2_564_5512_2_BY_11946489.kml
+	 *
 	 * @param repository
 	 * @param citygmlPath
 	 *
@@ -197,7 +203,8 @@ public static String calculateConvexHullPlacemark(Path gmlPath, Path kmlPath, bo
 	 * @throws IOException
 	 */
 	private static Path getHullPath(Path repository, Path citygmlPath) throws IOException {
-		String kmlFilename = citygmlPath.getFileName().toString().replaceAll("(?i)\\.gml$", ".kml");
+		String kmlFilename = citygmlPath.getFileName().toString().replaceAll("(?i)\\.gml$",
+				"_" + Files.size(citygmlPath) + ".kml");
 		Path cacheFolder = repository.resolve(".cache/");
 		Path hullsFolder = cacheFolder.resolve("hulls/");
 		Files.createDirectories(hullsFolder);