refactory and ready to next setip