diff --git a/src/event/ngx_event_timer.c b/src/event/ngx_event_timer.c
index c3d3c7e..656f62b 100644
--- a/src/event/ngx_event_timer.c
+++ b/src/event/ngx_event_timer.c
@@ -14,27 +14,28 @@
 #endif
 
 
-ngx_thread_volatile ngx_rbtree_t  *ngx_event_timer_rbtree;
-ngx_rbtree_t                       ngx_event_timer_sentinel;
+ngx_thread_volatile ngx_rbtree_t  ngx_event_timer_rbtree;
+static ngx_rbtree_node_t          ngx_event_timer_sentinel;
 
 
 ngx_int_t
 ngx_event_timer_init(ngx_log_t *log)
 {
-    if (ngx_event_timer_rbtree) {
+    ngx_event_timer_rbtree.root = &ngx_event_timer_sentinel;
+    ngx_event_timer_rbtree.sentinel = &ngx_event_timer_sentinel;
+
 #if (NGX_THREADS)
+
+    if (ngx_event_timer_mutex) {
         ngx_event_timer_mutex->log = log;
-#endif
         return NGX_OK;
     }
 
-    ngx_event_timer_rbtree = &ngx_event_timer_sentinel;
-
-#if (NGX_THREADS)
     ngx_event_timer_mutex = ngx_mutex_init(log, 0);
     if (ngx_event_timer_mutex == NULL) {
         return NGX_ERROR;
     }
+
 #endif
 
     return NGX_OK;
@@ -44,10 +45,10 @@
 ngx_msec_t
 ngx_event_find_timer(void)
 {
-    ngx_msec_t     timer;
-    ngx_rbtree_t  *node;
+    ngx_rbtree_key_int_t   timer;
+    ngx_rbtree_node_t     *node, *root, *sentinel;
 
-    if (ngx_event_timer_rbtree == &ngx_event_timer_sentinel) {
+    if (ngx_event_timer_rbtree.root == &ngx_event_timer_sentinel) {
         return NGX_TIMER_INFINITE;
     }
 
@@ -55,35 +56,41 @@
         return NGX_TIMER_ERROR;
     }
 
-    node = ngx_rbtree_min((ngx_rbtree_t *) ngx_event_timer_rbtree,
-                          &ngx_event_timer_sentinel);
+    root = ngx_event_timer_rbtree.root;
+    sentinel = ngx_event_timer_rbtree.sentinel;
+
+    node = ngx_rbtree_min(root, sentinel);
 
     ngx_mutex_unlock(ngx_event_timer_mutex);
 
-    timer = (ngx_msec_t) node->key - ngx_current_time;
+    timer = (ngx_rbtree_key_int_t) node->key
+                                     - (ngx_rbtree_key_int_t) ngx_current_time;
 
-    return timer > 0 ? timer : 0 ;
+    return (ngx_msec_t) (timer > 0 ? timer : 0);
 }
 
 
 void
 ngx_event_expire_timers(void)
 {
-    ngx_event_t   *ev;
-    ngx_rbtree_t  *node;
+    ngx_event_t        *ev;
+    ngx_rbtree_node_t  *node, *root, *sentinel;
+
+    sentinel = ngx_event_timer_rbtree.sentinel;
 
     for ( ;; ) {
 
-        if (ngx_event_timer_rbtree == &ngx_event_timer_sentinel) {
-            return;
-        }
-
         if (ngx_mutex_lock(ngx_event_timer_mutex) == NGX_ERROR) {
             return;
         }
 
-        node = ngx_rbtree_min((ngx_rbtree_t *) ngx_event_timer_rbtree,
-                              &ngx_event_timer_sentinel);
+        root = ngx_event_timer_rbtree.root;
+
+        if (root == sentinel) {
+            return;
+        }
+
+        node = ngx_rbtree_min(root, sentinel);
 
         /* node->key <= ngx_current_time */
 
@@ -91,8 +98,7 @@
                                       - (ngx_rbtree_key_int_t) ngx_current_time
             <= 0)
         {
-            ev = (ngx_event_t *)
-                           ((char *) node - offsetof(ngx_event_t, rbtree_key));
+            ev = (ngx_event_t *) ((char *) node - offsetof(ngx_event_t, timer));
 
 #if (NGX_THREADS)
 
@@ -114,18 +120,16 @@
 
             ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0,
                            "event timer del: %d: %M",
-                           ngx_event_ident(ev->data), ev->rbtree_key);
+                           ngx_event_ident(ev->data), ev->timer.key);
 
-            ngx_rbtree_delete((ngx_rbtree_t **) &ngx_event_timer_rbtree,
-                              &ngx_event_timer_sentinel,
-                              (ngx_rbtree_t *) &ev->rbtree_key);
+            ngx_rbtree_delete(&ngx_event_timer_rbtree, &ev->timer);
 
             ngx_mutex_unlock(ngx_event_timer_mutex);
 
 #if (NGX_DEBUG)
-            ev->rbtree_left = NULL;
-            ev->rbtree_right = NULL;
-            ev->rbtree_parent = NULL;
+            ev->timer.left = NULL;
+            ev->timer.right = NULL;
+            ev->timer.parent = NULL;
 #endif
 
             ev->timer_set = 0;
