diff --git a/src/core/nginx.c b/src/core/nginx.c
index 5927115..21363d2 100644
--- a/src/core/nginx.c
+++ b/src/core/nginx.c
@@ -147,6 +147,12 @@
     ctx.argc = argc;
     ctx.argv = argv;
 
+#if (NGX_THREADS)
+    if (ngx_time_mutex_init(log) == NGX_ERROR) {
+        return 1;
+    }
+#endif
+
     if (ngx_getopt(&ctx, &init_cycle) == NGX_ERROR) {
         return 1;
     }
@@ -649,7 +655,7 @@
 
 #if (NGX_THREADS)
 
-    if (ngx_init_threads(5, 128 * 1024 * 1024, cycle->log) == NGX_ERROR) {
+    if (ngx_init_threads(5, 128 * 1024 * 1024, cycle) == NGX_ERROR) {
         /* fatal */
         exit(1);
     }
diff --git a/src/core/ngx_times.c b/src/core/ngx_times.c
index 43c8c20..235e703 100644
--- a/src/core/ngx_times.c
+++ b/src/core/ngx_times.c
@@ -51,16 +51,23 @@
     ngx_elapsed_msec = 0;
 
     ngx_time_update(tv.tv_sec);
-
-#if (NGX_THREADS0)
-    if (!(ngx_time_mutex = ngx_mutex_init(log, NGX_MUTEX_LIGHT);
-        return 0;
-    }
-#endif
-
 }
 
 
+#if (NGX_THREADS)
+
+ngx_int_t ngx_time_mutex_init(ngx_log_t *log)
+{
+    if (!(ngx_time_mutex = ngx_mutex_init(log, NGX_MUTEX_LIGHT))) {
+        return NGX_ERROR;
+    }
+
+    return NGX_OK;
+}
+
+#endif
+
+
 void ngx_time_update(time_t s)
 {
     ngx_tm_t  tm;
@@ -69,9 +76,11 @@
         return;
     }
 
-#if (NGX_THREADS0)
-    if (ngx_mutex_trylock(ngx_time_mutex) != NGX_OK) {
-        return;
+#if (NGX_THREADS)
+    if (ngx_time_mutex) {
+        if (ngx_mutex_trylock(ngx_time_mutex) != NGX_OK) {
+            return;
+        }
     }
 #endif
 
@@ -109,8 +118,10 @@
                                        tm.ngx_tm_min,
                                        tm.ngx_tm_sec);
 
-#if (NGX_THREADS0)
-    ngx_mutex_unlock(ngx_time_mutex);
+#if (NGX_THREADS)
+    if (ngx_time_mutex) {
+        ngx_mutex_unlock(ngx_time_mutex);
+    }
 #endif
 
 }
diff --git a/src/core/ngx_times.h b/src/core/ngx_times.h
index 7823af0..50910b1 100644
--- a/src/core/ngx_times.h
+++ b/src/core/ngx_times.h
@@ -7,6 +7,9 @@
 
 
 void ngx_time_init();
+#if (NGX_THREADS)
+ngx_int_t ngx_time_mutex_init(ngx_log_t *log);
+#endif
 void ngx_time_update(time_t s);
 size_t ngx_http_time(char *buf, time_t t);
 void ngx_gmtime(time_t t, ngx_tm_t *tp);
diff --git a/src/event/modules/ngx_kqueue_module.c b/src/event/modules/ngx_kqueue_module.c
index 6f06884..e89eb99 100644
--- a/src/event/modules/ngx_kqueue_module.c
+++ b/src/event/modules/ngx_kqueue_module.c
@@ -337,7 +337,7 @@
 }
 
 
