use viewmodel
cleanup