refactored file structure