remote event handler in UI thread