add Core logic