Nearly there with MVVM. Getting bored of this refactor.