Time is shown vertically downwards. Objects are shown horizontally to the right. An instance form of sequence diagram corresponds to a scenario. Messages passed (synchronous/ asynchronous) and received are shown between objects as time passes. Generic form using conditions, loops, branches and recursion describe many related scenarios. Many sequence diagrams are needed to describe all the possible flows of controls. This is its weak point (cf. collaboration diagram). An object needs to remain active only when doing the work or waiting for a result from another object. This is shown by its activation (thin vertical rectangle). Sequence number of messages can be determined or shown if desired. Objects may be created or destroyed during the service (shown by new and deletion) or be present throughout. Message lines have arrows (synchronous/asynchronous). Dotted message lines are used for message returns. Returns (and less relevant lines) may be elided to improve readability. Labels are used for conditions, timing constraints, loops, descriptions of actions, message name and signature. Comments to describe the sequence of events are usually given on the left or the right. Concurrent message passing can be handled.