todo item view model composition