use initializeData for initial loading

1) Add initialize data to avoid loading data from main thread by default
2) Add rebuildData to to allow reloading data from background thread