getting rid of boilerplate