adding split, some clean up and reverse