restructure and add more TP