diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 83eeecb..0500060 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -47,8 +47,12 @@
 	object *args;
 {
 	char *name;
+	object *globals = NULL;
+	object *locals = NULL;
+	object *fromlist = NULL;
 
-	if (!newgetargs(args, "s:__import__", &name))
+	if (!newgetargs(args, "s|OOO:__import__",
+			&name, &globals, &locals, &fromlist))
 		return NULL;
 	return import_module(name);
 }
diff --git a/Python/ceval.c b/Python/ceval.c
index 411e7f3..cb9bb8a 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -93,6 +93,7 @@
 static object *build_class PROTO((object *, object *, object *));
 static int access_statement PROTO((object *, object *, frameobject *));
 static int exec_statement PROTO((object *, object *, object *));
+static object *find_from_args PROTO((frameobject *, int));
 
 
 /* Pointer to current frame, used to link new frames to */
@@ -1338,7 +1339,19 @@
 					   "__import__ not found");
 				break;
 			}
-			w = mkvalue("(O)", w);
+			if (is_methodobject(x)) {
+				u = None;
+				INCREF(u);
+			}
+			else {
+				u = find_from_args(f, INSTR_OFFSET());
+				if (u == NULL) {
+					x = u;
+					break;
+				}
+			}
+			w = mkvalue("(OOOO)", w, f->f_globals, f->f_locals, u);
+			DECREF(u);
 			if (w == NULL) {
 				x = NULL;
 				break;
@@ -1352,6 +1365,7 @@
 		case IMPORT_FROM:
 			w = GETNAMEV(oparg);
 			v = TOP();
+			fast_2_locals(f);
 			err = import_from(f->f_locals, v, w);
 			locals_2_fast(f, 0);
 			break;
@@ -2711,3 +2725,39 @@
 	DECREF(v);
 	return 0;
 }
+
+/* Hack for Ken Manheimer */
+static object *
+find_from_args(f, nexti)
+	frameobject *f;
+	int nexti;
+{
+	int opcode;
+	int oparg;
+	object *list, *name;
+	unsigned char *next_instr;
+	
+	next_instr = GETUSTRINGVALUE(f->f_code->co_code) + nexti;
+	opcode = (*next_instr++);
+	if (opcode != IMPORT_FROM) {
+		printf("next opcode: %d\n", opcode);
+		INCREF(None);
+		return None;
+	}
+	
+	list = newlistobject(0);
+	if (list == NULL)
+		return NULL;
+	
+	do {
+		oparg = (next_instr += 2, (next_instr[-1]<<8) + next_instr[-2]);
+		name = Getnamev(f, oparg);
+		if (addlistitem(list, name) < 0) {
+			DECREF(list);
+			break;
+		}
+		opcode = (*next_instr++);
+	} while (opcode == IMPORT_FROM);
+	
+	return list;
+}
