diff --git a/maestro/pool_manager.c b/maestro/pool_manager.c
index 38afd6e4a00ac25d1a1aa2c4f67cfa58e5c21090..5627de67fa04c3cef9b60f3f99e990fac9af2bda 100644
--- a/maestro/pool_manager.c
+++ b/maestro/pool_manager.c
@@ -441,6 +441,31 @@ mstro_pm__msg_free(Mstro__Pool__MstroMsg *msg)
     mstro__pool__mstro_msg__free_unpacked(msg, NULL);
   }
 }
+
+
+/** if the application receiving EV needs to be told the name, send
+ * it, otherwise set it to NULL in the EV structure */
+static inline
+mstro_status
+mstro_pm__possibly_fill_event_cdoname(
+    const struct mstro_cdo_id *cdoid,
+    mstro_app_id recipient,
+    Mstro__Pool__Event *ev)
+{
+  recipient = recipient; /* avoid unused warning */
+  
+  /** FIXME: for the moment we just always send the name, could be improved */
+  mstro_status s=
+      mstro_pm_cdo_registry_cdo_name_lookup(cdoid,
+                                            (const char **)&ev->cdo_name);
+  if(s!=MSTRO_OK) {
+    WITH_CDO_ID_STR(idstr, cdoid, {
+        ERR("Cannot find CDO registry entry for |%s|\n",
+            idstr);});
+    return MSTRO_NOENT;
+  }
+  return MSTRO_OK;  
+}
 
 
 /*** DECLARE ***/
@@ -968,13 +993,9 @@ mstro_pm__handle_seal_phase2(mstro_event event,
   ev.payload_case = MSTRO__POOL__EVENT__PAYLOAD_SEAL;
   ev.seal = cont->msg->seal;
   ev.origin_id = cont->msg->token->appid;
-  mstro_status s=
-      mstro_pm_cdo_registry_cdo_name_lookup(&cdoid,
-                                            (const char **)&ev.cdo_name);
+  mstro_status s = mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev);
   if(s!=MSTRO_OK) {
-    WITH_CDO_ID_STR(idstr, &cdoid, {
-        ERR("Cannot find CDO registry entry for |%s|\n",
-            idstr);});
+    goto BAILOUT_FREE;
   }
 
   status = mstro_pm__event_notify_and_continue(
@@ -1030,14 +1051,10 @@ mstro_pm__handle_seal(Mstro__Pool__MstroMsg *msg)
   ev.payload_case = MSTRO__POOL__EVENT__PAYLOAD_SEAL;
   ev.seal = msg->seal;
   ev.origin_id = msg->token->appid;
-  s= mstro_pm_cdo_registry_cdo_name_lookup(&cdoid,
-                                           (const char **)&ev.cdo_name);
+  s = mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev);
   if(s!=MSTRO_OK) {
-    WITH_CDO_ID_STR(idstr, &cdoid, {
-        ERR("Cannot find CDO registry entry for |%s|\n",
-            idstr);});
+    goto BAILOUT_FREE;
   }
