Reorganization project structure to be useful as a library