splitting out viewmodel behaviour into controllers
tidying up