diff --git a/Include/Python.h b/Include/Python.h
index 96fc1f4..9a18e2d 100644
--- a/Include/Python.h
+++ b/Include/Python.h
@@ -95,7 +95,6 @@
 #include "sysmodule.h"
 #include "intrcheck.h"
 #include "import.h"
-#include "bltinmodule.h"
 
 #include "abstract.h"
 
diff --git a/Include/bltinmodule.h b/Include/bltinmodule.h
deleted file mode 100644
index 66bb165..0000000
--- a/Include/bltinmodule.h
+++ /dev/null
@@ -1,47 +0,0 @@
-#ifndef Py_BLTINMODULE_H
-#define Py_BLTINMODULE_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***********************************************************
-Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam,
-The Netherlands.
-
-                        All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the names of Stichting Mathematisch
-Centrum or CWI or Corporation for National Research Initiatives or
-CNRI not be used in advertising or publicity pertaining to
-distribution of the software without specific, written prior
-permission.
-
-While CWI is the initial source for this software, a modified version
-is made available by the Corporation for National Research Initiatives
-(CNRI) at the Internet address ftp://ftp.python.org.
-
-STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH
-CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-
-******************************************************************/
-
-/* Built-in module interface */
-
-extern void PyBuiltin_Init Py_PROTO((void));
-extern PyObject *PyBuiltin_GetDict Py_PROTO(());
-extern PyObject *PyBuiltin_GetModule Py_PROTO(());
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_BLTINMODULE_H */
diff --git a/Include/ceval.h b/Include/ceval.h
index cc4c4d8..2805379 100644
--- a/Include/ceval.h
+++ b/Include/ceval.h
@@ -105,6 +105,8 @@
 #ifdef WITH_THREAD
 
 extern void PyEval_InitThreads Py_PROTO((void));
+extern void PyEval_AcquireLock Py_PROTO((void));
+extern void PyEval_ReleaseLock Py_PROTO((void));
 extern void PyEval_AcquireThread Py_PROTO((PyThreadState *tstate));
 extern void PyEval_ReleaseThread Py_PROTO((PyThreadState *tstate));
 
diff --git a/Include/import.h b/Include/import.h
index 4ddbd4c..f5fa9bb 100644
--- a/Include/import.h
+++ b/Include/import.h
@@ -37,7 +37,6 @@
 
 /* Module definition and import interface */
 
-void PyImport_Init Py_PROTO((void));
 long PyImport_GetMagicNumber Py_PROTO((void));
 PyObject *PyImport_ExecCodeModule Py_PROTO((char *name, PyObject *co));
 PyObject *PyImport_GetModuleDict Py_PROTO((void));
@@ -47,6 +46,9 @@
 void PyImport_Cleanup Py_PROTO((void));
 int PyImport_ImportFrozenModule Py_PROTO((char *));
 
