Lots of refactoring and Zoom view