diff --git a/isisd/ChangeLog b/isisd/ChangeLog
index 8a00ccc..60d5933 100644
--- a/isisd/ChangeLog
+++ b/isisd/ChangeLog
@@ -1,3 +1,7 @@
+2004-02-11 Hasso Tepper <hasso@estpak.ee>
+  * many *.c files: Replace thread_add_xxx() and thread_cancel() with
+    THREAD_XXX_ON and THREAD_XXX_OFF macros.
+
 2004-01-27 Hasso Tepper <hasso@estpak.ee>
   * isis_circuit.c: Commented out "(no) ip address" commands so it doesn't
     confuse vtysh.
diff --git a/isisd/isis_circuit.c b/isisd/isis_circuit.c
index fce5997..1865e33 100644
--- a/isisd/isis_circuit.c
+++ b/isisd/isis_circuit.c
@@ -414,12 +414,12 @@
     /* 8.4.1 d) */
     /* dr election will commence in... */
     if (circuit->circuit_is_type & IS_LEVEL_1) 
-      circuit->u.bc.t_run_dr[0] = 
-        thread_add_timer (master, isis_run_dr_l1, circuit,
+      THREAD_TIMER_ON(master, circuit->u.bc.t_run_dr[0], isis_run_dr_l1,
+          circuit,
         2 * circuit->hello_multiplier[0] * circuit->hello_interval[0]); 
     if (circuit->circuit_is_type & IS_LEVEL_2) 
-      circuit->u.bc.t_run_dr[1] = 
-        thread_add_timer (master, isis_run_dr_l2, circuit,
+      THREAD_TIMER_ON(master, circuit->u.bc.t_run_dr[1], isis_run_dr_l2,
+          circuit,
        2 * circuit->hello_multiplier[1] * circuit->hello_interval[1]); 
   } else {
     /* initializing the hello send threads
@@ -431,22 +431,13 @@
 
   /* initializing PSNP timers */
   if (circuit->circuit_is_type & IS_LEVEL_1) {
-    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));
   }
   
   if (circuit->circuit_is_type & IS_LEVEL_2) {
-    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));
   }
   
   /* initialize the circuit streams */
@@ -460,10 +451,10 @@
   isis_sock_init (circuit);
 
 #ifdef GNU_LINUX
