reduce boilerplate