diff -Naur busybox-1.00-pre3.orig/coreutils/echo.c busybox-1.00-pre3/coreutils/echo.c
--- busybox-1.00-pre3.orig/coreutils/echo.c	2003-03-19 12:11:33.000000000 +0300
+++ busybox-1.00-pre3/coreutils/echo.c	2003-11-07 17:47:35.000000000 +0300
@@ -122,7 +122,11 @@
 #endif
 
 DONE:
-	bb_fflush_stdout_and_exit(EXIT_SUCCESS);
+#ifdef CONFIG_FEATURE_BUILTIN_ECHO
+        return EXIT_SUCCESS;
+#else
+        bb_fflush_stdout_and_exit(EXIT_SUCCESS);
+#endif
 }
 
 /*-
diff -Naur busybox-1.00-pre3.orig/coreutils/test.c busybox-1.00-pre3/coreutils/test.c
--- busybox-1.00-pre3.orig/coreutils/test.c	2003-07-15 01:20:45.000000000 +0400
+++ busybox-1.00-pre3/coreutils/test.c	2003-11-07 17:47:35.000000000 +0300
@@ -188,19 +188,19 @@
 	/* Implement special cases from POSIX.2, section 4.62.4 */
 	switch (argc) {
 	case 1:
-		exit(1);
+		return (1);
 	case 2:
-		exit(*argv[1] == '\0');
+		return (*argv[1] == '\0');
 	case 3:
 		if (argv[1][0] == '!' && argv[1][1] == '\0') {
-			exit(!(*argv[2] == '\0'));
+			return (!(*argv[2] == '\0'));
 		}
 		break;
 	case 4:
 		if (argv[1][0] != '!' || argv[1][1] != '\0') {
 			if (t_lex(argv[2]), t_wp_op && t_wp_op->op_type == BINOP) {
 				t_wp = &argv[1];
-				exit(binop() == 0);
+				return (binop() == 0);
 			}
 		}
 		break;
@@ -208,7 +208,7 @@
 		if (argv[1][0] == '!' && argv[1][1] == '\0') {
 			if (t_lex(argv[3]), t_wp_op && t_wp_op->op_type == BINOP) {
 				t_wp = &argv[2];
-				exit(!(binop() == 0));
+				return (!(binop() == 0));
 			}
 		}
 		break;
diff -Naur busybox-1.00-pre3.orig/include/usage.h busybox-1.00-pre3/include/usage.h
--- busybox-1.00-pre3.orig/include/usage.h	2003-08-29 18:18:26.000000000 +0400
+++ busybox-1.00-pre3/include/usage.h	2003-11-07 17:47:59.000000000 +0300
@@ -1760,6 +1760,13 @@
 	"quit\n" \
 	"221 foobar closing connection\n" 
 
+#define nice_trivial_usage \
+	"[OPTION] [COMMAND [ARG]...]"
+#define nice_full_usage \
+	"Run  COMMAND with an adjusted scheduling priority."
+#define nice_example_usage \
+	"$ nice -n 0 /tmp/foo \n"
+
 #define netstat_trivial_usage \
 	"[-laenrtuwx]"
 #define netstat_full_usage \
diff -Naur busybox-1.00-pre3.orig/shell/Config.in busybox-1.00-pre3/shell/Config.in
--- busybox-1.00-pre3.orig/shell/Config.in	2003-09-12 08:51:25.000000000 +0400
+++ busybox-1.00-pre3/shell/Config.in	2003-11-07 17:47:59.000000000 +0300
@@ -53,6 +53,34 @@
 	help
 	  Enable job control in the ash shell.
 
+config CONFIG_ASH_PIPE_OPTIMIZATION
+        bool "  Enable ash pipe optimization "
+        default y
+        depends on CONFIG_ASH
+        help
+          Eliminate cat at the beginning of the pipe.
+
+config CONFIG_FEATURE_BUILTIN_TEST
+	bool "  Builtin test command"
+	default y
+	depends on CONFIG_ASH
+	help
+	  Builtin test command"
+
+config CONFIG_FEATURE_BUILTIN_ECHO
+        bool "  Builtin echo command"
+        default y
+        depends on CONFIG_ASH
+        help
+          Builtin echo command"
+
+config CONFIG_FEATURE_BUILTIN_PIDOF
+        bool "  Builtin pidof command"
+        default y
+        depends on CONFIG_ASH && CONFIG_PIDOF
+        help
+          Builtin pidof command"
+
 config CONFIG_ASH_ALIAS
 	bool "  Enable alias support"
 	default y
diff -Naur busybox-1.00-pre3.orig/shell/ash.c busybox-1.00-pre3/shell/ash.c
--- busybox-1.00-pre3.orig/shell/ash.c	2003-09-02 06:36:17.000000000 +0400
+++ busybox-1.00-pre3/shell/ash.c	2003-11-07 17:47:59.000000000 +0300
@@ -1259,6 +1259,16 @@
 #ifdef JOBS
 static int killcmd(int, char **);
 #endif
+#ifdef CONFIG_FEATURE_BUILTIN_TEST
+static int testcmd(int, char **);
+#endif
+#ifdef CONFIG_FEATURE_BUILTIN_ECHO
+static int echocmd(int, char**);
+#endif
+#ifdef CONFIG_FEATURE_BUILTIN_PIDOF
+static int pidofcmd(int, char **); 
+#endif
+
 
 /*      $NetBSD: mail.h,v 1.9 2002/11/24 22:35:40 christos Exp $        */
 
@@ -1281,39 +1291,6 @@
 	/* unsigned flags; */
 };
 