-  circuit->t_read = thread_add_read (master, isis_receive, circuit, 
+  THREAD_READ_ON(master, circuit->t_read, isis_receive, circuit,
                                      circuit->fd);
 #else
-  circuit->t_read = thread_add_timer (master, isis_receive, circuit, 
+  THREAD_TIMER_ON(master, circuit->t_read, isis_receive, circuit,
                                       circuit->fd);
 #endif
   return;
@@ -473,16 +464,13 @@
 isis_circuit_down (struct isis_circuit *circuit)
 {
   /* Cancel all active threads -- FIXME: wrong place*/
-  if (circuit->t_read)
-    thread_cancel (circuit->t_read);
+  /* HT: Read thread if GNU_LINUX, TIMER thread otherwise. */
+  THREAD_OFF(circuit->t_read);
   if (circuit->circ_type == CIRCUIT_T_BROADCAST) {
-    if (circuit->u.bc.t_send_lan_hello[0])
-      thread_cancel (circuit->u.bc.t_send_lan_hello[0]);
-    if (circuit->u.bc.t_send_lan_hello[1])
-      thread_cancel (circuit->u.bc.t_send_lan_hello[1]);
+    THREAD_TIMER_OFF(circuit->u.bc.t_send_lan_hello[0]);
+    THREAD_TIMER_OFF(circuit->u.bc.t_send_lan_hello[1]);
   } else if (circuit->circ_type == CIRCUIT_T_P2P) {
-    if (circuit->u.p2p.t_send_p2p_hello)
-      thread_cancel (circuit->u.p2p.t_send_p2p_hello);
+    THREAD_TIMER_OFF(circuit->u.p2p.t_send_p2p_hello);
   }
   /* close the socket */
   close (circuit->fd);
diff --git a/isisd/isis_dr.c b/isisd/isis_dr.c
index f2fcb39..8b6c8ff 100644
--- a/isisd/isis_dr.c
+++ b/isisd/isis_dr.c
@@ -242,14 +242,8 @@
 
   circuit->u.bc.is_dr[level - 1] = 0;
   circuit->u.bc.run_dr_elect[level - 1] = 0; 
-  if (circuit->u.bc.t_run_dr[level - 1]) {
-    thread_cancel (circuit->u.bc.t_run_dr[level - 1]);
-    circuit->u.bc.t_run_dr[level - 1] = NULL;
-  }
-  if (circuit->u.bc.t_refresh_pseudo_lsp[level - 1]) {
-    thread_cancel (circuit->u.bc.t_refresh_pseudo_lsp[level - 1]);
-    circuit->u.bc.t_refresh_pseudo_lsp[level - 1] = NULL;
-  }
+  THREAD_TIMER_OFF(circuit->u.bc.t_run_dr[level - 1]);
+  THREAD_TIMER_OFF(circuit->u.bc.t_refresh_pseudo_lsp[level - 1]);
   
   memcpy (id, isis->sysid, ISIS_SYS_ID_LEN);
   LSP_PSEUDO_ID(id) = circuit->circuit_id;
@@ -259,34 +253,23 @@
   if (level == 1) {
     memset (circuit->u.bc.l1_desig_is, 0, ISIS_SYS_ID_LEN + 1);
     
-    if (circuit->t_send_csnp[0])
-      thread_cancel (circuit->t_send_csnp[0]);    
+    THREAD_TIMER_OFF(circuit->t_send_csnp[0]);
     
-    circuit->u.bc.t_run_dr[0] =
-      thread_add_timer (master, isis_run_dr_l1, circuit,
-                        2 * circuit->hello_interval[1]);    
-
-    circuit->t_send_psnp[0] = 
-      thread_add_timer (master,
-                        send_l1_psnp,
-                        circuit,
-                        isis_jitter (circuit->psnp_interval[level - 1],
-                                     PSNP_JITTER));
+    THREAD_TIMER_ON(master, circuit->u.bc.t_run_dr[0], isis_run_dr_l1,
+        circuit, 2 * circuit->hello_interval[1]);
+    
+    THREAD_TIMER_ON(master, circuit->t_send_psnp[0], send_l1_psnp, circuit,
+        isis_jitter (circuit->psnp_interval[level - 1], PSNP_JITTER));
   } else {
     memset (circuit->u.bc.l2_desig_is, 0, ISIS_SYS_ID_LEN + 1);
 
-    if (circuit->t_send_csnp[1])
-      thread_cancel (circuit->t_send_csnp[1]);
+    THREAD_TIMER_OFF(circuit->t_send_csnp[1]);
 
-    circuit->u.bc.t_run_dr[1] =
-      thread_add_timer (master, isis_run_dr_l2, circuit,
-                        2 * circuit->hello_interval[1]);    
-    circuit->t_send_psnp[1] = 
-      thread_add_timer (master,
-                        send_l2_psnp,
-                        circuit,
-                        isis_jitter (circuit->psnp_interval[level - 1],
-                                     PSNP_JITTER));
+    THREAD_TIMER_ON(master, circuit->u.bc.t_run_dr[1], isis_run_dr_l2,
+        circuit, 2 * circuit->hello_interval[1]);
+    
+    THREAD_TIMER_ON(master, circuit->t_send_psnp[1], send_l2_psnp, circuit,
+        isis_jitter (circuit->psnp_interval[level - 1], PSNP_JITTER));
   }
   
   thread_add_event (master, isis_event_dis_status_change, circuit, 0);
@@ -304,14 +287,12 @@
   /* Lets keep a pause in DR election */
   circuit->u.bc.run_dr_elect[level - 1] = 0;
   if (level == 1) 
-    circuit->u.bc.t_run_dr[0] = 
-      thread_add_timer (master, isis_run_dr_l1, circuit,
-			2 * circuit->hello_multiplier[0] * 
+    THREAD_TIMER_ON(master, circuit->u.bc.t_run_dr[0], isis_run_dr_l1,
+        circuit, 2 * circuit->hello_multiplier[0] * 
 			circuit->hello_interval[0]); 
   else 
-    circuit->u.bc.t_run_dr[1] = 
-      thread_add_timer (master, isis_run_dr_l2, circuit,
-			2 * circuit->hello_multiplier[1] * 
+    THREAD_TIMER_ON(master, circuit->u.bc.t_run_dr[1], isis_run_dr_l2,
+        circuit, 2 * circuit->hello_multiplier[1] *
 			circuit->hello_interval[1]);	      	
   circuit->u.bc.is_dr[level - 1] = 1;
 
@@ -330,16 +311,13 @@
           thread_cancel (circuit->t_send_l1_psnp); */
     lsp_l1_pseudo_generate (circuit);
 
-    circuit->u.bc.t_run_dr[0] =
-      thread_add_timer (master, isis_run_dr_l1, circuit,
-                        2 * circuit->hello_interval[0]);
-
-    circuit->t_send_csnp[0] = thread_add_timer (master,
-                                                send_l1_csnp,
-                                                circuit, 
-                                                isis_jitter 
-                                              (circuit->csnp_interval[level-1],
-                                               CSNP_JITTER));
+    THREAD_TIMER_OFF(circuit->u.bc.t_run_dr[0]); 
+    THREAD_TIMER_ON(master, circuit->u.bc.t_run_dr[0], isis_run_dr_l1,
+        circuit, 2 * circuit->hello_interval[0]);
+    
+    THREAD_TIMER_ON(master, circuit->t_send_csnp[0], send_l1_csnp, circuit,
+        isis_jitter(circuit->csnp_interval[level-1], CSNP_JITTER));
+    
   } else {
     memcpy (old_dr, circuit->u.bc.l2_desig_is, ISIS_SYS_ID_LEN + 1);
     LSP_FRAGMENT (old_dr) = 0;
@@ -355,17 +333,12 @@
           thread_cancel (circuit->t_send_l1_psnp); */
     lsp_l2_pseudo_generate (circuit);
 
-    circuit->u.bc.t_run_dr[1] =
-      thread_add_timer (master, isis_run_dr_l2, circuit,
-                        2 * circuit->hello_interval[1]);    
-
-    circuit->t_send_csnp[1] = 
-      thread_add_timer (master,
-                        send_l2_csnp,
-                        circuit, 
-                        isis_jitter (circuit->csnp_interval[level-1],
-                                     CSNP_JITTER));
+    THREAD_TIMER_OFF(circuit->u.bc.t_run_dr[1]);
+    THREAD_TIMER_ON(master, circuit->u.bc.t_run_dr[1], isis_run_dr_l2,
+        circuit, 2 * circuit->hello_interval[1]);
         
+    THREAD_TIMER_ON(master, circuit->t_send_csnp[1], send_l2_csnp, circuit,
+        isis_jitter (circuit->csnp_interval[level-1], CSNP_JITTER));
   } 
 
   thread_add_event (master, isis_event_dis_status_change, circuit, 0);
diff --git a/isisd/isis_events.c b/isisd/isis_events.c
index aada395..29ea806 100644
--- a/isisd/isis_events.c
+++ b/isisd/isis_events.c
@@ -148,41 +148,35 @@
   uint32_t interval;
 
   if (level == 1) {
-    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));
+
     if (circuit->circ_type == CIRCUIT_T_BROADCAST) {
       interval = circuit->hello_multiplier[0] * (circuit->hello_interval[0]); 
-      circuit->u.bc.t_run_dr[0] =  thread_add_timer (master, isis_run_dr_l1, 
+      
+      THREAD_TIMER_ON(master, circuit->u.bc.t_run_dr[0], isis_run_dr_l1,
 						     circuit, interval);
       
-      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));
+      
       circuit->u.bc.lan_neighs[0] = list_new ();
     }
   } else {
-    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));
+
     if (circuit->circ_type == CIRCUIT_T_BROADCAST) {
       interval = circuit->hello_multiplier[1] * (circuit->hello_interval[1]); 
-      circuit->u.bc.t_run_dr[1] =  thread_add_timer (master, isis_run_dr_l2, 
+      
+      THREAD_TIMER_ON(master, circuit->u.bc.t_run_dr[1], isis_run_dr_l2,
 						     circuit, interval);
       
-      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));
+      
       circuit->u.bc.lan_neighs[1] = list_new ();
     }
   }
