One of the key aspects of the ULC architecture is that all ULC widgets are developed as two halves. One half of the widget resides on the UI Engine and is responsible for displaying the user interface and the other half resides on the server providing the application developer the API by which the widget can be manipulated.
Figure 1: The "Half Object" view of ULC widgets
Since each half is tailor made for its counterpart, communication between them can be highly optimized. Default information need not be sent across the network, as each widget's counterpart would automatically choose the same default values. The UI half of the widget also handles all low level user input like keystrokes and mouse events and only sends higher-level semantic UI events to the server. E.g. "button clicked", "entry field contents changed" etc. Events that usually have no significance to the application's functioning like "window resized", "mouse moved" etc are not sent to the server unless explicitly requested by the application developer.