implement pan & zoom controller