update core logic