main splitted