diff --git a/isisd/isis_pdu.c b/isisd/isis_pdu.c
index 8d636b3..65009ba 100644
--- a/isisd/isis_pdu.c
+++ b/isisd/isis_pdu.c
@@ -381,10 +381,8 @@
 #endif /* HAVE_IPV6 */
 
   /* lets take care of the expiry */
-  if(adj->t_expire) {
-    thread_cancel (adj->t_expire);
-  }
-  adj->t_expire = thread_add_timer (master, isis_adj_expire, adj,
+  THREAD_TIMER_OFF(adj->t_expire);
+  THREAD_TIMER_ON(master, adj->t_expire, isis_adj_expire, adj,
                                     (long)adj->hold_time);
 
   /* 8.2.5.2 a) a match was detected */
@@ -786,10 +784,8 @@
   adj->circuit_t = hdr.circuit_t;
 
   /* lets take care of the expiry */
-  if (adj->t_expire) {
-    thread_cancel (adj->t_expire);
-  }
-  adj->t_expire = thread_add_timer (master, isis_adj_expire, adj,
+  THREAD_TIMER_OFF(adj->t_expire);
+  THREAD_TIMER_ON(master, adj->t_expire, isis_adj_expire, adj,
                                     (long)adj->hold_time);
 
   /*
@@ -1614,8 +1610,7 @@
   /* 
    * prepare for next packet. 
    */
-  circuit->t_read = thread_add_read (master, isis_receive, circuit, 
-                                     circuit->fd);
+  THREAD_READ_ON(master, circuit->t_read, isis_receive, circuit, circuit->fd);
 
   return retval;
 }
@@ -1879,9 +1874,8 @@
   retval = send_lan_hello (circuit, 1);
 
   /* set next timer thread */
-  circuit->u.bc.t_send_lan_hello[0] = 
-    thread_add_timer (master, send_lan_l1_hello, circuit, 
-                     isis_jitter (circuit->hello_interval[0], IIH_JITTER));
+  THREAD_TIMER_ON(master, circuit->u.bc.t_send_lan_hello[0], send_lan_l1_hello,
+      circuit, isis_jitter (circuit->hello_interval[0], IIH_JITTER));
 
   return retval;
 }
@@ -1902,9 +1896,8 @@
   retval = send_lan_hello (circuit, 2);
 
   /* set next timer thread*/
-  circuit->u.bc.t_send_lan_hello[1] = 
-    thread_add_timer (master, send_lan_l2_hello, circuit, 
-                      isis_jitter (circuit->hello_interval[1], IIH_JITTER));
+  THREAD_TIMER_ON(master, circuit->u.bc.t_send_lan_hello[1], send_lan_l2_hello,
+      circuit, isis_jitter (circuit->hello_interval[1], IIH_JITTER));
 
   return retval;
 }
@@ -1921,9 +1914,8 @@
   send_hello(circuit,1);
 
   /* set next timer thread*/
-  circuit->u.p2p.t_send_p2p_hello = thread_add_timer
-    (master, send_p2p_hello, circuit, isis_jitter (circuit->hello_interval[1],
-                                                   IIH_JITTER));
+  THREAD_TIMER_ON(master, circuit->u.p2p.t_send_p2p_hello, send_p2p_hello,
+      circuit, isis_jitter (circuit->hello_interval[1], IIH_JITTER));
 
   return ISIS_OK;
 }
@@ -2049,12 +2041,8 @@
     send_csnp(circuit,1);
   }
   /* set next timer thread */
-  circuit->t_send_csnp[0] = thread_add_timer (master, 
-                                              send_l1_csnp,
-                                              circuit, 
-                                              isis_jitter 
-                                              (circuit->csnp_interval[0],
-                                               CSNP_JITTER));
+  THREAD_TIMER_ON(master, circuit->t_send_csnp[0], send_l1_csnp, circuit,
+      isis_jitter(circuit->csnp_interval[0], CSNP_JITTER));
 
   return retval;
 }
@@ -2074,12 +2062,9 @@
     send_csnp(circuit,2);
   }
   /* set next timer thread */
-  circuit->t_send_csnp[1] = thread_add_timer (master, 
-                                              send_l2_csnp,
-                                              circuit, 
-                                              isis_jitter 
-                                              (circuit->csnp_interval[1],
-                                               CSNP_JITTER));
+  THREAD_TIMER_ON(master, circuit->t_send_csnp[1], send_l2_csnp, circuit,
+      isis_jitter(circuit->csnp_interval[1], CSNP_JITTER));
+
   return retval;
 }
 
@@ -2215,12 +2200,8 @@
 
   send_psnp (1, circuit);
   /* set next timer thread */
-  circuit->t_send_psnp[0] = thread_add_timer (master,
-                                              send_l1_psnp,
-                                              circuit,
-                                              isis_jitter
-                                              (circuit->psnp_interval[0], 
-                                               PSNP_JITTER));
+  THREAD_TIMER_ON(master, circuit->t_send_psnp[0], send_l1_psnp, circuit,
+      isis_jitter(circuit->psnp_interval[0], PSNP_JITTER));
 
   return retval;
 }
@@ -2244,12 +2225,8 @@
   send_psnp (2, circuit);
 
   /* set next timer thread */
-  circuit->t_send_psnp[1] = thread_add_timer (master,
-                                              send_l2_psnp,
-                                              circuit,
-                                              isis_jitter
-                                              (circuit->psnp_interval[1],
-                                               PSNP_JITTER));
+  THREAD_TIMER_ON(master, circuit->t_send_psnp[1], send_l2_psnp, circuit,
+      isis_jitter(circuit->psnp_interval[1], PSNP_JITTER));
 
   return retval;
 }
