diff --git a/app/api/geojsons.py b/app/api/geojsons.py
index bb6ed75c5a91ea3c97ba06403f1ce0f6ea88badd..62582f22d32d52684d1008320faa968815af44be 100644
--- a/app/api/geojsons.py
+++ b/app/api/geojsons.py
@@ -96,7 +96,7 @@ def get_kpi_vis_info():
             {"buttonValue": "pollution", "buttonLabel": "Pollution"},
             {
                 "buttonValue": "accousticPollution",
-                "buttonLabel": "Accoustic Pollution - WIP",
+                "buttonLabel": "Acoustic Pollution - WIP",
             },
             {
                 "buttonValue": "congestionsAndBottlenecks",
@@ -118,7 +118,7 @@ def get_kpi_vis_info():
                 "buttonValue": "averageSpeedOfPublicTransport",
                 "buttonLabel": "Avg Public Transport Speed",
             },
-            {"buttonValue": "numberOfBikeTrips", "buttonLabel": "Number of Bike Trips"},
+            # {"buttonValue": "numberOfBikeTrips", "buttonLabel": "Number of Bike Trips"},
             {
                 "buttonValue": "shareOfVehicles",
                 "buttonLabel": "Share of Trips per Mode",
@@ -126,7 +126,7 @@ def get_kpi_vis_info():
             {
                 "buttonValue": "dailyInternalTravels",
                 "buttonLabel": "Daily Internal Trips",
-            },
+            }
         ]
     else:
         raise ValueError("Invalid deploy parameters - city set to %s", city)
@@ -137,7 +137,7 @@ def get_kpi_data_and_write(network, events, sim_id):
     """
     get_kpi_data_final_geojson is a list of links with kpis calculated
     """
-    app.logger.info("getting kpi data to write")
+    app.logger.info(f"getting kpi data to write, city {city}")
 
     results = {}
     emisson_object = kpis_module.get_emissions(sim_id, network)
@@ -183,18 +183,21 @@ def get_kpi_data_and_write(network, events, sim_id):
         app.logger.info("harbour area traffic flow - TODO")
 
     elif network.city == "messina":
+        
         if emisson_object is not None:
             pollution = emisson_object.total_emissions_by_link()
             app.logger.info("Emission by link")
             write_geojson_links(pollution, "pollution", network, sim_id)
             app.logger.info("written emission")
 
+
         publicTransportUse = events.public_transport_use_geojson()
         app.logger.info("public transport use")
         write_geojson_links(publicTransportUse, "publicTransportUse", network, sim_id)
         app.logger.info("written public transport use")
 
-        averageSpeedOfPublicTransport = events.average_bus_speed_geojson()  # TODO
+
+        averageSpeedOfPublicTransport = events.average_bus_speed_geojson()
         app.logger.info("average speed of public transport")
         write_geojson_links(
             averageSpeedOfPublicTransport,
@@ -203,6 +206,7 @@ def get_kpi_data_and_write(network, events, sim_id):
             sim_id,
         )
         app.logger.info("written averageSpeedOfPublicTransport")
+        
 
         numberOfBikeTrips = events.vehicles_count_per_link(only="bike")
         app.logger.info("number of bike trips")
@@ -210,8 +214,6 @@ def get_kpi_data_and_write(network, events, sim_id):
         app.logger.info("written numberOfBikeTrips")
 
         shareOfVehicles = vehicleCountToShareGeojson(events.vehicles_count_per_link())
-
-        # shareOfPublicTransport = events.share_public_transport()
         app.logger.info("share of vehicles")
         write_geojson_links(shareOfVehicles, "shareOfVehicles", network, sim_id)
         app.logger.info("written shareOfVehicles")
@@ -317,6 +319,7 @@ def write_geojson_pedestrian_trips(kpi_data, network, sim_id):
         json.dump(data, fp, indent=2)
     return data
 
