updates from before
some rearrangement