Naive MVVM implementation