added component and generator logic