Each application is represented as a resource client that understands a set of resources. Similar to the resource mechanism employed in the X Window system [Jon89], a resource is identified by its name, which is unique in the context of a given client, and a resource type. Interdependencies and default values may be specified for all resources of a client. All command-line arguments, required and optional parameters, operation modes, etc. of a tool are accessible as resources. This mechanism ensures that: