diff --git a/auto/configure b/auto/configure
index 9429373..c10ee68 100755
--- a/auto/configure
+++ b/auto/configure
@@ -38,4 +38,11 @@
 
 have=NGX_SMP . auto/have
 
+have=NGX_PREFIX value="\"$PREFIX/\"" . auto/define
+have=NGX_SBIN_PATH value="\"$SBIN_PATH\"" . auto/define
+have=NGX_CONF_PATH value="\"$CONF_PATH\"" . auto/define
+have=NGX_PID_PATH value="\"$PID_PATH\"" . auto/define
+have=NGX_ERROR_LOG_PATH value="\"$ERROR_LOG_PATH\"" . auto/define
+have=NGX_HTTP_LOG_PATH value="\"$HTTP_LOG_PATH\"" . auto/define
+
 . auto/summary
diff --git a/auto/define b/auto/define
new file mode 100644
index 0000000..d872fc3
--- /dev/null
+++ b/auto/define
@@ -0,0 +1,8 @@
+
+cat << END >> $NGX_AUTO_CONFIG_H
+
+#ifndef $have
+#define $have  $value
+#endif
+
+END
diff --git a/auto/options b/auto/options
index 178dfd2..8ef6ddd 100644
--- a/auto/options
+++ b/auto/options
@@ -1,6 +1,13 @@
 
 help=no
 
+PREFIX=
+SBIN_PATH=
+CONF_PATH=
+HTTP_LOG_PATH=
+ERROR_LOG_PATH=
+PID_PATH=
+
 CC=gcc
 CPP=
 OBJS=objs
@@ -52,6 +59,13 @@
     case "$option" in
         --help)                          help=yes                   ;;
 
+        --prefix=*)                      PREFIX="$value"            ;;
+        --sbin-path=*)                   SBIN_PATH="$value"         ;;
+        --conf-path=*)                   CONF_PATH="$value"         ;;
+        --http-log-path=*)               HTTP_LOG_PATH="$value"     ;;
+        --error-log-path=*)              ERROR_LOG_PATH="$value"    ;;
+        --pid-path=*)                    PID_PATH="$value"          ;;
+
         --crossbuild=*)                  PLATFORM="$value"          ;;
 
         --builddir=*)                    OBJS="$value"              ;;
@@ -129,3 +143,28 @@
     EVENT_POLL=NO
     echo "$0: warning: --with-poll_module option is ignored for win32"
 fi
+
+
+if [ ".$PREFIX" = "." ]; then
+    PREFIX=/usr/local/nginx
+fi
+
+if [ ".$SBIN_PATH" = "." ]; then
+    SBIN_PATH=$PREFIX/sbin/nginx
+fi
+
+if [ ".$CONF_PATH" = "." ]; then
+    CONF_PATH=$PREFIX/conf/nginx.conf
+fi
+
+if [ ".$PID_PATH" = "." ]; then
+    PID_PATH=$PREFIX/logs/nginx.pid
+fi
+
+if [ ".$ERROR_LOG_PATH" = "." ]; then
+    ERROR_LOG_PATH=$PREFIX/logs/error.log
+fi
+
+if [ ".$HTTP_LOG_PATH" = "." ]; then
+    HTTP_LOG_PATH=$PREFIX/logs/access.log
+fi
diff --git a/auto/summary b/auto/summary
index 16e552d..9769180 100644
--- a/auto/summary
+++ b/auto/summary
@@ -2,6 +2,7 @@
 echo
 echo "Configuration summary"
 
+
 if [ $USE_PCRE = DISABLED ]; then
     echo " + PCRE library is disabled"
 
@@ -55,3 +56,12 @@
         exit 1
     fi
 fi
+
+
+echo " nginx path prefix: $PREFIX"
+echo " nginx binary file: $SBIN_PATH"
+echo " nginx configuration file: $CONF_PATH"
+echo " nginx pid file: $PID_PATH"
+echo " nginx error log file: $ERROR_LOG_PATH"
+echo " nginx http access log file: $HTTP_LOG_PATH"
+echo
diff --git a/src/core/nginx.c b/src/core/nginx.c
index be95637..cef3434 100644
--- a/src/core/nginx.c
+++ b/src/core/nginx.c
@@ -315,8 +315,8 @@
     }
 
     if (cycle->conf_file.data == NULL) {
-        cycle->conf_file.len = sizeof(NGINX_CONF) - 1;
-        cycle->conf_file.data = NGINX_CONF;
+        cycle->conf_file.len = sizeof(NGX_CONF_PATH) - 1;
+        cycle->conf_file.data = (u_char *) NGX_CONF_PATH;
     }
 
     return NGX_OK;
