diff --git a/objects/flash_bios_obj.c b/objects/flash_bios_obj.c
index b16aca0..319cd84 100644
--- a/objects/flash_bios_obj.c
+++ b/objects/flash_bios_obj.c
@@ -58,9 +58,9 @@
 		{
 			printf("ERROR FlashControl: Unable to init\n");
 		}
-		//TODO: have to tune flash twice
-		sleep(1);
-		update(f,obj_path);
+		sleep(3);
+		rc = update(f,obj_path);
+		
 	}
 	return TRUE;
 }
@@ -422,7 +422,7 @@
   guint id;
   loop = g_main_loop_new (NULL, FALSE);
 
-  signal(SIGCHLD, catch_child);
+  //signal(SIGCHLD, catch_child);
   id = g_bus_own_name (DBUS_TYPE,
                        dbus_name,
                        G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT |
diff --git a/objects/flasher_obj.c b/objects/flasher_obj.c
index 93faa69..2c46760 100644
--- a/objects/flasher_obj.c
+++ b/objects/flasher_obj.c
@@ -52,7 +52,8 @@
 static int32_t			ffs_index = -1;
 
 static uint8_t FLASH_OK = 0;
-static uint8_t FLASH_ERROR = 1;
+static uint8_t FLASH_ERROR = 0x01;
+static uint8_t FLASH_SETUP_ERROR = 0x02;
 static struct blocklevel_device *bl;
 
 static int erase_chip(void)
@@ -209,7 +210,7 @@
 	close_devs();
 }
 
-static void flash_access_setup_bmc(bool use_lpc, bool need_write)
+static int flash_access_setup_bmc(bool use_lpc, bool need_write)
 {
 	int rc;
 	printf("Setting up BMC flash\n");
@@ -220,18 +221,19 @@
 	rc = ast_sf_open(AST_SF_TYPE_BMC, &fl_ctrl);
 	if (rc) {
 		fprintf(stderr, "Failed to open controller\n");
-		exit(1);
+		return FLASH_SETUP_ERROR;
 	}
 
 	/* Open flash chip */
 	rc = flash_init(fl_ctrl, &fl_chip);
 	if (rc) {
 		fprintf(stderr, "Failed to open flash chip\n");
-		exit(1);
+		return FLASH_SETUP_ERROR;
 	}
 
 	/* Setup cleanup function */
 	atexit(flash_access_cleanup_bmc);
+	return FLASH_OK;
 }
 
 static void flash_access_cleanup_pnor(void)
@@ -254,7 +256,7 @@
 	close_devs();
 }
 
-static void flash_access_setup_pnor(bool use_lpc, bool use_sfc, bool need_write)
+static int flash_access_setup_pnor(bool use_lpc, bool use_sfc, bool need_write)
 {
 	int rc;
 	printf("Setting up BIOS flash\n");
@@ -268,7 +270,7 @@
 		rc = sfc_open(&fl_ctrl);
 		if (rc) {
 			fprintf(stderr, "Failed to open controller\n");
-			exit(1);
+			return FLASH_SETUP_ERROR;
 		}
 		using_sfc = true;
 	} else {
@@ -277,7 +279,7 @@
 		rc = ast_sf_open(AST_SF_TYPE_PNOR, &fl_ctrl);
 		if (rc) {
 			fprintf(stderr, "Failed to open controller\n");
-			exit(1);
+			return FLASH_SETUP_ERROR;
 		}
 #ifdef __powerpc__
 	}
@@ -287,7 +289,7 @@
 	rc = flash_init(fl_ctrl, &fl_chip);
 	if (rc) {
 		fprintf(stderr, "Failed to open flash chip\n");
-		exit(1);
+		return FLASH_SETUP_ERROR;
 	}
 
 	/* Unlock flash (PNOR only) */
@@ -296,6 +298,7 @@
 
 	/* Setup cleanup function */
 	atexit(flash_access_cleanup_pnor);
+	return FLASH_OK;
 }
 
 uint8_t flash(FlashControl* flash_control,bool bmc_flash, uint32_t address, char* write_file, char* obj_path)
@@ -313,22 +316,28 @@
 	if (bmc_flash) {
 		if (!has_ast) {
 			fprintf(stderr, "No BMC on this platform\n");
-			return FLASH_ERROR;
+			return FLASH_SETUP_ERROR;
 		}
-		flash_access_setup_bmc(use_lpc, erase || program);
+		rc = flash_access_setup_bmc(use_lpc, erase || program);
+		if (rc) {
+			return FLASH_SETUP_ERROR;
+		}
 	} else {
 		if (!has_ast && !has_sfc) {
 			fprintf(stderr, "No BMC nor SFC on this platform\n");
-			return FLASH_ERROR;
+			return FLASH_SETUP_ERROR;
 		}
-		flash_access_setup_pnor(use_lpc, has_sfc, erase || program);
+		rc = flash_access_setup_pnor(use_lpc, has_sfc, erase || program);
+		if (rc) {
+			return FLASH_SETUP_ERROR;
+		}
 	}
 
 	rc = flash_get_info(fl_chip, &fl_name,
 			    &fl_total_size, &fl_erase_granule);
 	if (rc) {
 		fprintf(stderr, "Error %d getting flash info\n", rc);
-		return FLASH_ERROR;
+		return FLASH_SETUP_ERROR;
 	}
 #endif
 	if (strcmp(write_file,"")!=0)
@@ -407,7 +416,7 @@
 	}
 
 	int rc = flash(flash_control,bmc_flash,address,cmd->argv[2],cmd->argv[3]);
-	if (rc == FLASH_ERROR) {
+	if (rc) {
 		flash_message(connection,cmd->argv[3],"error","Flash Error");
 	} else {
 		flash_message(connection,cmd->argv[3],"done","");
