cleaner MVVM