diff --git a/auto/configure b/auto/configure
index c10ee68..dba10b3 100755
--- a/auto/configure
+++ b/auto/configure
@@ -31,6 +31,7 @@
 
 . auto/make
 . auto/lib/make
+. auto/install
 
 if [ "$PLATFORM" != win32 ]; then
     . auto/unix
diff --git a/auto/install b/auto/install
new file mode 100644
index 0000000..1ecf5a7
--- /dev/null
+++ b/auto/install
@@ -0,0 +1,45 @@
+
+cat << END                                                        >> $MAKEFILE
+install:
+	test -d $PREFIX || mkdir -p $PREFIX
+
+	test -d `dirname $SBIN_PATH` || mkdir -p `dirname $SBIN_PATH`
+	cp nginx $SBIN_PATH
+
+	test -d `dirname $CONF_PATH` || mkdir -p `dirname $CONF_PATH`
+
+	cp conf/koi-win `dirname $CONF_PATH`
+
+	test -f `dirname $CONF_PATH`/mime.types || \
+		cp conf/mime.types `dirname $CONF_PATH`/mime.types
+	cp conf/mime.types `dirname $CONF_PATH`/mime.types.default
+
+	test -f $CONF_PATH || cp conf/nginx.conf $CONF_PATH
+	cp conf/nginx.conf `dirname $CONF_PATH`/nginx.conf.default
+
+	test -d `dirname $PID_PATH` || mkdir -p `dirname $PID_PATH`
+	test -d `dirname $ERROR_LOG_PATH` || mkdir -p `dirname $ERROR_LOG_PATH`
+	test -d `dirname $HTTP_LOG_PATH` || mkdir -p `dirname $HTTP_LOG_PATH`
+
+	test -d $PREFIX/html || cp -r html $PREFIX
+
+	#test -d $PREFIX/temp || mkdir -p $PREFIX/temp
+END
+
+
+if test ! -f Makefile; then
+
+    cat << END > Makefile
+
+build:
+	\$(MAKE) -f $OBJS/Makefile
+
+install:
+	\$(MAKE) -f $OBJS/Makefile install
+
+clean:
+	rm -rf Makefile $OBJS
+
+END
+
+fi
diff --git a/auto/options b/auto/options
index 132c35d..4276105 100644
--- a/auto/options
+++ b/auto/options
@@ -33,10 +33,10 @@
 HTTP_CHARSET=YES
 HTTP_GZIP=YES
 HTTP_SSL=NO
-HTTP_SSI=YES
+HTTP_SSI=NO
 HTTP_ACCESS=YES
 HTTP_USERID=YES
-HTTP_STATUS=YES
+HTTP_STATUS=NO
 HTTP_REWRITE=YES
 HTTP_PROXY=YES
 
@@ -183,22 +183,72 @@
     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