+extern PyObject *_PyImport_FindExtension Py_PROTO((char *, char *));
+extern PyObject *_PyImport_FixupExtension Py_PROTO((char *, char *));
+
 struct _inittab {
 	char *name;
 	void (*initfunc)();
diff --git a/Include/pystate.h b/Include/pystate.h
index b660ff8..ad91426 100644
--- a/Include/pystate.h
+++ b/Include/pystate.h
@@ -42,15 +42,19 @@
 
 #define NEXITFUNCS 32
 
+struct _ts; /* Forward */
+struct _is; /* Forward */
+
 typedef struct _is {
 
-	PyObject *import_modules;
+	struct _is *next;
+	struct _ts *tstate_head;
+
+	PyObject *modules;
 	PyObject *sysdict;
+	PyObject *builtins;
 
-	int nthreads;
-
-	void (*exitfuncs[NEXITFUNCS])();
-	int nexitfuncs;
+	int checkinterval;
 
 } PyInterpreterState;
 
@@ -61,7 +65,8 @@
 
 typedef struct _ts {
 
-	PyInterpreterState *interpreter_state;
+	struct _ts *next;
+	PyInterpreterState *interp;
 
 	struct _frame *frame;
 	int recursion_depth;
@@ -70,7 +75,6 @@
 
 	PyObject *sys_profilefunc;
 	PyObject *sys_tracefunc;
-	int sys_checkinterval;
 
 	PyObject *curexc_type;
 	PyObject *curexc_value;
@@ -80,54 +84,22 @@
 	PyObject *exc_value;
 	PyObject *exc_traceback;
 
-	/* XXX Other state that should be here:
-	   - signal handlers
-	   - low-level "pending calls"
-	   Problem with both is that they may be referenced from
-	   interrupt handlers where there is no clear concept of a
-	   "current thread"???
-	*/
+	/* XXX signal handlers should also be here */
 
 } PyThreadState;
 
 
 PyInterpreterState *PyInterpreterState_New Py_PROTO((void));
+void PyInterpreterState_Clear Py_PROTO((PyInterpreterState *));
 void PyInterpreterState_Delete Py_PROTO((PyInterpreterState *));
 
 PyThreadState *PyThreadState_New Py_PROTO((PyInterpreterState *));
+void PyThreadState_Clear Py_PROTO((PyThreadState *));
 void PyThreadState_Delete Py_PROTO((PyThreadState *));
 
 PyThreadState *PyThreadState_Get Py_PROTO((void));
 PyThreadState *PyThreadState_Swap Py_PROTO((PyThreadState *));
 
-/* Some background.
-
-   There are lots of issues here.
-
-   First, we can build Python without threads, with threads, or (when
-   Greg Stein's mods are out of beta, on some platforms) with free
-   threading.
-
-   Next, assuming some form of threading is used, there can be several
-   kinds of threads.  Python code can create threads with the thread
-   module.  C code can create threads with the interface defined in
-   python's "thread.h".  Or C code can create threads directly with
-   the OS threads interface (e.g. Solaris threads, SGI threads or
-   pthreads, whatever is being used, as long as it's the same that
-   Python is configured for).
-
-   Next, let's discuss sharing of interpreter state between threads.
-   The exception state (sys.exc_* currently) should never be shared
-   between threads, because it is stack frame specific.  The contents
-   of the sys module, in particular sys.modules and sys.path, are
-   generally shared between threads.  But occasionally it is useful to
-   have separate module collections, e.g. when threads originate in C
-   code and are used to execute unrelated Python scripts.
-   (Traditionally, one would use separate processes for this, but
-   there are lots of reasons why threads are attractive.)
-
-*/
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/Include/pythonrun.h b/Include/pythonrun.h
index ae33624..1f8093e 100644
--- a/Include/pythonrun.h
+++ b/Include/pythonrun.h
@@ -40,8 +40,9 @@
 void Py_SetProgramName Py_PROTO((char *));
 char *Py_GetProgramName Py_PROTO((void));
 
-void Py_Setup Py_PROTO((void));
 void Py_Initialize Py_PROTO((void));
+PyThreadState *Py_NewInterpreter Py_PROTO((void));
+void Py_EndInterpreter Py_PROTO((PyThreadState *));
 
 int PyRun_AnyFile Py_PROTO((FILE *, char *));
 
@@ -64,11 +65,6 @@
 
 void Py_Exit Py_PROTO((int));
 
-void Py_Cleanup Py_PROTO((void));
-
-void PyImport_Init	Py_PROTO((void));
-void PyBuiltin_Init	Py_PROTO((void));
-
 int Py_FdIsInteractive Py_PROTO((FILE *, char *));
 
 /* In getpath.c */
@@ -84,6 +80,12 @@
 const char *Py_GetCompiler Py_PROTO((void));
 const char *Py_GetBuildInfo Py_PROTO((void));
 
+/* Internal -- various one-time initializations */
+
+PyObject *_PyBuiltin_Init Py_PROTO((void));
+PyObject *_PySys_Init Py_PROTO((void));
+void _PyImport_Init Py_PROTO((void));
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/Include/sysmodule.h b/Include/sysmodule.h
index 7761361..424dc87 100644
--- a/Include/sysmodule.h
+++ b/Include/sysmodule.h
@@ -40,7 +40,6 @@
 PyObject *PySys_GetObject Py_PROTO((char *));
 int PySys_SetObject Py_PROTO((char *, PyObject *));
 FILE *PySys_GetFile Py_PROTO((char *, FILE *));
-void PySys_Init Py_PROTO((void));
 void PySys_SetArgv Py_PROTO((int, char **));
 void PySys_SetPath Py_PROTO((char *));
 
