many more types to initialize (I had to expose some of them)
diff --git a/Objects/descrobject.c b/Objects/descrobject.c
index fcc174e..536e5a8 100644
--- a/Objects/descrobject.c
+++ b/Objects/descrobject.c
@@ -456,7 +456,7 @@
 	0,					/* tp_descr_set */
 };
 
-static PyTypeObject PyMemberDescr_Type = {
+PyTypeObject PyMemberDescr_Type = {
 	PyVarObject_HEAD_INIT(&PyType_Type, 0)
 	"member_descriptor",
 	sizeof(PyMemberDescrObject),
@@ -493,7 +493,7 @@
 	(descrsetfunc)member_set,		/* tp_descr_set */
 };
 
-static PyTypeObject PyGetSetDescr_Type = {
+PyTypeObject PyGetSetDescr_Type = {
 	PyVarObject_HEAD_INIT(&PyType_Type, 0)
 	"getset_descriptor",
 	sizeof(PyGetSetDescrObject),
@@ -819,7 +819,7 @@
 	return PyObject_RichCompare(v->dict, w, op);
 }
 
-static PyTypeObject proxytype = {
+PyTypeObject PyDictProxy_Type = {
 	PyVarObject_HEAD_INIT(&PyType_Type, 0)
 	"dictproxy",				/* tp_name */
 	sizeof(proxyobject),			/* tp_basicsize */
@@ -862,7 +862,7 @@
 {
 	proxyobject *pp;
 
-	pp = PyObject_GC_New(proxyobject, &proxytype);
+	pp = PyObject_GC_New(proxyobject, &PyDictProxy_Type);
 	if (pp != NULL) {
 		Py_INCREF(dict);
 		pp->dict = dict;
diff --git a/Objects/object.c b/Objects/object.c
index 8abe200..35307ad 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -2,6 +2,7 @@
 /* Generic object operations; and implementation of None (NoObject) */
 
 #include "Python.h"
+#include "frameobject.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -2083,8 +2084,10 @@
 	if (PyType_Ready(&PyStaticMethod_Type) < 0)
 		Py_FatalError("Can't initialize static method type");
 
+#ifndef WITHOUT_COMPLEX
 	if (PyType_Ready(&PyComplex_Type) < 0)
-		Py_FatalError("Can't initalize complex type");
+		Py_FatalError("Can't initialize complex type");
+#endif
 
 	if (PyType_Ready(&PyFloat_Type) < 0)
 		Py_FatalError("Can't initialize float type");
@@ -2115,6 +2118,45 @@
 
 	if (PyType_Ready(&PyReversed_Type) < 0)
 		Py_FatalError("Can't initialize reversed type");
+
+	if (PyType_Ready(&PyCode_Type) < 0)
+		Py_FatalError("Can't initialize code type");
+
+	if (PyType_Ready(&PyFrame_Type) < 0)
+		Py_FatalError("Can't initialize frame type");
+
+	if (PyType_Ready(&PyCFunction_Type) < 0)
+		Py_FatalError("Can't initialize builtin function type");
+
+	if (PyType_Ready(&PyMethod_Type) < 0)
+		Py_FatalError("Can't initialize method type");
+
+	if (PyType_Ready(&PyFunction_Type) < 0)
+		Py_FatalError("Can't initialize function type");
+
+	if (PyType_Ready(&PyClass_Type) < 0)
+		Py_FatalError("Can't initialize class type");
+
+	if (PyType_Ready(&PyDictProxy_Type) < 0)
+		Py_FatalError("Can't initialize dict proxy type");
+
+	if (PyType_Ready(&PyGen_Type) < 0)
+		Py_FatalError("Can't initialize generator type");
+
+	if (PyType_Ready(&PyGetSetDescr_Type) < 0)
+		Py_FatalError("Can't initialize get-set descriptor type");
+
+	if (PyType_Ready(&PyWrapperDescr_Type) < 0)
+		Py_FatalError("Can't initialize wrapper type");
+
+	if (PyType_Ready(&PyInstance_Type) < 0)
+		Py_FatalError("Can't initialize instance type");
+
+	if (PyType_Ready(&PyEllipsis_Type) < 0)
+		Py_FatalError("Can't initialize ellipsis type");
+
+	if (PyType_Ready(&PyMemberDescr_Type) < 0)
+		Py_FatalError("Can't initialize member descriptor type");
 }
 
 
diff --git a/Objects/sliceobject.c b/Objects/sliceobject.c
index 8748fed..2eb3941 100644
--- a/Objects/sliceobject.c
+++ b/Objects/sliceobject.c
@@ -22,7 +22,7 @@
 	return PyString_FromString("Ellipsis");
 }
 
-static PyTypeObject PyEllipsis_Type = {
+PyTypeObject PyEllipsis_Type = {
 	PyVarObject_HEAD_INIT(&PyType_Type, 0)
 	"ellipsis",			/* tp_name */
 	0,				/* tp_basicsize */