component auto generator