Add UI threading, and progress report