Add ViewModelBase + support classes for it