diff --git a/Lib/string.py b/Lib/string.py
index 5a98c17..b2563f9 100644
--- a/Lib/string.py
+++ b/Lib/string.py
@@ -45,7 +45,7 @@
 def lower(s):
 	"""lower(s) -> string
 
-	Return a copy of the string s converted to lowercase
+	Return a copy of the string s converted to lowercase.
 
 	"""
 	res = ''
@@ -57,7 +57,7 @@
 def upper(s):
 	"""upper(s) -> string
 
-	Return a copy of the string s converted to uppercase
+	Return a copy of the string s converted to uppercase.
 
 	"""
 	res = ''
@@ -67,10 +67,10 @@
 
 # Swap lower case letters and UPPER CASE
 def swapcase(s):
-	"""swapcase(s) -> strng
+	"""swapcase(s) -> string
 
 	Return a copy of the string s with upper case characters
-	converted to lowercase and vice versa
+	converted to lowercase and vice versa.
 
 	"""
 	res = ''
@@ -83,7 +83,7 @@
 	"""strip(s) -> string
 
 	Return a copy of the string s with leading and trailing
-	whitespace removed
+	whitespace removed.
 
 	"""
 	i, j = 0, len(s)
@@ -95,7 +95,7 @@
 def lstrip(s):
 	"""lstrip(s) -> string
 
-	Return a copy of the string s with leading whitespace removed
+	Return a copy of the string s with leading whitespace removed.
 
 	"""
 	i, j = 0, len(s)
@@ -106,7 +106,8 @@
 def rstrip(s):
 	"""rstrip(s) -> string
 
-	Return a copy of the string s with trailing whitespace removed
+	Return a copy of the string s with trailing whitespace
+	removed.
 
 	"""
 	i, j = 0, len(s)
@@ -174,7 +175,6 @@
 			res.append(s[i:j])
 			i = j = j + nsep
 			if count >= maxsplit: break
-			   
 		else:
 			j = j + 1
 	res.append(s[i:])
@@ -185,12 +185,12 @@
 	"""join(list [,sep]) -> string
 
 	Return a string composed of the words in list, with
-	intervening occurences of sep.  The default separator is a
-	single space.
+	intervening occurences of sep.  Sep defaults to a single
+	space.
 
 	(joinfields and join are synonymous)
 
-	"""    
+	"""
 	return joinfields(words, sep)
 
 # Join fields with optional separator
@@ -306,7 +306,7 @@
 	such that sub is contained within s[start,end].  Optional
 	arguments start and end are interpreted as in slice notation.
 
-	Returns -1 on failure.
+	Return -1 on failure.
 
 	"""
 	Slen = len(s)  # cache this value, for speed
@@ -484,7 +484,7 @@
 
 	Return a copy of the string s with all tab characters replaced
 	by the appropriate number of spaces, depending on the current
-	column, and the tabsize (default=8).
+	column, and the tabsize (default 8).
 
 	"""
 	res = line = ''
diff --git a/Lib/stringold.py b/Lib/stringold.py
index 5a98c17..b2563f9 100644
--- a/Lib/stringold.py
+++ b/Lib/stringold.py
@@ -45,7 +45,7 @@
 def lower(s):
 	"""lower(s) -> string
 
-	Return a copy of the string s converted to lowercase
+	Return a copy of the string s converted to lowercase.
 
 	"""
 	res = ''
@@ -57,7 +57,7 @@
 def upper(s):
 	"""upper(s) -> string
 
-	Return a copy of the string s converted to uppercase
+	Return a copy of the string s converted to uppercase.
 
 	"""
 	res = ''
@@ -67,10 +67,10 @@
 
 # Swap lower case letters and UPPER CASE
 def swapcase(s):
-	"""swapcase(s) -> strng
+	"""swapcase(s) -> string
 
 	Return a copy of the string s with upper case characters
-	converted to lowercase and vice versa
+	converted to lowercase and vice versa.
 
 	"""
 	res = ''
@@ -83,7 +83,7 @@
 	"""strip(s) -> string
 
 	Return a copy of the string s with leading and trailing
-	whitespace removed
+	whitespace removed.
 
 	"""
 	i, j = 0, len(s)
@@ -95,7 +95,7 @@
 def lstrip(s):
 	"""lstrip(s) -> string
 
-	Return a copy of the string s with leading whitespace removed
+	Return a copy of the string s with leading whitespace removed.
 
 	"""
 	i, j = 0, len(s)
@@ -106,7 +106,8 @@
 def rstrip(s):
 	"""rstrip(s) -> string
 
-	Return a copy of the string s with trailing whitespace removed
+	Return a copy of the string s with trailing whitespace
+	removed.
 
 	"""
 	i, j = 0, len(s)
@@ -174,7 +175,6 @@
 			res.append(s[i:j])
 			i = j = j + nsep
 			if count >= maxsplit: break
-			   
 		else:
 			j = j + 1
 	res.append(s[i:])
@@ -185,12 +185,12 @@
 	"""join(list [,sep]) -> string
 
 	Return a string composed of the words in list, with
-	intervening occurences of sep.  The default separator is a
-	single space.
+	intervening occurences of sep.  Sep defaults to a single
+	space.
 
 	(joinfields and join are synonymous)
 
-	"""    
+	"""
 	return joinfields(words, sep)
 
 # Join fields with optional separator
@@ -306,7 +306,7 @@
 	such that sub is contained within s[start,end].  Optional
 	arguments start and end are interpreted as in slice notation.
 
-	Returns -1 on failure.
+	Return -1 on failure.
 
 	"""
 	Slen = len(s)  # cache this value, for speed
@@ -484,7 +484,7 @@
 
 	Return a copy of the string s with all tab characters replaced
 	by the appropriate number of spaces, depending on the current
-	column, and the tabsize (default=8).
+	column, and the tabsize (default 8).
 
 	"""
 	res = line = ''
diff --git a/Modules/stropmodule.c b/Modules/stropmodule.c
index 0f1ef95..224e7e9 100644
--- a/Modules/stropmodule.c
+++ b/Modules/stropmodule.c
@@ -32,9 +32,10 @@
 /* strop module */
 
 static char strop_module__doc__[] =
-"Common string manipulations, optimized for speed\n\
+"Common string manipulations, optimized for speed.\n\
+
 Always use \"import string\" rather than referencing\n\
-this module directly";
+this module directly.";
 
 #include "Python.h"
 
@@ -192,10 +193,10 @@
 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\
+intervening occurences of sep.  Sep defaults to a single\n\
+space.\n\
 \n\
-(joinfields and join are synonymous)";
+(join and joinfields are synonymous)";
 
 static PyObject *
 strop_joinfields(self, args)
