diff --git a/Demo/pysvr/pysvr.c b/Demo/pysvr/pysvr.c
index 133b785..c70863f 100644
--- a/Demo/pysvr/pysvr.c
+++ b/Demo/pysvr/pysvr.c
@@ -192,13 +192,8 @@
 static void
 init_python()
 {
-	if (the_interp)
-		return;
-	Py_Initialize(); /* Initialize the interpreter */
-	the_builtins = PyEval_GetBuiltins(); /* Get __builtins__ */
 	PyEval_InitThreads(); /* Create and acquire the interpreter lock */
-	the_tstate = PyEval_SaveThread(); /* Release lock & get thread state */
-	the_interp = the_tstate->interpreter_state; /* Get interp state */
+	PyEval_ReleaseLock(); /* Release the lock */
 }
 
 static void *
@@ -250,25 +245,25 @@
 {
 	PyThreadState *tstate;
 	PyObject *new_stdin, *new_stdout;
-	PyObject *old_stdin, *old_stdout, *old_stderr;
-	PyObject *globals;
+	PyObject *mainmod, *globals;
 	char buffer[1000];
 	char *p, *q;
 	int n, end;
 
-	tstate = PyThreadState_New(the_interp);
-	PyEval_AcquireThread(tstate);
+	PyEval_AcquireLock();
+	tstate = Py_NewInterpreter();
+	if (tstate == NULL) {
+		fprintf(output, "Sorry -- can't create an interpreter\n");
+		return;
+	}
 
-	globals = PyDict_New();
-	PyDict_SetItemString(globals, "__builtins__", the_builtins);
+	mainmod = PyImport_AddModule("__main__");
+	globals = PyModule_GetDict(mainmod);
+	Py_INCREF(globals);
 
 	new_stdin = PyFile_FromFile(input, "<socket-in>", "r", NULL);
 	new_stdout = PyFile_FromFile(output, "<socket-out>", "w", NULL);
 
-	old_stdin = PySys_GetObject("stdin");
-	old_stdout = PySys_GetObject("stdout");
-	old_stderr = PySys_GetObject("stderr");
-
 	for (n = 1; !PyErr_Occurred(); n++) {
 		Py_BEGIN_ALLOW_THREADS
 		fprintf(output, "%d> ", n);
@@ -299,10 +294,6 @@
 		if (end < 0)
 			PyErr_Print();
 
-		PySys_SetObject("stdin", old_stdin);
-		PySys_SetObject("stdout", old_stdout);
-		PySys_SetObject("stderr", old_stderr);
-
 		if (end)
 			break;
 	}
@@ -311,8 +302,8 @@
 	Py_XDECREF(new_stdin);
 	Py_XDECREF(new_stdout);
 
-	PyEval_ReleaseThread(tstate);
-	PyThreadState_Delete(tstate);
+	Py_EndInterpreter(tstate);
+	PyEval_ReleaseLock();
 
 	fprintf(output, "Goodbye!\n");
 }
@@ -321,6 +312,9 @@
 run_command(char *buffer, PyObject *globals)
 {
 	PyObject *m, *d, *v;
+	fprintf(stderr, "run_command: %s", buffer);
+	if (strchr(buffer, '\n') == NULL)
+		fprintf(stderr, "\n");
 	v = PyRun_String(buffer, Py_single_input, globals, globals);
 	if (v == NULL) {
 		if (PyErr_Occurred() == PyExc_SystemExit) {
