diff --git a/Mac/Include/macbuildno.h b/Mac/Include/macbuildno.h
index f84c3c6..7cced77 100644
--- a/Mac/Include/macbuildno.h
+++ b/Mac/Include/macbuildno.h
@@ -1 +1 @@
-#define BUILD 54
+#define BUILD 55
diff --git a/Mac/Include/macglue.h b/Mac/Include/macglue.h
index a3bfb90..f96b96f 100644
--- a/Mac/Include/macglue.h
+++ b/Mac/Include/macglue.h
@@ -54,7 +54,7 @@
 #endif
 
 #ifdef USE_GUSI1
-void PyMac_FixGUSIcd Py_PROTO((void));		/* Workaround for GUSI chdir() call */
+void PyMac_FixGUSIcd(void);		/* Workaround for GUSI chdir() call */
 extern void PyMac_SetGUSISpin(void);		/* Install our private GUSI spin routine */
 #endif
 
@@ -69,22 +69,22 @@
 extern short PyMac_AppRefNum;			/* RefNum of application rsrcfork (from macmain.c) */
 extern FSSpec PyMac_ApplicationFSSpec;		/* Application location (from macargv.c) */
 extern char PyMac_ApplicationPath[];		/* Application location (from macargv.c) */
-extern OSErr PyMac_init_application_location Py_PROTO((void));	/* Init the above */
-extern OSErr PyMac_GetFullPath Py_PROTO((FSSpec *, char *)); /* convert fsspec->path (macargv.c) */
-extern int PyMac_GetArgv Py_PROTO((char ***, int));	/* Get argc, argv (from macargv.c) */
+extern OSErr PyMac_init_application_location(void);	/* Init the above */
+extern OSErr PyMac_GetFullPath(FSSpec *, char *); /* convert fsspec->path (macargv.c) */
+extern int PyMac_GetArgv(char ***, int);	/* Get argc, argv (from macargv.c) */
 extern int PyMac_AppearanceCompliant;	/* True if in appearance support mode */
 
 extern PyObject *PyMac_OSErrException;		/* Exception for OSErr */
 PyObject *PyMac_GetOSErrException(void);	/* Initialize & return it */
 
-void PyMac_GetSchedParams Py_PROTO((PyMacSchedParams *));	/* Get schedulers params */
-void PyMac_SetSchedParams Py_PROTO((PyMacSchedParams *));	/* Set schedulers params */
+void PyMac_GetSchedParams(PyMacSchedParams *);	/* Get schedulers params */
+void PyMac_SetSchedParams(PyMacSchedParams *);	/* Set schedulers params */
 PyObject *PyErr_Mac(PyObject *, int);		/* Exception with a mac error */
 PyObject *PyMac_Error(OSErr);			/* Uses PyMac_GetOSErrException */
-int PyMac_DoYield Py_PROTO((int, int));	/* Yield cpu. First arg is maxtime, second ok to call python */
-int PyMac_HandleEvent Py_PROTO((EventRecord *));	/* Handle one event, possibly in Python */
-void PyMac_HandleEventIntern Py_PROTO((EventRecord *)); /* Handle one event internal only */
-int PyMac_SetEventHandler Py_PROTO((PyObject *));	/* set python-coded event handler */
+int PyMac_DoYield(int, int);	/* Yield cpu. First arg is maxtime, second ok to call python */
+int PyMac_HandleEvent(EventRecord *);	/* Handle one event, possibly in Python */
+void PyMac_HandleEventIntern(EventRecord *); /* Handle one event internal only */
+int PyMac_SetEventHandler(PyObject *);	/* set python-coded event handler */
 
 void PyMac_InitMenuBar(void);			/* Setup menu bar as we want it */
 void PyMac_RestoreMenuBar(void);		/* Restore menu bar for ease of exiting */
diff --git a/Mac/Include/pythonresources.h b/Mac/Include/pythonresources.h
index 3cd0b55..1782608 100644
--- a/Mac/Include/pythonresources.h
+++ b/Mac/Include/pythonresources.h
@@ -170,6 +170,6 @@
 
 #ifndef rez
 /* From macgetpath.c: */
