This streamlines the boiler plate nonsense in the Reactive* classes and ...

...moves it to an extension interface.

Putting this up just for a quick look, I did it to 2 of the umpteen classes that are similar, if this approach makes sense, I will do this for all the other classes with the same boiler plate and then put it up again for a final review before merging.