diff --git a/python_scripts/add_trees_to_open_street_map/add_trees.py b/python_scripts/add_trees_to_open_street_map/add_trees.py
index 46f734854aa3dd7c5e977d9ac2baaee23750ec75..31e445dbba45cc0d07a97181ddf9c0f7e1ae2b62 100644
--- a/python_scripts/add_trees_to_open_street_map/add_trees.py
+++ b/python_scripts/add_trees_to_open_street_map/add_trees.py
@@ -9,6 +9,7 @@ Trees are exported in a CSV table, a PNG diagram and an HTML interactive map.
 import pickle
 from pathlib import Path
 from collections import namedtuple, Counter
+import re
 
 import folium
 import matplotlib.pyplot as plt
@@ -30,7 +31,9 @@ from import_existing_trees import get_existing_forest
 # TODO: Write tests?
 
 # From RegionChooser, or https://transfer.hft-stuttgart.de/gitlab/circulargreensimcity/circulargreensimcity/-/wikis/Fallstudien/Gromb%C3%BChl
-WKT = "POLYGON((9.947021 49.803063, 9.947011 49.800917, 9.955025 49.800810, 9.955110 49.803019, 9.947021 49.803063))"
+# WKT = "POLYGON((9.947021 49.803063, 9.947011 49.800917, 9.955025 49.800810, 9.955110 49.803019, 9.947021 49.803063))"
+# Grafenbühl
+WKT = "POLYGON((9.147551 48.908059, 9.148635 48.907953, 9.149525 48.907819, 9.151177 48.907819, 9.151413 48.907840, 9.153226 48.908087, 9.153387 48.906705, 9.149160 48.906634, 9.148999 48.906620, 9.147551 48.908059))"
 # Replace with None if no existing tree should be imported
 EXISTING_TREES = 'existing_trees/Trees_ideal_2_20240227.shp'
 # EXISTING_TREES = 'existing_trees/baumkataster/Baum.shp'
@@ -109,13 +112,18 @@ def set_plot(bounds: Bounds, to_local_coordinates):
     return ax
 
 
+def get_width(way: overpy.Way) -> float:
+    width_str = way.tags.get("width", '0')
+    # NOTE: Some widths are written with units, so try to remove trailing [m] first.
+    width_str = re.sub(' ?m$', '', width_str)
+    return float(width_str)
+
+
 def get_default_widths(ways: list) -> dict[str, float]:
     """Check existing OSM highways, and extract the most common width for each type"""
-    width_counters = {}
+    width_counters: dict[str, Counter] = {}
     for way in ways:
-        # NOTE: Some widths are written with units, so try to remove [m] first.
-        # TODO: use regex instead
-        width = float(way.tags.get("width", '0').replace('m', ''))
+        width = get_width(way)
         way_type = way.tags.get("highway")
         if width:
             if way_type not in width_counters:
@@ -133,7 +141,7 @@ def place_trees(forest: Forest, ways: list, region: str, to_local, tree_distance
 
     for way in ways:
         way_type = way.tags.get("highway")
-        width = float(way.tags.get("width", 0))
+        width = get_width(way)
         default_width = default_widths.get(way_type, 0)
         if default_width < 0:
             # Ignore this type of streets
@@ -199,7 +207,7 @@ def plot_trees(bounds: Bounds, forest: Forest, tree_distance: float) -> None:
     print("  DONE!")
 
 
-def export_map(bounds: Bounds, forest: Forest, epsg_id: str) -> None:
+def export_map(bounds: Bounds, forest: Forest, epsg_id: int) -> None:
     print("Exporting Map...")
     to_wgs84 = Transformer.from_crs(f"EPSG:{epsg_id}", "EPSG:4326", always_xy=True)
     interactive_map = folium.Map()
@@ -232,7 +240,7 @@ def export_map(bounds: Bounds, forest: Forest, epsg_id: str) -> None:
     print("  DONE!")
 
 
-def export_csv(bounds: Bounds, forest: Forest, wkt_polygon: str, tree_distance: float, min_distance: float, epsg_id: str) -> None:
+def export_csv(bounds: Bounds, forest: Forest, wkt_polygon: str, tree_distance: float, min_distance: float, epsg_id: int) -> None:
     print("Exporting CSV...")
     with open(OUTPUT_DIR / f"{get_basename(bounds)}_trees.csv", "w") as csv:
         csv.write(f"# Fake trees for; {wkt_polygon}\n")
@@ -247,7 +255,7 @@ def export_csv(bounds: Bounds, forest: Forest, wkt_polygon: str, tree_distance:
     print("  DONE!")
 
 
-def export_shapefile(bounds: Bounds, forest: Forest, epsg_id: str) -> None:
+def export_shapefile(bounds: Bounds, forest: Forest, epsg_id: int) -> None:
     print("Exporting shapefile")
 
     data = [{
@@ -274,7 +282,7 @@ def export_shapefile(bounds: Bounds, forest: Forest, epsg_id: str) -> None:
     print("  DONE!")
 
 
-def main(wkt_polygon: str, epsg_id: str, tree_distance: float, min_distance: float, import_tree_shp) -> None:
+def main(wkt_polygon: str, epsg_id: int, tree_distance: float, min_distance: float, import_tree_shp) -> None:
     region, bounds = load_region(wkt_polygon)
     ways = get_osm_roads(bounds)
 
diff --git a/python_scripts/add_trees_to_open_street_map/tree.py b/python_scripts/add_trees_to_open_street_map/tree.py
index 3a801794fb59c2f7d7bf259452c057a3f59e8150..c2ac6fb2245c9f16dd29ef9684beef3a9772cd8f 100644
--- a/python_scripts/add_trees_to_open_street_map/tree.py
+++ b/python_scripts/add_trees_to_open_street_map/tree.py
@@ -10,8 +10,8 @@ class Tree:
     diameter: float
     height: float
     z: float = 0
-    trunk_diameter: float = None
-    type: str = None
+    trunk_diameter: float|None = None
+    type: str|None = None
     description: str = '?'
     source: str = '?'
     color: str = 'green'