implemented smooth zoom