diff --git a/Modules/stropmodule.c b/Modules/stropmodule.c
index 4e9d0ee..1cee66b 100644
--- a/Modules/stropmodule.c
+++ b/Modules/stropmodule.c
@@ -35,16 +35,13 @@
 
 
 static object *
-strop_split(self, args)
-	object *self; /* Not used */
-	object *args;
-{
-	int len, i, j, err;
+split_whitespace(s, len)
 	char *s;
+	int len;
+{
+	int i, j, err;
 	object *list, *item;
 
-	if (!getargs(args, "s#", &s, &len))
-		return NULL;
 	list = newlistobject(0);
 	if (list == NULL)
 		return NULL;
@@ -86,8 +83,12 @@
 	char *s, *sub;
 	object *list, *item;
 
-	if (!getargs(args, "(s#s#)", &s, &len, &sub, &n))
+	sub = NULL;
+	n = 0;
+	if (!newgetargs(args, "s#|z#", &s, &len, &sub, &n))
 		return NULL;
+	if (sub == NULL)
+		return split_whitespace(s, len);
 	if (n == 0) {
 		err_setstr(ValueError, "empty separator");
 		return NULL;
@@ -138,8 +139,14 @@
 	char *sep, *p;
 	int seplen, seqlen, reslen, itemlen, i;
 
-	if (!getargs(args, "(Os#)", &seq, &sep, &seplen))
+	sep = NULL;
+	seplen = 0;
+	if (!newgetargs(args, "O|s#", &seq, &sep, &seplen))
 		return NULL;
+	if (sep == NULL) {
+		sep = " ";
+		seplen = 1;
+	}
 	if (is_listobject(seq)) {
 		getitem = getlistitem;
 		seqlen = getlistsize(seq);
@@ -503,11 +510,12 @@
 	{"atoi",	strop_atoi},
 	{"atol",	strop_atol},
 	{"find",	strop_find},
-	{"joinfields",	strop_joinfields},
+	{"join",	strop_joinfields, 1},
+	{"joinfields",	strop_joinfields, 1},
 	{"lower",	strop_lower},
 	{"rfind",	strop_rfind},
-	{"split",	strop_split},
-	{"splitfields",	strop_splitfields},
+	{"split",	strop_splitfields, 1},
+	{"splitfields",	strop_splitfields, 1},
 	{"strip",	strop_strip},
 	{"swapcase",	strop_swapcase},
 	{"upper",	strop_upper},
