re-organized the structure of code base