the event sub should be in the class.
I tried that after posting this and as you recommend, it does work.
However, I want this class to be reusable so in future I do not know how the application will consume the 'newdata' that arrives and in C++ I would have solved this by deriving from this class and have a virtual member function that would override the stub that would be in this class.
Erel suggests CallSub() and I did try that and it helps solve the problem of that a C++ virtual member function does - a future application can provide it's own consume functionality.
However, CallSub() does not check the argument list and so I will need to be very explicit in my documentation that the sub to be called has to have a certain signature otherwise it is going to go pear shaped -- unless I am mistaken.
And then I am curious how much of an time overhead does CallSub() add given there could be a search for that subname everytime that routine is invoked which will impact the data throughput. I have seen a post (quite old one) that there is a throughout issue as it is.