I think I meant what you said.
My UI_Control has a small script to direct traffic, but it is the main hub for the UI b/c it's where I pause my game for the menu screen, dialogue box, etc. The UI is set to process when paused() = true.
as for the UI controlling itself, I mean that I will pass an argument (filepath) to my dialogue box, and it does the rest itself. it open, reads, and updates the display from the filepath passed to it. When done, it just sends a "dialogue done" kinda signal and shuts itself off. the UI_Control receives the signal and un-pauses the game.
same for the display. I just send the itemtype and itemamount arguments to an update function call, and the display updates itself with that information. for example, I never have the script for a world/level reach down through the UI and update the ItemAmountLabel.text directly.
so again, I think I meant what you were saying about separate module objects and scripts.