-static int ngx_kqueue_process_events(ngx_log_t *log)
+static ngx_int_t ngx_kqueue_process_events(ngx_log_t *log)
 {
     int                events;
     ngx_int_t          instance, i;
@@ -349,6 +349,19 @@
     struct timespec    ts, *tp;
 
     timer = ngx_event_find_timer();
+
+#if (NGX_THREADS)
+    if (timer == NGX_TIMER_ERROR) {
+        return NGX_ERROR;
+    }
+
+    /*
+     * TODO: if timer is 0 and any worker thread is still busy
+     *       then set 1 second timeout
+     */
+
+#endif
+
     ngx_old_elapsed_msec = ngx_elapsed_msec;
 
     if (timer) {
diff --git a/src/event/ngx_event.c b/src/event/ngx_event.c
index 98b80b4..80c65dc 100644
--- a/src/event/ngx_event.c
+++ b/src/event/ngx_event.c
@@ -133,7 +133,9 @@
 #endif
 
 
-    ngx_event_timer_init();
+    if (ngx_event_timer_init(cycle->log) == NGX_ERROR) {
+        return NGX_ERROR;
+    }
 
     ecf = ngx_event_get_conf(cycle->conf_ctx, ngx_event_core_module);
 
diff --git a/src/event/ngx_event_timer.c b/src/event/ngx_event_timer.c
index e002cb7..498fd9f 100644
--- a/src/event/ngx_event_timer.c
+++ b/src/event/ngx_event_timer.c
@@ -4,13 +4,8 @@
 #include <ngx_event.h>
 
 
-/*
- * TODO: in multithreaded enviroment all timer operations must be
- * protected by the single mutex
- */
-
 #if (NGX_THREADS)
-static ngx_mutex_t  *ngx_event_timer_mutex;
+ngx_mutex_t  *ngx_event_timer_mutex;
 #endif
 
 
@@ -18,13 +13,20 @@
 ngx_rbtree_t   ngx_event_timer_sentinel;
 
 
-void ngx_event_timer_init(void)
+ngx_int_t ngx_event_timer_init(ngx_log_t *log)
 {
     if (ngx_event_timer_rbtree) {
-        return;
+        ngx_event_timer_mutex->log = log;
+        return NGX_OK;
     }
 
     ngx_event_timer_rbtree = &ngx_event_timer_sentinel;
+
+    if (!(ngx_event_timer_mutex = ngx_mutex_init(log, 0))) {
+        return NGX_ERROR;
+    }
+
+    return NGX_OK;
 }
 
 
@@ -36,8 +38,18 @@
         return 0;
     }
 
+#if (NGX_THREADS)
+    if (ngx_mutex_lock(ngx_event_timer_mutex) == NGX_ERROR) {
+        return NGX_TIMER_ERROR;
+    }
+#endif
+
     node = ngx_rbtree_min(ngx_event_timer_rbtree, &ngx_event_timer_sentinel);
 
+#if (NGX_THREADS)
+    ngx_mutex_unlock(ngx_event_timer_mutex);
+#endif
+
     return (ngx_msec_t)
          (node->key * NGX_TIMER_RESOLUTION -
                ngx_elapsed_msec / NGX_TIMER_RESOLUTION * NGX_TIMER_RESOLUTION);
@@ -58,9 +70,19 @@
             break;
         }
 
+#if (NGX_THREADS)
+        if (ngx_mutex_lock(ngx_event_timer_mutex) == NGX_ERROR) {
+            return;
+        }
+#endif
+
         node = ngx_rbtree_min(ngx_event_timer_rbtree,
                               &ngx_event_timer_sentinel);
 
+#if (NGX_THREADS)
+        ngx_mutex_unlock(ngx_event_timer_mutex);
+#endif
+
         if ((ngx_msec_t) node->key <= (ngx_msec_t)
                          (ngx_old_elapsed_msec + timer) / NGX_TIMER_RESOLUTION)
         {
@@ -79,6 +101,10 @@
                 ev->timedout = 1;
             }
 
+#if (NGX_THREADS)
+            /* STUB: post event */
+#endif
+
             ev->event_handler(ev);
             continue;
         }
diff --git a/src/event/ngx_event_timer.h b/src/event/ngx_event_timer.h
index ee920dc..300d79c 100644
--- a/src/event/ngx_event_timer.h
+++ b/src/event/ngx_event_timer.h
@@ -7,6 +7,8 @@
 #include <ngx_event.h>
 
 