@@ -195,21 +189,12 @@
 {
   int idx = level - 1;
  
-  if (circuit->t_send_csnp[idx])
-      thread_cancel (circuit->t_send_csnp[idx]);
-  circuit->t_send_csnp[idx] = NULL;
-
-  if (circuit->t_send_psnp[idx])
-    thread_cancel (circuit->t_send_psnp[idx]);
-  circuit->t_send_psnp[level - 1] = NULL;
+  THREAD_TIMER_OFF(circuit->t_send_csnp[idx]);
+  THREAD_TIMER_OFF(circuit->t_send_psnp[idx]);
 
   if (circuit->circ_type == CIRCUIT_T_BROADCAST) {
-    if (circuit->u.bc.t_send_lan_hello[idx])
-      thread_cancel (circuit->u.bc.t_send_lan_hello[idx]);
-    circuit->u.bc.t_send_lan_hello[idx] = NULL;
-    if (circuit->u.bc.t_run_dr[idx])
-	thread_cancel (circuit->u.bc.t_run_dr[idx]);
-    circuit->u.bc.t_run_dr[idx] = NULL;
+    THREAD_TIMER_OFF(circuit->u.bc.t_send_lan_hello[idx]);
+    THREAD_TIMER_OFF(circuit->u.bc.t_run_dr[idx]);
     circuit->u.bc.run_dr_elect[idx] = 0;
   }
   
diff --git a/isisd/isis_lsp.c b/isisd/isis_lsp.c
index 3f6a57b..0faadbd 100644
--- a/isisd/isis_lsp.c
+++ b/isisd/isis_lsp.c
@@ -1652,8 +1652,7 @@
 int
 lsp_l1_generate (struct isis_area *area)
 {
-  
-  area->t_lsp_refresh[0] = thread_add_timer (master, lsp_refresh_l1, area, 
+  THREAD_TIMER_ON(master, area->t_lsp_refresh[0], lsp_refresh_l1, area,
                                              MAX_LSP_GEN_INTERVAL);
 
   return lsp_generate_non_pseudo (area, 1);
@@ -1666,8 +1665,7 @@
 int
 lsp_l2_generate (struct isis_area *area)
 {
-  
-  area->t_lsp_refresh[1] = thread_add_timer (master, lsp_refresh_l2, area, 
+  THREAD_TIMER_ON(master, area->t_lsp_refresh[1], lsp_refresh_l2, area,
                                              MAX_LSP_GEN_INTERVAL);
 
   return lsp_generate_non_pseudo (area, 2);
@@ -1753,9 +1751,9 @@
   ref_time =  area->lsp_refresh[0] > MAX_LSP_GEN_INTERVAL ? 
     MAX_LSP_GEN_INTERVAL : area->lsp_refresh[0];
 
-  area->t_lsp_refresh[0] = thread_add_timer (master, lsp_refresh_l1, area,
-                                          isis_jitter (ref_time, 
-                                                       MAX_AGE_JITTER));
+  THREAD_TIMER_ON(master, area->t_lsp_refresh[0], lsp_refresh_l1, area,
+      isis_jitter(ref_time, MAX_AGE_JITTER));
+
   return ISIS_OK;
 }
 
@@ -1775,10 +1773,9 @@
   ref_time =  area->lsp_refresh[1] > MAX_LSP_GEN_INTERVAL ? 
     MAX_LSP_GEN_INTERVAL : area->lsp_refresh[1];
 
+  THREAD_TIMER_ON(master, area->t_lsp_refresh[1], lsp_refresh_l2, area,
+      isis_jitter(ref_time, MAX_AGE_JITTER));
 
-  area->t_lsp_refresh[1] = thread_add_timer (master, lsp_refresh_l2, area,
-                                          isis_jitter (ref_time, 
-                                                       MAX_AGE_JITTER));
   return ISIS_OK;
 }
 
@@ -2018,10 +2015,9 @@
   ref_time =  circuit->area->lsp_refresh[0] > MAX_LSP_GEN_INTERVAL ? 
     MAX_LSP_GEN_INTERVAL : circuit->area->lsp_refresh[0];
 
-  circuit->u.bc.t_refresh_pseudo_lsp[0] = 
-    thread_add_timer (master, lsp_l1_refresh_pseudo, circuit, 
-                      isis_jitter (ref_time,
-                                   MAX_AGE_JITTER));
+  THREAD_TIMER_ON(master, circuit->u.bc.t_refresh_pseudo_lsp[0],
+      lsp_l1_refresh_pseudo, circuit, isis_jitter (ref_time, MAX_AGE_JITTER));
+  
   return retval;
 }
 
@@ -2053,11 +2049,8 @@
   ref_time =  circuit->area->lsp_refresh[0] > MAX_LSP_GEN_INTERVAL ? 
     MAX_LSP_GEN_INTERVAL : circuit->area->lsp_refresh[0];
 
-  
-  circuit->u.bc.t_refresh_pseudo_lsp[0] = 
-    thread_add_timer (master, lsp_l1_refresh_pseudo, circuit, 
-                      isis_jitter (ref_time,
-                                   MAX_AGE_JITTER));
+  THREAD_TIMER_ON(master, circuit->u.bc.t_refresh_pseudo_lsp[0],
+      lsp_l1_refresh_pseudo, circuit, isis_jitter (ref_time, MAX_AGE_JITTER));
 
   return lsp_regenerate_schedule (circuit->area);
 }
@@ -2078,11 +2071,9 @@
   ref_time =  circuit->area->lsp_refresh[1] > MAX_LSP_GEN_INTERVAL ? 
     MAX_LSP_GEN_INTERVAL : circuit->area->lsp_refresh[1];
 
+  THREAD_TIMER_ON(master, circuit->u.bc.t_refresh_pseudo_lsp[1],
+      lsp_l2_refresh_pseudo, circuit, isis_jitter (ref_time, MAX_AGE_JITTER));
 
-  circuit->u.bc.t_refresh_pseudo_lsp[1] = 
-    thread_add_timer (master, lsp_l2_refresh_pseudo, circuit, 
-                      isis_jitter (ref_time,
-                                   MAX_AGE_JITTER));
   return retval;
 }
 
