Call objects are dynamically created and have no external names. A call object represents the local endpoint of a connection to one or more remote parties. A call object can come into existence on demand (for outbound calls) or spontaneously (for inbound calls). Calls are strongly tied to the line on which they occur; functions to create calls take a line object as a parameter to indicate their parent line. Call objects are used as parameters to the functions that operate on calls, including the operation to end the lifetime of a call. Calls remain subordinate to lines in several senses, for example, closing a line forces the calls on that line to be destroyed.