dispatched UI updates back to main thread to improve performance