Added zooming functionality and the Viewport class