+
 def write_geojson_links(kpi_data, kpi_name, network, sim_id):
     """
     Write a per link kpi_data object to a file.
diff --git a/app/netedit/events.py b/app/netedit/events.py
index e11adc1112aa18ba7d06fe2833e650fc284b74e4..acc7404a5841b912509743d17ec517891f2a3bd6 100644
--- a/app/netedit/events.py
+++ b/app/netedit/events.py
@@ -177,19 +177,23 @@ class VehicleEvents(Events):
                     "bikeability_safety": 0,
                     "capacity": capacity,
                 }
-            ev_vehicle = event["vehicle"].split("_")
-            if len(ev_vehicle) > 1:
-                if ev_vehicle[1] == "bicycle":
-                    links[event["link"]]["bike_count"] += 1
-                elif ev_vehicle[1] == "bus":
-                    links[event["link"]]["bus_count"] += 1
-            elif event["vehicle"].isnumeric() or event["vehicle"].find(".1") >= 0:
+            ev_vehicle = event["vehicle"]
+            if ev_vehicle[1] == "bicycle":
+                links[event["link"]]["bike_count"] += 1
+            elif ev_vehicle[1] == "bus":
+                links[event["link"]]["bus_count"] += 1
+            else:
                 links[event["link"]]["car_count"] += 1
+        
         for link_id, link_data in links.items():
             if links.get(link_id, False) and link_data["bike_count"] > 0:
                 links[link_id]["bikeability_safety"] = 10 * (
-                    1 - link_data["car_count"] / link_data["capacity"]
+                    1 - (link_data["car_count"] / link_data["capacity"])
                 )
+            # links[link_id].pop("bike_count", None)
+            # links[link_id].pop("bus_count", None)
+            # links[link_id].pop("car_count", None)
+            # links[link_id].pop("capacity", None)
         return links
 
     # TODO fix after fixing bike_safety_index above
@@ -297,12 +301,9 @@ class VehicleEvents(Events):
         Calculates the daily vehicle counts for each link.
         """
         if local_links is None:
-
             def filter_exp(event):
                 return event["type"] == "entered link"
-
         else:
-
             def filter_exp(event):
                 return event["type"] == "entered link" and event["link"] in local_links
 
@@ -316,17 +317,12 @@ class VehicleEvents(Events):
                     "car_count": 0,
                     "bike_count": 0,
                 }
-            ev_vehicle = event["vehicle"].split("_")
-            if len(ev_vehicle) > 1:
-                if ev_vehicle[1] == "bicycle" and check_only("bike"):
+            ev_vehicle = event["vehicle"]
+            if "bicycle" in ev_vehicle:
                     links[event["link"]]["bike_count"] += 1
-                elif ev_vehicle[1] == "bus" and check_only("bus"):
+            elif "bus" in ev_vehicle and not check_only == "bike":
                     links[event["link"]]["bus_count"] += 1
-            elif (
-                event["vehicle"].isnumeric()
-                or event["vehicle"].find(".1") >= 0
-                and check_only("car")
-            ):
+            elif not check_only == "bike":
                 links[event["link"]]["car_count"] += 1
         return links
 
@@ -347,46 +343,24 @@ class VehicleEvents(Events):
 
         filtered_events = self.timeslot_filter_events(timeslot)
         for event in filter(filter_exp, filtered_events):
-            ev_vehicle = event["vehicle"].split("_")
-            if len(ev_vehicle) > 1:
-                if ev_vehicle[1] == "bicycle":
-                    bicycles.add(event["vehicle"])
-                elif ev_vehicle[1] == "bus":
-                    busses.add(event["vehicle"])
-            elif event["vehicle"].isnumeric() or event["vehicle"].find(".1") >= 0:
-                cars.add(event["vehicle"])
-        results = {
-            "bus_count": len(busses),
-            "car_count": len(cars),
-            "bike_count": len(bicycles),
-        }
+            ev_vehicle = event["vehicle"]
+            if "bicycle" in ev_vehicle: bicycles.add(event["vehicle"])
+            elif "bus" in ev_vehicle: busses.add(event["vehicle"])
+            else: cars.add(event["vehicle"])
+        
+        logger.error(f"BUSSES: {len(busses)}")
+        logger.error(f"BIKES: {len(bicycles)}")
+        logger.error(f"CARS: {len(cars)}")
+
+        results = {}
+        if len(busses) > 0: results["bus_count"] = len(busses)
+        if len(cars) > 0: results["car_count"] = len(cars)
+        if len(bicycles) > 0: results["bike_count"] = len(bicycles)
         return results
 
-    # TODO moyua links
-    def capacity_to_moyua(self, moyua_square_links=None, timeslot=None):
-        if moyua_square_links is None:
-            moyua_square_links = [
-                "22691",
-                "22692",
-                "51616",
-                "51617",
-                "52446",
-                "52447",
-                "45116",
-                "45117",
-                "45118",
-                "37953",
-                "45140",
-                "33748",
-                "33749",
-                "2484",
-                "2485",
-                "26087",
-                "47250",
-                "26024",
-                "43904",
-                "20252",
-            ]
+
+    def capacity_to_moyua(self, moyua_square_links, timeslot=None):
+        
         links = {}
         free_capacity = {}
         filtered_events = self.timeslot_filter_events(timeslot)
@@ -836,7 +810,7 @@ class VehicleEvents(Events):
                         continue
                     data_by_link[item["link"]] = {
                         "pt_users": item["occ"],
-                        "pt_vehicles": [veh_id],
+                        # "pt_vehicles": [veh_id],
                     }
                 else:
                     data_by_link[item["link"]]["pt_users"] += item["occ"]