Code re-organization of refactored classes
This PR moves all the classes into different files. This is a tentative organization, it needs some extra improvement.
This PR moves all the classes into different files. This is a tentative organization, it needs some extra improvement.