ADD: component boilerplate