-#ifdef CONFIG_ASH_CMDCMD
-# ifdef JOBS
-#  ifdef CONFIG_ASH_ALIAS
-#    define COMMANDCMD (builtincmd + 7)
-#    define EXECCMD (builtincmd + 10)
-#  else
-#    define COMMANDCMD (builtincmd + 6)
-#    define EXECCMD (builtincmd + 9)
-#  endif
-# else /* ! JOBS */
-#  ifdef CONFIG_ASH_ALIAS
-#    define COMMANDCMD (builtincmd + 6)
-#    define EXECCMD (builtincmd + 9)
-#  else
-#    define COMMANDCMD (builtincmd + 5)
-#    define EXECCMD (builtincmd + 8)
-#  endif
-# endif /* JOBS */
-#else   /* ! CONFIG_ASH_CMDCMD */
-# ifdef JOBS
-#  ifdef CONFIG_ASH_ALIAS
-#    define EXECCMD (builtincmd + 9)
-#  else
-#    define EXECCMD (builtincmd + 8)
-#  endif
-# else /* ! JOBS */
-#  ifdef CONFIG_ASH_ALIAS
-#    define EXECCMD (builtincmd + 8)
-#  else
-#    define EXECCMD (builtincmd + 7)
-#  endif
-# endif /* JOBS */
-#endif /* CONFIG_ASH_CMDCMD */
 
 #define BUILTIN_NOSPEC  "0"
 #define BUILTIN_SPECIAL "1"
