split core lib into own project