Changed things around and renamed things to better reflect an MVVM approach