1. A method for rendering a graphical user interface (GUI), comprising: providing for the representation of the GUI as a set of objects wherein the objects are organized in a logical hierarchy; associating a theme with a first object in the set of objects; rendering the first object according to the theme; rendering any descendents of the first object according to the theme; wherein any descendents of the first object can override the theme; and wherein one of the set of objects can communicate with another of the set of objects.