split up project into atomic submodules.