diff --git a/src/core/ngx_atomic.h b/src/core/ngx_atomic.h
index b24a997..b6bd17f 100644
--- a/src/core/ngx_atomic.h
+++ b/src/core/ngx_atomic.h
@@ -6,6 +6,7 @@
 #include <ngx_core.h>
 
 
+/* STUB */
 #define ngx_atomic_inc(x)   x++;
 #define ngx_atomic_dec(x)   x--;
 
diff --git a/src/core/ngx_log.h b/src/core/ngx_log.h
index c3771d7..9919fa8 100644
--- a/src/core/ngx_log.h
+++ b/src/core/ngx_log.h
@@ -199,6 +199,14 @@
 #endif
 
 #if (NGX_DEBUG)
+#define ngx_log_debug3(level, log, err, fmt, arg1, arg2, arg3) \
+    if (log->log_level & level) \
+        ngx_log_error_core(NGX_LOG_DEBUG, log, err, fmt, arg1, arg2, arg3)
+#else
+#define ngx_log_debug3(level, log, err, fmt, arg1, arg2, arg3)
+#endif
+
+#if (NGX_DEBUG)
 #define ngx_log_debug6(level, log, err, fmt, \
                        arg1, arg2, arg3, arg4, arg5, arg6) \
     if (log->log_level & level) \
@@ -237,6 +245,14 @@
 #endif
 
 #if (NGX_DEBUG)
+#define ngx_log_debug3(level, log, err, fmt, arg1, arg2, arg3) \
+    if (log->log_level & level) \
+        ngx_log_debug_core(log, err, fmt, arg1, arg2, arg3)
+#else
+#define ngx_log_debug3(level, log, err, fmt, arg1, arg2, arg3)
+#endif
+
+#if (NGX_DEBUG)
 #define ngx_log_debug6(level, log, err, fmt, \
                        arg1, arg2, arg3, arg4, arg5, arg6) \
     if (log->log_level & level) \
diff --git a/src/core/ngx_rbtree.c b/src/core/ngx_rbtree.c
index dc60551..683920b 100644
--- a/src/core/ngx_rbtree.c
+++ b/src/core/ngx_rbtree.c
@@ -123,7 +123,7 @@
 void ngx_rbtree_delete(ngx_rbtree_t **root, ngx_rbtree_t *sentinel,
                        ngx_rbtree_t *node)
 {
-    ngx_int_t      red;
+    ngx_int_t      is_red;
     ngx_rbtree_t  *subst, *temp, *w;
 
     /* a binary tree delete */
@@ -152,7 +152,7 @@
         return;
     }
 
-    red = ngx_rbt_is_red(subst);
+    is_red = ngx_rbt_is_red(subst);
 
     if (subst == subst->parent->left) {
         subst->parent->left = temp;
@@ -199,7 +199,7 @@
         }
     }
 
-    if (red) {
+    if (is_red) {
         return;
     }
 
@@ -246,7 +246,7 @@
                 w = temp->parent->left;
             }
 
