diff --git a/src/mod/applications/mod_fifo/mod_fifo.c b/src/mod/applications/mod_fifo/mod_fifo.c
index 949717d93c..2bc691eb0e 100644
--- a/src/mod/applications/mod_fifo/mod_fifo.c
+++ b/src/mod/applications/mod_fifo/mod_fifo.c
@@ -4484,15 +4484,9 @@ static switch_status_t load_config(int reload, int del_all)
 
 	if ((fifos = switch_xml_child(cfg, "fifos"))) {
 		for (fifo = switch_xml_child(fifos, "fifo"); fifo; fifo = fifo->next) {
-			const char *name, *outbound_strategy;
+			const char *name, *sp;
 			const char *val;
-			int imp = 0, outbound_per_cycle = 1, outbound_priority = 5;
-			int simo_i = 1;
-			int taking_calls_i = 1;
-			int timeout_i = 60;
-			int lag_i = 10;
-			int ring_timeout = 60;
-			int default_lag = 30;
+			int i, importance = 0;
 
 			if (!(name = switch_xml_attr(fifo, "name"))) {
 				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "fifo has no name!\n");
@@ -4504,15 +4498,13 @@ static switch_status_t load_config(int reload, int del_all)
 				continue;
 			}
 
-			if ((val = switch_xml_attr(fifo, "importance"))) {
-				if ((imp = atoi(val)) < 0) {
-					imp = 0;
-				}
+			if ((val = switch_xml_attr(fifo, "importance")) && !(i = atoi(val)) < 0) {
+				importance = i;
 			}
 
 			switch_mutex_lock(globals.mutex);
 			if (!(node = switch_core_hash_find(globals.fifo_hash, name))) {
-				node = create_node(name, imp, globals.sql_mutex);
+				node = create_node(name, importance, globals.sql_mutex);
 			}
 
 			if ((val = switch_xml_attr(fifo, "outbound_name"))) {
@@ -4523,64 +4515,54 @@ static switch_status_t load_config(int reload, int del_all)
 			switch_assert(node);
 			switch_mutex_lock(node->mutex);
 
-			outbound_strategy = switch_xml_attr(fifo, "outbound_strategy");
+			if ((sp = switch_xml_attr(fifo, "outbound_strategy"))) {
+				node->outbound_strategy = parse_strategy(sp);
+				node->has_outbound = 1;
+			}
 
+			node->outbound_per_cycle = 1;
 			if ((val = switch_xml_attr(fifo, "outbound_per_cycle"))) {
-				if ((outbound_per_cycle = atoi(val)) < 0) {
-					outbound_per_cycle = 1;
+				if (!(i = atoi(val)) < 0) {
+					node->outbound_per_cycle = i;
 				}
 				node->has_outbound = 1;
 			}
 
 			if ((val = switch_xml_attr(fifo, "retry_delay"))) {
-				int tmp;
-				if ((tmp = atoi(val)) < 0) {
-					tmp = 0;
-				}
-				node->retry_delay = tmp;
+				if ((i = atoi(val)) < 0) i = 0;
+				node->retry_delay = i;
 			}
 
+			node->outbound_priority = 5;
 			if ((val = switch_xml_attr(fifo, "outbound_priority"))) {
-				outbound_priority = atoi(val);
-				if (outbound_priority < 1 || outbound_priority > 10) {
-					outbound_priority = 5;
+				i = atoi(val);
+				if (!(i < 1 || i > 10)) {
+					node->outbound_priority = i;
 				}
 				node->has_outbound = 1;
 			}
 
+			node->ring_timeout = 60;
 			if ((val = switch_xml_attr(fifo, "outbound_ring_timeout"))) {
-				int tmp = atoi(val);
-				if (tmp > 10) {
-					ring_timeout = tmp;
+				if ((i = atoi(val)) > 10) {
+					node->ring_timeout = i;
 				} else {
 					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Invalid ring_timeout: must be > 10 for queue %s\n", node->name);
 				}
 			}
 
+			node->default_lag = 30;
 			if ((val = switch_xml_attr(fifo, "outbound_default_lag"))) {
-				int tmp = atoi(val);
-				if (tmp > 10) {
-					default_lag = tmp;
+				if ((i = atoi(val)) > 10) {
+					node->default_lag = i;
 				} else {
 					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Invalid default_lag: must be > 10 for queue %s\n", node->name);
 				}
 			}
 
-			node->ring_timeout = ring_timeout;
-			node->outbound_per_cycle = outbound_per_cycle;
-			node->outbound_priority = outbound_priority;
-			node->default_lag = default_lag;
-
-			if (outbound_strategy) {
-				node->outbound_strategy = parse_strategy(outbound_strategy);
-				node->has_outbound = 1;
-			}
-
 			for (member = switch_xml_child(fifo, "member"); member; member = member->next) {
-				const char *simo = switch_xml_attr_soft(member, "simo");
-				const char *lag = switch_xml_attr_soft(member, "lag");
-				const char *timeout = switch_xml_attr_soft(member, "timeout");
-				const char *taking_calls = switch_xml_attr_soft(member, "taking_calls");
+				const char *simo, *taking_calls, *timeout, *lag;
+				int simo_i = 1, taking_calls_i = 1, timeout_i = 60, lag_i = 10;
 				char *name_dup, *p;
 				char digest[SWITCH_MD5_DIGEST_STRING_SIZE] = { 0 };
 
@@ -4590,27 +4572,23 @@ static switch_status_t load_config(int reload, int del_all)
 					switch_md5_string(digest, (void *) member->txt, strlen(member->txt));
 				}
 
-				if (simo) {
+				if ((simo = switch_xml_attr_soft(member, "simo"))) {
 					simo_i = atoi(simo);
 				}
 
-				if (taking_calls) {
-					if ((taking_calls_i = atoi(taking_calls)) < 1) {
-						taking_calls_i = 1;
-					}
+				if ((taking_calls = switch_xml_attr_soft(member, "taking_calls"))
+					&& (taking_calls_i = atoi(taking_calls)) < 1) {
+					taking_calls_i = 1;
 				}
 
-				if (timeout) {
-					if ((timeout_i = atoi(timeout)) < 10) {
-						timeout_i = ring_timeout;
-					}
-
+				if ((timeout = switch_xml_attr_soft(member, "timeout"))
+					&& (timeout_i = atoi(timeout)) < 10) {
+					timeout_i = node->ring_timeout;
 				}
 
-				if (lag) {
-					if ((lag_i = atoi(lag)) < 0) {
-						lag_i = default_lag;
-					}
+				if ((lag = switch_xml_attr_soft(member, "lag"))
+					&& (lag_i = atoi(lag)) < 0) {
+					lag_i = node->default_lag;
 				}
 
 				name_dup = strdup(node->name);
@@ -4634,7 +4612,6 @@ static switch_status_t load_config(int reload, int del_all)
 			node->ready = 1;
 			node->is_static = 1;
 			switch_mutex_unlock(node->mutex);
-
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "%s configured\n", node->name);
 		}
 	}