update project to make it more compartmentalized