boilerplate layering