Refactoring of View and Modes to act more abstractly.