boilerplate for components