@@ -2114,10 +2105,8 @@
   lsp_insert (lsp, circuit->area->lspdb[1]);
   ISIS_FLAGS_SET_ALL (lsp->SRMflags);
       
-  circuit->u.bc.t_refresh_pseudo_lsp[1] = 
-    thread_add_timer (master, lsp_l2_refresh_pseudo, circuit, 
-                      isis_jitter (ref_time,
-                                   MAX_AGE_JITTER));
+  THREAD_TIMER_ON(master, circuit->u.bc.t_refresh_pseudo_lsp[1],
+      lsp_l2_refresh_pseudo, circuit, isis_jitter (ref_time, MAX_AGE_JITTER));
   
   return lsp_regenerate_schedule (circuit->area);
 }
@@ -2144,7 +2133,7 @@
   
   area = THREAD_ARG (thread);
   assert (area);
-  area->t_tick = thread_add_timer (master, lsp_tick, area, 1);
+  THREAD_TIMER_ON(master, area->t_tick, lsp_tick, area, 1);
 
   /*
    * Build a list of LSPs with (any) SRMflag set
@@ -2289,10 +2278,8 @@
   /* time to calculate our checksum */
   iso_csum_create (STREAM_DATA (lsp->pdu) + 12,
                    ntohs(lsp->lsp_header->pdu_len) - 12, 12);
