refactored components, added zoom