spliting the model to allow for extensibility and adding a view model module that is subject to change