+case ".$SBIN_PATH" in
+    ./*)
+    ;;
 
-if [ ".$PID_PATH" = "." ]; then
-    PID_PATH=$PREFIX/logs/nginx.pid
-fi
+    .)
+        SBIN_PATH=$PREFIX/sbin/nginx
+    ;;
 
-if [ ".$ERROR_LOG_PATH" = "." ]; then
-    ERROR_LOG_PATH=$PREFIX/logs/error.log
-fi
+    *)
+        SBIN_PATH=$PREFIX/$SBIN_PATH
+    ;;
+esac
 
-if [ ".$HTTP_LOG_PATH" = "." ]; then
-    HTTP_LOG_PATH=$PREFIX/logs/access.log
-fi
+
+case ".$CONF_PATH" in
+    ./*)
+    ;;
+
+    .)
+        CONF_PATH=$PREFIX/conf/nginx.conf
+    ;;
+
+    *)
+        CONF_PATH=$PREFIX/$CONF_PATH
+    ;;
+esac
+
+
+case ".$PID_PATH" in
+    ./*)
+    ;;
+
+    .)
+        PID_PATH=$PREFIX/logs/nginx.pid
+    ;;
+
+    *)
+        PID_PATH=$PREFIX/$PID_PATH
+    ;;
+esac
+
+
+case ".$ERROR_LOG_PATH" in
+    ./*)
+    ;;
+
+    .)
+        ERROR_LOG_PATH=$PREFIX/logs/error.log
+    ;;
+
+    *)
+        ERROR_LOG_PATH=$PREFIX/$ERROR_LOG_PATH
+    ;;
+esac
+
+
+case ".$HTTP_LOG_PATH" in
+    ./*)
+    ;;
+
+    .)
+        HTTP_LOG_PATH=$PREFIX/logs/access.log
+    ;;
+
+    *)
+        HTTP_LOG_PATH=$PREFIX/$HTTP_LOG_PATH
+    ;;
+esac
diff --git a/src/core/nginx.c b/src/core/nginx.c
index 6d6103c..e9046fd 100644
--- a/src/core/nginx.c
+++ b/src/core/nginx.c
@@ -128,10 +128,6 @@
     ctx.argc = argc;
     ctx.argv = argv;
 
-    if (ngx_getopt(&ctx, &init_cycle) == NGX_ERROR) {
-        return 1;
-    }
-
     if (ngx_os_init(log) == NGX_ERROR) {
         return 1;
     }
@@ -140,6 +136,10 @@
         return 1;
     }
 
+    if (ngx_getopt(&ctx, &init_cycle) == NGX_ERROR) {
+        return 1;
+    }
+
     if (ngx_add_inherited_sockets(&init_cycle) == NGX_ERROR) {
         return 1;
     }
@@ -338,6 +338,10 @@
         cycle->conf_file.data = (u_char *) NGX_CONF_PATH;
     }
 
+    if (ngx_conf_full_name(cycle, &cycle->conf_file) == NGX_ERROR) {
+        return NGX_ERROR;
+    }
+
     return NGX_OK;
 }
 
@@ -372,6 +376,11 @@
 {
     ngx_core_conf_t  *ccf = conf;
 
+#if !(WIN32)
+    struct passwd    *pwd;
+    struct group     *grp;
+#endif
+
     ngx_conf_init_value(ccf->daemon, 1);
     ngx_conf_init_value(ccf->master, 1);
     ngx_conf_init_value(ccf->worker_processes, 1);
@@ -384,24 +393,45 @@
 
 #if !(WIN32)
 
-    /* TODO: default "nobody" user */
+    if (ccf->user == (uid_t) NGX_CONF_UNSET) {
+
+        pwd = getpwnam("nobody");
+        if (pwd == NULL) {
+            ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
+                          "getpwnam(\"nobody\") failed");
+            return NGX_CONF_ERROR;
+        }
+
+        ccf->user = pwd->pw_uid;
+
+        grp = getgrnam("nobody");
+        if (grp == NULL) {
+            ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
+                          "getgrnam(\"nobody\") failed");
+            return NGX_CONF_ERROR;
+        }
+
+        ccf->group = grp->gr_gid;
+    }
 
     if (ccf->pid.len == 0) {
         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(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),
-                   NGX_NEWPID_EXT, sizeof(NGX_NEWPID_EXT));
     }
+
+    if (ngx_conf_full_name(cycle, &ccf->pid) == NGX_ERROR) {
+        return NGX_CONF_ERROR;
+    }
+
+    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),
+               NGX_NEWPID_EXT, sizeof(NGX_NEWPID_EXT));
+
 #endif
 
     return NGX_CONF_OK;
diff --git a/src/core/nginx.h b/src/core/nginx.h
index 9829873..769a9bf 100644
--- a/src/core/nginx.h
+++ b/src/core/nginx.h
@@ -2,7 +2,7 @@
 #define _NGINX_H_INCLUDED_
 
 
-#define NGINX_VER          "nginx/0.0.12"
+#define NGINX_VER          "nginx/0.1.0"
 
 #define NGINX_VAR          "NGINX"
 #define NGX_NEWPID_EXT     ".newbin"
diff --git a/src/core/ngx_conf_file.c b/src/core/ngx_conf_file.c
index e02b8c4..e0fec6f 100644
--- a/src/core/ngx_conf_file.c
+++ b/src/core/ngx_conf_file.c
@@ -549,33 +549,56 @@
     ngx_str_t  *value, file;
 
     value = cf->args->elts;
