diff --git a/Objects/dictobject.c b/Objects/dictobject.c
index 2619160..86c74ba 100644
--- a/Objects/dictobject.c
+++ b/Objects/dictobject.c
@@ -1611,7 +1611,7 @@
 }
 
 
-staticforward PyObject *dictiter_new(dictobject *, binaryfunc);
+static PyObject *dictiter_new(dictobject *, binaryfunc);
 
 static PyObject *
 select_key(PyObject *key, PyObject *value)
diff --git a/Objects/floatobject.c b/Objects/floatobject.c
index d711726..2787a0a 100644
--- a/Objects/floatobject.c
+++ b/Objects/floatobject.c
@@ -678,7 +678,7 @@
 }
 
 
-staticforward PyObject *
+static PyObject *
 float_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
 
 static PyObject *
diff --git a/Objects/intobject.c b/Objects/intobject.c
index 444ada3..0202980 100644
--- a/Objects/intobject.c
+++ b/Objects/intobject.c
@@ -775,7 +775,7 @@
 	return PyString_FromString(buf);
 }
 
-staticforward PyObject *
+static PyObject *
 int_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
 
 static PyObject *
diff --git a/Objects/listobject.c b/Objects/listobject.c
index d0d1127..8173025 100644
--- a/Objects/listobject.c
+++ b/Objects/listobject.c
@@ -1282,7 +1282,7 @@
 
 #undef SETK
 
-staticforward PyTypeObject immutable_list_type;
+static PyTypeObject immutable_list_type;
 
 static PyObject *
 listsort(PyListObject *self, PyObject *args)
diff --git a/Objects/longobject.c b/Objects/longobject.c
index 7f94a62..b1271f4 100644
--- a/Objects/longobject.c
+++ b/Objects/longobject.c
@@ -2199,7 +2199,8 @@
 {
 	return long_format(v, 16, 1);
 }
-staticforward PyObject *
+
+static PyObject *
 long_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
 
 static PyObject *
diff --git a/Objects/rangeobject.c b/Objects/rangeobject.c
index 7c0e609..3080252 100644
--- a/Objects/rangeobject.c
+++ b/Objects/rangeobject.c
@@ -163,7 +163,7 @@
 	0,			/* sq_slice */
 };
 
-staticforward PyObject * range_iter(PyObject *seq);
+static PyObject * range_iter(PyObject *seq);
 
 PyTypeObject PyRange_Type = {
 	PyObject_HEAD_INIT(&PyType_Type)
@@ -217,7 +217,7 @@
 	long	len;
 } rangeiterobject;
 
-staticforward PyTypeObject Pyrangeiter_Type;
+static PyTypeObject Pyrangeiter_Type;
 
 static PyObject *
 range_iter(PyObject *seq)
diff --git a/Objects/stringobject.c b/Objects/stringobject.c
index 0543f80..5e40524 100644
--- a/Objects/stringobject.c
+++ b/Objects/stringobject.c
@@ -2864,7 +2864,7 @@
 	{NULL,     NULL}		     /* sentinel */
 };
 
-staticforward PyObject *
+static PyObject *
 str_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
 
 static PyObject *
diff --git a/Objects/tupleobject.c b/Objects/tupleobject.c
index 1a15bb7..add9cac 100644
--- a/Objects/tupleobject.c
+++ b/Objects/tupleobject.c
@@ -479,7 +479,7 @@
 	return PyObject_RichCompare(vt->ob_item[i], wt->ob_item[i], op);
 }
 
-staticforward PyObject *
+static PyObject *
 tuple_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
 
 static PyObject *
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index 31a7c3d..9662d95 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -356,7 +356,7 @@
 	return 0;
 }
 
-staticforward PyObject *lookup_maybe(PyObject *, char *, PyObject **);
+static PyObject *lookup_maybe(PyObject *, char *, PyObject **);
 
 static int
 call_finalizer(PyObject *self)
@@ -469,7 +469,7 @@
 	}
 }
 
-staticforward PyTypeObject *solid_base(PyTypeObject *type);
+static PyTypeObject *solid_base(PyTypeObject *type);
 
 /* type test with subclassing support */
 
@@ -894,10 +894,10 @@
 		return base;
 }
 
-staticforward void object_dealloc(PyObject *);
-staticforward int object_init(PyObject *, PyObject *, PyObject *);
-staticforward int update_slot(PyTypeObject *, PyObject *);
-staticforward void fixup_slot_dispatchers(PyTypeObject *);
+static void object_dealloc(PyObject *);
+static int object_init(PyObject *, PyObject *, PyObject *);
+static int update_slot(PyTypeObject *, PyObject *);
+static void fixup_slot_dispatchers(PyTypeObject *);
 
 static PyObject *
 subtype_dict(PyObject *obj, void *context)
@@ -2187,8 +2187,8 @@
 	}
 }
 
-staticforward int add_operators(PyTypeObject *);
-staticforward int add_subclass(PyTypeObject *base, PyTypeObject *type);
+static int add_operators(PyTypeObject *);
+static int add_subclass(PyTypeObject *base, PyTypeObject *type);
 
 int
 PyType_Ready(PyTypeObject *type)
@@ -3118,7 +3118,7 @@
 SLOT1BIN(slot_nb_remainder, nb_remainder, "__mod__", "__rmod__")
 SLOT1BIN(slot_nb_divmod, nb_divmod, "__divmod__", "__rdivmod__")
 
-staticforward PyObject *slot_nb_power(PyObject *, PyObject *, PyObject *);
+static PyObject *slot_nb_power(PyObject *, PyObject *, PyObject *);
 
 SLOT1BINFULL(slot_nb_power_binary, slot_nb_power,
 	     nb_power, "__pow__", "__rpow__")
@@ -4013,8 +4013,8 @@
 	return p;
 }
 
-staticforward int recurse_down_subclasses(PyTypeObject *type,
-					  slotdef **pp, PyObject *name);
+static int recurse_down_subclasses(PyTypeObject *type, slotdef **pp, 
+				   PyObject *name);
 
 /* In the type, update the slots whose slotdefs are gathered in the pp0 array,
    and then do the same for all this type's subtypes. */
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 1b45ef7..9f61652 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -5796,7 +5796,7 @@
     (getcharbufferproc) unicode_buffer_getcharbuf,
 };
 
-staticforward PyObject *
+static PyObject *
 unicode_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
 
 static PyObject *
diff --git a/Objects/xxobject.c b/Objects/xxobject.c
index 117714a..d847c52 100644
--- a/Objects/xxobject.c
+++ b/Objects/xxobject.c
@@ -18,7 +18,7 @@
 	PyObject	*x_attr;	/* Attributes dictionary */
 } xxobject;
 
-staticforward PyTypeObject Xxtype;
+static PyTypeObject Xxtype;
 
 #define is_xxobject(v)		((v)->ob_type == &Xxtype)
 