-
-  lsp->t_lsp_top_ref = thread_add_timer (master, top_lsp_refresh, lsp,
-                                         isis_jitter (MAX_LSP_GEN_INTERVAL,
-                                                      MAX_LSP_GEN_JITTER));
+  THREAD_TIMER_ON(master, lsp->t_lsp_top_ref, top_lsp_refresh, lsp,
+      isis_jitter (MAX_LSP_GEN_INTERVAL, MAX_LSP_GEN_JITTER));
 
   return ISIS_OK;
 }
@@ -2328,9 +2315,8 @@
     /* time to calculate our checksum */
     iso_csum_create (STREAM_DATA (lsp->pdu) + 12,
 		     ntohs(lsp->lsp_header->pdu_len) - 12, 12);
-    lsp->t_lsp_top_ref = thread_add_timer (master, top_lsp_refresh, lsp,
-					   isis_jitter(MAX_LSP_GEN_INTERVAL,
-						       MAX_LSP_GEN_JITTER));
+    THREAD_TIMER_ON(master, lsp->t_lsp_top_ref, top_lsp_refresh, lsp,
+        isis_jitter(MAX_LSP_GEN_INTERVAL, MAX_LSP_GEN_JITTER));
 
     ISIS_FLAGS_SET_ALL(lsp->SRMflags);
     lsp_insert (lsp,area->lspdb[0]);
