re-structuring the codebase