Refactored to separate business model from viewmodel
meh