+    file = value[1];
 
-    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))) {
+    if (ngx_conf_full_name(cf->cycle, &file) == NGX_ERROR){
         return NGX_CONF_ERROR;
     }
 
-    ngx_cpystrn(ngx_cpymem(file.data, cf->cycle->root.data,
-                           cf->cycle->root.len),
-                value[1].data, value[1].len + 1);
-
     ngx_log_error(NGX_LOG_INFO, cf->log, 0, "include %s", file.data);
 
     return ngx_conf_parse(cf, &file);
 }
 
 
+ngx_int_t ngx_conf_full_name(ngx_cycle_t *cycle, ngx_str_t *name)
+{
+    u_char     *p;
+    ngx_str_t   old;
+
+    if (name->data[0] == '/') {
+        return NGX_OK;
+    }
+
+    old = *name;
+
+    name->len = cycle->root.len + old.len;
+
+    if (!(name->data = ngx_palloc(cycle->pool, name->len + 1))) {
+        return  NGX_ERROR;
+    }
+
+    p = ngx_cpymem(name->data, cycle->root.data, cycle->root.len),
+    ngx_cpystrn(p, old.data, old.len + 1);
+
+    return NGX_OK;
+}
+
+
 ngx_open_file_t *ngx_conf_open_file(ngx_cycle_t *cycle, ngx_str_t *name)
 {
+    ngx_str_t         full;
     ngx_uint_t        i;
     ngx_list_part_t  *part;
     ngx_open_file_t  *file;
 
     if (name) {
+        full = *name;
+
+        if (ngx_conf_full_name(cycle, &full) == NGX_ERROR) {
+            return NULL;
+        }
+
         part = &cycle->open_files.part;
         file = part->elts;
 
@@ -590,11 +613,11 @@
                 i = 0;
             }
 
-            if (name->len != file[i].name.len) {
+            if (full.len != file[i].name.len) {
                 continue;
             }
 
-            if (ngx_strcmp(name->data, file[i].name.data) == 0) {
+            if (ngx_strcmp(full.data, file[i].name.data) == 0) {
                 return &file[i];
             }
         }
@@ -607,8 +630,12 @@
     file->fd = NGX_INVALID_FILE;
 
     if (name) {
-        file->name = *name;
+        file->name = full;
+
     } else {
+
+        /* stderr */
+
         file->name.len = 0;
         file->name.data = NULL;
     }
diff --git a/src/core/ngx_conf_file.h b/src/core/ngx_conf_file.h
index 1bd1354..d2c7613 100644
--- a/src/core/ngx_conf_file.h
+++ b/src/core/ngx_conf_file.h
@@ -265,6 +265,7 @@
 char *ngx_conf_parse(ngx_conf_t *cf, ngx_str_t *filename);
 
 
+ngx_int_t ngx_conf_full_name(ngx_cycle_t *cycle, ngx_str_t *name);
 ngx_open_file_t *ngx_conf_open_file(ngx_cycle_t *cycle, ngx_str_t *name);
 void ngx_conf_log_error(ngx_uint_t level, ngx_conf_t *cf, ngx_err_t err,
                         char *fmt, ...);
diff --git a/src/core/ngx_cycle.c b/src/core/ngx_cycle.c
index 9e5143c..e5b30b1 100644
--- a/src/core/ngx_cycle.c
+++ b/src/core/ngx_cycle.c
@@ -530,6 +530,9 @@
         if (ccf->pid.len == old_ccf->pid.len
             && ngx_strcmp(ccf->pid.data, old_ccf->pid.data) == 0)
         {
+
+            /* pid file name is the same */
+
             return NGX_OK;
         }
     }
diff --git a/src/core/ngx_log.c b/src/core/ngx_log.c
index 05ee4dd..e542920 100644
--- a/src/core/ngx_log.c
+++ b/src/core/ngx_log.c
@@ -375,6 +375,12 @@
 
     } else {
         cf->cycle->new_log->file->name = value[1];
+
+        if (ngx_conf_full_name(cf->cycle, &cf->cycle->new_log->file->name)
+                                                                  == NGX_ERROR)
+        {
+            return NGX_CONF_ERROR;
+        }
     }
 
     return ngx_set_error_log_levels(cf, cf->cycle->new_log);
