diff --git a/Lib/pickle.py b/Lib/pickle.py
index d767d85..9a5747e 100644
--- a/Lib/pickle.py
+++ b/Lib/pickle.py
@@ -27,7 +27,7 @@
 __version__ = "$Revision$"       # Code version
 
 from types import *
-from copy_reg import dispatch_table, safe_constructors, _reconstructor
+from copy_reg import dispatch_table, _reconstructor
 import marshal
 import sys
 import struct
@@ -375,8 +375,8 @@
         if getnewargs:
             args = getnewargs()         # This bette not reference obj
         else:
-            for cls in int, long, float, complex, str, unicode, tuple:
-                if isinstance(obj, cls):
+            for cls in int, long, float, complex, str, UnicodeType, tuple:
+                if cls and isinstance(obj, cls):
                     args = (cls(obj),)
                     break
             else:
@@ -1030,10 +1030,7 @@
                 pass
         if not instantiated:
             try:
-                if not hasattr(klass, '__safe_for_unpickling__'):
-                    raise UnpicklingError('%s is not safe for unpickling' %
-                                          klass)
-                value = apply(klass, args)
+                value = klass(*args)
             except TypeError, err:
                 raise TypeError, "in constructor for %s: %s" % (
                     klass.__name__, str(err)), sys.exc_info()[2]
@@ -1059,7 +1056,7 @@
                 # prohibited
                 pass
         if not instantiated:
-            value = apply(klass, args)
+            value = klass(*args)
         self.append(value)
     dispatch[OBJ] = load_obj
 
@@ -1078,6 +1075,7 @@
     dispatch[GLOBAL] = load_global
 
     def find_class(self, module, name):
+        # Subclasses may override this
         __import__(module)
         mod = sys.modules[module]
         klass = getattr(mod, name)
@@ -1085,30 +1083,16 @@
 
     def load_reduce(self):
         stack = self.stack
-
-        callable = stack[-2]
-        arg_tup  = stack[-1]
-        del stack[-2:]
-
-        if type(callable) is not ClassType:
-            if not callable in safe_constructors:
-                try:
-                    safe = callable.__safe_for_unpickling__
-                except AttributeError:
-                    safe = None
-
-                if not safe:
-                    raise UnpicklingError, "%s is not safe for " \
-                                           "unpickling" % callable
-
-        if arg_tup is None:
+        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 = callable.__basicnew__()
+            value = func.__basicnew__()
         else:
-            value = apply(callable, arg_tup)
-        self.append(value)
+            value = func(*args)
+        stack[-1] = value
     dispatch[REDUCE] = load_reduce
 
     def load_pop(self):
