diff --git a/Modules/stropmodule.c b/Modules/stropmodule.c
index 6de624e..0f1ef95 100644
--- a/Modules/stropmodule.c
+++ b/Modules/stropmodule.c
@@ -31,6 +31,11 @@
 
 /* strop module */
 
+static char strop_module__doc__[] =
+"Common string manipulations, optimized for speed\n\
+Always use \"import string\" rather than referencing\n\
+this module directly";
+
 #include "Python.h"
 
 #ifdef HAVE_LIMITS_H
@@ -101,7 +106,6 @@
 
 				i = len;
 			}
-	
 		}
 	}
 	return list;
@@ -111,6 +115,17 @@
 }
 
 
+static char splitfields__doc__[] =
+"split(str [,sep [,maxsplit]]) -> list of strings\n\
+splitfields(str [,sep [,maxsplit]]) -> list of strings\n\
+\n\
+Return a list of the words in the string s, using sep as the\n\
+delimiter string.  If maxsplit is nonzero, splits into at most\n\
+maxsplit words If sep is not specified, any whitespace string\n\
+is a separator.  Maxsplit defaults to 0.\n\
+\n\
+(split and splitfields are synonymous)";
+
 static PyObject *
 strop_splitfields(self, args)
 	PyObject *self; /* Not used */
@@ -172,6 +187,16 @@
 }
 
 
+static char joinfields__doc__[] =
+"join(list [,sep]) -> string\n\
+joinfields(list [,sep]) -> string\n\
+\n\
+Return a string composed of the words in list, with\n\
+intervening occurences of sep.  The default separator is a\n\
+single space.\n\
+\n\
+(joinfields and join are synonymous)";
+
 static PyObject *
 strop_joinfields(self, args)
 	PyObject *self; /* Not used */
@@ -289,6 +314,16 @@
 	return res;
 }
 
+
+static char find__doc__[] =
+"find(s, sub [,start [,end]]) -> in\n\
+\n\
+Return the lowest index in s where substring sub is found,\n\
+such that sub is contained within s[start,end].  Optional\n\
+arguments start and end are interpreted as in slice notation.\n\
+\n\
+Return -1 on failure.";
+
 static PyObject *
 strop_find(self, args)
 	PyObject *self; /* Not used */
@@ -324,6 +359,15 @@
 }
 
 
+static char rfind__doc__[] =
+"rfind(s, sub [,start [,end]]) -> int\n\
+\n\
+Return the highest index in s where substring sub is found,\n\
+such that sub is contained within s[start,end].  Optional\n\
+arguments start and end are interpreted as in slice notation.\n\
+\n\
+Return -1 on failure.";
+
 static PyObject *
 strop_rfind(self, args)
 	PyObject *self; /* Not used */
@@ -358,6 +402,7 @@
 	return PyInt_FromLong(-1L);
 }
 
+
 static PyObject *
 do_strip(args, striptype)
 	PyObject *args;
@@ -376,7 +421,6 @@
 			i++;
 		}
 	}
-	
 
 	j = len;
 	if (striptype != LEFTSTRIP) {
@@ -395,6 +439,12 @@
 }
 
 
+static char strip__doc__[] =
+"strip(s) -> string\n\
+\n\
+Return a copy of the string s with leading and trailing\n\
+whitespace removed.";
+
 static PyObject *
 strop_strip(self, args)
 	PyObject *self; /* Not used */
@@ -403,6 +453,12 @@
 	return do_strip(args, BOTHSTRIP);
 }
 
+
+static char lstrip__doc__[] =
+"lstrip(s) -> string\n\
+\n\
+Return a copy of the string s with leading whitespace removed.";
+
 static PyObject *
 strop_lstrip(self, args)
 	PyObject *self; /* Not used */
@@ -411,6 +467,12 @@
 	return do_strip(args, LEFTSTRIP);
 }
 
+
+static char rstrip__doc__[] =
+"rstrip(s) -> string\n\
+\n\
+Return a copy of the string s with trailing whitespace removed.";
+
 static PyObject *
 strop_rstrip(self, args)
 	PyObject *self; /* Not used */
@@ -420,6 +482,11 @@
 }
 
 
