added component functionality