refactored directory structure for extensibility