diff --git a/Lib/importlib/NOTES b/Lib/importlib/NOTES
index 97db642..538e874 100644
--- a/Lib/importlib/NOTES
+++ b/Lib/importlib/NOTES
@@ -9,11 +9,15 @@
 
 * Create meta_path importer for sys.path.
 
-    + Create hook.
-    + Write tests.
-    + Rewrite Import to use the hook.
     + Document.
 
+* Refactor __import__.
+
+    + Create a greatest common denominator function for __import__/import_module
+      that takes in an absolute module name and performs the import.
+    + Use GCD import for __import__.
+    + Use GCD import for import_module.
+
 * Implement PEP 302 protocol for loaders (should just be a matter of testing).
 
     + Built-in.
@@ -21,7 +25,7 @@
     + Extension.
     + Source/bytecode.
 
-* Public API to expose (w/ docs!)
+* Public API left to expose (w/ docs!)
 
   + abc
 
@@ -33,6 +37,8 @@
 
         * load_module
 
+      - (?) Importer(Finder, Loader)
+
       - ResourceLoader(Loader)
 
         * get_data
@@ -58,8 +64,6 @@
   + machinery
 
       - (?) Chained path hook/finder
-      - BuiltinImporter
-      - FrozenImporter
       - (?) FileFinder
       - Extensions importers
 
@@ -75,10 +79,8 @@
 
 * OPTIMIZE!
 
-  + Fast path common cases.
-
-    - Absolute name from sys.path.
-    - Relative name from sys.path.
+  + Fast path absolute name.
+  + Fast path pulling from sys.modules.
 
 * Bootstrap importlib as implementation of builtins.__import__
 
diff --git a/Lib/importlib/test/import_/test_path.py b/Lib/importlib/test/import_/test_path.py
index 6bace12..b4ae779 100644
--- a/Lib/importlib/test/import_/test_path.py
+++ b/Lib/importlib/test/import_/test_path.py
@@ -2,9 +2,10 @@
 from .. import util
 from . import util as import_util
 from contextlib import nested
-from imp import new_module
+import imp
 import os
 import sys
+from test import support
 from types import MethodType
 import unittest
 
@@ -143,7 +144,7 @@
         self.run_test(self.hooks_order_test, location, [location])
 
     def test_path_argument(self):
-        module = new_module('pkg')
+        module = imp.new_module('pkg')
         module.__path__ = ['random __path__']
         name = 'pkg.whatever'
         sys.modules['pkg'] = module
@@ -221,8 +222,22 @@
 
     def test_implicit_hooks(self):
         # Test that the implicit path hooks are used.
-        # TODO(brett.cannon) implement
-        pass
+        existing_path = os.path.dirname(support.TESTFN)
+        bad_path = '<path>'
+        module = '<module>'
+        assert not os.path.exists(bad_path)
+        with util.import_state():
+            nothing = machinery.PathFinder.find_module(module,
+                                                       path=[existing_path])
+            self.assert_(nothing is None)
+            self.assert_(existing_path in sys.path_importer_cache)
+            self.assert_(not isinstance(sys.path_importer_cache[existing_path],
+                                        imp.NullImporter))
+            nothing = machinery.PathFinder.find_module(module, path=[bad_path])
+            self.assert_(nothing is None)
+            self.assert_(bad_path in sys.path_importer_cache)
+            self.assert_(isinstance(sys.path_importer_cache[bad_path],
+                                    imp.NullImporter))
 
 
 def test_main():