-void PyMac_PreferenceOptions Py_PROTO((PyMac_PrefRecord *));
-char * PyMac_GetPythonDir Py_PROTO((void));
+void PyMac_PreferenceOptions(PyMac_PrefRecord *);
+char * PyMac_GetPythonDir(void);
 #endif
diff --git a/Mac/Modules/macmodule.c b/Mac/Modules/macmodule.c
index a100cf5..ba545c3 100644
--- a/Mac/Modules/macmodule.c
+++ b/Mac/Modules/macmodule.c
@@ -97,24 +97,24 @@
 
 #ifndef USE_GUSI
 
-int chdir Py_PROTO((const char *path));
-int mkdir Py_PROTO((const char *path, int mode));
-DIR * opendir Py_PROTO((char *));
-void closedir Py_PROTO((DIR *));
-struct dirent * readdir Py_PROTO((DIR *));
-int rmdir Py_PROTO((const char *path));
-int sync Py_PROTO((void));
+int chdir(const char *path);
+int mkdir(const char *path, int mode);
+DIR * opendir(char *);
+void closedir(DIR *);
+struct dirent * readdir(DIR *);
+int rmdir(const char *path);
+int sync(void);
 
 #if defined(__SC__)
-int unlink Py_PROTO((char *));
+int unlink(char *);
 #else
-int unlink Py_PROTO((const char *));
+int unlink(const char *);
 #endif
 
 #endif /* USE_GUSI */
 
-char *getwd Py_PROTO((char *));
-char *getbootvol Py_PROTO((void));
+char *getwd(char *);
+char *getbootvol(void);
 
 
 static PyObject *MacError; /* Exception mac.error */
@@ -132,7 +132,7 @@
 static PyObject *
 mac_1str(args, func)
 	PyObject *args;
-	int (*func) Py_FPROTO((const char *));
+	int (*func)(const char *);
 {
 	char *path1;
 	int res;
@@ -150,7 +150,7 @@
 static PyObject *
 mac_2str(args, func)
 	PyObject *args;
-	int (*func) Py_FPROTO((const char *, const char *));
+	int (*func)(const char *, const char *);
 {
 	char *path1, *path2;
 	int res;
@@ -168,7 +168,7 @@
 static PyObject *
 mac_strint(args, func)
 	PyObject *args;
-	int (*func) Py_FPROTO((const char *, int));
+	int (*func)(const char *, int);
 {
 	char *path;
 	int i;
@@ -248,7 +248,7 @@
 	PyObject *self;
 	PyObject *args;
 {
-	extern int fclose Py_PROTO((FILE *));
+	extern int fclose(FILE *);
 	int fd;
 	char *mode;
 	FILE *fp;
diff --git a/Mac/Python/macglue.c b/Mac/Python/macglue.c
index 1f5ce0e..1266b59 100644
--- a/Mac/Python/macglue.c
+++ b/Mac/Python/macglue.c
@@ -104,13 +104,13 @@
 
 /* Declared in macfsmodule.c: */
 extern FSSpec *mfs_GetFSSpecFSSpec();
-extern PyObject *newmfssobject Py_PROTO((FSSpec *));
+extern PyObject *newmfssobject(FSSpec *);
 
 /* Interrupt code variables: */
 static int interrupted;			/* Set to true when cmd-. seen */
-static RETSIGTYPE intcatcher Py_PROTO((int));
+static RETSIGTYPE intcatcher(int);
 
-static int PyMac_Yield Py_PROTO((void));
+static int PyMac_Yield(void);
 
 /*
 ** These are the real scheduling parameters that control what we check
diff --git a/Mac/Python/macmain.c b/Mac/Python/macmain.c
index e773fd7..8b2a1fd 100644
--- a/Mac/Python/macmain.c
+++ b/Mac/Python/macmain.c
@@ -62,8 +62,8 @@
 
 PyMac_PrefRecord options;
 
-static void Py_Main Py_PROTO((int, char **)); /* Forward */
-void PyMac_Exit Py_PROTO((int)); /* Forward */
+static void Py_Main(int, char **); /* Forward */
+void PyMac_Exit(int); /* Forward */
 
 static void init_appearance()
 {
