Updated simple example. This should have been checked in the other
day, but I missfired in CVS.
diff --git a/Doc/ext/noddy.c b/Doc/ext/noddy.c
index 23f26ef..1988de6 100644
--- a/Doc/ext/noddy.c
+++ b/Doc/ext/noddy.c
@@ -1,66 +1,66 @@
 #include <Python.h>
 
-static PyTypeObject noddy_NoddyType;
-
 typedef struct {
     PyObject_HEAD
     /* Type-specific fields go here. */
 } noddy_NoddyObject;
 
-static PyObject*
-noddy_new_noddy(PyObject* self, PyObject* args)
-{
-    noddy_NoddyObject* noddy;
-
-    noddy = PyObject_New(noddy_NoddyObject, &noddy_NoddyType);
-
-    /* Initialize type-specific fields here. */
-
-    return (PyObject*)noddy;
-}
-
-static void
-noddy_noddy_dealloc(PyObject* self)
-{
-    /* Free any external resources here;
-     * if the instance owns references to any Python
-     * objects, call Py_DECREF() on them here.
-     */
-    PyObject_Del(self);
-}
-
 static PyTypeObject noddy_NoddyType = {
     PyObject_HEAD_INIT(NULL)
-    0,
-    "Noddy",
-    sizeof(noddy_NoddyObject),
-    0,
-    noddy_noddy_dealloc, /*tp_dealloc*/
-    0,          /*tp_print*/
-    0,          /*tp_getattr*/
-    0,          /*tp_setattr*/
-    0,          /*tp_compare*/
-    0,          /*tp_repr*/
-    0,          /*tp_as_number*/
-    0,          /*tp_as_sequence*/
-    0,          /*tp_as_mapping*/
-    0,          /*tp_hash */
+    0,                         /*ob_size*/
+    "noddy.Noddy",             /*tp_name*/
+    sizeof(noddy_NoddyObject), /*tp_basicsize*/
+    0,                         /*tp_itemsize*/
+    0,                         /*tp_dealloc*/
+    0,                         /*tp_print*/
+    0,                         /*tp_getattr*/
+    0,                         /*tp_setattr*/
+    0,                         /*tp_compare*/
+    0,                         /*tp_repr*/
+    0,                         /*tp_as_number*/
+    0,                         /*tp_as_sequence*/
+    0,                         /*tp_as_mapping*/
+    0,                         /*tp_hash */
+    0,                         /*tp_call*/
+    0,                         /*tp_str*/
+    0,                         /*tp_getattro*/
+    0,                         /*tp_setattro*/
+    0,                         /*tp_as_buffer*/
+    Py_TPFLAGS_DEFAULT,        /*tp_flags*/
+    "Noddy objects",           /* tp_doc */
+    0,		               /* tp_traverse */
+    0,		               /* tp_clear */
+    0,		               /* tp_richcompare */
+    0,		               /* tp_weaklistoffset */
+    0,		               /* tp_iter */
+    0,		               /* tp_iternext */
+    0,		               /* tp_methods */
+    0,                         /* tp_members */
+    0,                         /* tp_getset */
+    0,                         /* tp_base */
+    0,                         /* tp_dict */
+    0,                         /* tp_descr_get */
+    0,                         /* tp_descr_set */
+    0,                         /* tp_dictoffset */
+    0,                         /* tp_init */
+    0,                         /* tp_alloc */
+    PyType_GenericNew,         /* tp_new */
 };
 
 static PyMethodDef noddy_methods[] = {
-    {"new_noddy", noddy_new_noddy, METH_NOARGS,
-     "Create a new Noddy object."},
-
     {NULL}  /* Sentinel */
 };
 
 PyMODINIT_FUNC
 initnoddy(void) 
 {
-    noddy_NoddyType.ob_type = &PyType_Type;
-    if (PyType_Ready(&noddy_NoddyType))
+    PyObject* m;
+
+    if (PyType_Ready(&noddy_NoddyType) < 0)
         return;
 
-    Py_InitModule3("noddy", noddy_methods
-                   "Example module that creates an extension type.");
+    m = Py_InitModule3("noddy", noddy_methods,
+                       "Example module that creates an extension type.");
+
+    PyModule_AddObject(m, "Noddy", (PyObject *)&noddy_NoddyType);
 }