Added MVVM design
Renamed some components