Request abstraction is the first and most critical feature, and the other features either follow directly, or are closely related. The abstractions used to represent otherwise complex request parameter lists must be defined somewhere, and a database system is the best approach.
The mimimum library provides exactly three features besides api access. There is message buffering; a shared address space, though that either at the cost of writing downstream code in the same language, or passing requests and messages through a foreign language api; and procedures that encapsulate the low-level format of the requests, and provide some kind of ``recv-msg' abstraction to perform message parsing.
Considering each of these features in turn: Message buffering is necessary so the IB tws won't stall, and is part of any useful design. A shared address space might be useful, to allow various parts of the library to be freely reused, though it should be an option to the downstream, not a requirement. The last goal, however, of request and message abstraction, provides the true justification for any api interface, and most of the features of § 2.3 serve that end.
Bill Pippin 2010-01-14