view model refact