A Model describes the appearance and behaviour of a set of nodes, edges, ports and groups. You do not create one of these directly; instead you pass a definition to a render(...) or newInstance() call. Although the Model has the same syntax in each context, you are encouraged to configure model-specific things in the Model you pass to the newInstance method (such as, which nodes/ports can be connected to which others, what is the maximum number of connections, etc), and view-specific things (such as css classes, paint styles, connector appearance etc) to the model you pass to the render method. The render method automatically merges in a node/port/edge definition from a model defined on the associated Toolkit, if there is one. Only the Surface component provides this. The Toolkit instance creates a Model but it is headless.