@@ -2349,7 +2335,7 @@
     dnode_next = dict_next (area->lspdb[0], dnode);
     lsp = dnode_get (dnode);
     if (lsp->from_topology) {
-      thread_cancel(lsp->t_lsp_top_ref);
+      THREAD_TIMER_OFF(lsp->t_lsp_top_ref);
       lsp_destroy (lsp);
       dict_delete (area->lspdb[0], dnode);
     }
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;
 }
diff --git a/isisd/isis_spf.c b/isisd/isis_spf.c
index 37c435e..a522877 100644
--- a/isisd/isis_spf.c
+++ b/isisd/isis_spf.c
@@ -944,15 +944,11 @@
   spftree->pending = 0;
   
   if (level == 1)
-    spftree->t_spf_periodic =  thread_add_timer (master, 
-						 isis_run_spf_l1, area, 
-						 isis_jitter 
-						 (PERIODIC_SPF_INTERVAL, 10));
+    THREAD_TIMER_ON(master, spftree->t_spf_periodic, isis_run_spf_l1, area,
+        isis_jitter(PERIODIC_SPF_INTERVAL, 10));
   else 
-    spftree->t_spf_periodic =  thread_add_timer (master, 
-						 isis_run_spf_l2, area, 
-						 isis_jitter 
-						 (PERIODIC_SPF_INTERVAL, 10));
+    THREAD_TIMER_ON(master, spftree->t_spf_periodic, isis_run_spf_l2, area,
+        isis_jitter(PERIODIC_SPF_INTERVAL, 10));
 
   return retval;
 }
@@ -1042,8 +1038,7 @@
     spftree->pending = 1;
     return retval;
   }
-  if (spftree->t_spf_periodic)
-    thread_cancel (spftree->t_spf_periodic);
+  THREAD_TIMER_OFF(spftree->t_spf_periodic);
 
   if (diff < MINIMUM_SPF_INTERVAL) {
     if (level == 1)
@@ -1075,8 +1070,7 @@
 
   diff = now - spftree->lastrun; 
   
-  if (spftree->t_spf_periodic)
-    thread_cancel (spftree->t_spf_periodic);
+  THREAD_TIMER_OFF(spftree->t_spf_periodic);
   
   /* FIXME: let's wait a minute before doing the SPF */
   if (now - isis->uptime < 60 || isis->uptime == 0) {
diff --git a/isisd/isisd.c b/isisd/isisd.c
index 135acf0..9cdb255 100644
--- a/isisd/isisd.c
+++ b/isisd/isisd.c
@@ -120,7 +120,7 @@
 #endif /* HAVE_IPV6 */
   area->circuit_list = list_new ();
   area->area_addrs = list_new ();
-  area->t_tick = thread_add_timer (master, lsp_tick, area, 1);
+  THREAD_TIMER_ON(master, area->t_tick, lsp_tick, area, 1);
   area->flags.maxindex = -1;
   /*
    * Default values
@@ -210,14 +210,11 @@
     list_delete (area->circuit_list);
   }
   listnode_delete (isis->area_list, area);
-  if (area->t_tick)
-    thread_cancel (area->t_tick); 
+  THREAD_TIMER_OFF(area->t_tick);
   if (area->t_remove_aged)
     thread_cancel (area->t_remove_aged);
-  if (area->t_lsp_refresh[0])
-    thread_cancel (area->t_lsp_refresh[0]);
-  if (area->t_lsp_refresh[1])
-    thread_cancel (area->t_lsp_refresh[1]);
+  THREAD_TIMER_OFF(area->t_lsp_refresh[0]);
+  THREAD_TIMER_OFF(area->t_lsp_refresh[1]);
 
   XFREE (MTYPE_ISIS_AREA, area);
   
