refactored the code and directory structures, no feature change