refactored zoom and added mousewheel listener