@@ -1328,65 +1305,21 @@
 #define IS_BUILTIN_REGULAR(builtincmd) ((builtincmd)->name[0] & 2)
 
 static const struct builtincmd builtincmd[] = {
-	{ BUILTIN_SPEC_REG      ".", dotcmd },
-	{ BUILTIN_SPEC_REG      ":", truecmd },
-#ifdef CONFIG_ASH_ALIAS
-	{ BUILTIN_REG_ASSG      "alias", aliascmd },
-#endif
-#ifdef JOBS
-	{ BUILTIN_REGULAR       "bg", bgcmd },
-#endif
-	{ BUILTIN_SPEC_REG      "break", breakcmd },
-	{ BUILTIN_REGULAR       "cd", cdcmd },
-	{ BUILTIN_NOSPEC        "chdir", cdcmd },
-#ifdef CONFIG_ASH_CMDCMD
-	{ BUILTIN_REGULAR       "command", commandcmd },
-#endif
-	{ BUILTIN_SPEC_REG      "continue", breakcmd },
-	{ BUILTIN_SPEC_REG      "eval", evalcmd },
-	{ BUILTIN_SPEC_REG      "exec", execcmd },
-	{ BUILTIN_SPEC_REG      "exit", exitcmd },
-	{ BUILTIN_SPEC_REG_ASSG "export", exportcmd },
-	{ BUILTIN_REGULAR       "false", falsecmd },
-#ifdef JOBS
-	{ BUILTIN_REGULAR       "fg", fgcmd },
-#endif
-#ifdef CONFIG_ASH_GETOPTS
-	{ BUILTIN_REGULAR       "getopts", getoptscmd },
-#endif
-	{ BUILTIN_NOSPEC        "hash", hashcmd },
-#ifndef CONFIG_FEATURE_SH_EXTRA_QUIET
-	{ BUILTIN_NOSPEC        "help", helpcmd },
-#endif
-#ifdef JOBS
-	{ BUILTIN_REGULAR       "jobs", jobscmd },
-	{ BUILTIN_REGULAR       "kill", killcmd },
-#endif
-#ifdef CONFIG_ASH_MATH_SUPPORT
-	{ BUILTIN_NOSPEC        "let", letcmd },
-#endif
-	{ BUILTIN_ASSIGN        "local", localcmd },
-	{ BUILTIN_NOSPEC        "pwd", pwdcmd },
-	{ BUILTIN_REGULAR       "read", readcmd },
-	{ BUILTIN_SPEC_REG_ASSG "readonly", exportcmd },
-	{ BUILTIN_SPEC_REG      "return", returncmd },
-	{ BUILTIN_SPEC_REG      "set", setcmd },
-	{ BUILTIN_SPEC_REG      "shift", shiftcmd },
-	{ BUILTIN_SPEC_REG      "times", timescmd },
-	{ BUILTIN_SPEC_REG      "trap", trapcmd },
-	{ BUILTIN_REGULAR       "true", truecmd },
-	{ BUILTIN_NOSPEC        "type", typecmd },
-	{ BUILTIN_NOSPEC        "ulimit", ulimitcmd },
-	{ BUILTIN_REGULAR       "umask", umaskcmd },
-#ifdef CONFIG_ASH_ALIAS
-	{ BUILTIN_REGULAR       "unalias", unaliascmd },
-#endif
-	{ BUILTIN_SPEC_REG      "unset", unsetcmd },
-	{ BUILTIN_REGULAR       "wait", waitcmd },
+#define BUILTIN_COMMAND_SPEC(code, str, func) {str, func},
+#include "ash.d"
+{}
 };
 
-#define NUMBUILTINS  (sizeof (builtincmd) / sizeof (struct builtincmd) )
+enum {
+#define BUILTIN_COMMAND_SPEC(code, str, func) code,
+#include "ash.d"
+NUMBUILTINS
+};
 
+#ifdef CONFIG_ASH_CMDCMD
+#define COMMANDCMD (builtincmd + COMMAND_CMD)
+#endif
+#define EXECCMD (builtincmd + EXEC_CMD)
 
 
 struct cmdentry {
@@ -1678,7 +1611,8 @@
 
       /* from input.c: */
       {
-	      basepf.nextc = basepf.buf = basebuf;
+	      struct parsefile* pf = &basepf;
+	      pf->nextc = pf->buf = basebuf;
       }
 
       /* from trap.c: */
@@ -2678,6 +2612,14 @@
  * Called to reset things after an exception.
  */
 
+#ifdef CONFIG_FEATURE_BUILTIN_ECHO
+static int
+echocmd(int argc, char **argv)
+{
+        return echo_main(argc, argv);
+}
+#endif
+
 /*
  * The eval commmand.
  */
@@ -3028,6 +2970,23 @@
 }
 
 
