get rid of lots of boilerplate