avoid waiting on the GUI thread