diff --git a/dfs.c b/dfs.c
index 28ddaed99bc83a29b541037edece010aef671a6b..a3cf1716d57a8ae0f77507e792f50fc59c69080a 100644
--- a/dfs.c
+++ b/dfs.c
@@ -34,7 +34,6 @@ bool search(char *path, struct list_head *list)
 void clear_list(struct list_head *list)
 {
 	struct directory *dr, *tmp;
-	print_list_dfs(list);
 
 	if (list_empty(list))
 		return;
diff --git a/dongle_infrastructure.c b/dongle_infrastructure.c
index ba8a5f5bdbb9ba1b6314c79af1b4658b10246e76..dfbe529bd729f15e1a9502e1ab6eaa9bd92f4ef9 100644
--- a/dongle_infrastructure.c
+++ b/dongle_infrastructure.c
@@ -54,7 +54,6 @@ int tag_missing_devices(void)
 		}
 
 		dev->missing++;
-		printf("added to missing counter!\n");
 		if (dev->missing == 1)
 			delete_device_by_obj(dev);
 	}
@@ -121,7 +120,6 @@ int delete_device_by_name(char *name)
 
 int delete_device_by_obj(struct device *dev)
 {
-	printf("lets remove %s\n", dev->usb.if_name);
 	free(dev->usb.if_name);
 	free(dev->ip);
 	list_del(&dev->list);
@@ -140,6 +138,29 @@ struct device *search_list(char *name)
 	return NULL;
 }
 
+char *lexer_chr(char **input, char delimiter)
+{
+	char *token, *substr;
+printf("%s\n", *input);
+	if (strlen(*input) == 0) {
+		debug_print("empty input!\n");
+		return NULL;
+	}
+printf("%s\n", *input);
+	token = strchr(*input, delimiter);
+	printf("%s\n", token);
+	if (token) {
+		*token = '\0';
+		substr = strdup(*input);
+		*input = token + 1;
+	} else {
+		substr = strdup(*input);
+		*input[0] = '\0';
+	}
+
+	return substr;
+}
+
 char *lexer(char **input, char *delimiter)
 {
 	char *token, *substr;
@@ -212,6 +233,7 @@ char *get_usb_stat(char *path, char *dir, char *stat)
 	fgets(contents, 1024, f);
 	remove_newline(contents);
 	fclose(f);
+
 	return strdup(contents);
 fail:
 	return NULL;
@@ -273,7 +295,6 @@ char *get_device_name(char *dir_name)
 				}
 
 				if (strstr(dr->path, "net")) {
-					printf("de->d_name %s\n", de->d_name);
 					name = strdup(de->d_name);
 					goto success;
 				}
@@ -313,7 +334,6 @@ int get_devices(void)
 				continue;
 
 			snprintf(product_path, PATH_MAX, "%s%s/product", usb_path, de->d_name);
-			printf("product_path %s\n", product_path);
 			memset(&st, 0, sizeof(struct stat));
 
 			rv = stat(product_path, &st);
@@ -376,6 +396,39 @@ fail:
 	return NULL;
 }
 
+char *get_device_ip_alt(char *device_name)
+{
+	char route[1024];
+	char *iface, *destination, *gateway, *flags;
+	FILE *fp;
+
+	fp = fopen("/proc/net/route", "r");
+	if (!fp) {
+		perror("fopen");
+		goto fail;
+	}
+
+	while ((fgets(route, 1024, fp)) != NULL) {
+		remove_newline(route);
+		/*
+			1. delimiter on first tab, check if = usb0, else continue
+			2. delimiter on 4th tab, convert to binary, check if 3rd bit = 1, else continue
+			3. get destintion ip
+		*/
+		printf("route %s\n", route);
+		printf("some more test stuff\n");
+		iface = lexer_chr(&route, 'a');
+		printf("iface %s\n", iface);
+		destination = lexer_chr(&route, 'a');
+		gateway = lexer_chr(&route, 'a');
+		flags = lexer_chr(&route, 'a');
+		printf("iface %s, destination %s, gateway %s, flags %s\n", iface, destination, gateway, flags);
+	}
+	fclose(fp);
+fail:
+	return NULL;
+}
+
 char *get_device_ip(char *device_name)
 {
 	int fd, rv;
@@ -495,6 +548,14 @@ int clear(struct ubus_context *ctx, struct ubus_object *obj,
 	return 0;
 }
 
+int test(struct ubus_context *ctx, struct ubus_object *obj,
+			struct ubus_request_data *req, const char *method,
+			struct blob_attr *msg)
+{
+	get_device_ip_alt(NULL);
+	return 0;
+}
+
 int remove_device(struct ubus_context *ctx, struct ubus_object *obj,
 			struct ubus_request_data *req, const char *method,
 			struct blob_attr *msg)
@@ -516,7 +577,7 @@ fail:
 }
 
 struct ubus_method infrastructure_object_methods[] = {
-	//UBUS_METHOD_NOARG("test", test),
+	UBUS_METHOD_NOARG("test", test),
 	UBUS_METHOD_NOARG("list", print_list),
 	UBUS_METHOD_NOARG("clear", clear),
 	UBUS_METHOD("remove_device", remove_device, dev_policy)