even more structure added
rearange