beginnings of a component factory to generate the bits/functionality of the UI in a more flexible 'widget' way