added component generator