Fix zoom logic; simple cleanup/refactor