Greatly renamed.
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index ed36747..20298ff 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -31,9 +31,7 @@
 
 /* Time module */
 
-#include "allobjects.h"
-#include "modsupport.h"
-#include "ceval.h"
+#include "Python.h"
 
 #ifdef HAVE_SELECT
 #include "mymath.h"
@@ -80,23 +78,23 @@
 #endif /* !__WATCOMC__ */
 
 /* Forward declarations */
-static int floatsleep PROTO((double));
-static double floattime PROTO(());
+static int floatsleep Py_PROTO((double));
+static double floattime Py_PROTO(());
 
-static object *
+static PyObject *
 time_time(self, args)
-	object *self;
-	object *args;
+	PyObject *self;
+	PyObject *args;
 {
 	double secs;
-	if (!getnoarg(args))
+	if (!PyArg_NoArgs(args))
 		return NULL;
 	secs = floattime();
 	if (secs == 0.0) {
-		err_errno(IOError);
+		PyErr_SetFromErrno(PyExc_IOError);
 		return NULL;
 	}
-	return newfloatobject(secs);
+	return PyFloat_FromDouble(secs);
 }
 
 #ifdef HAVE_CLOCK
@@ -109,39 +107,39 @@
 #endif
 #endif
 
-static object *
+static PyObject *
 time_clock(self, args)
-	object *self;
-	object *args;
+	PyObject *self;
+	PyObject *args;
 {
-	if (!getnoarg(args))
+	if (!PyArg_NoArgs(args))
 		return NULL;
-	return newfloatobject(((double)clock()) / CLOCKS_PER_SEC);
+	return PyFloat_FromDouble(((double)clock()) / CLOCKS_PER_SEC);
 }
 #endif /* HAVE_CLOCK */
 
-static object *
+static PyObject *
 time_sleep(self, args)
-	object *self;
-	object *args;
+	PyObject *self;
+	PyObject *args;
 {
 	double secs;
-	if (!getargs(args, "d", &secs))
+	if (!PyArg_Parse(args, "d", &secs))
 		return NULL;
-	BGN_SAVE
+	Py_BEGIN_ALLOW_THREADS
 	if (floatsleep(secs) != 0) {
-		RET_SAVE
+		Py_BLOCK_THREADS
 		return NULL;
 	}
-	END_SAVE
-	INCREF(None);
-	return None;
+	Py_END_ALLOW_THREADS
+	Py_INCREF(Py_None);
+	return Py_None;
 }
 
-static object *
+static PyObject *
 time_convert(when, function)
 	time_t when;
-	struct tm * (*function) PROTO((const time_t *));
+	struct tm * (*function) Py_PROTO((const time_t *));
 {
 	struct tm *p;
 	errno = 0;
@@ -151,48 +149,48 @@
 		if (errno == 0)
 			errno = EINVAL;
 #endif
-		return err_errno(IOError);
+		return PyErr_SetFromErrno(PyExc_IOError);
 	}
-	return mkvalue("(iiiiiiiii)",
+	return Py_BuildValue("(iiiiiiiii)",
 		       p->tm_year + 1900,
-		       p->tm_mon + 1, /* Want January == 1 */
+		       p->tm_mon + 1,        /* Want January == 1 */
 		       p->tm_mday,
 		       p->tm_hour,
 		       p->tm_min,
 		       p->tm_sec,
 		       (p->tm_wday + 6) % 7, /* Want Monday == 0 */
-		       p->tm_yday + 1, /* Want January, 1 == 1 */
+		       p->tm_yday + 1,       /* Want January, 1 == 1 */
 		       p->tm_isdst);
 }
 
-static object *
+static PyObject *
 time_gmtime(self, args)
-	object *self;
-	object *args;
+	PyObject *self;
+	PyObject *args;
 {
 	double when;
-	if (!getargs(args, "d", &when))
+	if (!PyArg_Parse(args, "d", &when))
 		return NULL;
 	return time_convert((time_t)when, gmtime);
 }
 
