restructure
intermediate