diff --git a/openbsc/src/vty/vector.c b/openbsc/src/vty/vector.c
index c8885a4..371f71d 100644
--- a/openbsc/src/vty/vector.c
+++ b/openbsc/src/vty/vector.c
@@ -23,15 +23,14 @@
 #include <unistd.h>
 
 #include <vty/vector.h>
+#include <vty/vty.h>
 #include <openbsc/talloc.h>
 #include <memory.h>
 
-static void *tall_vvec_ctx;
-
 /* Initialize vector : allocate memory and return vector. */
 vector vector_init(unsigned int size)
 {
-	vector v = talloc_zero(tall_vvec_ctx, struct _vector);
+	vector v = talloc_zero(tall_vty_ctx, struct _vector);
 	if (!v)
 		return NULL;
 
@@ -41,7 +40,7 @@
 
 	v->alloced = size;
 	v->active = 0;
-	v->index = _talloc_zero(tall_vvec_ctx, sizeof(void *) * size,
+	v->index = _talloc_zero(tall_vty_ctx, sizeof(void *) * size,
 				"vector_init:index");
 	if (!v->index) {
 		talloc_free(v);
@@ -69,7 +68,7 @@
 vector vector_copy(vector v)
 {
 	unsigned int size;
-	vector new = talloc_zero(tall_vvec_ctx, struct _vector);
+	vector new = talloc_zero(tall_vty_ctx, struct _vector);
 	if (!new)
 		return NULL;
 
@@ -77,7 +76,7 @@
 	new->alloced = v->alloced;
 
 	size = sizeof(void *) * (v->alloced);
-	new->index = _talloc_zero(tall_vvec_ctx, size, "vector_copy:index");
+	new->index = _talloc_zero(tall_vty_ctx, size, "vector_copy:index");
 	if (!new->index) {
 		talloc_free(new);
 		return NULL;
@@ -93,7 +92,7 @@
 	if (v->alloced > num)
 		return;
 
-	v->index = talloc_realloc_size(tall_vvec_ctx, v->index,
+	v->index = talloc_realloc_size(tall_vty_ctx, v->index,
 				       sizeof(void *) * (v->alloced * 2));
 	memset(&v->index[v->alloced], 0, sizeof(void *) * v->alloced);
 	v->alloced *= 2;
@@ -189,8 +188,3 @@
 
 	return count;
 }
-
-static __attribute__((constructor)) void on_dso_load_vty_vec(void)
-{
-	tall_vvec_ctx = talloc_named_const(NULL, 1, "vty_vector");
-}
