This paper describes the SPOKESMAN natural language generation system, which is a domain independent component designed to produce text for an application program. Our approach to natural language generation uses the structures from the application program it is working for to directly drive the generation of descriptions and explanations. SPOKESMAN is datadriven in that it uses application program structures to guide its organization of the text, and object-oriented in that it uses links into the application's hierarchical domain model to determine how to express the objects that populate those structures. This approach is more efficient, since the content to be expressed is provided by the application program, rather than having to be constructed by the generator, and since the object types constrain the possible ways the content can be expressed. Careful design of intermediate levels of representation internal to the generator ensure that the utterance being composed will be both expressible and grammatical. Examples are taken from BBN's Semi-Automated Forces simulation. Topic: Natural language generation, explanation Domain area: Simulations/ Military Language/tool: Common Lisp, Flavors/CLOS Status: incorporated into final demonstration systems Effort: 3 yrs Impact: Spokesman provides application programs with the ability to communicate with their users: describing their underlying structures, explaining their actions, and justifying their decisions.