diff --git a/src/main/java/eu/simstadt/regionchooser/RegionChooserCLI.java b/src/main/java/eu/simstadt/regionchooser/RegionChooserCLI.java
index e54f6d6ddff9b8b784ae493e4ca3c25856546fac..1798c0638bdd97e00784d29ec9795d5126dbcdd4 100644
--- a/src/main/java/eu/simstadt/regionchooser/RegionChooserCLI.java
+++ b/src/main/java/eu/simstadt/regionchooser/RegionChooserCLI.java
@@ -9,8 +9,10 @@
 import java.util.Scanner;
 import java.util.concurrent.Callable;
 import org.osgeo.proj4j.CoordinateReferenceSystem;
+import eu.simstadt.regionchooser.RegionChooserCLI.GetVersion;
 import picocli.CommandLine;
 import picocli.CommandLine.Command;
+import picocli.CommandLine.IVersionProvider;
 import picocli.CommandLine.Model.CommandSpec;
 import picocli.CommandLine.Option;
 import picocli.CommandLine.Spec;
@@ -41,17 +43,14 @@
 // --wkt ./grombuhl.txt
 
 
-@Command(name = "region_chooser", mixinStandardHelpOptions = true, version = "regionChooser 0.2.9", description = "Extracts a region from one or more citygmls.", sortOptions = false)
+@Command(name = "region_chooser", mixinStandardHelpOptions = true, description = "Extracts a region from one or more citygmls.", sortOptions = false, versionProvider = GetVersion.class)
 class RegionChooserCLI implements Callable<Integer>
 {
 	@Spec
 	CommandSpec spec;
 
-	//TODO: Add --gui?
-
 	@Option(names = { "-i",
 			"--input" }, required = true, split = ",", description = "Citygml files to extract from", paramLabel = "input.gml")
-	//TODO: Allow folders too?
 	Path[] citygmls;
 
 	@Option(names = { "-o",
@@ -122,6 +121,13 @@ public Integer call() throws Exception {
 		return 0;
 	}
 
+	// this example implements Callable, so parsing, error handling and handling user
+	// requests for usage help or version help can be done with one line of code.
+	public static void main(String... args) {
+		int exitCode = new CommandLine(new RegionChooserCLI()).execute(args);
+		System.exit(exitCode);
+	}
+
 	private void logInfo(String message) {
 		spec.commandLine().getErr().println(message);
 	}
@@ -132,10 +138,12 @@ private static String getInput() {
 		}
 	}
 
-	// this example implements Callable, so parsing, error handling and handling user
-	// requests for usage help or version help can be done with one line of code.
-	public static void main(String... args) {
-		int exitCode = new CommandLine(new RegionChooserCLI()).execute(args);
-		System.exit(exitCode);
+	static class GetVersion implements IVersionProvider
+	{
+		@Override
+		public String[] getVersion() throws Exception {
+			return new String[] { RegionChooserUtils.getApplicationVersion() };
+		}
 	}
+
 }
\ No newline at end of file
diff --git a/src/main/java/eu/simstadt/regionchooser/RegionExtractor.java b/src/main/java/eu/simstadt/regionchooser/RegionExtractor.java
index a13894cc1e9d6d0a09b5b596c782ac77fb875a6f..665c32d96abddf0db163949119f214f55795b3ff 100644
--- a/src/main/java/eu/simstadt/regionchooser/RegionExtractor.java
+++ b/src/main/java/eu/simstadt/regionchooser/RegionExtractor.java
@@ -59,6 +59,7 @@ static int selectRegionDirectlyFromCityGML(String wktPolygon, String srsName, Wr
 		for (int i = 0; i < citygmlPaths.length; i++) {
 			Path citygmlPath = citygmlPaths[i];
 			LOGGER.info("Parsing " + citygmlPath);
+			//TODO: Allow citygmlPath for folders too, and iterate over gmls?
 			citygml = new CityGmlIterator(citygmlPath);
 			for (BuildingXmlNode buildingXmlNode : citygml) {
 				if (buildingsCount == 0) {
diff --git a/src/test/java/eu/simstadt/regionchooser/RegionChooserCLITests.java b/src/test/java/eu/simstadt/regionchooser/RegionChooserCLITests.java
index 1d6465d351fe686f9a5c5adfb879983315d9c34d..540063272366d7e51c0d490a5974e16135de9bcf 100644
--- a/src/test/java/eu/simstadt/regionchooser/RegionChooserCLITests.java
+++ b/src/test/java/eu/simstadt/regionchooser/RegionChooserCLITests.java
@@ -57,6 +57,13 @@ void testNoInput() {
 		assertTrue(err.toString().contains(expectedErr), err.toString() + " should contain " + expectedErr);
 	}
 
+	@Test
+	void testGetVersion() {
+		new CommandLine(new RegionChooserCLI()).execute("--version");
+		String expectedVersion = RegionChooserUtils.getApplicationVersion();
+		assertTrue(out.toString().contains(expectedVersion), out.toString() + " should contain " + expectedVersion);
+	}
+
 	@Test
 	void testExtractRegionFromTwoCitygmls() throws IOException {
 		String wktPolygon = "POLYGON((3512984.7003764412 5405148.310572891,3513038.6360455155 5405010.072163861,3513142.7277745553 5405004.02571992,3514204.1661769524 5405563.192081669,3514399.2818417274 5405720.905457244,3514291.6158155007 5405896.706492759,3512984.7003764412 5405148.310572891))";