+#define NGX_TIMER_ERROR  (ngx_msec_t) -1
+
 /*
  * 32 bit timer key value resolution
  *
@@ -19,11 +21,16 @@
 #define NGX_TIMER_RESOLUTION  1
 
 
-void ngx_event_timer_init(void);
+ngx_int_t ngx_event_timer_init(ngx_log_t *log);
 ngx_msec_t ngx_event_find_timer(void);
 void ngx_event_expire_timers(ngx_msec_t timer);
 
 
+#if (NGX_THREADS)
+extern ngx_mutex_t  *ngx_event_timer_mutex;
+#endif
+
+
 extern ngx_rbtree_t  *ngx_event_timer_rbtree;
 extern ngx_rbtree_t   ngx_event_timer_sentinel;
 
@@ -34,9 +41,19 @@
                    "event timer del: %d: %d",
                     ngx_event_ident(ev->data), ev->rbtree_key);
 
+#if (NGX_THREADS)
+    if (ngx_mutex_lock(ngx_event_timer_mutex) == NGX_ERROR) {
+        return;
+    }
+#endif
+
     ngx_rbtree_delete(&ngx_event_timer_rbtree, &ngx_event_timer_sentinel,
                       (ngx_rbtree_t *) &ev->rbtree_key);
 
+#if (NGX_THREADS)
+    ngx_mutex_unlock(ngx_event_timer_mutex);
+#endif
+
 #if (NGX_DEBUG)
     ev->rbtree_left = NULL;
     ev->rbtree_right = NULL;
@@ -64,9 +81,19 @@
                    "event timer add: %d: %d",
                     ngx_event_ident(ev->data), ev->rbtree_key);
 
+#if (NGX_THREADS)
+    if (ngx_mutex_lock(ngx_event_timer_mutex) == NGX_ERROR) {
+        return;
+    }
+#endif
+
     ngx_rbtree_insert(&ngx_event_timer_rbtree, &ngx_event_timer_sentinel,
                       (ngx_rbtree_t *) &ev->rbtree_key);
 
+#if (NGX_THREADS)
+    ngx_mutex_unlock(ngx_event_timer_mutex);
+#endif
+
     ev->timer_set = 1;
 }
 
diff --git a/src/os/unix/ngx_freebsd_rfork_thread.c b/src/os/unix/ngx_freebsd_rfork_thread.c
index 7e28b0d..4ea8b4c 100644
--- a/src/os/unix/ngx_freebsd_rfork_thread.c
+++ b/src/os/unix/ngx_freebsd_rfork_thread.c
@@ -147,7 +147,7 @@
 }
 
 
-ngx_int_t ngx_init_threads(int n, size_t size, ngx_log_t *log)
+ngx_int_t ngx_init_threads(int n, size_t size, ngx_cycle_t *cycle)
 {
     size_t   len;
     char    *red_zone, *zone;
@@ -156,7 +156,7 @@
 
     len = sizeof(usrstack);
     if (sysctlbyname("kern.usrstack", &usrstack, &len, NULL, 0) == -1) {
-        ngx_log_error(NGX_LOG_ALERT, log, ngx_errno,
+        ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
                       "sysctlbyname(kern.usrstack) failed");
         return NGX_ERROR;
     }
@@ -164,13 +164,13 @@
     /* the main thread stack red zone */
     red_zone = usrstack - (size + rz_size);
 
-    ngx_log_debug2(NGX_LOG_DEBUG_CORE, log, 0,
+    ngx_log_debug2(NGX_LOG_DEBUG_CORE, cycle->log, 0,
                    "usrstack: " PTR_FMT " red zone: " PTR_FMT,
                    usrstack, red_zone);
 
     zone = mmap(red_zone, rz_size, PROT_NONE, MAP_ANON, -1, 0);
     if (zone == MAP_FAILED) {
-        ngx_log_error(NGX_LOG_ALERT, log, ngx_errno,
+        ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
                       "mmap(" PTR_FMT ":" SIZE_T_FMT
                       ", PROT_NONE, MAP_ANON) red zone failed",
                       red_zone, rz_size);
@@ -178,18 +178,19 @@
     }
 
     if (zone != red_zone) {
-        ngx_log_error(NGX_LOG_ALERT, log, 0, "red zone address was changed");
+        ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
+                      "red zone address was changed");
     }
 
     /* create the threads errno array */
 
-    if (!(errnos = ngx_calloc(n * sizeof(int), log))) {
+    if (!(errnos = ngx_calloc(n * sizeof(int), cycle->log))) {
         return NGX_ERROR;
     }
 
     /* create the threads tid array */
 
-    if (!(tids = ngx_calloc((n + 1) * sizeof(ngx_tid_t), log))) {
+    if (!(tids = ngx_calloc((n + 1) * sizeof(ngx_tid_t), cycle->log))) {
         return NGX_ERROR;
     }
 
diff --git a/src/os/unix/ngx_thread.h b/src/os/unix/ngx_thread.h
index 9637fda..3ecc1e6 100644
--- a/src/os/unix/ngx_thread.h
+++ b/src/os/unix/ngx_thread.h
@@ -7,7 +7,7 @@
 
 #if (NGX_THREADS)
 
-#if (USE_RFORK)
+#if (NGX_USE_RFORK)
 
 #include <sys/ipc.h>
 #include <sys/sem.h>
@@ -46,7 +46,7 @@
 #endif
 
 
-ngx_int_t ngx_init_threads(int n, size_t size, ngx_log_t *log);
+ngx_int_t ngx_init_threads(int n, size_t size, ngx_cycle_t *cycle);
 int ngx_create_thread(ngx_tid_t *tid, int (*func)(void *arg), void *arg,
                       ngx_log_t *log);
 ngx_tid_t ngx_thread_self();