+static char lower__doc__[] =
+"lower(s) -> string\n\
+\n\
+Return a copy of the string s converted to lowercase.";
+
 static PyObject *
 strop_lower(self, args)
 	PyObject *self; /* Not used */
@@ -455,6 +522,11 @@
 }
 
 
+static char upper__doc__[] =
+"upper(s) -> string\n\
+\n\
+Return a copy of the string s converted to uppercase.";
+
 static PyObject *
 strop_upper(self, args)
 	PyObject *self; /* Not used */
@@ -490,6 +562,12 @@
 }
 
 
+static char capitalize__doc__[] =
+"capitalize(s) -> string\n\
+\n\
+Return a copy of the string s with only its first character\n\
+capitalized.";
+
 static PyObject *
 strop_capitalize(self, args)
 	PyObject *self; /* Not used */
@@ -534,6 +612,12 @@
 }
 
 
+static char swapcase__doc__[] =
+"swapcase(s) -> string\n\
+\n\
+Return a copy of the string s with upper case characters\n\
+converted to lowercase and vice versa.";
+
 static PyObject *
 strop_swapcase(self, args)
 	PyObject *self; /* Not used */
@@ -574,6 +658,16 @@
 }
 
 
+static char atoi__doc__[] =
+"atoi(s [,base]) -> int\n\
+\n\
+Return the integer represented by the string s in the given\n\
+base, which defaults to 10.  The string s must consist of one\n\
+or more digits, possibly preceded by a sign.  If base is 0, it\n\
+is chosen from the leading characters of s, 0 for octal, 0x or\n\
+0X for hexadecimal.  If base is 16, a preceding 0x or 0X is\n\
+accepted.";
+
 static PyObject *
 strop_atoi(self, args)
 	PyObject *self; /* Not used */
@@ -622,6 +716,17 @@
 }
 
 
+static char atol__doc__[] =
+"atol(s [,base]) -> long\n\
+\n\
+Return the long integer represented by the string s in the\n\
+given base, which defaults to 10.  The string s must consist\n\
+of one or more digits, possibly preceded by a sign.  If base\n\
+is 0, it is chosen from the leading characters of s, 0 for\n\
+octal, 0x or 0X for hexadecimal.  If base is 16, a preceding\n\
+0x or 0X is accepted.  A trailing L or l is not accepted,\n\
+unless base is 0.";
+
 static PyObject *
 strop_atol(self, args)
 	PyObject *self; /* Not used */
@@ -663,6 +768,11 @@
 }
 
 
+static char atof__doc__[] =
+"atof(s) -> float\n\
+\n\
+Return the floating point number represented by the string s.";
+
 static PyObject *
 strop_atof(self, args)
 	PyObject *self; /* Not used */
@@ -701,6 +811,13 @@
 }
 
 
+static char maketrans__doc__[] =
+"maketrans(frm, to) -> string\n\
+\n\
+Return a translation table (a string of 256 bytes long)\n\
+suitable for use in string.translate.  The strings frm and to\n\
+must be of the same length.";
+
 static PyObject *
 strop_maketrans(self, args)
 	PyObject *self; /* Not used */
@@ -732,6 +849,14 @@
 }
 
 
+static char translate__doc__[] =
+"translate(s,table [,deletechars]) -> string\n\
+\n\
+Return a copy of the string s, where all characters occurring\n\
+in the optional argument deletechars are removed, and the\n\
+remaining characters have been mapped through the given\n\
+translation table, which must be a string of length 256.";
+
 static PyObject *
 strop_translate(self, args)
 	PyObject *self;
@@ -779,7 +904,7 @@
 	for (i = 0; i < 256; i++)
 		trans_table[i] = Py_CHARMASK(table[i]);
 
-	for (i = 0; i < dellen; i++) 
+	for (i = 0; i < dellen; i++)
 		trans_table[(int) Py_CHARMASK(del_table[i])] = -1;
 
 	for (i = inlen; --i >= 0; ) {
@@ -796,7 +921,7 @@
 	}
 	/* Fix the size of the resulting string */
 	if (inlen > 0 &&_PyString_Resize(&result, output-output_start))
-		return NULL; 
+		return NULL;
 	return result;
 }
 
