diff --git a/Lib/posixpath.py b/Lib/posixpath.py
index 0c0d09f..456743c 100644
--- a/Lib/posixpath.py
+++ b/Lib/posixpath.py
@@ -4,19 +4,24 @@
 import stat
 
 
-# Intelligent pathname concatenation.
-# Inserts a '/' unless the first part is empty or already ends in '/'.
-# Ignores the first part altogether if the second part is absolute
+# Join two pathnames.
+# Insert a '/' unless the first part is empty or already ends in '/'.
+# Ignore the first part altogether if the second part is absolute
 # (begins with '/').
 #
-def cat(a, b):
+def join(a, b):
 	if b[:1] = '/': return b
 	if a = '' or a[-1:] = '/': return a + b
+	# Note: join('x', '') returns 'x/'; is this what we want?
 	return a + '/' + b
 
 
+cat = join # For compatibility
+
+
 # Split a path in head (empty or ending in '/') and tail (no '/').
 # The tail will be empty if the path ends in '/'.
+# It is always true that head+tail = p.
 #
 def split(p):
 	head, tail = '', ''
@@ -27,6 +32,23 @@
 	return head, tail
 
 
+# Split a path in root and extension.
+# The extension is everything starting at the first dot in the last
+# pathname component; the root is everything before that.
+# It is always true that root+ext = p.
+#
+def splitext(p):
+	root, ext = '', ''
+	for c in p:
+		if c = '/':
+			root, ext = root + ext + c, ''
+		elif c = '.' or ext:
+			ext = ext + c
+		else:
+			root = root + c
+	return root, ext
+
+
 # Return the tail (basename) part of a path.
 #
 def basename(p):
@@ -120,6 +142,6 @@
 	exceptions = ('.', '..')
 	for name in names:
 		if name not in exceptions:
-			name = cat(top, name)
+			name = join(top, name)
 			if isdir(name):
 				walk(name, func, arg)