diff --git a/src/core/ngx_modules.c b/src/core/ngx_modules.c
deleted file mode 100644
index 8948cdf..0000000
--- a/src/core/ngx_modules.c
+++ /dev/null
@@ -1,100 +0,0 @@
-
-#include <ngx_config.h>
-#include <ngx_core.h>
-
-
-extern ngx_module_t  ngx_core_module;
-extern ngx_module_t  ngx_errlog_module;
-
-extern ngx_module_t  ngx_events_module;
-extern ngx_module_t  ngx_event_core_module;
-extern ngx_module_t  ngx_select_module;
-#if (HAVE_POLL)
-extern ngx_module_t  ngx_poll_module;
-#endif
-#if (HAVE_KQUEUE)
-extern ngx_module_t  ngx_kqueue_module;
-#endif
-#if (HAVE_DEVPOLL)
-extern ngx_module_t  ngx_devpoll_module;
-#endif
-#if (HAVE_IOCP)
-extern ngx_module_t  ngx_iocp_module;
-#elif (HAVE_AIO)
-extern ngx_module_t  ngx_aio_module;
-#endif
-
-
-extern ngx_module_t  ngx_http_module;
-extern ngx_module_t  ngx_http_core_module;
-extern ngx_module_t  ngx_http_log_module;
-extern ngx_module_t  ngx_http_cache_module;
-
-extern ngx_module_t  ngx_http_write_filter_module;
-extern ngx_module_t  ngx_http_output_filter_module;
-extern ngx_module_t  ngx_http_header_filter_module;
-
-extern ngx_module_t  ngx_http_chunked_filter_module;
-extern ngx_module_t  ngx_http_gzip_filter_module;
-extern ngx_module_t  ngx_http_not_modified_filter_module;
-extern ngx_module_t  ngx_http_range_filter_module;
-extern ngx_module_t  ngx_http_charset_filter_module;
-
-extern ngx_module_t  ngx_http_static_module;
-extern ngx_module_t  ngx_http_index_module;
-extern ngx_module_t  ngx_http_proxy_module;
-
-
-ngx_module_t *ngx_modules[] = {
-
-    /* core */
-
-    &ngx_core_module,
-    &ngx_errlog_module,
-
-    /* events */
-
-    &ngx_events_module,
-    &ngx_event_core_module,
-
-    &ngx_select_module,
-#if (HAVE_POLL)
-    &ngx_poll_module,
-#endif
-#if (HAVE_KQUEUE)
-    &ngx_kqueue_module,
-#endif
-#if (HAVE_DEVPOLL)
-    &ngx_devpoll_module,
-#endif
-#if (HAVE_IOCP)
-    &ngx_iocp_module,
-#elif (HAVE_AIO)
-    &ngx_aio_module,
-#endif
-
-    /* http */
-
-    &ngx_http_module,
-
-    &ngx_http_core_module,
-    &ngx_http_log_module,
-    &ngx_http_cache_module,
-
-    &ngx_http_write_filter_module,
-    &ngx_http_output_filter_module,
-    &ngx_http_header_filter_module,
-
-    &ngx_http_chunked_filter_module,
-    &ngx_http_gzip_filter_module,
-    &ngx_http_not_modified_filter_module,
-    &ngx_http_range_filter_module,
-    /* &ngx_http_ssi_filter_module, */
-    &ngx_http_charset_filter_module,
-
-    &ngx_http_static_module,
-    &ngx_http_index_module,
-    &ngx_http_proxy_module,
-
-    NULL
-};
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
index 58fa59d..a40548e 100644
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -1416,6 +1416,10 @@
 
     ngx_conf_merge_str_value(conf->root, prev->root, "html");
 
+    if (ngx_conf_full_name(cf->cycle, &conf->root) == NGX_ERROR) {
+        return NGX_CONF_ERROR;
+    }
+
     if (conf->types == NULL) {
         if (prev->types) {
             conf->types = prev->types;
