Swift MVVM experiment