diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 964fb32..70237bf 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -304,58 +304,13 @@
 static PyObject *
 builtin_format(PyObject *self, PyObject *args)
 {
-    static PyObject * format_str = NULL;
     PyObject *value;
-    PyObject *spec = NULL;
-    PyObject *meth;
-    PyObject *empty = NULL;
-    PyObject *result = NULL;
+    PyObject *format_spec = NULL;
 
-    /* Initialize cached value */
-    if (format_str == NULL) {
-        /* Initialize static variable needed by _PyType_Lookup */
-        format_str = PyUnicode_FromString("__format__");
-        if (format_str == NULL)
-            goto done;
-    }
+    if (!PyArg_ParseTuple(args, "O|U:format", &value, &format_spec))
+        return NULL;
 
-    if (!PyArg_ParseTuple(args, "O|U:format", &value, &spec))
-        goto done;
-
-    /* initialize the default value */
-    if (spec == NULL) {
-        empty = PyUnicode_FromUnicode(NULL, 0);
-        spec = empty;
-    }
-
-    /* Make sure the type is initialized.  float gets initialized late */
-    if (Py_TYPE(value)->tp_dict == NULL)
-        if (PyType_Ready(Py_TYPE(value)) < 0)
-            goto done;
-
-    /* Find the (unbound!) __format__ method (a borrowed reference) */
-    meth = _PyType_Lookup(Py_TYPE(value), format_str);
-    if (meth == NULL) {
-        PyErr_Format(PyExc_TypeError,
-                "Type %.100s doesn't define __format__",
-                Py_TYPE(value)->tp_name);
-            goto done;
-    }
-
-    /* And call it, binding it to the value */
-    result = PyObject_CallFunctionObjArgs(meth, value, spec, NULL);
-
-    if (result && !PyUnicode_Check(result)) {
-        PyErr_SetString(PyExc_TypeError,
-            "__format__ method did not return string");
-        Py_DECREF(result);
-        result = NULL;
-        goto done;
-    }
-
-done:
-    Py_XDECREF(empty);
-    return result;
+    return PyObject_Format(value, format_spec);
 }
 
 PyDoc_STRVAR(format_doc,
