1. Refactored to be more MVVM.
2. Added loading indicator.