diff --git a/src/main/java/eu/simstadt/regionchooser/RegionChooserBrowser.java b/src/main/java/eu/simstadt/regionchooser/RegionChooserBrowser.java
index 8e59d50aea9bdf9e0bf0810509b896b0a1cc18fa..20d4767206529c7b9fc08d77e380a62d87d40414 100644
--- a/src/main/java/eu/simstadt/regionchooser/RegionChooserBrowser.java
+++ b/src/main/java/eu/simstadt/regionchooser/RegionChooserBrowser.java
@@ -42,8 +42,8 @@ public class RegionChooserBrowser extends Region
 
 		public JavaScriptFXBridge() {
 			Preferences userPrefs = Preferences.userRoot().node("/eu/simstadt/desktop");
-			String repoString = userPrefs.get(PREF_RECENT_REPOSITORY, "../TestRepository");
-			repo = Paths.get(repoString);
+			String repoString = userPrefs.get(PREF_RECENT_REPOSITORY, null);
+			repo = repoString == null? null : Paths.get(repoString);
 		}
 
 		/**
@@ -51,6 +51,9 @@ public JavaScriptFXBridge() {
 		 * to the JS app in order to be displayed.
 		 */
 		public void refreshHulls() {
+			if (repo == null || !Files.exists(repo)) {
+				selectRepository();
+			}
 			Task<Void> task = new Task<Void>() {
 				@Override
 				public Void call() throws IOException {
@@ -62,7 +65,9 @@ public Void call() throws IOException {
 
 			task.setOnRunning(e -> {
 				jsApp.call("display", "Importing citgyml. Please wait.");
-				jsApp.call("showRepositoryName", repo.getFileName().toString());
+				if (repo != null) {
+					jsApp.call("showRepositoryName", repo.getFileName().toString());
+				}
 				jsApp.call("init");
 			});
 
@@ -105,13 +110,15 @@ public Integer call() throws IOException, XPathParseException, NavException, Par
 
 
 		public void selectRepository() {
+			//TODO: Check if it's really a repository, and not just a project
 			Preferences userPrefs = Preferences.userRoot().node("/eu/simstadt/desktop");
-			String currentRepo = userPrefs.get(PREF_RECENT_REPOSITORY, "../TestRepository");
 
 			DirectoryChooser fileChooser = new DirectoryChooser();
 			Stage mainStage = (Stage) RegionChooserBrowser.this.getScene().getWindow();
 			fileChooser.setTitle("Select Repository");
-			fileChooser.setInitialDirectory(new File(currentRepo));
+			if (repo != null && Files.exists(repo)) {
+				fileChooser.setInitialDirectory(repo.toFile());
+			}
 			File repoLocation = fileChooser.showDialog(mainStage);
 
 			if (repoLocation != null) {
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 850bf385e2e9d811e6c32317c1e9f50df7e3f505..155ea05bbf7f32816d6a112da4186b60bc2e061b 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
@@ -89,6 +89,10 @@ public static Geometry calculateFromCityGML(Path citygmlPath) throws XPathParseE
 	 * @throws IOException
 	 */
 	public static void extractHullsForEveryCityGML(Path repository, Consumer<String> callback) throws IOException {
+		if (!Files.exists(repository)) {
+			LOGGER.warning(repository + " does not appear to exist.");
+			return;
+		}
 		LOGGER.info("Parsing " + repository);
 		RegionChooserUtils.everyCityGML(repository)
 				.map(gmlPath -> {
diff --git a/src/test/java/eu/simstadt/regionchooser/fast_xml_parser/ConvexHullCalculatorTests.java b/src/test/java/eu/simstadt/regionchooser/fast_xml_parser/ConvexHullCalculatorTests.java
index bca9d3f99d409892692bf29636fa005d35c9042a..5bd0d0d836d2d4dd998c0ca72e614f25bafe85f5 100644
--- a/src/test/java/eu/simstadt/regionchooser/fast_xml_parser/ConvexHullCalculatorTests.java
+++ b/src/test/java/eu/simstadt/regionchooser/fast_xml_parser/ConvexHullCalculatorTests.java
@@ -1,7 +1,10 @@
 package eu.simstadt.regionchooser.fast_xml_parser;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
+
 import java.io.File;
 import java.io.IOException;
 import java.nio.file.Files;
@@ -22,6 +25,7 @@
 {
 	private static final GeometryFactory gf = new GeometryFactory();
 	private static final Path repository = Paths.get("src/test/resources/testdata");
+	private static final Path notExistingRepository = Paths.get("src/test/resources/surely_not_here");
 
 	@Test
 	public void testExtractConvexHullFromOneBuilding() throws IOException, XPathParseException {
@@ -72,4 +76,12 @@ public void testExtractConvexHullFromEveryCitygmlInRepository() throws IOExcepti
 		assertTrue(gmlCount >= minHullCount, "At least " + minHullCount + " citygmls should be present in repository");
 		assertTrue(hullCount.get() >= minHullCount, "At least " + minHullCount + " hulls should have been calculated");
 	}
+
+	@Test
+	public void testDontDoMuchWithBrokenRepo() throws IOException {
+		ConvexHullCalculator.extractHullsForEveryCityGML(notExistingRepository, kmlHull -> {
+			fail("I really shouldn't be called for any gml.");
+		});
+		assertFalse(Files.exists(notExistingRepository));
+	}
 }