-  
 
   s = mstro_pm__event_notify_and_continue(
       &ev,
@@ -1106,15 +1123,11 @@ mstro_pm__handle_offer_phase2(mstro_event event,
   ev.payload_case = MSTRO__POOL__EVENT__PAYLOAD_OFFER;
   ev.offer = cont->msg->offer;
   ev.origin_id = cont->msg->token->appid;
-  s= mstro_pm_cdo_registry_cdo_name_lookup(&cdoid,
-                                           (const char **)&ev.cdo_name);
+  s = mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev);
   if(s!=MSTRO_OK) {
-    WITH_CDO_ID_STR(idstr, &cdoid, {
-        ERR("Cannot find CDO registry entry for |%s|\n",
-            idstr);});
+    goto BAILOUT_FREE;
   }
 
-
   s = mstro_pm__event_notify_and_continue(
       &ev,
       false,
@@ -1158,12 +1171,9 @@ mstro_pm__handle_offer(Mstro__Pool__MstroMsg *msg)
   ev.payload_case = MSTRO__POOL__EVENT__PAYLOAD_OFFER;
   ev.offer = msg->offer;
   ev.origin_id = msg->token->appid;
-  s= mstro_pm_cdo_registry_cdo_name_lookup(&cdoid,
-                                           (const char **)&ev.cdo_name);
+  s = mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev);
   if(s!=MSTRO_OK) {
-    WITH_CDO_ID_STR(idstr, &cdoid, {
-        ERR("Cannot find CDO registry entry for |%s|\n",
-            idstr);});
+    goto BAILOUT_FREE;
   }
 
   s = mstro_pm__event_notify_and_continue(
@@ -1236,15 +1246,11 @@ mstro_pm__handle_require_phase2(mstro_event event,
   ev.payload_case = MSTRO__POOL__EVENT__PAYLOAD_REQUIRE;
   ev.require = cont->msg->require;
   ev.origin_id = cont->msg->token->appid;
-  s= mstro_pm_cdo_registry_cdo_name_lookup(&cdoid,
-                                           (const char **)&ev.cdo_name);
+  s = mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev);
   if(s!=MSTRO_OK) {
-    WITH_CDO_ID_STR(idstr, &cdoid, {
-        ERR("Cannot find CDO registry entry for |%s|\n",
-            idstr);});
+    goto BAILOUT_FREE;
   }
-
-
+ 
   s = mstro_pm__event_notify_and_continue(
       &ev,
       false,
@@ -1289,15 +1295,11 @@ mstro_pm__handle_require(Mstro__Pool__MstroMsg *msg)
   ev.payload_case = MSTRO__POOL__EVENT__PAYLOAD_REQUIRE;
   ev.require = msg->require;
   ev.origin_id = msg->token->appid;
-  s= mstro_pm_cdo_registry_cdo_name_lookup(&cdoid,
-                                           (const char **)&ev.cdo_name);
+  s = mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev);
   if(s!=MSTRO_OK) {
-    WITH_CDO_ID_STR(idstr, &cdoid, {
-        ERR("Cannot find CDO registry entry for |%s|\n",
-            idstr);});
+    goto BAILOUT_FREE;
   }
 
-
   s = mstro_pm__event_notify_and_continue(
       &ev,
       true,
@@ -1349,16 +1351,11 @@ mstro_pm__handle_retract_phase2(mstro_event event,
   ev.payload_case = MSTRO__POOL__EVENT__PAYLOAD_RETRACT;
   ev.retract = cont->msg->retract;
   ev.origin_id = cont->msg->token->appid;
-  mstro_status s =
-      mstro_pm_cdo_registry_cdo_name_lookup(&cdoid,
-                                            (const char **)&ev.cdo_name);
+  mstro_status s = mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev);
   if(s!=MSTRO_OK) {
-    WITH_CDO_ID_STR(idstr, &cdoid, {
-        ERR("Cannot find CDO registry entry for |%s|\n",
-            idstr);});
+    goto BAILOUT_FREE;
   }
 
-
   s = mstro_pm__event_notify_and_continue(
       &ev,
       false,
@@ -1400,15 +1397,11 @@ mstro_pm__handle_retract(Mstro__Pool__MstroMsg *msg)
   ev.retract = msg->retract;
   ev.origin_id = msg->token->appid;
   mstro_status s =
-      mstro_pm_cdo_registry_cdo_name_lookup(&cdoid,
-                                            (const char **)&ev.cdo_name);
+      mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev);
   if(s!=MSTRO_OK) {
-    WITH_CDO_ID_STR(idstr, &cdoid, {
-        ERR("Cannot find CDO registry entry for |%s|\n",
-            idstr);});
+    goto BAILOUT_FREE;
   }
 
-
   s = mstro_pm__event_notify_and_continue(
       &ev,
       true,
@@ -1479,15 +1472,11 @@ mstro_pm__handle_demand_phase2(mstro_event event,
   ev.payload_case = MSTRO__POOL__EVENT__PAYLOAD_DEMAND;
   ev.demand = cont->msg->demand;
   ev.origin_id = cont->msg->token->appid;
-  s= mstro_pm_cdo_registry_cdo_name_lookup(&cdoid,
-                                           (const char **)&ev.cdo_name);
+  s = mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev);
   if(s!=MSTRO_OK) {
-    WITH_CDO_ID_STR(idstr, &cdoid, {
-        ERR("Cannot find CDO registry entry for |%s|\n",
-            idstr);});
+    goto BAILOUT_FREE;
   }
 
-
   s = mstro_pm__event_notify_and_continue(
       &ev,
       false,
@@ -1534,15 +1523,11 @@ mstro_pm__handle_demand(Mstro__Pool__MstroMsg *msg)
   ev.payload_case = MSTRO__POOL__EVENT__PAYLOAD_DEMAND;
   ev.demand = msg->demand;
   ev.origin_id = msg->token->appid;
-  s= mstro_pm_cdo_registry_cdo_name_lookup(&cdoid,
-                                           (const char **)&ev.cdo_name);
+  s = mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev);
   if(s!=MSTRO_OK) {
-    WITH_CDO_ID_STR(idstr, &cdoid, {
-        ERR("Cannot find CDO registry entry for |%s|\n",
-            idstr);});
+    goto BAILOUT_FREE;
   }
 
-
   s = mstro_pm__event_notify_and_continue(
       &ev,
       true,
@@ -1610,15 +1595,11 @@ mstro_pm__handle_withdraw_phase2(mstro_event event,
   ev.payload_case = MSTRO__POOL__EVENT__PAYLOAD_WITHDRAW;
   ev.withdraw = cont->msg->withdraw;
   ev.origin_id = cont->msg->token->appid;
-  s= mstro_pm_cdo_registry_cdo_name_lookup(&cdoid,
-                                           (const char **)&ev.cdo_name);
+  s = mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev);
   if(s!=MSTRO_OK) {
-    WITH_CDO_ID_STR(idstr, &cdoid, {
-        ERR("Cannot find CDO registry entry for |%s|\n",
-            idstr);});
+    goto BAILOUT_FREE;
   }
 
-
   s = mstro_pm__event_notify_and_continue(
       &ev,
       false,
@@ -1662,15 +1643,11 @@ mstro_pm__handle_withdraw(Mstro__Pool__MstroMsg *msg)
   ev.payload_case = MSTRO__POOL__EVENT__PAYLOAD_WITHDRAW;
   ev.withdraw = msg->withdraw;
   ev.origin_id = msg->token->appid;
-  s= mstro_pm_cdo_registry_cdo_name_lookup(&cdoid,
-                                           (const char **)&ev.cdo_name);
+  s = mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev);
   if(s!=MSTRO_OK) {
-    WITH_CDO_ID_STR(idstr, &cdoid, {
-        ERR("Cannot find CDO registry entry for |%s|\n",
-            idstr);});
+    goto BAILOUT_FREE;
   }
 
-
   s = mstro_pm__event_notify_and_continue(
       &ev,
       true,
@@ -1725,15 +1702,11 @@ mstro_pm__handle_dispose_phase2(mstro_event event,
   ev.payload_case = MSTRO__POOL__EVENT__PAYLOAD_DISPOSE;
   ev.dispose = cont->msg->dispose;
   ev.origin_id = cont->msg->token->appid;
-  s= mstro_pm_cdo_registry_cdo_name_lookup(&cdoid,
-                                           (const char **)&ev.cdo_name);
+  s = mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev);
   if(s!=MSTRO_OK) {
-    WITH_CDO_ID_STR(idstr, &cdoid, {
-        ERR("Cannot find CDO registry entry for |%s|\n",
-            idstr);});
+    goto BAILOUT_FREE;
   }
 
-
   s = mstro_pm__event_notify_and_continue(
       &ev,
       false,
@@ -1773,15 +1746,11 @@ mstro_pm__handle_dispose(Mstro__Pool__MstroMsg *msg)
   ev.dispose = msg->dispose;
   ev.origin_id = msg->token->appid;
   mstro_status s =
-      mstro_pm_cdo_registry_cdo_name_lookup(&cdoid,
-                                            (const char **)&ev.cdo_name);
+      mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev);
   if(s!=MSTRO_OK) {
-    WITH_CDO_ID_STR(idstr, &cdoid, {
-        ERR("Cannot find CDO registry entry for |%s|\n",
-            idstr);});
+    goto BAILOUT_FREE;
   }
 
-
   s = mstro_pm__event_notify_and_continue(
       &ev,
       true,
@@ -1834,12 +1803,9 @@ mstro_pm__handle_transfer_completed(Mstro__Pool__MstroMsg *msg)
   ev.transfer_completed = msg->transfer_completed;
   ev.origin_id = msg->token->appid;
   mstro_status s =
-      mstro_pm_cdo_registry_cdo_name_lookup(&cdoid,
-                                            (const char **)&ev.cdo_name);
+      mstro_pm__possibly_fill_event_cdoname(&cdoid, app_id, &ev);
   if(s!=MSTRO_OK) {
-    WITH_CDO_ID_STR(idstr, &cdoid, {
-        ERR("Cannot find CDO registry entry for |%s|\n",
-            idstr);});
+    goto BAILOUT_FREE;
   }
 
   s = mstro_pm__event_notify_and_continue(