1. the UI component should be refact into component module 2. use event system to propagate the request to collect information and thus isolate the foreground and background threads 3. use 1 background thread should be enough