diff --git a/Objects/longobject.c b/Objects/longobject.c
index b1e9834..4acbe0c 100644
--- a/Objects/longobject.c
+++ b/Objects/longobject.c
@@ -549,9 +549,9 @@
 /* Methods */
 
 /* Forward */
-static void long_dealloc PROTO((longobject *));
-static int long_print PROTO((longobject *, FILE *, int));
-static object *long_repr PROTO((longobject *));
+static void long_dealloc PROTO((object *));
+static int long_print PROTO((object *, FILE *, int));
+static object *long_repr PROTO((object *));
 static int long_compare PROTO((longobject *, longobject *));
 
 static object *long_add PROTO((longobject *, longobject *));
@@ -574,18 +574,19 @@
 
 static void
 long_dealloc(v)
-	longobject *v;
+	object *v;
 {
 	DEL(v);
 }
 
+/* ARGSUSED */
 static int
 long_print(v, fp, flags)
-	longobject *v;
+	object *v;
 	FILE *fp;
-	int flags;
+	int flags; /* Not used but required by interface */
 {
-	stringobject *str = (stringobject *) long_format((object *)v, 10);
+	stringobject *str = (stringobject *) long_format(v, 10);
 	if (str == NULL)
 		return -1;
 	fprintf(fp, "%s", GETSTRINGVALUE(str));
@@ -595,9 +596,9 @@
 
 static object *
 long_repr(v)
-	longobject *v;
+	object *v;
 {
-	return long_format((object *)v, 10);
+	return long_format(v, 10);
 }
 
 static int
@@ -1151,7 +1152,7 @@
 	int size_a, size_b, size_z;
 	longobject *z;
 	int i;
-	digit diga, digb, digz;
+	digit diga, digb;
 	object *v;
 	
 	if (a->ob_size < 0) {
@@ -1252,24 +1253,28 @@
 	return long_bitwise(a, '|', b);
 }
 
+#define UF (object* (*) FPROTO((object *))) /* Unary function */
+#define BF (object* (*) FPROTO((object *, object *))) /* Binary function */
+#define IF (int (*) FPROTO((object *))) /* Int function */
+
 static number_methods long_as_number = {
-	long_add,	/*nb_add*/
-	long_sub,	/*nb_subtract*/
-	long_mul,	/*nb_multiply*/
-	long_div,	/*nb_divide*/
-	long_mod,	/*nb_remainder*/
-	long_divmod,	/*nb_divmod*/
-	long_pow,	/*nb_power*/
-	long_neg,	/*nb_negative*/
-	long_pos,	/*tp_positive*/
-	long_abs,	/*tp_absolute*/
-	long_nonzero,	/*tp_nonzero*/
-	long_invert,	/*nb_invert*/
-	long_lshift,	/*nb_lshift*/
-	long_rshift,	/*nb_rshift*/
-	long_and,	/*nb_and*/
-	long_xor,	/*nb_xor*/
-	long_or,	/*nb_or*/
+	BF long_add,	/*nb_add*/
+	BF long_sub,	/*nb_subtract*/
+	BF long_mul,	/*nb_multiply*/
+	BF long_div,	/*nb_divide*/
+	BF long_mod,	/*nb_remainder*/
+	BF long_divmod,	/*nb_divmod*/
+	BF long_pow,	/*nb_power*/
+	UF long_neg,	/*nb_negative*/
+	UF long_pos,	/*tp_positive*/
+	UF long_abs,	/*tp_absolute*/
+	IF long_nonzero,/*tp_nonzero*/
+	UF long_invert,	/*nb_invert*/
+	BF long_lshift,	/*nb_lshift*/
+	BF long_rshift,	/*nb_rshift*/
+	BF long_and,	/*nb_and*/
+	BF long_xor,	/*nb_xor*/
+	BF long_or,	/*nb_or*/
 };
 
 typeobject Longtype = {
@@ -1282,6 +1287,7 @@
 	long_print,	/*tp_print*/
 	0,		/*tp_getattr*/
 	0,		/*tp_setattr*/
+	(int (*) FPROTO((object *, object *)))
 	long_compare,	/*tp_compare*/
 	long_repr,	/*tp_repr*/
 	&long_as_number,/*tp_as_number*/
