The hardest part (which we haven't built yet) is macros, both private in the module, and macros defined by the module for use by external code/other modules.