diff --git a/Makefile b/Makefile
index 6c36b8f..59d6485 100644
--- a/Makefile
+++ b/Makefile
@@ -4,7 +4,7 @@
 
 # Comment out the following to make a debuggable build
 # Leave this off for production use.
-#DODEBUG=true
+DODEBUG=true
 
 #This will choke on a non-debian system
 ARCH=`uname -m | sed -e 's/i.86/i386/' | sed -e 's/sparc.*/sparc/'`
@@ -41,7 +41,7 @@
 	- ./busybox.mkll | sort >busybox.links
 	
 clean:
-	- rm -f busybox busybox.links *~ *.o 
+	- rm -f busybox busybox.links *~ *.o core 
 
 distclean: clean
 	- rm -f busybox
diff --git a/busybox.def.h b/busybox.def.h
index e011bf9..a236520 100644
--- a/busybox.def.h
+++ b/busybox.def.h
@@ -19,7 +19,7 @@
 #define BB_FIND
 #define BB_GREP
 ////#define BB_HALT
-//#define BB_INIT
+#define BB_INIT
 #define BB_KILL
 ////#define BB_LENGTH
 #define BB_LN
diff --git a/coreutils/ls.c b/coreutils/ls.c
index 99cedf5..7a1b0f3 100644
--- a/coreutils/ls.c
+++ b/coreutils/ls.c
@@ -667,11 +667,11 @@
 	while (argi < argc)
 		i |= list_item(argv[argi++]);
 	newline();
-	return i;
+	exit( i);
 
 print_usage_message:
 	fprintf(stderr, "Usage: %s\n", ls_usage);
-	return 1;
+	exit( FALSE);
 }
 
 #endif
diff --git a/init.c b/init.c
index 4771722..2860272 100644
--- a/init.c
+++ b/init.c
@@ -249,7 +249,7 @@
 configure_terminals( int serial_cons );
 
 extern int
-init_main(struct FileInfo * i, int argc, char * * argv)
+init_main(int argc, char * * argv)
 {
 	static const char * const	rc = "etc/rc";
 	const char *				arguments[100];
@@ -370,8 +370,10 @@
 	}
 	arguments[j] = 0;
 
-	if ( run_rc )
+	if ( run_rc ) {
+		printf("running %s\n",rc);
 		waitfor(run(rc, arguments, console, 0));
+	}
 
 	if ( 0 == create_swap) {
 	  if (unlink("/etc/swappartition")) {
diff --git a/init/init.c b/init/init.c
index 4771722..2860272 100644
--- a/init/init.c
+++ b/init/init.c
@@ -249,7 +249,7 @@
 configure_terminals( int serial_cons );
 
 extern int
-init_main(struct FileInfo * i, int argc, char * * argv)
+init_main(int argc, char * * argv)
 {
 	static const char * const	rc = "etc/rc";
 	const char *				arguments[100];
@@ -370,8 +370,10 @@
 	}
 	arguments[j] = 0;
 
-	if ( run_rc )
+	if ( run_rc ) {
+		printf("running %s\n",rc);
 		waitfor(run(rc, arguments, console, 0));
+	}
 
 	if ( 0 == create_swap) {
 	  if (unlink("/etc/swappartition")) {
diff --git a/ls.c b/ls.c
index 99cedf5..7a1b0f3 100644
--- a/ls.c
+++ b/ls.c
@@ -667,11 +667,11 @@
 	while (argi < argc)
 		i |= list_item(argv[argi++]);
 	newline();
-	return i;
+	exit( i);
 
 print_usage_message:
 	fprintf(stderr, "Usage: %s\n", ls_usage);
-	return 1;
+	exit( FALSE);
 }
 
 #endif
