Factor out the mdm loader into its own package, and separate type definitions from the loader.
Use specific version blocks.