Changed the the structure of the app. There are now states that can
listen for state changes and update the view accordingly.