static void usage(char *me)
 {
-       fprintf(stderr,"usage: %s [-m bkserver] [-x|-X non-default_sock_path] [-j dg_jobid] [-s source_id] [-n num_subjobs [-S][-C]] [-P] [-l jdl_file] [-e seed] [-E]\n", me);
+       fprintf(stderr,"usage: %s [-m bkserver] [-x|-X non-default_sock_path] [-j dg_jobid] [-s source_id] [-o owner] [-n num_subjobs [-S][-C]] [-P] [-l jdl_file] [-e seed] [-E]\n", me);
 }
 
 int main(int argc, char *argv[])
        opterr = 0;
 
        do {
-               switch (getopt(argc,argv,"xX:s:j:m:n:SCl:e:PcvE")) {
+               switch (getopt(argc,argv,"xX:s:j:m:o:n:SCl:e:PcvE")) {
                        case 'x': lbproxy = 1; break;
                        case 'X': lbproxy = 1; 
                                  edg_wll_SetParam(ctx, EDG_WLL_PARAM_LBPROXY_STORE_SOCK, optarg);
                        case 's': src = (char *) strdup(optarg); break;
                        case 'j': job = (char *) strdup(optarg); break;
                        case 'm': server = strdup(optarg); break;
+                       case 'o': edg_wll_SetParam(ctx, EDG_WLL_PARAM_LBPROXY_USER, optarg); break;
                        case 'n': num_subjobs = atoi(optarg); break;
                        case 'S': reg_subjobs = 1; break;
                        case 'C': collection = 1; break;
 
        REQUIRE
        HOSTNAME
        ID
-       VM_SOURCE
        MANAGER
 /;
 
        EDG_WLL_SOURCE_PBS_SMOM,
        EDG_WLL_SOURCE_PBS_MOM,
        EDG_WLL_SOURCE_PBS_SCHEDULER,
+       EDG_WLL_SOURCE_CLOUD_MANAGER,
+       EDG_WLL_SOURCE_VM_MANAGER,
+       EDG_WLL_SOURCE_VM_SYSTEM,
        EDG_WLL_SOURCE__LAST            /* marker, for internal use only */
 } edg_wll_Source;
 
 
        "PBSServer",
        "PBSMomSuperior",
        "PBSMom",
-       "PBSScheduler"
+       "PBSScheduler",
+       "CloudManager",
+       "VMManager",
+       "VMSystem"
 };
 
 edg_wll_Source edg_wll_StringToSource(const char *name)
 
 #define PBSsMom                lbt__eventSource__PBSsMom
 #define PBSMom         lbt__eventSource__PBSMom
 #define PBSScheduler   lbt__eventSource__PBSScheduler
+#define CloudManager   lbt__eventSource__CloudManager
+#define VMManager      lbt__eventSource__VMManager
+#define VMSystem       lbt__eventSource__VMSystem
 
 #endif
 
 
         case PBSsMom: *out = EDG_WLL_SOURCE_PBS_SMOM; break;
         case PBSMom: *out = EDG_WLL_SOURCE_PBS_MOM; break;
         case PBSScheduler: *out = EDG_WLL_SOURCE_PBS_SCHEDULER; break;
+       case CloudManager: *out = EDG_WLL_SOURCE_CLOUD_MANAGER; break;
+       case VMManager: *out = EDG_WLL_SOURCE_VM_MANAGER; break;
+       case VMSystem: *out = EDG_WLL_SOURCE_VM_SYSTEM; break;
         default: assert(0); break;
         }
 }
                case EDG_WLL_SOURCE_PBS_SMOM: *out = PBSsMom; break;
                case EDG_WLL_SOURCE_PBS_MOM: *out = PBSMom; break;
                case EDG_WLL_SOURCE_PBS_SCHEDULER: *out = PBSScheduler; break;
+               case EDG_WLL_SOURCE_CLOUD_MANAGER: *out = CloudManager; break;
+               case EDG_WLL_SOURCE_VM_MANAGER: *out = VMManager; break;
+               case EDG_WLL_SOURCE_VM_SYSTEM: *out = VMSystem; break;
+
                case EDG_WLL_SOURCE_NONE:
                case EDG_WLL_SOURCE__LAST:
                default:
 
                        break;
                case EDG_WLL_EVENT_VMRUNNING:
                        if (USABLE(res)) {
-                               switch( e->vMRunning.vm_source){
-                               case EDG_WLL_VMRUNNING_CM:
-                               case EDG_WLL_VMRUNNING_VMM:
-                                       js->pub.vm_state = EDG_WLL_STAT_VM_RUNNING;
+                               switch( e->any.source){
+                               case EDG_WLL_SOURCE_CLOUD_MANAGER:
+                               case EDG_WLL_SOURCE_VM_MANAGER:
+                                       if (js->pub.vm_state != EDG_WLL_STAT_VM_REALLY_RUNNING)
+                                               js->pub.vm_state = EDG_WLL_STAT_VM_RUNNING;
                                        break;
-                               case EDG_WLL_VMRUNNING_MACHINE:
+                               case EDG_WLL_SOURCE_VM_SYSTEM:
                                        js->pub.vm_state = EDG_WLL_STAT_VM_REALLY_RUNNING;
                                         break;
                                default:
                        break;
                case EDG_WLL_EVENT_VMSHUTDOWN:
                         if (USABLE(res)) {
-                               switch (e->vMShutdown.vm_source){
-                               case EDG_WLL_VMSHUTDOWN_CM:
+                               switch (e->any.source){
+                               case EDG_WLL_SOURCE_CLOUD_MANAGER:
                                        js->pub.vm_state = EDG_WLL_STAT_VM_SHUTDOWN;
                                        break;
-                               case EDG_WLL_VMSHUTDOWN_VMM:
+                               case EDG_WLL_SOURCE_VM_MANAGER:
                                        js->pub.vm_system_halting = 1;
                                        break;
-                               case EDG_WLL_VMSHUTDOWN_MACHINE:
+                               case EDG_WLL_SOURCE_VM_SYSTEM:
                                        js->pub.vm_system_halting = 1;
                                        if (js->pub.vm_state == EDG_WLL_STAT_VM_REALLY_RUNNING)
                                                js->pub.vm_state = EDG_WLL_STAT_VM_RUNNING;
 
        string image            machine image
 
 @type VMRunning                        VM is running
-       int     vm_source
-       _code_  CM              cloud manager
-       _code_  VMM             VM manager
-       _code_  MACHINE         system
 
 @type VMShutdown
-       int vm_source
-       _code_  CM              cloud manager
-        _code_  VMM             VM manager
-        _code_  MACHINE         system
        string  usage
         _optional_
 
 
                        <val name="PBSsMom"/>
                        <val name="PBSMom"/>
                        <val name="PBSScheduler"/>
+                       <val name="CloudManager"/>
+                       <val name="VMManager"/>
+                       <val name="VMSystem"/>
                </enum>
 
                <struct name="stateEnterTimesItem">