Keep the top-level ir module free of implementation details that are inadvertently exposed to sub-modules.