+static int
+cat_file(union node *n)
+{
+#ifdef CONFIG_ASH_PIPE_OPTIMIZATION
+  if (n->type == NCMD
+            && n->ncmd.args != NULL
+      && strcmp(n->ncmd.args->narg.text, "cat") == 0
+            && n->ncmd.args->narg.next != NULL
+            && *n->ncmd.args->narg.next->narg.text != '-'
+      && n->ncmd.args->narg.next->narg.next == NULL)
+    {
+      return open(n->ncmd.args->narg.next->narg.text, O_RDONLY);
+    }
+#endif
+  return -1;
+}
+
 
 /*
  * Evaluate a pipeline.  All the processes in the pipeline are children
@@ -3057,7 +3016,11 @@
 		prehash(lp->n);
 		pip[1] = -1;
 		if (lp->next) {
-			if (pipe(pip) < 0) {
+                        if (prevfd < 0 && (prevfd = cat_file(lp->n)) >= 0) {
+			        // it is cat at the beginning of the pipe                           
+                                continue;
+                        }
+ 			if (pipe(pip) < 0) {
 				close(prevfd);
 				error("Pipe call failed");
 			}
@@ -3104,11 +3067,11 @@
 {
 	int saveherefd;
 
-	result->fd = -1;
+	result->fd = cat_file(n);
 	result->buf = NULL;
 	result->nleft = 0;
 	result->jp = NULL;
-	if (n == NULL) {
+	if (n == NULL || result->fd >= 0) {
 		goto out;
 	}
 
@@ -3562,6 +3525,24 @@
 	}
 }
 
+#ifdef CONFIG_FEATURE_BUILTIN_TEST
+static int
+testcmd(int argc, char** argv)
+{
+  bb_applet_name = argv[0];
+  return test_main(argc, argv);
+}
+#endif
+
+#ifdef CONFIG_FEATURE_BUILTIN_PIDOF
+static int
+pidofcmd(int argc, char** argv)
+{
+  bb_applet_name = argv[0];
+  return pidof_main(argc, argv);
+}
+#endif
+
 
 static int
 falsecmd(int argc, char **argv)
@@ -4943,7 +4924,9 @@
 		ckfree(in.buf);
 	if (in.fd >= 0) {
 		close(in.fd);
-		back_exitstatus = waitforjob(in.jp);
+		if (in.jp != NULL) { 
+			back_exitstatus = waitforjob(in.jp);
+		}
 	}
 	INTON;
 
diff -Naur busybox-1.00-pre3.orig/shell/ash.d busybox-1.00-pre3/shell/ash.d
--- busybox-1.00-pre3.orig/shell/ash.d	1970-01-01 03:00:00.000000000 +0300
+++ busybox-1.00-pre3/shell/ash.d	2003-11-07 17:47:59.000000000 +0300
@@ -0,0 +1,70 @@
+BUILTIN_COMMAND_SPEC(DOT_CMD,     BUILTIN_SPEC_REG      ".", dotcmd)
+BUILTIN_COMMAND_SPEC(COMMA_CMD,   BUILTIN_SPEC_REG      ":", truecmd)
+#ifdef CONFIG_FEATURE_BUILTIN_TEST
+BUILTIN_COMMAND_SPEC(RPAR_CMD,    BUILTIN_REGULAR       "[", testcmd)
+#endif
+#ifdef CONFIG_ASH_ALIAS
+BUILTIN_COMMAND_SPEC(ALIAS_CMD,   BUILTIN_REG_ASSG      "alias", aliascmd)
+#endif
+#ifdef JOBS
+BUILTIN_COMMAND_SPEC(BG_CMD,      BUILTIN_REGULAR       "bg", bgcmd)
+#endif
+BUILTIN_COMMAND_SPEC(BREAK_CMD,   BUILTIN_SPEC_REG      "break", breakcmd)
+BUILTIN_COMMAND_SPEC(CD_CMD,      BUILTIN_REGULAR       "cd", cdcmd)
+BUILTIN_COMMAND_SPEC(CHDIR_CMD,   BUILTIN_NOSPEC        "chdir", cdcmd)
+#ifdef CONFIG_ASH__CMD_CMD
+BUILTIN_COMMAND_SPEC(COMMAND_CMD, BUILTIN_REGULAR       "command", commandcmd)
+#endif
+BUILTIN_COMMAND_SPEC(CONTINUE_CMD,BUILTIN_SPEC_REG      "continue", breakcmd)
+#ifdef CONFIG_FEATURE_BUILTIN_ECHO
+BUILTIN_COMMAND_SPEC(ECHO_CMD,    BUILTIN_REGULAR       "echo", echocmd)
+#endif
+BUILTIN_COMMAND_SPEC(EVAL_CMD,    BUILTIN_SPEC_REG      "eval", evalcmd)
+BUILTIN_COMMAND_SPEC(EXEC_CMD,    BUILTIN_SPEC_REG      "exec", execcmd)
+BUILTIN_COMMAND_SPEC(EXIT_CMD,    BUILTIN_SPEC_REG      "exit", exitcmd)
+BUILTIN_COMMAND_SPEC(EXPORT_CMD,  BUILTIN_SPEC_REG_ASSG "export", exportcmd)
+BUILTIN_COMMAND_SPEC(FALSE_CMD,   BUILTIN_REGULAR       "false", falsecmd)
+#ifdef JOBS
+BUILTIN_COMMAND_SPEC(FG_CMD,      BUILTIN_REGULAR       "fg", fgcmd)
+#endif
+#ifdef CONFIG_ASH_GETOPTS
+BUILTIN_COMMAND_SPEC(GETOPTS_CMD, BUILTIN_REGULAR       "getopts", getoptscmd)
+#endif
+BUILTIN_COMMAND_SPEC(HASH_CMD,    BUILTIN_NOSPEC        "hash", hashcmd)
+#ifndef CONFIG_FEATURE_SH_EXTRA_QUIET
+BUILTIN_COMMAND_SPEC(HELP_CMD,    BUILTIN_NOSPEC        "help", helpcmd)
+#endif
+#ifdef JOBS
+BUILTIN_COMMAND_SPEC(JOBS_CMD,    BUILTIN_REGULAR       "jobs", jobscmd)
+BUILTIN_COMMAND_SPEC(KILL_CMD,    BUILTIN_REGULAR       "kill", killcmd)
+#endif
+#ifdef CONFIG_ASH_MATH_SUPPORT
+BUILTIN_COMMAND_SPEC(LET_CMD,     BUILTIN_NOSPEC        "let", letcmd)
+#endif
+BUILTIN_COMMAND_SPEC(LOCAL_CMD,   BUILTIN_ASSIGN        "local", localcmd)
+#ifdef CONFIG_FEATURE_BUILTIN_PIDOF
+BUILTIN_COMMAND_SPEC(PIDOF_CMD,   BUILTIN_REGULAR       "pidof", pidofcmd)
+#endif
+BUILTIN_COMMAND_SPEC(PWD_CMD,     BUILTIN_NOSPEC        "pwd", pwdcmd)
+BUILTIN_COMMAND_SPEC(READ_CMD,    BUILTIN_REGULAR       "read", readcmd)
+BUILTIN_COMMAND_SPEC(READONLY_CMD,BUILTIN_SPEC_REG_ASSG "readonly", exportcmd)
+BUILTIN_COMMAND_SPEC(RETURN_CMD,  BUILTIN_SPEC_REG      "return", returncmd)
+BUILTIN_COMMAND_SPEC(SET_CMD,     BUILTIN_SPEC_REG      "set", setcmd)
+BUILTIN_COMMAND_SPEC(SHIFT_CMD,   BUILTIN_SPEC_REG      "shift", shiftcmd)
+#ifdef CONFIG_FEATURE_BUILTIN_TEST
+BUILTIN_COMMAND_SPEC(TEST_CMD,    BUILTIN_REGULAR       "test", testcmd)
+#endif
+BUILTIN_COMMAND_SPEC(TIMES_CMD,   BUILTIN_SPEC_REG      "times", timescmd)
+BUILTIN_COMMAND_SPEC(TRAP_CMD,    BUILTIN_SPEC_REG      "trap", trapcmd)
+BUILTIN_COMMAND_SPEC(TRUE_CMD,    BUILTIN_REGULAR       "true", truecmd)
+BUILTIN_COMMAND_SPEC(TYPE_CMD,    BUILTIN_NOSPEC        "type", typecmd)
+BUILTIN_COMMAND_SPEC(ULIMIT_CMD,  BUILTIN_NOSPEC        "ulimit", ulimitcmd)
+BUILTIN_COMMAND_SPEC(UMASK_CMD,   BUILTIN_REGULAR       "umask", umaskcmd)
+#ifdef CONFIG_ASH_ALIAS
+BUILTIN_COMMAND_SPEC(UNALIAS_CMD, BUILTIN_REGULAR       "unalias", unaliascmd)
+#endif
+BUILTIN_COMMAND_SPEC(UNSET_CMD,   BUILTIN_SPEC_REG      "unset", unsetcmd)
+BUILTIN_COMMAND_SPEC(WAIT_CMD,    BUILTIN_REGULAR       "wait", waitcmd)
+
+
+#undef BUILTIN_COMMAND_SPEC