Works as MVVM too.