@@ -811,7 +936,7 @@
   Locates the first occurance in the memory pointed to by MEM of the
   contents of memory pointed to by PAT.  Returns the index into MEM if
   found, or -1 if not found.  If len of PAT is greater than length of
-  MEM, the function returns -1. 
+  MEM, the function returns -1.
 */
 static int mymemfind(mem, len, pat, pat_len)
 	char *mem;
@@ -861,16 +986,16 @@
 	return nfound;
 }
 
-/* 
+/*
    mymemreplace
 
    Return a string in which all occurences of PAT in memory STR are
-   replaced with SUB. 
+   replaced with SUB.
 
    If length of PAT is less than length of STR or there are no occurences
    of PAT in STR, then the original string is returned. Otherwise, a new
    string is allocated here and returned.
-   
+
    on return, out_len is:
        the length of output string, or
        -1 if the input string is returned, or
@@ -942,7 +1067,14 @@
 }
 
 
-static PyObject*
+static char replace__doc__[] =
+"replace (str, old, new[, maxsplit]) -> string\n\
+\n\
+Return a copy of string str with all occurrences of substring\n\
+old replaced by new. If the optional argument maxsplit is\n\
+given, only the first maxsplit occurrences are replaced.";
+
+static PyObject *
 strop_replace(self, args)
 	PyObject *self;	/* Not used */
 	PyObject *args;
@@ -978,25 +1110,25 @@
 
 static PyMethodDef
 strop_methods[] = {
-	{"atof",	strop_atof},
-	{"atoi",	strop_atoi, 1},
-	{"atol",	strop_atol, 1},
-	{"capitalize",	strop_capitalize},
-	{"find",	strop_find, 1},
-	{"join",	strop_joinfields, 1},
-	{"joinfields",	strop_joinfields, 1},
-	{"lstrip",	strop_lstrip},
-	{"lower",	strop_lower},
-	{"maketrans",	strop_maketrans, 1},
-	{"replace",	strop_replace, 1},
-	{"rfind",	strop_rfind, 1},
-	{"rstrip",	strop_rstrip},
-	{"split",	strop_splitfields, 1},
-	{"splitfields",	strop_splitfields, 1},
-	{"strip",	strop_strip},
-	{"swapcase",	strop_swapcase},
-	{"translate",	strop_translate, 1},
-	{"upper",	strop_upper},
+	{"atof",	strop_atof, 1, atof__doc__},
+	{"atoi",	strop_atoi, 1, atoi__doc__},
+	{"atol",	strop_atol, 1, atol__doc__},
+	{"capitalize",	strop_capitalize, 1, capitalize__doc__},
+	{"find",	strop_find, 1, find__doc__},
+	{"join",	strop_joinfields, 1, joinfields__doc__},
+	{"joinfields",	strop_joinfields, 1, joinfields__doc__},
+	{"lstrip",	strop_lstrip, 1, lstrip__doc__},
+	{"lower",	strop_lower, 1, lower__doc__},
+	{"maketrans",	strop_maketrans, 1, maketrans__doc__},
+	{"replace",	strop_replace, 1, replace__doc__},
+	{"rfind",	strop_rfind, 1, rfind__doc__},
+	{"rstrip",	strop_rstrip, 1,rstrip__doc__},
+	{"split",	strop_splitfields, 1, splitfields__doc__},
+	{"splitfields",	strop_splitfields, 1, splitfields__doc__},
+	{"strip",	strop_strip, 1, strip__doc__},
+	{"swapcase",	strop_swapcase, 1, swapcase__doc__},
+	{"translate",	strop_translate, 1, translate__doc__},
+	{"upper",	strop_upper, 1, upper__doc__},
 	{NULL,		NULL}	/* sentinel */
 };
 
@@ -1007,7 +1139,8 @@
 	PyObject *m, *d, *s;
 	char buf[256];
 	int c, n;
-	m = Py_InitModule("strop", strop_methods);
+	m = Py_InitModule4("strop", strop_methods, strop_module__doc__,
+			   (PyObject*)NULL, PYTHON_API_VERSION);
 	d = PyModule_GetDict(m);
 
 	/* Create 'whitespace' object */
