diff --git a/Doc/lib/libpickle.tex b/Doc/lib/libpickle.tex
index 067f468..4013432 100644
--- a/Doc/lib/libpickle.tex
+++ b/Doc/lib/libpickle.tex
@@ -515,12 +515,8 @@
 unpickling environment.  Note that as usual, the callable itself is
 pickled by name.
 
-\item A tuple of arguments for the callable object, or \code{None}.
-\deprecated{2.3}{If this item is \code{None}, then instead of calling
-the callable directly, its \method{__basicnew__()} method is called
-without arguments; this method should also return the unpickled
-object.  Providing \code{None} is deprecated, however; return a
-tuple of arguments instead.}
+\item A tuple of arguments for the callable object.
+\versionchanged[Formerly, this argument could also be \code{None}]{2.5}
 
 \item Optionally, the object's state, which will be passed to
       the object's \method{__setstate__()} method as described in
diff --git a/Lib/pickle.py b/Lib/pickle.py
index 4c91888..02a1b1d 100644
--- a/Lib/pickle.py
+++ b/Lib/pickle.py
@@ -33,7 +33,6 @@
 import sys
 import struct
 import re
-import warnings
 
 __all__ = ["PickleError", "PicklingError", "UnpicklingError", "Pickler",
            "Unpickler", "dump", "dumps", "load", "loads"]
@@ -349,14 +348,7 @@
 
         # Assert that args is a tuple or None
         if not isinstance(args, TupleType):
-            if args is None:
-                # A hack for Jim Fulton's ExtensionClass, now deprecated.
-                # See load_reduce()
-                warnings.warn("__basicnew__ special case is deprecated",
-                              DeprecationWarning)
-            else:
-                raise PicklingError(
-                    "args from reduce() should be a tuple")
+            raise PicklingError("args from reduce() should be a tuple")
 
         # Assert that func is callable
         if not callable(func):
@@ -1138,13 +1130,7 @@
         stack = self.stack
         args = stack.pop()
         func = stack[-1]
-        if args is None:
-            # A hack for Jim Fulton's ExtensionClass, now deprecated
-            warnings.warn("__basicnew__ special case is deprecated",
-                          DeprecationWarning)
-            value = func.__basicnew__()
-        else:
-            value = func(*args)
+        value = func(*args)
         stack[-1] = value
     dispatch[REDUCE] = load_reduce
 
diff --git a/Misc/NEWS b/Misc/NEWS
index ffeb29b..f619829 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -17,6 +17,9 @@
 Extension Modules
 -----------------
 
+- the cPickle module no longer accepts the deprecated None option in the
+  args tuple returned by __reduce__().
+
 - itertools.islice() now accepts None for the start and step arguments.
   This allows islice() to work more readily with slices:
       islice(s.start, s.stop, s.step)
@@ -25,6 +28,9 @@
 Library
 -------
 
+- the pickle module no longer accepts the deprecated None option in the
+  args tuple returned by __reduce__().
+
 - optparse now optionally imports gettext.  This allows its use in setup.py.
 
 - the deprecated tzparse module was removed.
diff --git a/Modules/cPickle.c b/Modules/cPickle.c
index dc98772..6af99ba 100644
--- a/Modules/cPickle.c
+++ b/Modules/cPickle.c
@@ -2143,6 +2143,12 @@
 				&dictitems))
 		return -1;
 
+	if (!PyTuple_Check(argtup)) {
+		PyErr_SetString(PicklingError,
+				"args from reduce() should be a tuple");
+		return -1;
+	}
+
 	if (state == Py_None)
 		state = NULL;
 	if (listitems == Py_None)
@@ -3616,17 +3622,6 @@
 		else goto err;
 	}
 
-	if (args==Py_None) {
-		/* Special case, call cls.__basicnew__() */
-		PyObject *basicnew;
-
-		basicnew = PyObject_GetAttr(cls, __basicnew___str);
-		if (!basicnew)  return NULL;
-		r=PyObject_CallObject(basicnew, NULL);
-		Py_DECREF(basicnew);
-		if (r) return r;
-	}
-
 	if ((r=PyObject_CallObject(cls, args))) return r;
 
   err:
