diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c
index 5b83c51..22850a4 100644
--- a/Modules/_tkinter.c
+++ b/Modules/_tkinter.c
@@ -50,11 +50,9 @@
 
 #ifdef TK_FRAMEWORK
 #include <Tcl/tcl.h>
-#include <Tcl/tclInt.h>
 #include <Tk/tk.h>
 #else
 #include <tcl.h>
-#include <tclInt.h>
 #include <tk.h>
 #endif
 
@@ -222,6 +220,15 @@
 	PyObject_HEAD
 	Tcl_Interp *interp;
 	int wantobjects;
+	/* We cannot include tclInt.h, as this is internal. 
+	   So we cache interesting types here. */
+	Tcl_ObjType *BooleanType;
+	Tcl_ObjType *ByteArrayType;
+	Tcl_ObjType *DoubleType;
+	Tcl_ObjType *IntType;
+	Tcl_ObjType *ListType;
+	Tcl_ObjType *ProcBodyType;
+	Tcl_ObjType *StringType;
 } TkappObject;
 
 #define Tkapp_Check(v) ((v)->ob_type == &Tkapp_Type)
@@ -535,6 +542,14 @@
 	v->interp = Tcl_CreateInterp();
 	v->wantobjects = wantobjects;
 
+	v->BooleanType = Tcl_GetObjType("boolean");
+	v->ByteArrayType = Tcl_GetObjType("bytearray");
+	v->DoubleType = Tcl_GetObjType("double");
+	v->IntType = Tcl_GetObjType("int");
+	v->ListType = Tcl_GetObjType("list");
+	v->ProcBodyType = Tcl_GetObjType("procbody");
+	v->StringType = Tcl_GetObjType("string");
+
 #if defined(macintosh)
 	/* This seems to be needed */
 	ClearMenuBar();
@@ -753,31 +768,32 @@
 FromObj(PyObject* tkapp, Tcl_Obj *value)
 {
 	PyObject *result = NULL;
+	TkappObject *app = (TkappObject*)tkapp;
 
 	if (value->typePtr == NULL)
 		return PyString_FromStringAndSize(value->bytes, value->length);
 
-	if (value->typePtr == &tclBooleanType) {
+	if (value->typePtr == app->BooleanType) {
 		result = value->internalRep.longValue ? Py_True : Py_False;
 		Py_INCREF(result);
 		return result;
 	}
 
-	if (value->typePtr == &tclByteArrayType) {
+	if (value->typePtr == app->ByteArrayType) {
 		int size;
 		char *data = Tcl_GetByteArrayFromObj(value, &size);
 		return PyString_FromStringAndSize(data, size);
 	}
 
-	if (value->typePtr == &tclDoubleType) {
+	if (value->typePtr == app->DoubleType) {
 		return PyFloat_FromDouble(value->internalRep.doubleValue);
 	}
 
-	if (value->typePtr == &tclIntType) {
+	if (value->typePtr == app->IntType) {
 		return PyInt_FromLong(value->internalRep.longValue);
 	}
 
-	if (value->typePtr == &tclListType) {
+	if (value->typePtr == app->ListType) {
 		int size;
 		int i, status;
 		PyObject *elem;
@@ -806,11 +822,11 @@
 		return result;
 	}
 
-	if (value->typePtr == &tclProcBodyType) {
+	if (value->typePtr == app->ProcBodyType) {
 		// fall through: return tcl object
 	}
 
-	if (value->typePtr == &tclStringType) {
+	if (value->typePtr == app->StringType) {
 #ifdef Py_USING_UNICODE
 #ifdef Py_UNICODE_WIDE
 		PyObject *result;
@@ -2188,7 +2204,7 @@
 		baseName = Py_GetProgramName();
 	className = "Tk";
   
-	if (!PyArg_ParseTuple(args, "|zssi:create",
+	if (!PyArg_ParseTuple(args, "|zssii:create",
 			      &screenName, &baseName, &className,
 			      &interactive, &wantobjects))
 		return NULL;