-static object *
+static PyObject *
 time_localtime(self, args)
-	object *self;
-	object *args;
+	PyObject *self;
+	PyObject *args;
 {
 	double when;
-	if (!getargs(args, "d", &when))
+	if (!PyArg_Parse(args, "d", &when))
 		return NULL;
 	return time_convert((time_t)when, localtime);
 }
 
 static int
 gettmarg(args, p)
-	object *args;
+	PyObject *args;
 	struct tm *p;
 {
-	if (!getargs(args, "(iiiiiiiii)",
+	if (!PyArg_Parse(args, "(iiiiiiiii)",
 		     &p->tm_year,
 		     &p->tm_mon,
 		     &p->tm_mday,
@@ -212,10 +210,10 @@
 }
 
 #ifdef HAVE_STRFTIME
-static object *
+static PyObject *
 time_strftime(self, args)
-	object *self;
-	object *args;
+	PyObject *self;
+	PyObject *args;
 {
 	struct tm buf;
 	const char *fmt;
@@ -244,24 +242,24 @@
 	for (i = 1024 ; i < 8192 ; i += 1024) {
 		outbuf = malloc(i);
 		if (outbuf == NULL) {
-			return err_nomem();
+			return PyErr_NoMemory();
 		}
 		if (strftime(outbuf, i-1, fmt, &buf) != 0) {
-			object *ret;
-			ret = newstringobject(outbuf);
+			PyObject *ret;
+			ret = PyString_FromString(outbuf);
 			free(outbuf);
 			return ret;
 		}
 		free(outbuf);
 	}
-	return err_nomem();
+	return PyErr_NoMemory();
 }
 #endif /* HAVE_STRFTIME */
 
-static object *
+static PyObject *
 time_asctime(self, args)
-	object *self;
-	object *args;
+	PyObject *self;
+	PyObject *args;
 {
 	struct tm buf;
 	char *p;
@@ -270,30 +268,30 @@
 	p = asctime(&buf);
 	if (p[24] == '\n')
 		p[24] = '\0';
-	return newstringobject(p);
+	return PyString_FromString(p);
 }
 
-static object *
+static PyObject *
 time_ctime(self, args)
-	object *self;
-	object *args;
+	PyObject *self;
+	PyObject *args;
 {
 	double dt;
 	time_t tt;
 	char *p;
-	if (!getargs(args, "d", &dt))
+	if (!PyArg_Parse(args, "d", &dt))
 		return NULL;
 	tt = (time_t)dt;
 	p = ctime(&tt);
 	if (p[24] == '\n')
 		p[24] = '\0';
-	return newstringobject(p);
+	return PyString_FromString(p);
 }
 
-static object *
+static PyObject *
 time_mktime(self, args)
-	object *self;
-	object *args;
+	PyObject *self;
+	PyObject *args;
 {
 	struct tm buf;
 	time_t tt;
@@ -303,13 +301,14 @@
 		return NULL;
 	tt = mktime(&buf);
 	if (tt == (time_t)(-1)) {
-		err_setstr(OverflowError, "mktime argument out of range");
+		PyErr_SetString(PyExc_OverflowError,
+                                "mktime argument out of range");
 		return NULL;
 	}
-	return newfloatobject((double)tt);
+	return PyFloat_FromDouble((double)tt);
 }
 
-static struct methodlist time_methods[] = {
+static PyMethodDef time_methods[] = {
 	{"time",	time_time},
 #ifdef HAVE_CLOCK
 	{"clock",	time_clock},
@@ -328,33 +327,34 @@
 
 static void
 ins(d, name, v)
-	object *d;
+	PyObject *d;
 	char *name;
-	object *v;
+	PyObject *v;
 {
 	if (v == NULL)
-		fatal("Can't initialize time module -- NULL value");
-	if (dictinsert(d, name, v) != 0)
-		fatal("Can't initialize time module -- dictinsert failed");
-	DECREF(v);
+		Py_FatalError("Can't initialize time module -- NULL value");
+	if (PyDict_SetItemString(d, name, v) != 0)
+		Py_FatalError(
+                        "Can't initialize time module -- dictinsert failed");
+	Py_DECREF(v);
 }
 
 void
 inittime()
 {
-	object *m, *d;
-	m = initmodule("time", time_methods);
-	d = getmoduledict(m);
+	PyObject *m, *d;
+	m = Py_InitModule("time", time_methods);
+	d = PyModule_GetDict(m);
 #ifdef HAVE_TZNAME
 	tzset();
-	ins(d, "timezone", newintobject((long)timezone));
+	ins(d, "timezone", PyInt_FromLong((long)timezone));
 #ifdef HAVE_ALTZONE
-	ins(d, "altzone", newintobject((long)altzone));
+	ins(d, "altzone", PyInt_FromLong((long)altzone));
 #else
-	ins(d, "altzone", newintobject((long)timezone-3600));
+	ins(d, "altzone", PyInt_FromLong((long)timezone-3600));
 #endif
-	ins(d, "daylight", newintobject((long)daylight));
-	ins(d, "tzname", mkvalue("(zz)", tzname[0], tzname[1]));
+	ins(d, "daylight", PyInt_FromLong((long)daylight));
+	ins(d, "tzname", Py_BuildValue("(zz)", tzname[0], tzname[1]));
 #else /* !HAVE_TZNAME */
 #if HAVE_TM_ZONE
 	{
@@ -375,10 +375,12 @@
 		summerzone = -p->tm_gmtoff;
 		strncpy(summername, p->tm_zone ? p->tm_zone : "   ", 9);
 		summername[9] = '\0';
-		ins(d, "timezone", newintobject(winterzone));
-		ins(d, "altzone", newintobject(summerzone));
-		ins(d, "daylight", newintobject((long)(winterzone != summerzone)));
-		ins(d, "tzname",  mkvalue("(zz)", wintername, summername));
+		ins(d, "timezone", PyInt_FromLong(winterzone));
+		ins(d, "altzone", PyInt_FromLong(summerzone));
+		ins(d, "daylight",
+                    PyInt_FromLong((long)(winterzone != summerzone)));
+		ins(d, "tzname",
+                    Py_BuildValue("(zz)", wintername, summername));
 	}
 #endif /* HAVE_TM_ZONE */
 #endif /* !HAVE_TZNAME */
@@ -444,7 +446,7 @@
 	t.tv_sec = (long)secs;
 	t.tv_usec = (long)(frac*1000000.0);
 	if (select(0, (fd_set *)0, (fd_set *)0, (fd_set *)0, &t) != 0) {
-		err_errno(IOError);
+		PyErr_SetFromErrno(PyExc_IOError);
 		return -1;
 	}
 #else /* !HAVE_SELECT */
@@ -453,7 +455,7 @@
 	long deadline;
 	deadline = MacTicks + (long)(secs * 60.0);
 	while (MacTicks < deadline) {
-		if (sigcheck())
+		if (PyErr_CheckSignals())
 			return -1;
 	}
 #else /* !macintosh */
@@ -464,8 +466,8 @@
 #ifdef MSDOS
 	struct timeb t1, t2;
 	double frac;
-	extern double fmod PROTO((double, double));
-	extern double floor PROTO((double));
+	extern double fmod Py_PROTO((double, double));
+	extern double floor Py_PROTO((double));
 	if (secs <= 0.0)
 		return;
 	frac = fmod(secs, 1.0);
@@ -481,7 +483,7 @@
 #ifdef QUICKWIN
 		_wyield();
 #endif
-		if (sigcheck())
+		if (PyErr_CheckSignals())
 			return -1;
 		ftime(&t1);
 		if (t1.time > t2.time ||