diff --git a/Include/intobject.h b/Include/intobject.h
index ab936b2..50e6a73 100644
--- a/Include/intobject.h
+++ b/Include/intobject.h
@@ -30,6 +30,7 @@
 #define PyInt_Check(op) PyObject_TypeCheck(op, &PyInt_Type)
 #define PyInt_CheckExact(op) ((op)->ob_type == &PyInt_Type)
 
+PyAPI_FUNC(int) PyInt_Init(void);
 PyAPI_FUNC(PyObject *) PyInt_FromString(char*, char**, int);
 #ifdef Py_USING_UNICODE
 PyAPI_FUNC(PyObject *) PyInt_FromUnicode(Py_UNICODE*, int, int);
diff --git a/Include/pythonrun.h b/Include/pythonrun.h
index b888193..898eead 100644
--- a/Include/pythonrun.h
+++ b/Include/pythonrun.h
@@ -100,6 +100,7 @@
 PyAPI_FUNC(void) _PyImport_Init(void);
 PyAPI_FUNC(void) _PyExc_Init(void);
 PyAPI_FUNC(void) _PyImportHooks_Init(void);
+PyAPI_FUNC(int) PyFrame_Init(void);
 
 /* Various internal finalizers */
 PyAPI_FUNC(void) _PyExc_Fini(void);
diff --git a/Objects/frameobject.c b/Objects/frameobject.c
index 9123d94..b982064 100644
--- a/Objects/frameobject.c
+++ b/Objects/frameobject.c
@@ -401,9 +401,9 @@
 	}
 	
 	Py_XDECREF(f->f_back);
-	Py_XDECREF(f->f_code);
-	Py_XDECREF(f->f_builtins);
-	Py_XDECREF(f->f_globals);
+	Py_DECREF(f->f_code);
+	Py_DECREF(f->f_builtins);
+	Py_DECREF(f->f_globals);
 	Py_XDECREF(f->f_locals);
 	Py_XDECREF(f->f_trace);
 	Py_XDECREF(f->f_exc_type);
@@ -525,21 +525,23 @@
 	0,					/* tp_dict */
 };
 
+static PyObject *builtin_object;
+
+int PyFrame_Init()
+{
+	builtin_object = PyString_InternFromString("__builtins__");
+	return (builtin_object != NULL);
+}
+
 PyFrameObject *
 PyFrame_New(PyThreadState *tstate, PyCodeObject *code, PyObject *globals, 
 	    PyObject *locals)
 {
 	PyFrameObject *back = tstate->frame;
-	static PyObject *builtin_object;
 	PyFrameObject *f;
 	PyObject *builtins;
 	int extras, ncells, nfrees;
 
-	if (builtin_object == NULL) {
-		builtin_object = PyString_InternFromString("__builtins__");
-		if (builtin_object == NULL)
-			return NULL;
-	}
 #ifdef Py_DEBUG
 	if (code == NULL || globals == NULL || !PyDict_Check(globals) ||
 	    (locals != NULL && !PyDict_Check(locals))) {
@@ -802,4 +804,6 @@
 		--numfree;
 	}
 	assert(numfree == 0);
+	Py_XDECREF(builtin_object);
+	builtin_object = NULL;
 }
diff --git a/Objects/intobject.c b/Objects/intobject.c
index 19d18d3..10587ac 100644
--- a/Objects/intobject.c
+++ b/Objects/intobject.c
@@ -78,7 +78,7 @@
 #define NSMALLPOSINTS		100
 #endif
 #ifndef NSMALLNEGINTS
-#define NSMALLNEGINTS		1
+#define NSMALLNEGINTS		5
 #endif
 #if NSMALLNEGINTS + NSMALLPOSINTS > 0
 /* References to small integers are saved in this array so that they
@@ -97,8 +97,8 @@
 {
 	register PyIntObject *v;
 #if NSMALLNEGINTS + NSMALLPOSINTS > 0
-	if (-NSMALLNEGINTS <= ival && ival < NSMALLPOSINTS &&
-	    (v = small_ints[ival + NSMALLNEGINTS]) != NULL) {
+	if (-NSMALLNEGINTS <= ival && ival < NSMALLPOSINTS) {
+		v = small_ints[ival + NSMALLNEGINTS];
 		Py_INCREF(v);
 #ifdef COUNT_ALLOCS
 		if (ival >= 0)
@@ -118,13 +118,6 @@
 	free_list = (PyIntObject *)v->ob_type;
 	PyObject_INIT(v, &PyInt_Type);
 	v->ob_ival = ival;
-#if NSMALLNEGINTS + NSMALLPOSINTS > 0
-	if (-NSMALLNEGINTS <= ival && ival < NSMALLPOSINTS) {
-		/* save this one for a following allocation */
-		Py_INCREF(v);
-		small_ints[ival + NSMALLNEGINTS] = v;
-	}
-#endif
 	return (PyObject *) v;
 }
 
@@ -945,6 +938,26 @@
 	(freefunc)int_free,           		/* tp_free */
 };
 
+int
+PyInt_Init(void)
+{
+	PyIntObject *v;
+	int ival;
+#if NSMALLNEGINTS + NSMALLPOSINTS > 0
+	for (ival = -NSMALLNEGINTS; ival < NSMALLPOSINTS; ival++) {
+		if ((free_list = fill_free_list()) == NULL)
+			return 0;
+		/* PyObject_New is inlined */
+		v = free_list;
+		free_list = (PyIntObject *)v->ob_type;
+		PyObject_INIT(v, &PyInt_Type);
+		v->ob_ival = ival;
+		small_ints[ival + NSMALLNEGINTS] = v;
+	}
+#endif
+	return 1;
+}
+
 void
 PyInt_Fini(void)
 {
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index 7469cb8..81543cc 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -124,6 +124,12 @@
 
 	_Py_ReadyTypes();
 
+	if (!PyFrame_Init())
+		Py_FatalError("Py_Initialize: can't init frames");
+
+	if (!PyInt_Init())
+		Py_FatalError("Py_Initialize: can't init ints");
+
 	interp->modules = PyDict_New();
 	if (interp->modules == NULL)
 		Py_FatalError("Py_Initialize: can't make modules dictionary");
