further work on refactoring components