implementations for zoom and dragging