all the components have a better way to communicate with the main controller of the application