diff --git a/Lib/test/test_py3kwarn.py b/Lib/test/test_py3kwarn.py
index 0dac3d0..274e147 100644
--- a/Lib/test/test_py3kwarn.py
+++ b/Lib/test/test_py3kwarn.py
@@ -250,6 +250,40 @@
                 def __hash__(self): pass
             self.assertEqual(len(w.warnings), 0)
 
+    def test_pep8ified_threading(self):
+        import threading
+
+        t = threading.Thread()
+        with catch_warning() as w:
+            msg = "isDaemon() is deprecated in favor of the " \
+                  "Thread.daemon property"
+            self.assertWarning(t.isDaemon(), w, msg)
+            w.reset()
+            msg = "setDaemon() is deprecated in favor of the " \
+                  "Thread.daemon property"
+            self.assertWarning(t.setDaemon(True), w, msg)
+            w.reset()
+            msg = "getName() is deprecated in favor of the " \
+                  "Thread.name property"
+            self.assertWarning(t.getName(), w, msg)
+            w.reset()
+            msg = "setName() is deprecated in favor of the " \
+                  "Thread.name property"
+            self.assertWarning(t.setName("name"), w, msg)
+            w.reset()
+            msg = "isAlive() is deprecated in favor of is_alive()"
+            self.assertWarning(t.isAlive(), w, msg)
+            w.reset()
+            e = threading.Event()
+            msg = "isSet() is deprecated in favor of is_set()"
+            self.assertWarning(e.isSet(), w, msg)
+            w.reset()
+            msg = "currentThread() is deprecated in favor of current_thread()"
+            self.assertWarning(threading.currentThread(), w, msg)
+            w.reset()
+            msg = "activeCount() is deprecated in favor of active_count()"
+            self.assertWarning(threading.activeCount(), w, msg)
+
 
 
 class TestStdlibRemovals(unittest.TestCase):
diff --git a/Lib/threading.py b/Lib/threading.py
index a6522d6..4933cab 100644
--- a/Lib/threading.py
+++ b/Lib/threading.py
@@ -39,7 +39,7 @@
         return callable
     @wraps(callable)
     def old(*args, **kwargs):
-        warnings.warnpy3k("In 3.x, {0} is renamed to {1}."
+        warnings.warnpy3k("{0}() is deprecated in favor of {1}()"
                           .format(old_name, callable.__name__),
                           stacklevel=3)
         return callable(*args, **kwargs)
@@ -670,6 +670,8 @@
         assert self.__initialized, "Thread.__init__() not called"
         return self.__started.is_set() and not self.__stopped
 
+    isAlive = _old_api(is_alive, "isAlive")
+
     @property
     def daemon(self):
         assert self.__initialized, "Thread.__init__() not called"
@@ -684,15 +686,23 @@
         self.__daemonic = daemonic
 
     def isDaemon(self):
+        warnings.warnpy3k("isDaemon() is deprecated in favor of the " \
+                          "Thread.daemon property")
         return self.daemon
 
     def setDaemon(self, daemonic):
+        warnings.warnpy3k("setDaemon() is deprecated in favor of the " \
+                          "Thread.daemon property")
         self.daemon = daemonic
 
     def getName(self):
+        warnings.warnpy3k("getName() is deprecated in favor of the " \
+                          "Thread.name property")
         return self.name
 
     def setName(self, name):
+        warnings.warnpy3k("setName() is deprecated in favor of the " \
+                          "Thread.name property")
         self.name = name
 
 # The timer class was contributed by Itamar Shtull-Trauring