-            if (ngx_rbt_is_black(w->right) && ngx_rbt_is_black(w->left)) {
+            if (ngx_rbt_is_black(w->left) && ngx_rbt_is_black(w->right)) {
                 ngx_rbt_red(w);
                 temp = temp->parent;
 
diff --git a/src/event/modules/ngx_kqueue_module.c b/src/event/modules/ngx_kqueue_module.c
index 0ddf4f6..669f510 100644
--- a/src/event/modules/ngx_kqueue_module.c
+++ b/src/event/modules/ngx_kqueue_module.c
@@ -286,10 +286,9 @@
 
     c = ev->data;
 
-#if (NGX_DEBUG_EVENT)
-    ngx_log_debug(ev->log, "kqueue set event: %d: ft:%d fl:%08x" _
-                  c->fd _ filter _ flags);
-#endif
+    ngx_log_debug3(NGX_LOG_DEBUG_EVENT, c->log, 0,
+                   "kevent set event: %d: ft:%d fl:%04X",
+                   c->fd, filter, flags);
 
     if (nchanges >= max_changes) {
         ngx_log_error(NGX_LOG_WARN, ev->log, 0,
diff --git a/src/event/ngx_event_timer.c b/src/event/ngx_event_timer.c
index 416cb13..72f2cd2 100644
--- a/src/event/ngx_event_timer.c
+++ b/src/event/ngx_event_timer.c
@@ -21,9 +21,9 @@
     }
 
     ngx_event_timer_rbtree = &ngx_event_timer_sentinel;
-    ngx_event_timer_sentinel.left = &ngx_event_timer_sentinel;
 
 #if 0
+    ngx_event_timer_sentinel.left = &ngx_event_timer_sentinel;
     ngx_event_timer_sentinel.right = &ngx_event_timer_sentinel;
     ngx_event_timer_sentinel.parent = &ngx_event_timer_sentinel;
 #endif
@@ -41,19 +41,18 @@
 {
     ngx_rbtree_t  *node;
 
+    if (ngx_event_timer_rbtree == &ngx_event_timer_sentinel) {
+        return 0;
+    }
+
     node = ngx_rbtree_min(ngx_event_timer_rbtree, &ngx_event_timer_sentinel);
 
-    if (node == &ngx_event_timer_sentinel) {
-        return 0;
-
-    } else {
-        return (ngx_msec_t)
+    return (ngx_msec_t)
          (node->key * NGX_TIMER_RESOLUTION -
                ngx_elapsed_msec / NGX_TIMER_RESOLUTION * NGX_TIMER_RESOLUTION);
 #if 0
                          (node->key * NGX_TIMER_RESOLUTION - ngx_elapsed_msec);
 #endif
-    }
 }
 
 
@@ -63,13 +62,14 @@
     ngx_rbtree_t  *node;
 
     for ( ;; ) {
-        node = ngx_rbtree_min(ngx_event_timer_rbtree,
-                              &ngx_event_timer_sentinel);
 
-        if (node == &ngx_event_timer_sentinel) {
+        if (ngx_event_timer_rbtree == &ngx_event_timer_sentinel) {
             break;
         }
 
+        node = ngx_rbtree_min(ngx_event_timer_rbtree,
+                              &ngx_event_timer_sentinel);
+
         if ((ngx_msec_t) node->key <= (ngx_msec_t)
                          (ngx_old_elapsed_msec + timer) / NGX_TIMER_RESOLUTION)
         {
diff --git a/src/event/ngx_event_timer.h b/src/event/ngx_event_timer.h
index 51e3229..cb61f36 100644
--- a/src/event/ngx_event_timer.h
+++ b/src/event/ngx_event_timer.h
@@ -16,7 +16,7 @@
  * 100 msec - 13 years 8 months
  */
 
-#define NGX_TIMER_RESOLUTION  50
+#define NGX_TIMER_RESOLUTION  1
 
 
 #if 0
@@ -36,6 +36,9 @@
 
 ngx_inline static void ngx_event_del_timer(ngx_event_t *ev)
 {
+    ngx_log_debug1(NGX_LOG_DEBUG_EVENT, ev->log, 0,
+                   "event timer del: %d", ev->rbtree_key);
+
     ngx_rbtree_delete(&ngx_event_timer_rbtree, &ngx_event_timer_sentinel,
                       (ngx_rbtree_t *) &ev->rbtree_key);
 
@@ -56,6 +59,9 @@
                              (ngx_elapsed_msec + timer) / NGX_TIMER_RESOLUTION;
 #endif
 
+    ngx_log_debug1(NGX_LOG_DEBUG_EVENT, ev->log, 0,
+                   "event timer add: %d", ev->rbtree_key);
+
     ngx_rbtree_insert(&ngx_event_timer_rbtree, &ngx_event_timer_sentinel,
                       (ngx_rbtree_t *) &ev->rbtree_key);
 
diff --git a/src/http/ngx_http.c b/src/http/ngx_http.c
index 592e1b6..9cb3fdc 100644
--- a/src/http/ngx_http.c
+++ b/src/http/ngx_http.c
@@ -10,12 +10,6 @@
 
 int         ngx_http_max_module;
 
-ngx_uint_t  ngx_http_reading_state;
-ngx_uint_t  ngx_http_processing_state;
-ngx_uint_t  ngx_http_writing_state;
-ngx_uint_t  ngx_http_lingering_close_state;
-ngx_uint_t  ngx_http_keepalive_state;
-
 ngx_uint_t  ngx_http_total_requests;
 uint64_t    ngx_http_total_sent;
 
diff --git a/src/http/ngx_http.h b/src/http/ngx_http.h
index 954f695..6edc015 100644
--- a/src/http/ngx_http.h
+++ b/src/http/ngx_http.h
@@ -89,12 +89,6 @@
 
 extern int         ngx_max_module;
 
-extern ngx_uint_t  ngx_http_reading_state;
-extern ngx_uint_t  ngx_http_processing_state;
-extern ngx_uint_t  ngx_http_writing_state;
-extern ngx_uint_t  ngx_http_lingering_close_state;
-extern ngx_uint_t  ngx_http_keepalive_state;
-
 extern ngx_uint_t  ngx_http_total_requests;
 extern uint64_t    ngx_http_total_sent;
 
diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c
index c484d27..396e282 100644
--- a/src/http/ngx_http_request.c
+++ b/src/http/ngx_http_request.c
@@ -107,8 +107,6 @@
         return;
     }
 #endif
-
-    ngx_atomic_inc(ngx_http_reading_state);
 }
 
 
@@ -129,7 +127,6 @@
 
     if (rev->timedout) {
         ngx_log_error(NGX_LOG_INFO, c->log, NGX_ETIMEDOUT, "client timed out");
-        ngx_atomic_dec(ngx_http_reading_state);
         ngx_http_close_connection(c);
         return;
     }
