added component base class