restructuring the code base