made a lot of changes to the structure