Tweak the source/bytecode loader from importlib to use more of the PEP 302
protocol API.
diff --git a/Lib/importlib/NOTES b/Lib/importlib/NOTES
index 1bbcb96..35c8fd3 100644
--- a/Lib/importlib/NOTES
+++ b/Lib/importlib/NOTES
@@ -7,6 +7,7 @@
 
     + PyLoader (for ABC)
 
+        - load_module for source only
         - get_code for source only
 
     + PyFileLoader(PyLoader)
@@ -17,6 +18,7 @@
 
     +PyPycLoader (PyLoader, for ABC)
 
+        - load_module for source and bytecode
         - get_code for source and bytecode
         
     + PyPycFileLoader(PyPycLoader, PyFileLoader)
diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py
index 068ee10..97e3f54 100644
--- a/Lib/importlib/_bootstrap.py
+++ b/Lib/importlib/_bootstrap.py
@@ -361,7 +361,6 @@
         # Not a property for easy overriding.
         return self._find_path(imp.PY_COMPILED)
 
-    @check_name
     @module_for_loader
     def load_module(self, module):
         """Load a Python source or bytecode module."""
@@ -371,7 +370,7 @@
         code_object = self.get_code(module.__name__)
         module.__file__ = source_path if source_path else bytecode_path
         module.__loader__ = self
-        if self._is_pkg:
+        if self.is_package(name):
             module.__path__  = [module.__file__.rsplit(path_sep, 1)[0]]
         module.__package__ = module.__name__
         if not hasattr(module, '__path__'):
@@ -429,7 +428,6 @@
             else:
                 raise
 
-    @check_name
     def get_code(self, name):
         """Return the code object for the module."""
         # XXX Care enough to make sure this call does not happen if the magic