moved core library to a submodule