RAD is modular in a variety of ways. Modules may deliver custom protocols, transports, or API definitions and implementations. This section focuses on the custom API definitions and implementations. Although an API can be constructed manually, using radadrgen to generate the necessary type definitions is much simpler.