feedback requires the ui thread