changes model to be a consitent source of truth for number
updates spec to test for new model structure / moves comments inside tests
adds view model to store information about UI state
tests viewmodel UI state logic