revise project structure, preparing for more GENERICNESS