skeleton view model/controller