diff --git a/Makefile b/Makefile
index a4d40b4..a69fb64 100644
--- a/Makefile
+++ b/Makefile
@@ -1,17 +1,17 @@
 include ../shared/mojo.mk
 
 ifdef ANDROID
-	DISCOVERY_BUILD_DIR := $(PWD)/gen/mojo/android
+	DISCOVERY_BUILD_DIR := $(CURDIR)/gen/mojo/android
 
 	# For some reason we need to set the origin flag when running on Android,
 	# but setting it on Linux causes errors.
 	ORIGIN_FLAG = --origin $(MOJO_SERVICES)
 else
-	DISCOVERY_BUILD_DIR := $(PWD)/gen/mojo/linux_amd64
+	DISCOVERY_BUILD_DIR := $(CURDIR)/gen/mojo/linux_amd64
 endif
 
 MOJO_SHELL_FLAGS := $(MOJO_SHELL_FLAGS) \
-	--config-alias DISCOVERY_DIR=$(PWD) \
+	--config-alias DISCOVERY_DIR=$(CURDIR) \
 	--config-alias DISCOVERY_BUILD_DIR=$(DISCOVERY_BUILD_DIR) \
 	$(ORIGIN_FLAG)
 
@@ -82,11 +82,11 @@
 
 # Examples.
 run-advertiser: $(DISCOVERY_BUILD_DIR)/advertiser.mojo $(DISCOVERY_BUILD_DIR)/discovery.mojo
-	$(MOJO_DEVTOOLS)/mojo_run --config-file $(PWD)/mojoconfig $(MOJO_SHELL_FLAGS) $(MOJO_ANDROID_FLAGS) https://mojo.v.io/advertiser.mojo \
+	$(MOJO_DEVTOOLS)/mojo_run --config-file $(CURDIR)/mojoconfig $(MOJO_SHELL_FLAGS) $(MOJO_ANDROID_FLAGS) https://mojo.v.io/advertiser.mojo \
 	--args-for="https://mojo.v.io/discovery.mojo"
 
 run-scanner: $(DISCOVERY_BUILD_DIR)/scanner.mojo $(DISCOVERY_BUILD_DIR)/discovery.mojo
-	$(MOJO_DEVTOOLS)/mojo_run --config-file $(PWD)/mojoconfig $(MOJO_SHELL_FLAGS) $(MOJO_ANDROID_FLAGS) https://mojo.v.io/scanner.mojo \
+	$(MOJO_DEVTOOLS)/mojo_run --config-file $(CURDIR)/mojoconfig $(MOJO_SHELL_FLAGS) $(MOJO_ANDROID_FLAGS) https://mojo.v.io/scanner.mojo \
 	--args-for="https://mojo.v.io/discovery.mojo"
 
 $(DISCOVERY_BUILD_DIR)/advertiser.mojo: $(V23_GO_FILES) go/src/mojom/vanadium/discovery/discovery.mojom.go | mojo-env-check
diff --git a/lib/gen/dart-gen/mojom/lib/discovery/discovery.mojom.dart b/lib/gen/dart-gen/mojom/lib/discovery/discovery.mojom.dart
index d0f6172..ecdc676 100644
--- a/lib/gen/dart-gen/mojom/lib/discovery/discovery.mojom.dart
+++ b/lib/gen/dart-gen/mojom/lib/discovery/discovery.mojom.dart
@@ -1199,16 +1199,16 @@
 
 
   AdvertiserAdvertiseResponseParams _AdvertiserAdvertiseResponseParamsFactory(int handle, String instanceId, Error err) {
-    var result = new AdvertiserAdvertiseResponseParams();
-    result.handle = handle;
-    result.instanceId = instanceId;
-    result.err = err;
-    return result;
+    var mojo_factory_result = new AdvertiserAdvertiseResponseParams();
+    mojo_factory_result.handle = handle;
+    mojo_factory_result.instanceId = instanceId;
+    mojo_factory_result.err = err;
+    return mojo_factory_result;
   }
   AdvertiserStopResponseParams _AdvertiserStopResponseParamsFactory(Error err) {
-    var result = new AdvertiserStopResponseParams();
-    result.err = err;
-    return result;
+    var mojo_factory_result = new AdvertiserStopResponseParams();
+    mojo_factory_result.err = err;
+    return mojo_factory_result;
   }
 
   dynamic handleMessage(bindings.ServiceMessage message) {
@@ -1476,15 +1476,15 @@
 
 
   ScannerScanResponseParams _ScannerScanResponseParamsFactory(int handle, Error err) {
-    var result = new ScannerScanResponseParams();
-    result.handle = handle;
-    result.err = err;
-    return result;
+    var mojo_factory_result = new ScannerScanResponseParams();
+    mojo_factory_result.handle = handle;
+    mojo_factory_result.err = err;
+    return mojo_factory_result;
   }
   ScannerStopResponseParams _ScannerStopResponseParamsFactory(Error err) {
-    var result = new ScannerStopResponseParams();
-    result.err = err;
-    return result;
+    var mojo_factory_result = new ScannerStopResponseParams();
+    mojo_factory_result.err = err;
+    return mojo_factory_result;
   }
 
   dynamic handleMessage(bindings.ServiceMessage message) {
