Added more reusability by allowing MainViewController to be subclassed