Refactored, removed callback inheritance since it didn't work across DLL boundary