Stuf
diff --git a/Changelog b/Changelog
index 1a7fd71..7a7f50a 100644
--- a/Changelog
+++ b/Changelog
@@ -6,6 +6,10 @@
 	* Several options are now moved into busybox.defs.h
 	* Now 'rm -R' and 'rm -r' both work.
 	* dd now properly handles input beyond 1 block from stdin.
+	* Fixed a bug where tar unpacked everything a directories. Moved some code 
+	    from createPath into mkdir where it belonged, thereby making tar work properly.
+	* Fixed an off-by-one bug in cat.  Given a list of file it wouldn't cat out the
+	    last file in the list.
 
 	-Erik Andrsen
 
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..20cd41e
--- /dev/null
+++ b/TODO
@@ -0,0 +1,9 @@
+TODO list for busybox in no particular order
+
+* Add in a mini syslogd
+* Allow tar to create archives with sockets, devices, and other special files
+* Add in a mini modprobe, insmod, rmmod
+* poweroff
+* Change init so halt, reboot (and poweroff) work with an initrd
+    when init is not PID 1
+* 
diff --git a/cat.c b/cat.c
index 1f4ef4a..758a83e 100644
--- a/cat.c
+++ b/cat.c
@@ -49,14 +49,12 @@
     argv++;
 
     while (argc-- > 0) {
-	file = fopen(*argv, "r");
+	file = fopen(*(argv++), "r");
 	if (file == NULL) {
 	    perror(*argv);
 	    exit(FALSE);
 	}
 	print_file( file);
-	argc--;
-	argv++;
     }
     exit(TRUE);
 }
diff --git a/coreutils/cat.c b/coreutils/cat.c
index 1f4ef4a..758a83e 100644
--- a/coreutils/cat.c
+++ b/coreutils/cat.c
@@ -49,14 +49,12 @@
     argv++;
 
     while (argc-- > 0) {
-	file = fopen(*argv, "r");
+	file = fopen(*(argv++), "r");
 	if (file == NULL) {
 	    perror(*argv);
 	    exit(FALSE);
 	}
 	print_file( file);
-	argc--;
-	argv++;
     }
     exit(TRUE);
 }
diff --git a/coreutils/ls.c b/coreutils/ls.c
index 3b38067..571c962 100644
--- a/coreutils/ls.c
+++ b/coreutils/ls.c
@@ -193,27 +193,34 @@
 		fputs(" ", stdout);
 #ifdef BB_FEATURE_LS_USERNAME
 		if (!(opts & DISP_NUMERIC)) {
-			scratch[8]='\0';
+			scratch[0]='\0';
 			my_getpwuid( scratch, info->st_uid);
+			scratch[8]='\0';
 			if (*scratch)
-				fputs(scratch, stdout);
-			else
-				writenum((long)info->st_uid,(short)0);
+				wr(scratch,8);
+			else {
+				writenum((long) info->st_uid,(short)8);
+				fputs(" ", stdout);
+			}
 		} else
 #endif
-		writenum((long)info->st_uid,(short)0);
+		{
+		    writenum((long) info->st_uid,(short)8);
+		    fputs(" ", stdout);
+		}
 		tab(16);
 #ifdef BB_FEATURE_LS_USERNAME
 		if (!(opts & DISP_NUMERIC)) {
-			scratch[8]='\0';
+			scratch[0]='\0';
 			my_getgrgid( scratch, info->st_gid);
+			scratch[8]='\0';
 			if (*scratch)
-				fputs(scratch, stdout);
-			else
-				writenum((long)info->st_gid,(short)0);
+				wr(scratch,8);
+			else 
+				writenum((long) info->st_gid,(short)8);
 		} else
 #endif
-		writenum((long)info->st_gid,(short)0);
+		writenum((long) info->st_gid,(short)8);
 		tab(17);
 		if (S_ISBLK(mode) || S_ISCHR(mode)) {
 			writenum((long)MAJOR(info->st_rdev),(short)3);
diff --git a/ls.c b/ls.c
index 3b38067..571c962 100644
--- a/ls.c
+++ b/ls.c
@@ -193,27 +193,34 @@
 		fputs(" ", stdout);
 #ifdef BB_FEATURE_LS_USERNAME
 		if (!(opts & DISP_NUMERIC)) {
-			scratch[8]='\0';
+			scratch[0]='\0';
 			my_getpwuid( scratch, info->st_uid);
+			scratch[8]='\0';
 			if (*scratch)
-				fputs(scratch, stdout);
-			else
-				writenum((long)info->st_uid,(short)0);
+				wr(scratch,8);
+			else {
+				writenum((long) info->st_uid,(short)8);
+				fputs(" ", stdout);
+			}
 		} else
 #endif
-		writenum((long)info->st_uid,(short)0);
+		{
+		    writenum((long) info->st_uid,(short)8);
+		    fputs(" ", stdout);
+		}
 		tab(16);
 #ifdef BB_FEATURE_LS_USERNAME
 		if (!(opts & DISP_NUMERIC)) {
-			scratch[8]='\0';
+			scratch[0]='\0';
 			my_getgrgid( scratch, info->st_gid);
+			scratch[8]='\0';
 			if (*scratch)
-				fputs(scratch, stdout);
-			else
-				writenum((long)info->st_gid,(short)0);
+				wr(scratch,8);
+			else 
+				writenum((long) info->st_gid,(short)8);
 		} else
 #endif
-		writenum((long)info->st_gid,(short)0);
+		writenum((long) info->st_gid,(short)8);
 		tab(17);
 		if (S_ISBLK(mode) || S_ISCHR(mode)) {
 			writenum((long)MAJOR(info->st_rdev),(short)3);