composed viewmodel