All of the C EP SDK modules must be reviewed and refactored so that:
1. None of the module functions would accept kaa_context_t * context in any form (even as void*) and none of the specific modules would include kaa_context.h.
2. There would be zero non-const static variables in the code.
3. All of the module structure definitions must be forward-declared in .h file, and defined in .c files.
4. Each non-static function in a module would accept <module_t> *__this as the first parameter. (<module_t> **<module>_p for <module>_create()).
5. All of the module dependencies within Kaa must be resolved by keeping (but not owning) a pointer to the required module structure within the <module_t> structure of the dependent module.
6. All of the user-defined modules' structures (such as the specific protocol implementation) must be passed to the kaa_init() function as arguments and set (but not owned) within the general Kaa context.