viewModel setup