Preserving sanity while using a C API
- Must work above the raw C function level
- Object based model in C with multiple implementations
- Not object oriented - no inheritance and polymorphism
- Preserves interface contracts
- Allows use equally from OO (Python) and non-OO (C, Tcl) languages