added zooming and panning