edited for more structure