@@ -358,20 +358,20 @@
     /* TODO: default "nobody" user */
 
     if (ccf->pid.len == 0) {
-        ccf->pid.len = sizeof(NGINX_PID) - 1;
-        ccf->pid.data = NGINX_PID;
-        ccf->newpid.len = sizeof(NGINX_NEWPID) - 1;
-        ccf->newpid.data = NGINX_NEWPID;
+        ccf->pid.len = sizeof(NGX_PID_PATH) - 1;
+        ccf->pid.data = NGX_PID_PATH;
+        ccf->newpid.len = sizeof(NGX_PID_PATH NGX_NEWPID_EXT) - 1;
+        ccf->newpid.data = NGX_PID_PATH NGX_NEWPID_EXT;
 
     } else {
-        ccf->newpid.len = ccf->pid.len + sizeof(NGINX_NEWPID_EXT);
+        ccf->newpid.len = ccf->pid.len + sizeof(NGX_NEWPID_EXT);
 
         if (!(ccf->newpid.data = ngx_palloc(cycle->pool, ccf->newpid.len))) {
             return NGX_CONF_ERROR;
         }
 
         ngx_memcpy(ngx_cpymem(ccf->newpid.data, ccf->pid.data, ccf->pid.len),
-                   NGINX_NEWPID_EXT, sizeof(NGINX_NEWPID_EXT));
+                   NGX_NEWPID_EXT, sizeof(NGX_NEWPID_EXT));
     }
 #endif
 
diff --git a/src/core/nginx.h b/src/core/nginx.h
index 7d75537..ba59c12 100644
--- a/src/core/nginx.h
+++ b/src/core/nginx.h
@@ -3,14 +3,9 @@
 
 
 #define NGINX_VER          "nginx/0.0.3"
-#define NGINX_CONF         (u_char *) "nginx.conf"
-#define NGINX_PID          "nginx.pid"
-#define NGINX_NEWPID_EXT   ".newbin"
-#define NGINX_NEWPID       NGINX_PID NGINX_NEWPID_EXT
 
 #define NGINX_VAR          "NGINX"
-
-extern ngx_module_t        ngx_core_module;
+#define NGX_NEWPID_EXT     ".newbin"
 
 
 #endif /* _NGINX_H_INCLUDED_ */
diff --git a/src/core/ngx_conf_file.c b/src/core/ngx_conf_file.c
index bb05b72..1a29eb0 100644
--- a/src/core/ngx_conf_file.c
+++ b/src/core/ngx_conf_file.c
@@ -546,6 +546,10 @@
 
     value = cf->args->elts;
 
