support user components
added base component class