further work on component generation