diff --git a/pd/src/x_connective.c b/pd/src/x_connective.c
index 40f84e109802b493015c7e8b84655dc95fbb93e1..787579d8545520296b478d3bfd2499304f65d82e 100644
--- a/pd/src/x_connective.c
+++ b/pd/src/x_connective.c
@@ -596,7 +596,12 @@ static void route_list(t_route *x, t_symbol *sel, int argc, t_atom *argv)
             if (argc > 1 && argv[1].a_type == A_SYMBOL)
                 outlet_anything(e->e_outlet, argv[1].a_w.w_symbol,
                     argc-2, argv+2);
-            else outlet_list(e->e_outlet, 0, argc-1, argv+1);
+            else {
+				if (argc > 1)
+					outlet_list(e->e_outlet, 0, argc-1, argv+1);
+				else
+					outlet_list(e->e_outlet, 0, argc, argv);
+			}
             return;
         }
     }
@@ -673,6 +678,7 @@ static void *route_new(t_symbol *s, int argc, t_atom *argv)
         SETFLOAT(&a, 0);
         argv = &a;
     }
+	x->x_type = argv[0].a_type;
     x->x_nelement = argc;
     x->x_vec = (t_routeelement *)getbytes(argc * sizeof(*x->x_vec));
     for (n = 0, e = x->x_vec; n < argc; n++, e++)
@@ -688,7 +694,6 @@ static void *route_new(t_symbol *s, int argc, t_atom *argv)
     }
     if (argc == 1)
     {
-		x->x_type = argv[0].a_type;
 		route_proxy_init(&x->x_pxy, x);
 		inlet_new(&x->x_obj, &x->x_pxy.l_pd, 0, 0);
         /*if (argv->a_type == A_FLOAT)