+    if (value[1].data[0] == '/') {
+        return ngx_conf_parse(cf, &value[1]);
+    }
+
     file.len = cf->cycle->root.len + value[1].len;
     if (!(file.data = ngx_palloc(cf->pool, file.len + 1))) {
         return NGX_CONF_ERROR;
diff --git a/src/core/ngx_cycle.c b/src/core/ngx_cycle.c
index 989973a..5a19f30 100644
--- a/src/core/ngx_cycle.c
+++ b/src/core/ngx_cycle.c
@@ -24,7 +24,6 @@
 ngx_cycle_t *ngx_init_cycle(ngx_cycle_t *old_cycle)
 {
     void               *rv;
-    u_char             *root;
     ngx_uint_t          i, n, failed;
     ngx_log_t          *log;
     ngx_conf_t          conf;
@@ -34,7 +33,6 @@
     ngx_open_file_t    *file;
     ngx_listening_t    *ls, *nls;
     ngx_core_module_t  *module;
-    char                cwd[NGX_MAX_PATH + 1];
 
     log = old_cycle->log;
 
@@ -51,42 +49,8 @@
     cycle->log = log;
     cycle->old_cycle = old_cycle;
     cycle->conf_file = old_cycle->conf_file;
-
-
-    for (i = cycle->conf_file.len; i > 0; i--) {
-        if (cycle->conf_file.data[i] == '/') {
-            break;
-        }
-    }
-
-    if (i == 0 && cycle->conf_file.data[i] != '/') {
-        if (ngx_getcwd(cwd, NGX_MAX_PATH) == 0) {
-            ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
-                          ngx_getcwd_n " failed");
-            ngx_destroy_pool(pool);
-            return NULL;
-        }
-
-        for ( /* void */; i < NGX_MAX_PATH && cwd[i]; i++) /* void */;
-        cwd[i] = '/';
-        cwd[i + 1] = '\0';
-
-        root = (u_char *) cwd;
-
-    } else {
-        root = cycle->conf_file.data;
-    }
-
-    cycle->root.len = ++i;
-    cycle->root.data = ngx_palloc(pool, ++i);
-    if (cycle->root.data == NULL) {
-        ngx_destroy_pool(pool);
-        return NULL;
-    }
-
-    ngx_cpystrn(cycle->root.data, root, i);
-
-    ngx_log_error(NGX_LOG_INFO, log, 0, "root: %s", cycle->root.data);
+    cycle->root.len = sizeof(NGX_PREFIX) - 1;
+    cycle->root.data = (u_char *) NGX_PREFIX;
 
 
     n = old_cycle->pathes.nelts ? old_cycle->pathes.nelts : 10;
@@ -472,12 +436,13 @@
 
 ngx_int_t ngx_create_pidfile(ngx_cycle_t *cycle, ngx_cycle_t *old_cycle)
 {
+    ngx_uint_t        trunc;
     size_t            len;
     u_char           *name, pid[NGX_INT64_LEN + 1];
     ngx_file_t        file;
     ngx_core_conf_t  *ccf, *old_ccf;
 
-    if (old_cycle && old_cycle->conf_ctx == NULL) {
+    if (!ngx_test_config && old_cycle && old_cycle->conf_ctx == NULL) {
 
         /*
          * do not create the pid file in the first ngx_init_cycle() call
@@ -489,7 +454,7 @@
 
     ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module);
 
-    if (old_cycle) {
+    if (!ngx_test_config && old_cycle) {
         old_ccf = (ngx_core_conf_t *) ngx_get_conf(old_cycle->conf_ctx,
                                                    ngx_core_module);
 
@@ -506,8 +471,10 @@
     file.name = (ngx_inherited && getppid() > 1) ? ccf->newpid : ccf->pid;
     file.log = cycle->log;
 
+    trunc = ngx_test_config ? 0: NGX_FILE_TRUNCATE;
+
     file.fd = ngx_open_file(file.name.data, NGX_FILE_RDWR,
-                            NGX_FILE_CREATE_OR_OPEN|NGX_FILE_TRUNCATE);
+                            NGX_FILE_CREATE_OR_OPEN|trunc);
 
     if (file.fd == NGX_INVALID_FILE) {
         ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
@@ -515,8 +482,10 @@
         return NGX_ERROR;
     }
 
-    if (ngx_write_file(&file, pid, len, 0) == NGX_ERROR) {
-        return NGX_ERROR;
+    if (!ngx_test_config) {
+        if (ngx_write_file(&file, pid, len, 0) == NGX_ERROR) {
+            return NGX_ERROR;
+        }
     }
 
     if (ngx_close_file(file.fd) == NGX_FILE_ERROR) {
diff --git a/src/http/modules/ngx_http_chunked_filter.c b/src/http/modules/ngx_http_chunked_filter.c
index 3cd6ddd..70e0fcd 100644
--- a/src/http/modules/ngx_http_chunked_filter.c
+++ b/src/http/modules/ngx_http_chunked_filter.c
@@ -59,15 +59,14 @@
     u_char       *chunk;
     size_t        size, len;
     ngx_hunk_t   *h;
-    ngx_chain_t  *out, *cl, *tl, **ll;
+    ngx_chain_t   out, tail, *cl, *tl, **ll;
 
     if (in == NULL || !r->chunked) {
         return ngx_http_next_body_filter(r, in);
     }
 
-    ngx_test_null(out, ngx_alloc_chain_link(r->pool), NGX_ERROR);
-    out->hunk = NULL;
-    ll = &out->next;
+    out.hunk = NULL;
+    ll = &out.next;
 
     size = 0;
     cl = in;
@@ -99,11 +98,10 @@
         h->pos = chunk;
         h->last = chunk + len;
 
-        out->hunk = h;
+        out.hunk = h;
     }
 
     if (cl->hunk->type & NGX_HUNK_LAST) {
-
         ngx_test_null(h, ngx_calloc_hunk(r->pool), NGX_ERROR);
         h->type = NGX_HUNK_IN_MEMORY|NGX_HUNK_MEMORY|NGX_HUNK_LAST;
         h->pos = (u_char *) CRLF "0" CRLF CRLF;
@@ -112,16 +110,17 @@
         cl->hunk->type &= ~NGX_HUNK_LAST;
 
         if (size == 0) {
-            out->hunk = h;
-            out->next = NULL;
+            h->pos += 2;
+            out.hunk = h;
+            out.next = NULL;
 
-            return ngx_http_next_body_filter(r, out);
+            return ngx_http_next_body_filter(r, &out);
         }
 
     } else {
         if (size == 0) {
             *ll = NULL;
-            return ngx_http_next_body_filter(r, out->next);
+            return ngx_http_next_body_filter(r, out.next);
         }
 
         ngx_test_null(h, ngx_calloc_hunk(r->pool), NGX_ERROR);
@@ -130,10 +129,11 @@
         h->last = h->pos + 2;
     }
 
-    ngx_alloc_link_and_set_hunk(tl, h, r->pool, NGX_ERROR);
-    *ll = tl;
+    tail.hunk = h;
+    tail.next = NULL;
+    *ll = &tail;
 
-    return ngx_http_next_body_filter(r, out);
+    return ngx_http_next_body_filter(r, &out);
 }
 
 
