Added Repository and MVVM Patterns