shortened some things, changed structure.