separated core from modules