documented viewmodel