isolate core functionalities as other package