The paper discusses some basic issues in natural language generation (NLG) and describes a head-driven NLG system for HPSG-like language descriptions. We address mainly the aspects of surface natural language generation starting from a meaning representation of the message meant to be verbalized. The representation of the linguistic knowledge (grammar and lexicon) as well as the most important implementation issues (the generator is implemented in SMALLTALK) are described in detail, also commenting on the SMALLTALK code.