diff --git a/openbsc/src/libfilter/bsc_msg_acc.c b/openbsc/src/libfilter/bsc_msg_acc.c
index 947a7b2..cc6c444 100644
--- a/openbsc/src/libfilter/bsc_msg_acc.c
+++ b/openbsc/src/libfilter/bsc_msg_acc.c
@@ -52,29 +52,29 @@
 	return 1;
 }
 
-struct bsc_nat_acc_lst *bsc_nat_acc_lst_find(struct bsc_nat *nat, const char *name)
+struct bsc_nat_acc_lst *bsc_nat_acc_lst_find(struct llist_head *head, const char *name)
 {
 	struct bsc_nat_acc_lst *lst;
 
 	if (!name)
 		return NULL;
 
-	llist_for_each_entry(lst, &nat->access_lists, list)
+	llist_for_each_entry(lst, head, list)
 		if (strcmp(lst->name, name) == 0)
 			return lst;
 
 	return NULL;
 }
 
-struct bsc_nat_acc_lst *bsc_nat_acc_lst_get(struct bsc_nat *nat, const char *name)
+struct bsc_nat_acc_lst *bsc_nat_acc_lst_get(void *ctx, struct llist_head *head, const char *name)
 {
 	struct bsc_nat_acc_lst *lst;
 
-	lst = bsc_nat_acc_lst_find(nat, name);
+	lst = bsc_nat_acc_lst_find(head, name);
 	if (lst)
 		return lst;
 
-	lst = talloc_zero(nat, struct bsc_nat_acc_lst);
+	lst = talloc_zero(ctx, struct bsc_nat_acc_lst);
 	if (!lst) {
 		LOGP(DNAT, LOGL_ERROR, "Failed to allocate access list");
 		return NULL;
@@ -89,7 +89,7 @@
 
 	INIT_LLIST_HEAD(&lst->fltr_list);
 	lst->name = talloc_strdup(lst, name);
-	llist_add_tail(&lst->list, &nat->access_lists);
+	llist_add_tail(&lst->list, head);
 	return lst;
 }
 
diff --git a/openbsc/src/libfilter/bsc_msg_filter.c b/openbsc/src/libfilter/bsc_msg_filter.c
index 8f2e1ca..1f7a14e 100644
--- a/openbsc/src/libfilter/bsc_msg_filter.c
+++ b/openbsc/src/libfilter/bsc_msg_filter.c
@@ -168,8 +168,8 @@
 	}
 
 
-	bsc_lst = bsc_nat_acc_lst_find(bsc->nat, bsc->cfg->acc_lst_name);
-	nat_lst = bsc_nat_acc_lst_find(bsc->nat, bsc->nat->acc_lst_name);
+	bsc_lst = bsc_nat_acc_lst_find(&bsc->nat->access_lists, bsc->cfg->acc_lst_name);
+	nat_lst = bsc_nat_acc_lst_find(&bsc->nat->access_lists, bsc->nat->acc_lst_name);
 
 
 	if (bsc_lst) {
diff --git a/openbsc/src/libfilter/bsc_msg_vty.c b/openbsc/src/libfilter/bsc_msg_vty.c
index 070a03d..79cf03d 100644
--- a/openbsc/src/libfilter/bsc_msg_vty.c
+++ b/openbsc/src/libfilter/bsc_msg_vty.c
@@ -18,13 +18,13 @@
  */
 
 #include <openbsc/bsc_msg_filter.h>
-#include <openbsc/bsc_nat.h>
 #include <openbsc/gsm_data.h>
 #include <openbsc/vty.h>
 
 #include <osmocom/vty/misc.h>
 
-static struct bsc_nat *_nat;
+static struct llist_head *_acc_lst;
+static void *_ctx;
 
 DEFUN(cfg_lst_no,
       cfg_lst_no_cmd,
@@ -33,7 +33,7 @@
       "The access-list to remove\n")
 {
 	struct bsc_nat_acc_lst *acc;
-	acc = bsc_nat_acc_lst_find(_nat, argv[0]);
+	acc = bsc_nat_acc_lst_find(_acc_lst, argv[0]);
 	if (!acc)
 		return CMD_WARNING;
 
@@ -47,7 +47,7 @@
       SHOW_STR "IMSI access list\n" "Name of the access list\n")
 {
 	struct bsc_nat_acc_lst *acc;
-	acc = bsc_nat_acc_lst_find(_nat, argv[0]);
+	acc = bsc_nat_acc_lst_find(_acc_lst, argv[0]);
 	if (!acc)
 		return CMD_WARNING;
 
@@ -68,7 +68,7 @@
 	struct bsc_nat_acc_lst *acc;
 	struct bsc_nat_acc_lst_entry *entry;
 
-	acc = bsc_nat_acc_lst_get(_nat, argv[0]);
+	acc = bsc_nat_acc_lst_get(_ctx, _acc_lst, argv[0]);
 	if (!acc)
 		return CMD_WARNING;
 
@@ -94,7 +94,7 @@
 	struct bsc_nat_acc_lst *acc;
 	struct bsc_nat_acc_lst_entry *entry;
 
-	acc = bsc_nat_acc_lst_get(_nat, argv[0]);
+	acc = bsc_nat_acc_lst_get(_ctx, _acc_lst, argv[0]);
 	if (!acc)
 		return CMD_WARNING;
 
@@ -127,11 +127,10 @@
 	}
 }
 
-
-void bsc_nat_lst_vty_init(struct bsc_nat *nat, int node)
+void bsc_nat_lst_vty_init(void *ctx, struct llist_head *lst, int node)
 {
-	_nat = nat;
-
+	_ctx = ctx;
+	_acc_lst = lst;
 	install_element_ve(&show_acc_lst_cmd);
 
 	/* access-list */
