diff --git a/pd/src/m_pd.c b/pd/src/m_pd.c
index 34786ef026a2c0bd02a2e0d4059b25e7ea5999cb..1a6b493edf8901a8d1699fb8ca654baaf3e6aac6 100644
--- a/pd/src/m_pd.c
+++ b/pd/src/m_pd.c
@@ -78,7 +78,6 @@ typedef struct _bindlist
 } t_bindlist;
 
 static int change_bindlist_via_graph = 0;
-static t_bindlist *change_bindlist = NULL;
 
 static void bindlist_cleanup(t_bindlist *x)
 {
@@ -111,56 +110,48 @@ static void bindlist_bang(t_bindlist *x)
 {
     t_bindelem *e;
         int save = change_bindlist_via_graph;
-	t_bindlist *save_bindlist = change_bindlist;
 	change_bindlist_via_graph = 1;
     for (e = x->b_list; e; e = e->e_next)
         if (e->e_who != NULL) pd_bang(e->e_who);
 	if (change_bindlist_via_graph > 1)
 		bindlist_cleanup(x);
 	change_bindlist_via_graph = save;
-	change_bindlist = save_bindlist;
 }
 
 static void bindlist_float(t_bindlist *x, t_float f)
 {
     t_bindelem *e;
         int save = change_bindlist_via_graph;
-	t_bindlist *save_bindlist = change_bindlist;
 	change_bindlist_via_graph = 1;
     for (e = x->b_list; e; e = e->e_next)
         if (e->e_who != NULL) pd_float(e->e_who, f);
 	if (change_bindlist_via_graph > 1)
 		bindlist_cleanup(x);
 	change_bindlist_via_graph = save;
-	change_bindlist = save_bindlist;
 }
 
 static void bindlist_symbol(t_bindlist *x, t_symbol *s)
 {
     t_bindelem *e;
         int save = change_bindlist_via_graph;
-	t_bindlist *save_bindlist = change_bindlist;
 	change_bindlist_via_graph = 1;
     for (e = x->b_list; e; e = e->e_next)
         if (e->e_who != NULL) pd_symbol(e->e_who, s);
 	if (change_bindlist_via_graph > 1)
 		bindlist_cleanup(x);
 	change_bindlist_via_graph = save;
-	change_bindlist = save_bindlist;
 }
 
 static void bindlist_pointer(t_bindlist *x, t_gpointer *gp)
 {
     t_bindelem *e;
         int save = change_bindlist_via_graph;
-	t_bindlist *save_bindlist = change_bindlist;
 	change_bindlist_via_graph = 1;
     for (e = x->b_list; e; e = e->e_next)
         if (e->e_who != NULL) pd_pointer(e->e_who, gp);
 	if (change_bindlist_via_graph > 1)
 		bindlist_cleanup(x);
 	change_bindlist_via_graph = save;
-	change_bindlist = save_bindlist;
 }
 
 static void bindlist_list(t_bindlist *x, t_symbol *s,
@@ -168,14 +159,12 @@ static void bindlist_list(t_bindlist *x, t_symbol *s,
 {
     t_bindelem *e;
         int save = change_bindlist_via_graph;
-	t_bindlist *save_bindlist = change_bindlist;
 	change_bindlist_via_graph = 1;
     for (e = x->b_list; e; e = e->e_next)
         if (e->e_who != NULL) pd_list(e->e_who, s, argc, argv);
 	if (change_bindlist_via_graph > 1)
 		bindlist_cleanup(x);
 	change_bindlist_via_graph = save;
-	change_bindlist = save_bindlist;
 }
 
 static void bindlist_anything(t_bindlist *x, t_symbol *s,
@@ -183,14 +172,12 @@ static void bindlist_anything(t_bindlist *x, t_symbol *s,
 {
     t_bindelem *e;
         int save = change_bindlist_via_graph;
-	t_bindlist *save_bindlist = change_bindlist;
 	change_bindlist_via_graph = 1;
     for (e = x->b_list; e; e = e->e_next)
         if (e->e_who != NULL) pd_typedmess(e->e_who, s, argc, argv);
 	if (change_bindlist_via_graph > 1)
 		bindlist_cleanup(x);
 	change_bindlist_via_graph = save;
-	change_bindlist = save_bindlist;
 }
 
 void m_pd_setup(void)
@@ -266,10 +253,9 @@ void pd_unbind(t_pd *x, t_symbol *s)
 
         t_bindlist *b = (t_bindlist *)s->s_thing;
         t_bindelem *e, *e2;
-	int delayed = change_bindlist_via_graph && change_bindlist==b;
         if ((e = b->b_list)->e_who == x)
         {
-			if (delayed) {
+			if (change_bindlist_via_graph) {
 				change_bindlist_via_graph++;
 				e->e_delayed_free = 1;
 			} else {
@@ -304,7 +290,7 @@ void pd_unbind(t_pd *x, t_symbol *s)
 		}
 		if (count_valid == 1) {
             s->s_thing = e1->e_who;
-			if (!delayed) {
+			if (!change_bindlist_via_graph) {
             	freebytes(b->b_list, sizeof(t_bindelem));
             	pd_free(&b->b_pd);
 			}
@@ -450,4 +436,3 @@ void pd_init(void)
     glob_init();
     garray_init();
 }
-