loObj = CREATEOBJECT('someEventHandler') && implements ISomeInterface loAtlObj = CREATEOBJECT('theAtlObject') loAtlObj.BindToEvents(loObj) && BindToEvents (i just named it like that) && would QueryInterface the passed object for ISomeInterface && and store the pointer to it .. && in some other method which should raise events you would check if && an "EventObject" has been set and if so just call some method on && the ISomeInterface pointer .. && in this scenario you would also have to manually cleanup with a && "UnbindFromEvents" method && this is in essence the same as EVENTHANDLER does && but just manually coded ..Regards