diff --git a/src/qosmngr.c b/src/qosmngr.c
index 90173f3058f447d25b583ce40367ea5c34e60301..a059ceebd395a2b03bf4fbc782199bf0d79fd6fc 100644
--- a/src/qosmngr.c
+++ b/src/qosmngr.c
@@ -209,101 +209,91 @@ static int init_qstat(void)
 	struct json_object *lan = NULL;
 	if (!json_object_object_get_ex(network, "lan", &lan)) {
 		syslog(LOG_ERR, "lan object not found in board.json");
-		json_object_put(network);
 		json_object_put(board_json);
 		ret = -1;
 		goto free_and_return;
 	}
 
 	struct json_object *wan = NULL;
-	if (!json_object_object_get_ex(network, "wan", &wan)) {
-		syslog(LOG_ERR, "wan object not found in board.json");
-		ret = -1;
-		json_object_put(lan);
-		json_object_put(network);
-		json_object_put(board_json);
-		goto free_and_return;
+	struct json_object *wan_device = NULL;
+	size_t wan_device_count = 0;
+
+	// its not necessary that board.json has wan section at all
+	if (json_object_object_get_ex(network, "wan", &wan)) {
+		if (!json_object_object_get_ex(wan, "device", &wan_device)) {
+			syslog(LOG_ERR, "wan device object not found in board.json");
+			ret = -1;
+			json_object_put(board_json);
+			goto free_and_return;
+		}
+		wan_device_count = 1;
 	}
 
+
 	struct json_object *lan_ports = NULL;
 	if (!json_object_object_get_ex(lan, "ports", &lan_ports)) {
-		syslog(LOG_ERR, "ports object not found in board.json");
-		ret = -1;
-		json_object_put(lan);
-		json_object_put(wan);
-		json_object_put(network);
-		json_object_put(board_json);
-		goto free_and_return;
+		syslog(LOG_INFO, "lan ports object not found in board.json");
+		if (!json_object_object_get_ex(lan, "device", &lan_ports)) {
+			syslog(LOG_INFO, "lan device object not found in board.json");
+			ret = -1;
+			json_object_put(board_json);
+			goto free_and_return;
+		}
 	}
 
-	struct json_object *wan_device = NULL;
-	if (!json_object_object_get_ex(wan, "device", &wan_device)) {
-		syslog(LOG_ERR, "device object not found in board.json");
-		ret = -1;
-		json_object_put(lan_ports);
-		json_object_put(lan);
-		json_object_put(wan);
-		json_object_put(network);
-		json_object_put(board_json);
-		goto free_and_return;
-	}
 
 	// create json object for all ports by reading from lan ports and wan device
-	interface_count = json_object_array_length(lan_ports) + 1; // +1 for wan device
+	if (json_object_is_type(lan_ports, json_type_array)) {
+		interface_count = json_object_array_length(lan_ports) + wan_device_count;
+	} else {
+		// single lan port device
+		interface_count = 1 + wan_device_count;
+	}
         interfaces = (qos_interface_data *)calloc(interface_count,
 	                                          sizeof(qos_interface_data));
 	if (interfaces == NULL) {
 		syslog(LOG_ERR, "Initialization failed during memory allocation.");
 		ret = -1;
-		json_object_put(lan_ports);
-		json_object_put(wan_device);
-		json_object_put(lan);
-		json_object_put(wan);
-		json_object_put(network);
 		json_object_put(board_json);
 		goto free_and_return;
 	}
 
 	size_t i = 0;
-	for (i = 0; i < json_object_array_length(lan_ports); i++) {
-		struct json_object *l_port_name = json_object_array_get_idx(lan_ports, i);
-		if (!l_port_name) {
-			syslog(LOG_ERR, "cannot read lan ports array");
-			ret = -1;
-			json_object_put(lan_ports);
-			json_object_put(wan_device);
-			json_object_put(lan);
-			json_object_put(wan);
-			json_object_put(network);
-			json_object_put(board_json);
-			free(interfaces);
-			goto free_and_return;
-		}
+	if (json_object_is_type(lan_ports, json_type_array)) {
+		for (i = 0; i < json_object_array_length(lan_ports); i++) {
+			struct json_object *l_port_name = json_object_array_get_idx(lan_ports, i);
+			if (!l_port_name) {
+				syslog(LOG_ERR, "cannot read lan ports array");
+				ret = -1;
+				json_object_put(board_json);
+				free(interfaces);
+				goto free_and_return;
+			}
+
+			ret = init_interface(json_object_get_string(l_port_name), i);
 
-		ret = init_interface(json_object_get_string(l_port_name), i);
+			if (ret < 0) {
+				syslog(LOG_ERR, "cannot int lan ports qos");
+				json_object_put(board_json);
+				free(interfaces);
+				goto free_and_return;
+			}
 
+		}
+	} else {
+		ret = init_interface(json_object_get_string(lan_ports), i);
 		if (ret < 0) {
-			json_object_put(l_port_name);
-			json_object_put(lan_ports);
-			json_object_put(wan_device);
-			json_object_put(lan);
-			json_object_put(wan);
-			json_object_put(network);
+			syslog(LOG_ERR, "cannot int lan device qos");
 			json_object_put(board_json);
 			free(interfaces);
 			goto free_and_return;
 		}
-
-		json_object_put(l_port_name);
+		i++;
 	}
 
-	ret = init_interface(json_object_get_string(wan_device), i);
+	if (wan_device)
+		ret = init_interface(json_object_get_string(wan_device), i);
 
-	json_object_put(lan_ports);
-	json_object_put(wan_device);
-	json_object_put(lan);
-	json_object_put(wan);
-	json_object_put(network);
 	json_object_put(board_json);
 
 free_and_return: