Reflection based implementation

I wrote up a reflection base implementation and changed the from*Events methods to use it.