a bit of shuffling, still just boilerplate